ブートディスク イメージを Compute Engine にインポートする

物理的データセンター、ローカル ワークステーション上の仮想マシン、別のクラウド プラットフォームで動作している仮想マシンから Compute Engine にブートディスク イメージをインポートするおすすめの方法は、仮想ディスク インポート ツールを使ってこのガイドのすべての手順を自動化することです。

自動ツールを使用しない場合は、このガイドの手動の手順に沿って操作します。

このイメージのインポート処理で一度にインポートできるディスクは 1 つのみです。このガイドでは、ブートディスク イメージのインポート方法を中心に説明します。

Compute Engine の公開イメージ上で動作するようにアプリケーションをビルドまたは移行できない場合にのみ、既存のブートディスク イメージをインポートします。公開イメージは Compute Engine 環境で動作するように構成済みなので、ブートローダーやオペレーティング システムの構成を気にすることなく、このイメージ上でアプリケーションを実行できます。ただし、次の場合にはブートディスク イメージのインポートが必要になる場合があります。

  • 公開イメージとして提供されていないオペレーティング システムがアプリケーションに必要な場合。
  • 別のクラウド プラットフォームでの仮想マシンの作成に使用する一連の基本イメージがすでにある場合。
  • アプリケーション コードを公開イメージの 1 つに移行する作業の方が、ブートディスク イメージをインポートする作業より手間がかかる場合。

仮想マシンの移行については、パートナー サービスによるサポートも利用できます。詳細については、Compute Engine への VM の移行をご覧ください。

概要

Compute Engine にブートディスク イメージをインポートするには、次の処理を実行します。

  1. インポートパスを計画します。アップロードする前にブートディスク イメージをどこに用意するか、Compute Engine 環境で起動後にそのイメージにどう接続するかを決定する必要があります。
  2. Compute Engine 環境で起動し、起動後にアクセスできるように、ブートディスクを準備します。
  3. ブートディスク イメージ ファイルを作成し、圧縮します。
  4. イメージ ファイルを Google Cloud Storage にアップロードし、そのイメージを新しいカスタム イメージとして Compute Engine にインポートします。
  5. インポートしたイメージを使用して、仮想マシンのインスタンスを作成し、正常に起動するか確認します。
  6. イメージが正常に起動しない場合は、ブートディスク イメージを別のインスタンスに接続し、再構成することによりトラブルシューティングを行えます。
  7. イメージを最適化して Linux ゲスト環境をインストールします。これにより、インポートしたオペレーティング システムのイメージはメタデータ サーバーと通信し、Compute Engine の他の機能も使用できるようになります。

要件

Compute Engine にブートディスクをインポートするには、既存のブートディスクが次の要件を満たしている必要があります。

  • カスタム オペレーティング システムのカーネルを構築する場合は、ハードウェアとカーネルの構成要件を満たしている必要があります。通常の Linux ディストリビューションのほとんどは、これらの要件をすでに満たしているため、この要件は、独自のカスタム オペレーティング システムを構築して Compute Engine 上で動作させている上級ユーザー向けになります。
  • ブートディスクの上限は 2,048 GB(2 TB)です。
  • インポートするブートディスクには、実際に機能する MBR パーティション テーブルか、GPT パーティション テーブルと MBR ブートローダーのハイブリッド構成が含まれている必要があります。
  • ブートディスクのプライマリ パーティションのフォーマットは、MBR ブートローダーから正常に起動するものであれば任意に選択できます。
  • ブートディスクのブートローダーには、quietrhgbsplashimage= のカーネル コマンドライン引数を含めることはできません。Compute Engine は起動時のスプラッシュ画面をサポートしていません。これらの値は、ブートローダーの構成の手順において、GRUB 構成から削除できます。

インポートするイメージ ファイルは、次の要件を満たしている必要があります。

  • ディスク イメージ ファイル名は disk.raw である必要があります。
  • RAW イメージ ファイルは 1 GB ずつ大きくできます。たとえば、ファイルは 10 GB でも 11 GB でも構いませんが、10.5 GB にはできません。
  • 圧縮ファイルは gzip 圧縮tar ユーティリティの oldgnu フォーマット オプションを使用した .tar.gz ファイルになっている必要があります。

