SoftLayer への移行: Linux インスタンスを SCE から SoftLayer へマニュアルでマイグレーションする

IBM SmarterCloud Enterprise から IBM SoftLayer へ Linux インスタンスをマイグレーションする方法を学びましょう。

Catalin Tudor Bazavan, IBM SmartCloud Enterprise Image Center, IBM

Image Center では、IBM SmarterCloud Enterprise や、IBM SoftLayer 上の IBM SmarterCloud インフラストラクチャーを対象とした高品質のマスター・イメージを作成するためのプロセスおよびベスト・プラクティスを定義しており、IBM グループおよび外部パートナーに対して指針を提供しています。また、このセンターでは Windows、RedHat、SuSE ベースの SmarterCloud 対応 OS イメージの広範なセットの作成、テスト、プロモーション、保守を行っています。



Mihai Garbia, IBM SmartCloud Enterprise Image Center, IBM

Image Center では、IBM SmarterCloud Enterprise や、IBM SoftLayer 上の IBM SmarterCloud インフラストラクチャーを対象とした高品質のマスター・イメージを作成するためのプロセスおよびベスト・プラクティスを定義しており、IBM グループおよび外部パートナーに対して指針を提供しています。また、このセンターでは Windows、RedHat、SuSE ベースの SmarterCloud 対応 OS イメージの広範なセットの作成、テスト、プロモーション、保守を行っています。



Stefan Ioan, IBM SmartCloud Enterprise Image Center, IBM

Image Center では、IBM SmarterCloud Enterprise や、IBM SoftLayer 上の IBM SmarterCloud インフラストラクチャーを対象とした高品質のマスター・イメージを作成するためのプロセスおよびベスト・プラクティスを定義しており、IBM グループおよび外部パートナーに対して指針を提供しています。また、このセンターでは Windows、RedHat、SuSE ベースの SmarterCloud 対応 OS イメージの広範なセットの作成、テスト、プロモーション、保守を行っています。



2013年 12月 19日

この記事では、データを実稼働システムにコピーするという方法で、RHEL (Red Hat Enterprise Linux) VM インスタンスを SCE (SmarterCloud Enterprise) から SoftLayer インフラストラクチャーへマニュアルでマイグレーションする手順を説明します。マイグレーション先ドライブのデータは、SCE イメージのデータで上書きされることになるため、この記事で説明する手順に従うことが重要です。

前提条件

このマイグレーションの手順には以下のものが必要です。

  • IBM SmarterCloud Enterprise アカウント。
  • SoftLayer アカウント。
  • SCE に取り込まれている、マイグレーション対象の完全なイメージ (「完全な」というのは、SCE 内のイメージにはそのイメージのバックアップを作成して保持するのに十分な格納領域が割り当てられており、それ全体を指しています)。
  • SCE において実行中の RHEL インスタンス (このインスタンスから転送を開始します)。
  • SoftLayer におけるプロビジョニング済み RHEL インスタンスと、SCE イメージを格納するのに十分な空きディスク領域。

SCE 内のインスタンスおよびストレージのプロビジョニングについては、SCE 管理コントロール・パネルの「Support (サポート)」タブからアクセスできるユーザーズ・ガイドを参照してください。

SoftLayer 内にインスタンスを作成するには、SoftLayer Customer Portal にログインして、「Sales (セールス)」 > 「Products (製品)」 > 「Cloud Instances (クラウド・インスタンス)」の順に選択し、ポップアップ・ウィンドウから適切な構成の RHEL オファリングを選択します。


マイグレーションするイメージをストレージへコピーし、SoftLayer インスタンスへ転送するための準備をする

イメージをストレージへコピーする

  1. イメージのコピーを許可する設定を有効にします。
    1. SCE コントロール・パネルで、「View asset catalog (アクセス・カタログの表示)」をクリックします。
    2. 「My Dashboard (マイ・ダッシュボード)」を選択します。
    3. イメージと同じ名前のアセットをクリックします。
    4. 「Modify asset (アセットの変更)」をクリックします (右上にある鉛筆アイコンを使用します)。
    5. 「Copy allowed (コピーを許可)」フィールドを「Y (はい)」に設定します。
    6. 「Update (更新)」をクリックして、変更を保存します。
  2. SSH を使用して SCE RHEL インスタンスに接続し、root ユーザーに切り替えます (sudo -s)。
  3. API にアクセスするための基本変数を、以下のように設定します。
    PROD_BASE_URL="https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331"

    SCE ポータルにアクセスするために使用するのと同じログイン・ユーザー名とパスワードを使用します。

    PROD_USER=SCE_username:SCE_password

    イメージ ID を調べます。SCE の「Control panel (コントロール・パネル)」で、イメージ・リスト内の該当するインスタンスをクリックします。これが、SoftLayer インスタンスにエクスポートするイメージです。

    imageID=333789

    ストレージ ID を調べます。SCE の「Control panel (コントロール・パネル)」で、ストレージ・リスト内の該当するストレージをクリックします。

    storageID=654321
  4. イメージをストレージへコピーするコマンドを開始します。
    curl -s -u $PROD_USER -X PUT -d "imageId=$imageID" $PROD_BASE_URL/storage/$storageID | 
    xmllint --c14n - | XMLLINT_INDENT=$'\t' xmllint --encode UTF-8 --format -

