Linux VM で非ブートディスクをフォーマットしてマウントする


新しい空のディスクを VM にアタッチした場合は、使用する前にディスクをフォーマットしてマウントする必要があります。すでにデータが含まれているディスクをアタッチした場合は、ディスクを使用する前にマウントする必要があります。

準備

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

VM に接続する

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

    [VM インスタンス] ページに移動

  2. 新たにディスクをアタッチしたインスタンスの横にある [SSH] ボタンをクリックします。ブラウザが開き、インスタンスに対するターミナル接続が表示されます。

Linux VM で非ブートディスクをフォーマットする

  1. ターミナルで、アタッチされたディスク用に作成されたシンボリック リンクを使用して、フォーマットするデバイスを決定します。

     ls -l /dev/disk/by-id/google-*
    

    フォーマットされていないディスクには、名前に -partN を含む追加のシンボリック リンクはありません。

     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-1 -> ../../nvme0n2
    

    この例では、新しい Persistent Disk が extra-scsi-disk という名前で作成されます。新しいディスクのデバイス名は sdb です。

  2. mkfs ツールを使用して、ディスク デバイスをフォーマットします。このコマンドを実行すると、指定したディスクからすべてのデータが削除されます。正しいディスク デバイスを指定してください。

    ファイル形式は任意ですが、パーティション テーブルのない単一の ext4 ファイル システムがおすすめです。ディスク パーティションを変更しなくても、後でディスクのサイズを増やすことができます。

    ディスクのパフォーマンスを最大限に引き出すには、-E フラグで推奨フォーマット オプションを使用します。このセカンダリ ディスクではルート ボリューム用に領域を確保する必要はありません。-m 0 を指定して、使用可能なディスク容量をすべて使用します。

     $ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_NAME
     

    DEVICE_NAME をフォーマットするディスクのデバイス名に置き換えます。たとえば、最初のステップの出力例では、デバイス名として sdb を使用します。

    このコマンドは、パーティション テーブルを作成せずにディスク全体をフォーマットします。

ディスクをマウントする

  1. VM 上の新しいディスクのマウント ポイントにするディレクトリを作成します。任意のディレクトリを使用できます。次の例では、/mnt/disks/ の下にディレクトリを作成します。

    $ sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR は、ディスクをマウントするディレクトリに置き換えます。

  2. mount ツールを使用してインスタンスにディスクをマウントし、discard オプションを有効にします。

    $ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR
    

    次のように置き換えます。

    • DEVICE_NAME: マウントするディスクのデバイス名。
    • MOUNT_DIR: ディスクをマウントするディレクトリ。
  3. ディスクに読み取り権限と書き込み権限を構成します。この例では、ディスクへの書き込みアクセス権をすべてのユーザーに付与します。

    $ sudo chmod a+w /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR は、ディスクをマウントしたディレクトリに置き換えます。

VM 再起動時に自動マウントを構成する

ディスクを /etc/fstab ファイルに追加して、VM の再起動時にディスクが自動的にマウントされるようにします。Linux オペレーティング システムでは、再起動するたびにデバイス名が変わることがありますが、ディスクをシステム間で移動してもデバイス UUID は常に同じボリュームを指します。このため、デバイス名の代わりにデバイスの UUID を使用して、VM の再起動時に自動マウントを構成することをおすすめします。

  1. 現在の /etc/fstab ファイルのバックアップを作成します。

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  2. blkid コマンドを使用して、ディスクの UUID を一覧表示します。

    $ sudo blkid /dev/DEVICE_NAME
    
    /dev/DEVICE_NAME: UUID="a9e1c14b-f06a-47eb-adb7-622226fee060" BLOCK_SIZE="4096"
    TYPE="ext4" PARTUUID="593b3b75-108f-bd41-823d-b7e87d2a04d1"
    

    次のように置き換えます。

    • DEVICE_NAME: 自動的にマウントするディスクのデバイス名。ディスクにパーティション分割テーブルを作成した場合は、デバイス名に接尾辞を追加して、マウントするパーティションを指定します。たとえば、sdb がディスクのデバイス名の場合、sdb1 はパーティションの名前です。
  3. /etc/fstab ファイルをテキスト エディタで開き、UUID を含むエントリを作成します。次に例を示します。

    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

    次のように置き換えます。

    • UUID_VALUE: 前の手順の出力に示されているディスクの UUID
    • MOUNT_DIR: ディスクをマウントしたディレクトリ
    • MOUNT_OPTION: ブート時にゾーン永続ディスクをマウントできない場合のオペレーティング システムの動作を指定します。有効な値については、Linux fstab のドキュメント4 番目のフィールドをご覧ください。ディスクが使用できない場合でもシステムを起動できるようにするには、nofail マウント オプションを使用します。
  4. cat コマンドを使用して、/etc/fstab エントリが正しいことを確認します。

    $ cat /etc/fstab
    
    UUID=6B33-A686 /boot/efi vfat defaults 0 0
    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    
    

VM にアタッチされているデバイスとの /etc/fstab ファイルの同期を常に維持してください。ディスクを切断する場合や、VM のブートディスクからスナップショットを作成する場合は、/etc/fstab ファイルを編集して、ディスクのエントリを削除します。MOUNT_OPTIONnofail または nobootwait に設定した場合でも、ブートディスクのスナップショットを作成する前、またはディスクを切断する前にエントリを削除してください。

次のステップ