任意のオペレーティング システムのブートディスクをインポートできますが、Compute Engine 環境に合わせて構成するのが容易なものとそうでないものがあります。このガイドでは、次のオペレーティング システムをテストします。

  • Debian 7、Debian 8
  • RHEL/CentOS 6
  • openSUSE 13.x
  • Ubuntu 12.04、14.04、16.04

次のオペレーティング システムの場合、このガイドでは説明されていない追加の構成手順が必要になることがあります。

  • Debian 6 以前
  • RHEL/CentOS 7
  • RHEL/CentOS 5 以前
  • Ubuntu 10.04 以前

イメージ インポートのコスト

インポート処理を開始する前に、そのためのコストを理解しておく必要があります。ブートディスク イメージ ファイルを Google Cloud Storage にアップロードする際のネットワーク(上り)や、そのイメージを Compute Engine のカスタム イメージとしてインポートするのにコストはかかりません。ただし、インポート処理の一部の手順には、次のコストがかかります。

  • 圧縮したイメージ ファイルを Google Cloud Storage の標準バケットに一時的に保存するためのコスト。ファイルをカスタム Compute Engine イメージとしてインポートする前に、一時的に Google Cloud Storage バケットを使用してそのファイルを保持することが必要になります。バケットはインポート処理の完了後に削除できます。
  • Compute Engine へのカスタム イメージのインポート完了後に、カスタム イメージを保存するためのコスト。
  • 既存のデータセンター、ネットワーク プロバイダ、現在のクラウド サービスでデータを送信するために必要となる可能性のあるコスト。イメージ ファイルは、圧縮してもサイズが非常に大きいため、これらのファイルを Compute Engine にコピーする際に、一部のプラットフォームではかなりの送信コストがかかる可能性があります。
  • Compute Engine の永続ディスク仮想マシン インスタンスのためのコスト。Compute Engine にイメージをインポートした後、これらの場所でそのイメージを構成できます。

インポートパスの計画と準備

ディスクのインポート方法は、Compute Engine に移動するシステムの現在の構成によって異なります。ブートディスク イメージ ファイルを Google Cloud Storage にアップロードできるだけでなく、そのイメージ ファイルを作成して圧縮できるシステムが必要です。インポートパスを計画する際は、次の点を考慮します。

  • イメージのインポートパスには、稼働中のオペレーティング システム環境でブートディスクを構成する必要があります。このプロセスにより、ブートディスクが Compute Engine 環境以外では起動しなくなる場合があります。デベロッパーには、Compute Engine へのシステムのインポート時にディスクのデータが失われたり、ビジネス アプリケーションの機能が中断されたりしないよう確認する責任があります。
  • 既存のシステムのアクセス構成を確認し、Compute Engine にシステムをインポートした後のシステムへのアクセス方法を計画します。
    • システムにユーザー ログイン構成や SSH 構成がすでになされている場合、ブートローダーを構成するだけで、Compute Engine 上で最適に動作するイメージを構成できます。既存の SSH 構成を使用するか、インタラクティブ シリアル コンソールに直接ユーザー ログインして、インスタンスにアクセスできるようになります。
    • システムにユーザー ログイン構成や SSH 構成がなされていない場合、Compute Engine 上でブートディスクを起動してアクセスできるように、ブートディスクを構成する必要があります。
  • インポート処理には、数時間から数日間かかる場合があります。所要時間は、ブートディスクのサイズやネットワーク接続の速度によって異なります。
  • ブートディスク イメージを作成して圧縮するシステムには、ブートディスク自体の他に、ストレージ デバイスのイメージ ファイルを作成するための十分なストレージ容量が必要です。通常、この場合のイメージと tar.gz ファイルには、ブートディスク自体の 2~3 倍の容量が必要になります。
  • インポートする既存のシステムのファイル システム構造を確認します。
    • オペレーティング システムやアプリケーション ファイルが複数のディスクに分散している場合、それらのディスクを個別にインポートし、それぞれのイメージを使用して Compute Engine 仮想マシン インスタンス用に固有の永続ディスクを作成します。
    • システムのブート ボリュームが RAID 構成になっており、複数のディスクが単一の論理ボリュームとして動作している場合は、アレイのディスクごとに 1 つのイメージを作成するのではなく、アレイ全体の単一のイメージを作成します。Compute Engine の永続ディスクは RAID 構成にする必要はありません。
  • ブートディスクのコンテンツがシステムにより Trusted Platform Module かソフトウェア レベルの暗号化技術を使用して暗号化されている場合、ブートディスク イメージ ファイルを作成する前にブートディスクを復号します。Google では暗号化されたままのイメージを読み込むことはできません。イメージは、アップロードした後に暗号化されます。永続ディスク用と Cloud Storage バケット用に暗号鍵を構成できます。