イメージを SoftLayer インスタンスへ転送するための準備をする

上記と同じ SCE インスタンスについて、同じ基本変数の値を使用して以下の手順を実行します。

  1. インスタンスに対してストレージを接続します。インスタンス ID を調べるには、SCE の「Control panel (コントロール・パネル)」で、イメージ・リスト内の該当するインスタンスをクリックします。
    instanceID=123456

    ストレージ ID を調べます。SCE コントロール・パネルで、ストレージ・リスト内の該当するストレージをクリックします。

    storageID=654321

    インスタンスにストレージを接続します。

    DATA="type=attach&storageID=$storageID"
    curl -s -u $PROD_USER -X PUT -d $DATA $PROD_BASE_URL/instances/$instanceID | xmllint
    --c14n - | XMLLINT_INDENT=$'\t' xmllint --encode UTF-8 --format -
  2. ストレージを切り離すには、以下の DATA 変数を設定して上記の curl コマンドを実行します。
    DATA="type=detach&storageID=$storageID"
  3. 接続したストレージ・デバイスの名前を取得します (この例では /dev/vdh1)。
    # fdisk -l | grep ^/dev
    WARNING: GPT (GUID Partition Table) detected on '/dev/vdh'! The util fdisk 
    doesn't support GPT. Use GNU Parted.
    /dev/vda1 * 63 192779 96358+ 83 Linux
    /dev/vda2 192784 125831167 62819192 83 Linux
    /dev/vdb1 63 8385929 4192933+ 82 Linux swap / Solaris
    /dev/vdh1 1 125829119 62914559+ ee GPT
  4. そのストレージをマウントします。
    mount /dev/vdh1 /mnt/test
  5. SoftLayer インスタンスへの転送時間を短縮するために、イメージをアーカイブします。
    # cd /mnt/test/image
    # tar -czvf imagename.tgz imagename.img
  6. 転送を検証するための .tgz ファイルのチェックサムを生成します。
    # sha1sum /mnt/test/image/imagename.tgz
    fd58475c3f5634322ec34896964fd1cbecf52625

SoftLayer インスタンスへイメージを転送する

SSH 秘密鍵 (SoftLayer インスタンスをプロビジョニングするときに選択した鍵) を SCE インスタンスにコピーします。以下の例では、パブリック IP アドレスとして 50.97.210.68 を指定すれば SoftLayer インスタンスにアクセスすることができます。ネットワーク構成についての詳細情報は、SoftLayer コントロール・パネルを参照してください。

  1. 適切な許可が与えられていることを確認します。
    # chmod 600 /home/idcuser/sshkey
  2. 接続が切断されないように、nohup を付けて scp を実行することにより、SoftLayer インスタンスへの転送を開始します。
    # nohup scp -i /home/idcuser/sshkey /mnt/test/image/imagename.tgz root@50.97.210.68:/tmp &

    SoftLayer インスタンスの root ユーザーに接続していることに注意してください。

  3. SoftLayer インスタンスに接続し、イメージのチェックサムを生成することにより、転送されたファイルを検証します。生成されたチェックサムが、前に SCE インスタンスで生成したチェックサムと一致しなければなりません。
    # ssh -i $SLkey root@50.97.210.68
    
    [root@mihaig ~]# sha1sum /tmp/imagename.tgz
    fd58475c3f5634322ec34896964fd1cbecf52625

レスキュー・モードでのリブート

以降のステップでは、SoftLayer インスタンスのオペレーティング・システムが上書きされることになります。この操作はシステムが稼働している間は実行できないため、システムをレスキュー・モードでブートする必要があります。

SoftLayer コントロール・パネルのインスタンス構成で、「Actions (アクション)」メニューから「Rescue (レスキュー)」を選択します。この操作は処理が完了するまでに時間がかかります。処理が完了してインスタンスがレスキュー・モードでブートされると、e-メールで通知されます (e-メールは、SoftLayer アカウントの登録アドレスに送信されます)。

