Google Cloud の「手動インポート機能」でサーバー移行してみた

記事タイトルとURLをコピーする

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/vdadisk.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 で起動しているのが確認できます。

國﨑 隆希(記事一覧)

クラウドソリューション部

2022年5月にG-gen にジョイン。前職までは物理・仮想環境を中心に業務に従事。 Google Cloud のスキルを身に着けるべく勉強中。