インポート処理を完了するシステムを特定するか作成したら、そのシステムに接続し、ブートローダーを構成します。

ブートディスク イメージの準備

ブートディスク イメージが、実行中のシステムの Compute Engine 環境で機能できるように準備します。

  • Compute Engine 上でイメージが起動できるように、ブートディスクにブートローダーを構成します。
  • SSH かユーザー ログイン アクセスをブートディスクに構成します。これにより、ブートディスクを Compute Engine にインポートし、仮想マシン インスタンスとして起動すると、ブートディスクにアクセスできるようになります。

この処理により、Compute Engine 以外ではシステムが起動しなくなる場合があります。このため、この手順を実行する際は、インポートするブートディスクのコピーを使用して、隔離されたシステム上で行うことをおすすめします。

ブートローダーの構成

ブートローダーが Compute Engine 上で起動できるように、システムにブートローダーを構成します。

  1. インポートする予定のブートディスクを使用して、システムのターミナルに接続します。

  2. GRUB 構成ファイルを編集します。通常、このファイルは /etc/default/grub にありますが、一部のディストリビューションでは通常と異なるディレクトリに存在する場合もあります。

  3. GRUB 構成ファイルを次のように変更します。

    • splashimage= と記述されている行をすべて削除します。Compute Engine は起動時のスプラッシュ画面をサポートしていません。
    • rhgbquiet のカーネル コマンドライン引数を削除します。
    • カーネル コマンドライン引数に console=ttyS0,38400n8d を追加し、インスタンスがインタラクティブ シリアル コンソールで動作できるようにします。
  4. grub.cfg ファイルを再生成します。使用しているディストリビューションに応じて、次のどちらかのコマンドを使用します。

    • Debian、Ubuntu: sudo update-grub
    • RHEL、CentOS、SUSE、openSUSE: sudo grub-mkconfig -o /boot/grub/grub.cfg
  5. /etc/fstab ファイルを編集し、ブートディスク自体とそのブートディスクのパーティション以外のすべてのディスクとパーティションに対する参照を削除します。/etc/fstab に無効なエントリが含まれていると、システムの起動プロセスが停止する恐れがあります。

ブートローダーを構成したら、ディスク イメージ ファイルを作成し圧縮します。

イメージに SSH かユーザー ログイン アクセスを構成する

イメージが Compute Engine で仮想マシン インスタンスとして動作するようになると、このインスタンスにアクセスする方法が必要になります。既存の SSH 構成を使用してインスタンスに接続するか、インタラクティブ シリアル コンソールに接続し、ユーザー名とパスワードを使用してログインすることもできます。

ディスク イメージ ファイルを作成し圧縮する前に、SSH 構成かユーザー ログイン構成を完了します。

ディスク イメージ ファイルを作成して圧縮する

Compute Engine にインポートするシステムのブートディスク イメージ ファイルを作成し、圧縮します。イメージ ファイルを作成して圧縮する処理は、システムが動作するプラットフォームによって異なります。

一般

ほとんどのシステムでは、次の処理方法で Compute Engine にインポート可能な RAW イメージ ファイルを作成できます。この処理は、インポートしている実行中のシステムで完了できます。また、ブートディスクを別のシステムの予備ディスクとして接続し、停止しているディスクからブートディスク イメージを作成することもできます。ディスク イメージ ファイルを一時的に保持するための十分なストレージ容量があることを確認してください。この例では、イメージを実行中のシステムから取得します。

  1. インポートする予定のブートディスクを持つシステムのターミナルに接続します。

  2. lsblk コマンドを使用して、イメージの作成元となるブートディスクと、イメージ ファイルを書き込むのに十分な容量のある場所を確認します。この例では、/dev/sda がソース ブートディスクで、/dev/sdb/tmp ディレクトリにマウントされている大容量の予備ディスクです。/dev/sda が実行中ですが、イメージを作成できます。アクティブにデータの処理やアプリケーションの実行をしていない、動作の少ないシステムの場合、この方法が最善です。

    $ lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk
    ├─sda1   8:1    0   96G  0 part /
    ├─sda2   8:2    0    1K  0 part
    └─sda3   8:5    0    4G  0 part [SWAP]
    sdb      8:16   0  500G  0 disk /tmp
    sr0     11:0    1 1024M  0 rom
    
  3. ブートディスクからイメージを作成します。

    $ sudo dd if=/dev/sda of=/tmp/disk.raw bs=4M conv=sparse
    
  4. disk.raw ファイルを書き込んだディレクトリに移動します。

    $ cd /tmp
    
  5. RAW ディスクを tar.gz 形式に圧縮します。このステップでイメージ ファイルを圧縮することにより、ファイルを Google Cloud Storage にアップロードする時間を短縮できます。OSX では、gtar をインストールし、このステップで tar の代わりに使用します。

    $ sudo tar -Sczf /tmp/compressed-image.tar.gz disk.raw
    