SoftLayer のレスキュー・イメージは、ネットワークおよび yum サポートを備えた完全に機能する環境を提供します。したがって、完全にインストールされたシステムと同じように、あらゆるタスクを実行することができます。インスタンスがレスキュー・モードでブートされているときのネットワーク構成は実稼働時のシステムのときと同じなので、SSH を使用してリモートからアクセスすることができます (この方法が推奨されます)。あるいは、同じく「Actions (アクション)」メニューから選択できる KVM コンソールを使用することもできます (この場合、最初に VPN 接続を確立する必要があります。VPN 接続についての情報は、SoftLayer KnowledgeLayer を参照してください)。


SCE から転送したイメージ・ファイルをマウントする

SCE イメージからファイルを転送した後、SoftLayer インスタンスのオペレーティング・システムを上書きするには、書き込み元ディレクトリーと書き込み先ディレクトリーを設定する必要があります。

書き込み元 (SCE から転送したイメージ・ファイル) の設定をします。RAW イメージ・ファイルはループ・デバイスとしてマウントできるため、これらのファイルからデータを抽出することができます。以下の手順では、例として rhel64-x86-13-09-02.img を使用します。

  1. マウント・ポイントを作成して、イメージ・ファイルが含まれるパーティションをマウントします。
    # mkdir /mnt/src_dir
    # mount /dev/xvdc2 /mnt/src_dir
  2. イメージ・ファイルの特性をチェックします (イメージ・ファイルからデータを抽出してマウントするには、該当データが含まれるパーティションのオフセットが必要になります)。
    # file rhel64-x86-13-09-02.img
    rhel64-x86-13-09-02.img: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, 
    boot drive 0x80, 1st sector stage2 0xc8800, GRUB version 0.94; partition 1: ID=0x83, 
    active, starthead 32, startsector 2048, 2048000 sectors; partition 2: ID=0x83, 
    starthead 155, startsector 2050048, 8664674 sectors, code offset 0x48

    ここで必要となるのは 2 番目のパーティションからのデータです。1 番目のパーティションは /boot で、これは SoftLayer においても変更されずにそのまま維持されます。2 番目のパーティションの startsector 値を書き留めてください (上記の例では 2050048 ですが、皆さんの値は異なる場合があります)。この値に 512 を掛けます (2050048*512=1049624576)。この数値が、必要なマウント・オフセットです。

  3. マウント・ポイントを作成して、イメージ・ファイルをマウントします。
    # mkdir /mnt/source
    # mount -o loop,offset=1049624576 /mnt/src_dir/rhel64-x86-13-09-02.img /mnt/source

注: SCE のブート・パーティションから何かを抽出する必要がある場合は、上記の手順に 1 番目のパーティションのオフセット (startsector 2048 を 512 で乗算した 10485760) を適用してください。

mount -o loop,offset=1048576 /mnt/src_dir/rhel64-x86-13-09-02.img /<target>

書き込み先ディスク・パーティションのマウント

SoftLayer インスタンスの OS を上書きするには、書き込み先パーティションを読み取り/書き込みモードでマウントする必要があります。以下の手順は、レスキュー・モードで実行します。

  1. ルート・パーティションを識別するために、proc のパーティション・レイアウトをチェックします。通常、ターゲット・ドライブは、(SoftLayer コントロール・パネルのリストに記載された) 100GB のシステム・パーティションが含まれる 1 番目のドライブです。
    # cat /proc/partitions 
    major minor  #blocks  name 
    
     202        0  104857600 xvda 
     202        1     262144 xvda1 
     202        2  104594432 xvda2 
     202       16    2097152 xvdb 
     202       17    2096451 xvdb1 
     202       32  157286400 xvdc 
     202       34  157284351 xvdc2

    上記の例では、1 番目のドライブ (xvda) 上の ~100 GB xvda2 / (root) パーティションを識別することができます。

  2. xvda2 ルート・パーティションをマウントします。
    # mkdir /mnt/destination
    # mount /dev/xvda2 /mnt/destination

書き込み元から書き込み先へファイルをコピーする

