このページでは、既存の非ブートディスクを 1 つ以上の仮想マシン(VM)インスタンスにアタッチする方法について説明します。
VM のブートディスクを作成または変更するには、ブートディスクを作成するとブートディスクを切断して再アタッチするをご覧ください。
新しいディスクを作成するには、新しい Persistent Disk ボリュームを作成すると新しい Hyperdisk ボリュームを作成するをご覧ください。
必要なロールと権限
VM にディスクをアタッチするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼します。
-
Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) -
サービス アカウントとして実行できる VM インスタンスに接続する: サービス アカウント ユーザー(v1)(
roles/iam.serviceAccountUser
ロール)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、ディスクを VM にアタッチするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
ディスクを VM にアタッチするには、次の権限が必要です。
-
ディスクを VM にアタッチするには:
-
VM に対する
compute.instances.attachDisk
-
VM に対する
compute.instances.attachDisk
-
VM にアタッチするディスクに対する
compute.disks.use
-
VM に対する
-
アタッチされたボリュームをフォーマットしてマウントするには: VM に対する
compute.instances.setMetadata
権限
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
ディスク アタッチメント モード
ディスクを VM にアタッチするときに、ディスク アタッチメント モードを指定して、VM がディスク上のデータにアクセスする方法を指定します。読み取り専用モードまたは読み取り / 書き込みモードを選択できます。
デフォルトのモードは読み取り / 書き込みです。
VM 間でディスクを共有する
ディスクを各 VM にアタッチして、各 VM がディスクに同時にアクセスできるように、VM 間で同じディスクを共有できます。ディスクのタイプと VM のマシンタイプがサポートしている場合、ディスクを複数の VM にアタッチできます。
ディスクを複数の VM にアタッチするには、各 VM に対して VM に非ブートディスクをアタッチするの手順に沿って操作します。
ディスクをアタッチするすべての VM で同じディスク アタッチメント モードを使用する必要があります。たとえば、ディスクを読み取り / 書き込みモードで 1 つの VM にアタッチし、同時に読み取り専用モードで別の VM にアタッチすることはできません。
サポートされているディスクタイプなど、ディスクを複数の VM にアタッチする方法については、VM 間でディスクを共有するをご覧ください。
Hyperdisk ボリュームを複数の VM にアタッチする
Hyperdisk ボリュームを複数の VM にアタッチするには、ディスクのアクセスモードがユースケースに適した値に設定されていることを確認します。アクセスモードを設定する手順については、ディスクのアクセスモードを設定するをご覧ください。
Hyperdisk ボリュームを VM にアタッチする場合は、ディスクのアクセスモードと競合しないディスク アタッチメント モードを選択する必要があります。たとえば、シングルライター モードまたはマルチライター モードのディスクで読み取り専用アタッチモードを使用することはできません。
制限事項
ディスクを VM にアタッチする場合は、次の制限事項に注意してください。
VM には、最大 127 個のセカンダリで非ブートのゾーンディスクをアタッチできます。
VM の最大ディスク容量を超える場合、ディスクを VM にアタッチすることはできません。
次のディスクタイプは読み取り専用モードをサポートしていません。
- Hyperdisk Balanced
- Hyperdisk Throughput
- Hyperdisk Balanced の高可用性
- Hyperdisk Extreme
ディスクを複数の VM にアタッチする場合は、すべての VM に同じディスク アタッチメント モードを使用する必要があります。
ディスクを複数の VM にアタッチする場合は、追加の制限が適用されます。読み取り専用モードとマルチライター モードの VM 間でディスクを共有する場合の制限事項をご覧ください。
複数の VM にアタッチされたディスクは自動削除をサポートしていません。つまり、VM の削除時に自動削除することはできません。
VM に非ブートディスクをアタッチする
ブートゾーン以外のディスクを VM にアタッチするには、Google Cloud コンソール、Google Cloud CLI、または REST を使用します。
ディスクを VM にアタッチする場合は、次の点に注意してください。
カスタム デバイス名を使用する: VM にディスクをアタッチするときに、カスタム デバイス名を指定することをおすすめします。指定した名前は、ゲスト OS でディスクのシンボリック リンクを生成するために使用されます。これにより、VM 上のディスクの識別と管理が容易になります。
複数の VM にディスクをアタッチする: 複数の VM にディスクをアタッチするには、VM ごとにこのセクションの手順を繰り返します。ディスクをアタッチするすべての VM で同じディスク アタッチメント モードを使用する必要があります。
コンソール
[VM インスタンス] ページに移動します。
ディスクを追加する VM の名前をクリックします。
詳細ページで [編集] をクリックします。
[ストレージ] セクションの [追加ディスク] で、[+ 既存のディスクを接続] をクリックします。
[ディスク] リストで、アタッチするディスクを選択します。ディスクがリストにない場合は、VM と同じ場所にあることを確認します。ゾーンディスクの場合は同じゾーン、リージョン ディスクの場合は同じリージョンにあることを確認します。
[ディスク アタッチメント モード] で [読み取り専用] を選択して、VM にディスクからの読み取りのみを許可します。VM の読み取り / 書き込みアクセスを許可するには、[読み取り / 書き込み] を選択します。
[削除ルール] で、VM の削除時にディスクを削除するかどうかを指定します。VM の削除時にディスクを保持するには、[ディスクを維持] を選択します。VM の削除時にディスクを削除するには、[ディスクを削除] を選択します。ディスクを複数の VM にアタッチする場合は、[ディスクを維持] を選択する必要があります。
オプション: [デバイス名] という見出しで、[カスタム デバイス名を使用する] オプションを選択します。入力した名前は、ディスクのシンボリック リンクを生成するために使用されます。これにより、ディスクを識別しやすくなります。
ディスクに変更を適用するには、[完了] をクリックします。
[保存] をクリックして変更を適用し、ディスクを VM にアタッチします。
gcloud
ディスクを VM にアタッチするには、gcloud compute instances attach-disk
コマンドを使用します。ディスク アタッチメント モードを指定するには、mode
フラグを使用します。
gcloud compute instances attach-disk VM_NAME \ --disk DISK_NAME --device-name=DEVICE_NAME --mode DISK_ATTACHMENT_MODE
次のように置き換えます。
VM_NAME
: 新しいゾーン永続ディスクを追加する VM の名前DISK_NAME
: VM にアタッチする新しいディスクの名前DEVICE_NAME
: オプション。ゲスト OS がディスクの識別に使用する名前DISK_ATTACHMENT_MODE
: 省略可。ディスクを VM にアタッチする方法。読み取り専用モードの場合は、ro
に設定します。読み取り / 書き込みモードの場合は、rw
に設定するか、このフラグを省略します(rw
がデフォルトです)。
Terraform
ディスクを VM にアタッチするには、google_compute_instance
リソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
ディスクを VM にアタッチするには、compute.instances.attachDisk
メソッドに対して POST
リクエストを作成し、アタッチするディスクへの URL を指定します。
ディスクのアタッチメント モードを指定するには、mode
パラメータを使用します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk { "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME", "deviceName": DEVICE_NAME, "mode" : "DISK_ATTACHMENT_MODE" }
次のように置き換えます。
PROJECT_ID
: プロジェクト IDZONE
: VM とディスクが配置されているゾーンVM_NAME
: ディスクをアタッチする VM の名前DISK_NAME
: アタッチするディスクの名前DEVICE_NAME
: オプション。ゲスト OS がシンボリック リンクの作成に使用する名前。ディスクの識別に役立ちます。DISK_ATTACHMENT_MODE
: 省略可。ディスクを VM にアタッチする方法。読み取り専用モードの場合は、READ_ONLY
を使用します。読み取り / 書き込みモードの場合は、READ_WRITE
に設定します。READ_WRITE
はデフォルトであるため、省略することもできます。
ディスクを VM にアタッチしたら、VM に接続し、VM のオペレーティング システム(OS)でディスクを使用できるようにします。
- 空のディスクをアタッチした場合は、ディスクをフォーマットしてマウントします。
- 空ではないディスクをアタッチした場合は、ディスクをマウントします。
Linux VM または Windows VM で新しいディスクをフォーマットしてマウントする方法をご確認ください。
次のステップ
- 定期的にスナップショットを使用してディスクをバックアップし、データ損失を防ぐ。
- 2 つのゾーン間の同期レプリケーションに、リージョン永続ディスクを使用する。