AWS EC2

Amazon EC2 インスタンスをインポートする場合は、AMI ツールを使用して、Amazon EBS ボリュームをバンドルします。

  1. アカウントの設定コンソールAmazon アカウント ID を探して、メモします。

  2. Amazon EC2 インスタンスで、EC2 AMI ツールをダウンロードしてインストールします。

  3. 次の引数を使用して ec2-bundle-vol を root として実行します。cert-<hash>.pem は証明書ファイル、pk-<hash>.pem は秘密鍵、AWS_ACCOUNT_ID は Amazon アカウント ID に置き換えます。このコマンドにより、image ファイルが作成されます。

    ec2-bundle-vol -c /tmp/build/cert-<hash>.pem \
        -k /tmp/build/pk-<hash>.pem -u AWS_ACCOUNT_ID \
        -r x86_64 --no-filter --exclude /tmp/build \
        --grub-config /tmp/build/menu.lst \
        --fstab /tmp/build/fstab
    
  4. RAW ディスクを tar.gz 形式に圧縮します。このステップでイメージ ファイルを圧縮することにより、ファイルを Google Cloud Storage にアップロードする時間を短縮できます。OSX では、gtar をインストールし、このステップで tar の代わりに使用します。

    $ sudo tar -Sczf /tmp/compressed-image.tar.gz disk.raw
    

Virtual Box

システムを VirtualBox 環境で準備した場合は、VBoxManage ツールを使用して .vdi.qcow2 ディスク イメージを disk.raw 形式に変換できます。

  1. インポートする VirtualBox ゲスト コンピュータをシャットダウンします。ゲスト コンピュータは、VirtualBox インターフェース、または VBoxManage ユーティリティでシャットダウンできます。

    VBoxManage controlvm [GUEST_NAME] acpipowerbutton
    

    ここで、[GUEST_NAME] はゲスト コンピュータの名前です。

  2. VBoxManage ユーティリティを使用して、ゲストイメージを RAW 形式に変換します。

    VBoxManage clonemedium [GUEST_IMAGE] \
        ~/disk.raw --format RAW
    

    ここで、[GUEST_IMAGE] はゲストイメージ .vdi または .qcow2 ファイルへのパスです。

  3. RAW ディスクを tar.gz 形式に圧縮します。このステップでイメージ ファイルを圧縮することにより、ファイルを Google Cloud Storage にアップロードする時間を短縮できます。OSX では、gtar をインストールし、このステップで tar の代わりに使用します。

    $ sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

イメージ ファイルが圧縮され、Google Cloud Storage にアップロードする準備が整いました。

カスタム イメージリストにイメージをインポートする

ファイルを Google Cloud Storage にアップロードし、イメージをカスタム イメージリストにインポートします。インポート処理中、イメージを暗号化することもできます。

イメージは、Console か Cloud SDK ツールを使用してインポートできます。

Console

compressed-image.tar.gz ファイルをローカル ワークステーションにコピーし、GCP Console を使用してバケットを作成し、ファイルをアップロードします。

  1. GCP Console で、Cloud Storage ブラウザページに移動します。

    [ブラウザ] ページに移動

  2. ページ上部の [バケットを作成] をクリックします。
  3. 一意のバケット名、Standard Storage クラス、イメージ ファイルの保存場所を指定します。
  4. [作成] をクリックしてバケットを作成します。ブラウザのページが新しいバケットに移動します。
  5. ページ上部の [ファイルをアップロード] をクリックします。
  6. ファイル ダイアログで、システムからダウンロードした compressed-image.tar.gz ファイルを選択します。ファイルは、ローカル ワークステーションからアップロードします。この手順には、数時間かかる場合があります。所要時間は、圧縮したイメージ ファイルのサイズやネットワーク接続の速度によって異なります。

