Linux OS を使用する仮想マシン(VM)にディスクをアタッチすると、Google Cloud によってディスクのシンボリック リンクが自動的に作成されます。Linux VM の Persistent Disk ボリュームまたはローカル SSD ディスクにアクセスするには、シンボリック リンクを使用します。これらのシンボリック リンクは予測可能で、再起動後も整合性が維持されます。Google Cloud は、VM にアタッチされているすべてのディスクのシンボリック リンクを /dev/disk/by-id
以下に作成します。
このドキュメントでは、VM にアタッチされているディスクの正しいシンボリック リンクを特定する方法について説明します。
制限事項
ローカル SSD ディスクを C3 または C3D VM にアタッチする場合、ローカル SSD ディスク用のシンボリック リンクを作成するために追加の手順が必要になる場合があります。これらの手順は、Google Cloud によって提供される次の公開イメージのいずれかを使用する場合にのみ必要です。
- SLES 15 SP4 および SP5
- SLES 12 SP4
これらの追加の手順は、ローカル SSD ディスクにのみ適用されます。Persistent Disk のボリュームに関して何もする必要はありません。
前のリストの公開イメージには、/dev/disk/by-id/google-local-nvme-ssd-N
形式のローカル SSD シンボリック リンクがありません。
これらのイメージには、デバイス情報を使用するシンボリック リンク(nvme-nvme.1ae0-6e766d655f636172642d7064-6e766d655f636172642d7064-00000001
など)のみが存在します。
これらの Linux イメージ向けにユーザー フレンドリーなシンボリック リンクを取得するには、udev
ルールを更新し、インスタンスにスクリプトを追加する必要があります。
C3 と C3D でローカル SSD ディスクのシンボリック リンクをサポートするように udev
ルールを更新する手順については、NVMe ディスクのトラブルシューティングをご覧ください。
シンボリック リンクを使用する代わりに、VM 上のローカル SSD ディスクにデバイス名(例: /dev/nvme0n1
)を使用してアクセスできます。
シンボリック リンクの形式
シンボリック リンクは、VM の作成中または作成後にディスクが VM にアタッチされると /dev/disk/by-id
に作成されます。シンボリック リンク名は次のように作成されます。
Persistent Disk と Google Cloud Hyperdisk
シンボリック リンクは次のルールを使用して作成されます。
- ディスクの作成時にカスタム デバイス名を指定した場合:
google-DEVICE_NAME
- ディスクの作成時にカスタム デバイス名を指定しなかった場合:
- ブートディスク:
google-VM_NAME
- 非ブートディスク:
google-DISK_NAME
- ブートディスク:
ディスクをフォーマットすると、名前の末尾に -partN
がついたシンボリック リンクが追加されます。ここで、N はパーティション番号です(例: google-data-disk-part1
)。
ローカル SSD ディスク
ローカル SSD のシンボリック リンクの形式は、ディスク インターフェースによって異なります。
- SCSI: シンボリック リンクの名前は
google-local-ssd-N
のようになります。ここで、N は 0 から始まるローカル SSD ディスク番号です。 - NVMe: シンボリック リンクの名前は
google-local-nvme-ssd-N
のようになります。ここで、N は 0 から始まる SSD 番号です。
ローカル SSD ディスクをフォーマットすると、シンボリック リンクが -partN
とともに追加されます。ここで、N はパーティション番号です(例: google-local-nvme-ssd-0-part1
)。
デバイスのシンボリック リンク
Compute Engine は、ディスクタイプとインターフェースに基づいて、ディレクトリに追加のシンボリック リンクを作成します(例: scsi-0Google_PersistentDisk_DEVICE_NAME
)。これらのリンクは、前述のシンボリック リンクと同じ機能を実行します。
例 1: ローカル SSD がアタッチされた C3 VM
次のプロパティを持つ VM を作成したとします。
- VM 名:
instance-1
- マシンシリーズ: C3
- ディスク インターフェース タイプ: Persistent Disk とローカル SSD の両方の NVMe
- 追加ディスク: なし
- アタッチされたローカル SSD ディスク: 2
- 使用されているカスタム デバイス名: なし
Compute Engine は、その VM に次のシンボリック リンクを作成します。
ls -l /dev/disk/by-id/google-*
google-instance-1 -> ../../nvme2n1
google-instance-1-part1 -> ../../nvme2n1p1
google-instance-1-part14 -> ../../nvme2n1p14
google-instance-1-part15 -> ../../nvme2n1p15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-1 -> ../../nvme1n1
この例では、Persistent Disk のブートディスクのシンボリック リンクは google-instance-1
で、VM 名に基づいています。ブートディスクがフォーマットされ、オペレーティング システムがインストールされています。ブートディスクには、part1、part14、part 15 の 3 つのパーティションがあります。
アタッチされたローカル SSD ディスクはフォーマットされていないため、ローカル SSD ディスクごとに 1 つのシンボリック リンクのみが作成されました。
例 2: NVMe ローカル SSD と追加の Persistent Disk がアタッチされた N2 VM
次のプロパティを持つ VM を作成したとします。
- VM 名:
instance-2
- マシンシリーズ: N2
- ディスク インターフェース タイプ: Persistent Disk は SCSI、ローカル SSD は NVMe
- 追加のディスク:
extra-scsi-disk
という名前の 1 つの Persistent Disk - アタッチされたローカル SSD ディスク: 2
- 使用されているカスタム デバイス名: なし
その VM に次のシンボリック リンクが作成されます。
ls -l /dev/disk/by-id/google-*
google-extra-scsi-disk -> ../../sdb
google-instance-2 -> ../../sda
google-instance-2-part1 -> ../../sda1
google-instance-2-part14 -> ../../sda14
google-instance-2-part15 -> ../../sda15
google-local-nvme-ssd-0 -> ../../nvme0n1
google-local-nvme-ssd-0-part1 -> ../../nvme0n1p1
google-local-nvme-ssd-1 -> ../../nvme0n2
この例では、Persistent Disk のブートディスクのシンボリック リンクは google-instance-2
で、VM 名に基づいています。ブートディスクがフォーマットされ、OS イメージがインストールされています。ブートディスクには、part1、part14、part 15 の 3 つのパーティションがあります。
最初のローカル SSD ディスクも単一のパーティションでパーティション分割されているため、そのディスク パーティション用に作成されたシンボリック リンクがあります。
VM に追加された Persistent Disk には、ディスク名に基づくシンボリック リンク google-extra-scsi-disk
があります。追加の Persistent Disk と 2 番目のローカル SSD ディスクはフォーマットされていないため、これらのディスクには 1 つのシンボリック リンクのみ表示されます。
次のステップ
- 永続的なデバイス名を使用する方法を学習する。
- Linux VM または Windows VM に新しいディスクをフォーマットしてマウントする。
- ベンチマークで Persistent Disk のパフォーマンスを評価する方法を学習する。