目次


SoftLayer への移行

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

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: SoftLayer への移行

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:SoftLayer への移行

このシリーズの続きに乞うご期待。

この記事では、データを実稼働システムにコピーするという方法で、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

ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

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