イメージを Google Cloud Storage にアップロードしたら、イメージ ファイルをカスタム イメージリストにインポートします。

  1. GCP Console で [イメージ] ページに移動します。

    [イメージ] ページに移動

  2. ページ上部の [イメージを作成] をクリックします。
  3. [名前] フィールドにイメージの一意の名前を指定します。
  4. 必要に応じて、新しいイメージのイメージ ファミリーや、イメージの暗号化設定を構成します。
  5. [ソース] メニューをクリックし、[Cloud Storage ファイル] を選択します。
  6. Cloud Storage にアップロードした compressed-image.tar.gz ファイルのパスを入力します。

    [BUCKET_NAME]/compressed-image.tar.gz
    
  7. [作成] ボタンをクリックしてイメージをインポートします。ブートディスク イメージのサイズによっては、このプロセスに数分かかる場合があります。

これで、イメージは [イメージ] ページに含まれるようになりますが、そのイメージを使用して実際に機能する仮想マシン インスタンスを作成するには、ブートローダーを構成する必要があります。

gcloud と gsutil

圧縮されたブートディスク イメージ ファイルをアップロードするには、gsutil ツールと gcloud ツールを使用します。この処理は、ブートディスク イメージを作成したシステムで実行するか、そのファイルを別のシステムにコピーしてから、コピー先のシステムで実行することもできます。

  1. compressed-image.tar.gz のアップロード元になるシステムに Cloud SDK をインストールして初期化します。

  2. 新しい Cloud Storage バケットを作成するには gsutil ツールを使用します。

     $ gsutil mb gs://[BUCKET_NAME]
     

  3. compressed-image.tar.gz ファイルを新しいバケットにアップロードします。

     $ gsutil cp compressed-image.tar.gz gs://[BUCKET_NAME]
     

  4. イメージ ファイルを新しいカスタム イメージとしてインポートします。

     $ gcloud compute images create [IMAGE_NAME] --source-uri gs://[BUCKET_NAME]/compressed-image.tar.gz
     

これでイメージはカスタム イメージのリストに含まれるようになりますが、そのイメージを使用して実際に機能する仮想マシン インスタンスを作成するには、ブートローダーを構成する必要があります。

  $ gcloud compute images list --no-standard-images
  
  NAME                                            PROJECT                  FAMILY                    DEPRECATED  STATUS
  [IMAGE_NAME]                                    [PROJECT_ID]                                                   READY
  

インポートしたイメージをテストし動作を確認する

インポートしたイメージが正常に動作するか確認します。インポートしたイメージを使用するブートディスクで、インスタンスを作成します。

Console

  1. GCP Console の [VM インスタンス] ページに移動します。

    インスタンス ページに移動

  2. [インスタンスを作成] ボタンをクリックします。
  3. [ブートディスク] セクションで [変更] をクリックし、ブートディスクの構成を始めます。
  4. [カスタム イメージ] タブで、インポートしたイメージをクリックします。
  5. [選択] をクリックして、ブートディスクの構成を確認します。
  6. [作成] ボタンをクリックしてインスタンスを作成します。

gcloud

gcloud compute instances create [INSTANCE_NAME] --zone [ZONE] --image [IMAGE_NAME]

ここで

  • [INSTANCE_NAME] はインスタンスの一意の名前です。
  • [ZONE] はスタンドアロン ディスクを作成したゾーンです。
  • [IMAGE_NAME] はインポートしたイメージの名前です。

インスタンスを作成したら、正常に起動するか確認します。シリアルポートの出力を確認します。

Console

  1. GCP Console の [VM インスタンス] ページに移動します。

    インスタンス ページに移動

  2. インスタンスのリストで、インポートしたイメージから作成したインスタンスの名前をクリックします。インスタンスの詳細ページが開きます。
  3. インスタンスの詳細ページの一番下で [シリアルポートを表示] をクリックして、このインスタンスのシリアルポート出力を確認します。

インスタンスが「Booting from Hard Disk 0...」で停止する場合、Compute Engine 環境内から問題をトラブルシューティングするか、元のシステムでブートディスクを再構成してインポート プロセスを繰り返す必要があります。

