なんらかの理由で Linux VM にアクセスできない場合は、次の手順で VM のレスキューを試みることができます。
必要なロール
VM をレスキューするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
- Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) - サービス アカウントを使用する VM には: サービス アカウント ユーザー (
roles/iam.serviceAccountUser
)
ロールの付与の詳細については、アクセス権の管理をご覧ください。
これらの事前定義ロールには、VM をレスキューするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
VM をレスキューするには、次の権限が必要です。
- プロジェクトに対する
compute.instances.create
権限 - プロジェクトに対する
compute.disks.create
権限 - プロジェクトに対する
compute.instances.get
権限 - ディスクに対する
compute.disks.createSnapshot
権限 - 新しい VM に対する
compute.instances.attachDisk
権限 - ディスクに対する
compute.disks.use
権限 - 新しいアクセスできない VM に対する
compute.instances.start
権限 - 新しいアクセスできない VM に対する
compute.instances.stop
権限
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
VM の問題を解決する
VM に接続できない場合や、ブートディスクに空きがない場合は、アクセスできない VM の問題を解決するために一時 VM を作成する必要があります。
- (省略可)アクセスできない VM を停止します。
- アクセスできない VM のブートディスクからスナップショットを作成します。
- アクセスできない VM の OS に最も近い公開イメージを使用して一時 VM を作成する。
- SSH を使用して一時 VM に接続できるかどうかを確認します。
次の手順で、一時 VM にディスクを追加します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
作成した一時 VM の名前をクリックします。
[
編集] をクリックします。[追加ディスク] で
[新しいディスクを追加] をクリックし、次の操作を行います。- ディスク名を追加する(my-recovery-disk など)
- [ソースの種類] で [スナップショット] を選択します。
- [ソース スナップショット] プルダウン メニューで、前の手順で作成したソース VM のスナップショットを選択します。
- [完了] をクリックします。
[保存] をクリックします。
SSH を使用して一時 VM に接続します。
次のコマンドを実行します。
ls -l /dev/disk/by-id/google-*
出力は次のようになります。
/dev/disk/by-id/google-my-vm -> ../../sda /dev/disk/by-id/google-my-vm-part1 -> ../../sda1 /dev/disk/by-id/google-my-vm-part14 -> ../../sda14 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15 /dev/disk/by-id/google-my-recovery-disk -> ../../sdb /dev/disk/by-id/google-my-recovery-disk-part1 -> ../../sdb1 /dev/disk/by-id/google-my-recovery-disk-part2 -> ../../sdb2 /dev/disk/by-id/google-my-recovery-disk-part5 -> ../../sdb5
シンボリック リンク(
/dev/disk/by-id/google-my-recovery-disk-partN
)を使用して、新しく追加されたディスクの基盤となるデバイスとパーティションを見つけます(例:/dev/sdb1
)。ディスクのシンボリック リンクが Google DISK_NAME であるか、ディスクにカスタム デバイス名をした場合、Google DEVICE_NAME である。新しいディスクのシンボリック リンクが指すデバイス名をメモします。
/mnt/newdisk
にマウント ポイントを作成します。sudo mkdir /mnt/newdisk
追加のディスク パーティションをマウント ポイント
/mnt/newdisk
にマウントします。sudo mount -o discard,defaults DISK_NAME /mnt/newdisk
DISK_NAME は、これらの手順で前にメモしたデバイス名(
/dev/sdb1
など)で置き換えます。Filesystem has duplicate UUID XXXXXX - can't mount
、mount: /mnt/newdisk: wrong fs type, bad option
、またはbad superblock on /dev/sdb
というエラーが表示された場合は、次のコマンドを使用します。sudo mount -o nouuid DISK_NAME /mnt/newdisk
アクセスできない VM のファイル システムが
/mnt/newdisk
にマウントされました。ファイル システムの移動、構成ファイルの変更、問題の修正、データの取得などを行うことができます。
変更を元に戻し、アクセスできない VM を再び起動する
問題を解決するかデータを取得したら、実際の VM を元に戻す必要があります。元の VM を復元するには、次の操作を行います。
一時 VM の
/mnt/newdisk
にマウントされている追加ディスクのマウントを解除します。cd ~ sudo umount /mnt/newdisk
Google Cloud コンソールで [VM インスタンス] ページに移動します。
作成した一時 VM を選択します。
[
編集] をクリックします。[追加ディスク] で、前の手順で作成したディスクの
をクリックし、一時 VM から追加ディスクを切断します。[保存] をクリックします。
Google Cloud コンソールの [VM インスタンス] ページに移動します。
アクセスできない VM がまだ実行されている場合は、VM を停止します。
停止した VM の名前をクリックし、[
編集] をクリックします。[ブートディスク] で
[ブートディスクを切断する] をクリックし、アクセス不能な VM から既存のブートディスクを解除します。次に、VM をレスキューするで、以前に作成・修正したディスクをアタッチします。
[ブートディスクを構成する] をクリックして、このページの- [ブートディスク] セクションで、[既存のディスク] タブをクリックします。
- プルダウン リストで、前のセクションで作成したディスク(
my-recovery-disk
など)を選択します。 - [選択]、[保存] の順にクリックします。
SSH を使用して VM に接続できるようになっているはずです。