G-gen の國﨑です。Google Cloud (旧称 GCP) の仮想サーバーサービスである Compute Engine へサーバーを移行する方法はいくつかあります。今回はその手法の一つである 手動インポート 機能を実際に使ってみました。
手動インポートとは?
Google Cloud の Compute Engine へサーバーを移行する方法は、以下のようなものがあります。
このうち、当記事では手動インポートを実際にやってみます。
手動インポートでは、オンプレミスの既存サーバ(物理・仮想)のブートディスクをオンプレ環境側でイメージ化したあと Google Cloud のオブジェクトストレージサービスである Cloud Storage に 手動でインポート することで、 Compute Engine のカスタムイメージを作成することができます。
このカスタムイメージを使用して、 Google Cloud 上に Compute Engine VM を構築する事が出来ます。
前提条件
手動インポートを行うには前提条件が複数あります。
No | 前提条件 | 詳細リンク |
---|---|---|
1 | Linux である | リンク |
2 | ブートディスクの容量が2TB以下である | リンク |
3 | qemu-img check コマンドで問題がない | リンク |
4 | イメージファイル名が disk.raw である | リンク |
5 | 単一のディスクである | リンク |
6 | 論理ボリュームマネージャ (LVM) で分割されたディスクではない | リンク |
7 | quiet, rhgb, splashimage=** のコマンドライン引数が含まれていない | リンク |
8 | シリアルコンソールを使用するためコマンドライン引数 console=ttyS0,38400n8d が追加されている | リンク |
移行元環境イメージ化
これからは、実際の手順を見ていきます。この記事では CentOS 8 での作業例をご紹介します。
初めに移行元環境の確認を行います。
ディスクイメージを作成するために 移行対象サーバ に ログイン し lsblk
コマンドと df
コマンド を使用して、イメージ 作成元ブートディスクの容量と、作成する イメージファイル を書き込むための十分な空き領域があることを確認します。
下記の例では vda
がイメージ化対象のブートディスク、 vdb
にマウントされている /tmp
が作成したイメージを書き込む空き領域になります。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 10G 0 disk |_vda1 252:1 0 1G 0 part /boot |_vda2 252:2 0 9G 0 part |_cl-root 253:0 0 8G 0 lvm / |_cl-swap 253:1 0 1G 0 lvm [SWAP] vdb 252:16 0 50G 0 /tmp $ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 646M 0 646M 0% /dev tmpfs 663M 0 663M 0% /dev/shm tmpfs 663M 8.6M 655M 2% /run tmpfs 663M 0 663M 0% /sys/fs/cgroup /dev/mapper/cl-root 8.0G 1.4G 6.7G 18% / /dev/vda1 976M 135M 774M 15% /boot tmpfs 133M 0 133M 0% /run/user/0 /dev/vdb 50G 2.8G 48G 6% /tmp
確認して問題が無ければ、移行元VMのブートローダーが ブートローダー / GRUB 構成ファイルの前提条件 を満たしているか確認します。GRUB 構成ファイルを編集した場合は grub2-mkconfig
コマンドで ブートローダーを再構成 します。
$ grub2-mkconfig -o /boot/grub2/grub.cfg
ブートローダーの再構成が終われば、ブートディスクのイメージ化をします。カレントディレクトリを /tmp
に移動し dd
コマンドでブートディスクである /dev/vda
を disk.raw というファイル名で /tmp
以下に作成します。
$ cd /tmp $ dd if=/dev/vda of=/tmp/disk.raw bs=4M conv=sparse
イメージ化された disk.raw
ファイルを tar
コマンドにて /tmp
領域に compressed-image.tar.gz と言うファイル名で圧縮します。
$ tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
圧縮された compressed-image.tar.gz
ファイルを クライアントPC にダウンロードしておきます。
カスタムイメージ の作成
Google Cloud コンソール を開き Cloud Storage に移動し バケットを作成 をクリックします。
バケット名 、 データの保存場所 を指定し、ストレージ クラス は Standard を指定して 作成 をクリックします。
バケット が作成されると作成された新しいバケットに画面が移動するので ファイルをアップロード をクリックし、ダウンロードしておいた compressed-image.tar.gz
をアップロードします。
Google Cloud コンソールで Compute Engine の画面の中にある イメージ ページに移動し イメージを作成 をクリックします。
名前に作成するイメージ名、ソース に Cloud Storage ファイル を選択し、作成したバケットにアップロードした compressed-image.tar.gz
を指定して 作成 をクリックします。
以上でカスタムイメージの登録が完了しました。
カスタムイメージからVMを構築
Google Cloud コンソールで VM インスタンス ページに移動し インスタンスを作成 をクリックします。
VM 名、リージョン 、マシンの構成を選択します。
ブートディスクの 変更 をクリックします。
ブートディスクの選択画面で カスタムイメージ を選択し、登録した カスタムイメージ を含む プロジェクト を選択し、登録した カスタムイメージ を選択します。
ブートディスクの種類 、 サイズ(GB) を移行元サーバに合わせて設定し、 選択 をクリックします。
以上で、カスタムイメージ から VM を構築する準備が完了しましたので 作成 をクリックします。
構築が完了すると、 VM インスタンス一覧画面で作成した VM が起動していることを確認できます。
表示されている外部 IP 宛にターミナルで SSH ログインすると、今回手動インポートした移行元サーバが、 Google Cloud で起動しているのが確認できます。