gcloud

gcloud compute instances get-serial-port-output [INSTANCE_NAME]

インスタンスが「Booting from Hard Disk 0...」で停止する場合、Compute Engine 環境内から問題をトラブルシューティングするか、元のシステムでブートディスクを再構成してインポート プロセスを繰り返す必要があります。

インスタンスに接続してインスタンスをテストすることもできます。次のオプションのいずれかを使用してインスタンスに接続します。

  • SSH: 機能する SSH がインスタンスに構成されている場合、SSH と秘密鍵を使用してインスタンスに接続できます。インスタンスの IP アドレスは、インスタンス ページで確認できます。
  • インタラクティブ シリアル コンソール: SSH を使用せずに直接インスタンスにログインする必要がある場合、インタラクティブ シリアル コンソールを有効にし、ユーザー名とパスワードでログインできます。

ブートディスクの問題をトラブルシューティングする

インスタンスが起動せず、インスタンスに接続できないかインタラクティブ シリアル コンソールからログインできない場合、ブートディスクの起動プロセスが完了しない理由を確認します。

起動処理が失敗する場所を特定したら、次の 2 つのオプションのどちらかを使用して問題を修正できます。

Compute Engine 内でブートディスクをトラブルシューティングする

インポートしたイメージを一時的な仮想マシン インスタンスに接続された予備ディスクにマウントします。GCP Console か gcloud ツールを使用して、アップロードしたイメージからスタンドアロン ディスクを作成し、接続したスタンドアロン ディスクで一時的な仮想マシンも作成します。このインスタンスを使用して、スタンドアロン ディスクのファイルを変更したり、イメージの起動プロセスが失敗する原因となっている問題を修正したりできます。

Console

インポートしたブートディスク イメージからスタンドアロン ディスクを作成します。あるいは、ブートディスクをインスタンスから接続解除し、接続解除したブートディスクを代わりに使用してインスタンスを作成することもできます。

  1. GCP Console で、[ディスク] ページに移動します。

    [ディスク] ページに移動

  2. [ディスクの作成] をクリックします。
  3. [新しいディスクの作成] ページで、以下の属性を指定します。
    • ゾーン: Select a zone near you. 一時的なインスタンスを作成するときは、これと同じゾーンを使用する必要があります。
    • ソースタイプ: イメージ
    • ソースイメージ: Specify the name of the boot disk image that you imported.
  4. [作成] をクリックしてディスクを作成します。

スタンドアロン ディスクを接続する一時的なインスタンスを作成し、GCP Console 環境で機能するようにブートローダーを構成します。

  1. Cloud Platform Console で [VM インスタンス] ページに移動します。

    インスタンス ページに移動

  2. [インスタンスを作成] ボタンをクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンス名とインスタンスが配置されるゾーンを指定します。このゾーンは、スタンドアロン ディスクを作成したのと同じゾーンである必要があります。
  4. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションを展開します。
  5. [ディスク] タブの [追加ディスク] セクションで、[既存のディスクを接続] をクリックします。新しいセクションが表示されます。
  6. [ディスク] セクションで、作成したスタンドアロン ディスクをプルダウン メニューから選択します。これによりスタンドアロン ディスクがインスタンスに接続されるので、ディスクをマウントしてディスクのコンテンツを後で変更できるようになります。
  7. [完了] をクリックしてディスクの接続を完了します。
  8. [作成] ボタンをクリックしてインスタンスを作成します。

gcloud

インポートしたブートディスク イメージからスタンドアロン ディスクを作成します。あるいは、ブートディスクをインスタンスから接続解除し、接続解除したブートディスクを代わりに使用してインスタンスを作成することもできます。

gcloud compute disks create [DISK_NAME] --zone [ZONE] --image [IMAGE_NAME]

ここで

  • [DISK_NAME] は新しいスタンドアロン ディスクの名前です。
  • [ZONE] は近くのゾーンです。一時的なインスタンスを作成するときは、これと同じゾーンを使用する必要があります。
  • [IMAGE_NAME] はインポートしたブートディスク イメージの名前です。

スタンドアロン ディスクを接続する一時的なインスタンスを作成し、GCP Console 環境で機能するようにブートローダーを構成します。

gcloud compute instances create [INSTANCE_NAME] --zone [ZONE] --disk name=[DISK_NAME]