レスキュー・モードの状態のまま、SCE イメージから転送した実際のファイルを SoftLayer インスタンスへ書き込む作業に進むことができます。この作業では、rsync ツールを使用します。ネットワーク障害による問題が発生しないように、SSH で操作している間は screen を使用することをお勧めします。

  1. レスキュー・モードで screen をインストールし、セッションを開始します。
    # yum install screen
    # screen -S transfer

    これで、「transfer」という名前の screen セッションで操作している状態になります。SSH 接続が中断されたとしても、transfer セッションはバックグラウンドで維持されます。

  2. 除外対象をリストにしたファイルを作成します。ファイルのうちのいくつかは、新しいインストール済み環境が機能し続けるように、そのままの状態で維持する必要があります。除外対象のリストは長いため、rsync --exclude-from 機能を使用してください。/root ディレクトリーに exclude.txt という名前の新規テキスト・ファイルを作成して、以下の内容を追加します。
    etc/fstab
    etc/sysconfig
    etc/securetty
    etc/rc*
    etc/init*
    etc/ssh
    etc/selinux
    etc/security
    etc/networks
    etc/nsswitch.conf
    etc/ntp.conf
    etc/passwd
    etc/shadow
    etc/sysctl.conf
    etc/yum.conf
    serial-ttyS0.conf 
    serial-ttyS1.conf
  3. ファイルの書き込み (/mnt/source/ から /mnt/destination/ への転送) を開始します。
    rsync -avhP --exclude-from=exclude.txt /mnt/source/* /mnt/destination/

    警告: 上記のコマンドをターミナルにコピー・アンド・ペーストして Enter キーを押さないでください。コピーした文字には、テキスト・エディターによってフォーマット設定項目が追加されている可能性があるため、その場合にはシェルが正しいコマンドを認識できずに問題が生じることになります。除外対象リストのファイルが正しく読み込まれないと、一部の項目が上書きされて、マイグレーション手順で問題が生じる可能性があります。

ファイルの転送中に、転送されているファイルのリストを表示することができます。SSH 接続が切断された場合は、再接続してから、screen -r transfer を実行すると、前に開始されたセッションが再開されて処理が続行されます。


ネットワーク設定の検証

rsync 操作によってネットワーク設定が変更されることはありませんが、ネットワーク設定を確認し、新しいインスタンスがインターネットにアクセスできることを確実にしてください。インターネットには eth1 からアクセスし、プライベート・ネットワークには eth0 からアクセスするのが通常です。

ネットワーク構成の詳細は、SoftLayer コントロール・パネルの「Configuration (構成)」タブで確認することができます。このタブに表示されたパブリック・ネットワークのデフォルト・ゲートウェイ・アドレスをメモしてから、/mnt/destination/etc/sysconfig/network ファイルを開きます。GATEWAY=<IP addr> 行がない場合、ファイルの一番下に、コントロール・パネルで取得したゲートウェイ IP を使用して行を追加します。

ファイル /mnt/destination/etc/sysconfig/network は、以下の例のようになります。

NETWORKING=yes
HOSTNAME=migration.softlayer.com
GATEWAY=50.97.33.193

eth1 の構成ファイルを確認します。/mnt/destination/etc/sysconfig/network-scripts/ifcfg-eth1 を開いて、このファイルに含まれているアドレスがコントロール・パネルに表示されたアドレスと対応していることを確認してください。最終的に、ifcfg-eth1 ファイルは以下の例のようになっているはずです。

DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=06:c4:70:b1:31:9d
IPADDR=50.97.33.197
NETMASK=255.255.255.224

新しいインスタンスにアクセスするには、レスキュー・モードからリブートして、新しいシステムが起動するのを待ちます。


認証およびユーザー

システムのユーザー認証の部分は、SCE イメージからのデータで上書きされませんでした。そのため、次の 3 つの点を考慮する必要があります。

  • 現在、root のログインが有効になっています。
  • パスワード認証が有効になっています。
  • カスタム・ユーザー・アカウント (idcuser など) はマイグレーションされていません。

システムの起動後、SoftLayer コントロール・パネルにおいて root で使用できる資格情報を使用して、SSH による認証を行うことができます。

idcuser アカウントを再び追加するには、以下のコマンドを実行します。

# adduser -M -N --gid 500 --uid 500 --groups=idcuser,users -s /bin/bash idcuser

参考文献

学ぶために

製品や技術を入手するために

  • IBM 製品の評価版: 製品の評価版をダウンロードして IBM 製品を評価してください。

議論するために

  • SCE Support Community フォーラムの「Known issues with SCE to SoftLayer migration」で SCE から SoftLayer へ移行する際の既知の問題をよく読んでください。
  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Linux
ArticleID=957428
ArticleTitle=SoftLayer への移行: Linux インスタンスを SCE から SoftLayer へマニュアルでマイグレーションする
publish-date=12192013