ここで

  • [INSTANCE_NAME] はインスタンスの一意の名前です。
  • [ZONE] はスタンドアロン ディスクを作成したゾーンです。
  • [DISK_NAME] はインポートしたブートディスク イメージから作成したスタンドアロン ディスクの名前です。

接続したスタンドアロン ディスクを使用してインスタンスを作成すると、仮想環境が作成されます。この環境で、元のブートディスク イメージからブートローダーを変更できます。

インスタンスに接続し、スタンドアロン ディスクをマウントして、Compute Engine で正常に起動するようにブートローダーを構成します。

  1. ブラウザから SSH を使用するか gcloud compute ssh コマンドを使用して、一時的なインスタンスに接続します。
  2. blkid コマンドを使用して、変更する必要のあるディスクと、マウントする必要のあるパーティションを特定します。この例では、/dev/sdb がインポートしたディスクです。

    $ lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  100G  0 disk
    ├─sdb1   8:17   0   96G  0 part
    ├─sdb2   8:18   0    1K  0 part
    └─sdb5   8:21   0    4G  0 part
    
  3. ルート パーティションをスタンドアロン ディスクから /tmp ディレクトリにマウントします。この例では、/dev/sdb1 がルート パーティションで、その他のパーティションを変更する必要はありません。使用するパーティション スキームによっては、変更する必要のあるすべてのファイルにアクセスするために、複数のパーティションをマウントしなければならない場合があります。

    $ sudo mount /dev/sdb1 /tmp
    
  4. ディスクの起動プロセスが失敗する原因となっている可能性のあるファイルを編集します。詳細については、ブートローダーの構成手順をご覧ください。

  5. 一時的なインスタンスからブートディスクのマウントを解除します。

    $ sudo umount /tmp
    

このディスクの構成が完了したら、接続を解除して、ディスクを新しいインスタンスのブートディスクとして使用します。

Console

一時的なインスタンスからスタンドアロン ディスクの接続を解除します。

  1. Cloud Platform Console で [VM インスタンス] ページに移動します。

    インスタンス ページに移動

  2. インスタンスのリストから、スタンドアロン ブートディスクを変更した一時的なインスタンスの名前をクリックします。インスタンスの詳細ページが開きます。
  3. インスタンス詳細ページの一番上で [編集] をクリックします。
  4. [追加ディスク] セクションで、スタンドアロン ディスクの横にある [X] をクリックし、一時的なインスタンスからの接続解除を指定します。
  5. インスタンスの詳細ページの下部にある、[保存] をクリックして変更を保存します。

接続解除したスタンドアロン ディスクを使用して、新しいインスタンスを作成します。

  1. Cloud Platform Console で [VM インスタンス] ページに移動します。

    インスタンス ページに移動

  2. [インスタンスを作成] ボタンをクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンス名とインスタンスが配置されるゾーンを指定します。このゾーンは、スタンドアロン ディスクを作成したのと同じゾーンである必要があります。
  4. [ブートディスク] セクションで [変更] をクリックし、ブートディスクの構成を始めます。
  5. [既存のディスク] タブで、スタンドアロン ブートディスクを選択し、新しいインスタンスのブートディスクとして使用します。
  6. [作成] ボタンをクリックしてインスタンスを作成します。

gcloud

一時的なインスタンスからスタンドアロン ディスクの接続を解除します。

gcloud compute instances detach-disk [INSTANCE_NAME] --disk [DISK_NAME]

ここで

  • [INSTANCE_NAME] はインスタンスの一意の名前です。
  • [DISK_NAME] は新しいスタンドアロン ディスクの名前です。

接続解除したスタンドアロン ディスクを使用して、新しいインスタンスを作成します。

gcloud compute instances create [INSTANCE_NAME] --zone [ZONE] --disk name=[DISK_NAME],boot=yes

ここで

  • [INSTANCE_NAME] はインスタンスの一意の名前です。
  • [ZONE] はスタンドアロン ディスクが配置されているゾーンです。
  • [DISK_NAME] はインポートしたブートディスク イメージから作成したスタンドアロン ディスクの名前です。

変更したブートディスクを使用して、作成したインスタンスをテストします。インスタンスに接続できない状態のままである場合は、シリアル コンソールの出力を読み、起動プロセスが失敗した場所をもう一度確認します。ブートディスク イメージの問題が修正されるまで、トラブルシューティングを繰り返します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント