ローカル SSD の追加

Compute Engine では、常に暗号化されるローカルなソリッドステート ドライブ(SSD)のブロック ストレージが仮想マシン インスタンスに提供されます。各ローカル SSD のサイズは 375 GB ですが、インスタンスごとに最大 8 個のローカル SSD デバイスを接続して、合計 3 TB のローカル SSD ストレージ容量を利用できます。オプションで、単一の論理ボリュームに複数のローカル SSD デバイスをフォーマットしてマウントすることができます。

永続ディスクとは異なり、ローカル SSD は、仮想マシン インスタンスをホストするサーバーに物理的に接続されます。この緊密な結合により、永続ディスクに比べて、優れたパフォーマンス、非常に高い 1 秒間の入力 / 出力オペレーション数(IOPS)、非常に低いレイテンシが実現されます。詳細は、永続ディスクとローカル SSD のパフォーマンスを参照してください。

ローカル SSD は、キャッシュ、処理空間、低価値データなどとして一時的に記憶する場合のみに適しています。ローカル SSD デバイスに重要なデータを保存する場合は、同じデータを、耐久性に優れたストレージ オプションに格納する必要があります。

ローカル SSD を使用するインスタンスを停止すると再起動することはできません。ゲスト オペレーティング システムを介してローカル SSD を使用するインスタンスをシャットダウンすると、インスタンスを再起動することはできまず、ローカル SSD 上のデータは失われます。

ローカル SSD が冗長性または柔軟性の要件を満たさない場合は、ローカル SSD を他のインスタンス ストレージ オプションと組み合わせて使用できます。

始める前に

ローカル SSD データの永続性

ローカル SSD を使用してインスタンスを作成する前に、ローカル SSD のデータがどのようなイベントで保持され、どのようなイベントで回復不能になるかを理解する必要があります。

ローカル SSD 上のデータは、次のイベントを介してのみ存続します。

  • ゲスト オペレーティング システムを再起動した場合。
  • インスタンスをライブ マイグレーション用に構成し、インスタンスにホスト メンテナンス イベントが適用される場合。
  • ホストシステムでホストエラーが発生した場合、Compute Engine は可能な限り VM に再接続を試み、ローカル SSD のデータを保持しようとしますが、この処理が成功するとは限りません。成功した場合、VM が自動的に再起動します。再接続に失敗した場合、VM はデータなしで再起動します。

ローカル SSD のデータは、次のイベントでは保持されません。

  • インスタンスを手動で終了した場合。
  • ゲスト オペレーティング システムをシャットダウンし、インスタンスを強制的に停止した場合。
  • インスタンスをプリエンプティブとして構成し、インスタンスにプリエンプション処理が適用される場合。
  • ホスト メンテナンス イベントで終了するようにインスタンスを構成し、そのインスタンスにホスト メンテナンス イベントが発生した場合。
  • ホストシステムにホストエラーが発生し、基礎となるドライブが 60 分以内に復旧しなかった場合。Compute Engine はローカル SSD のデータを保持しようと試みません。
  • ローカル SSD を、誤って到達不能になるような構成にした場合。
  • プロジェクト課金を無効にした場合。インスタンスは停止し、データが失われます。

ローカル SSD を使用するインスタンスを作成する

ローカル SSD は、仮想マシン インスタンスが実行されている物理マシン上に配置されるので、インスタンスの作成プロセスでのみ作成できます。ローカル SSD を起動デバイスとして使用することはできません。

ローカル SSD を作成した後は、使用する前に、デバイスをフォーマットしてマウントする必要があります。

ローカル SSD を使用するインスタンスを作成するには、Google Cloud Platform Consolegcloud ツールまたは API を使用します。

Console

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

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

  2. [インスタンスを作成] をクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンスのプロパティを入力します。
  4. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] を展開します。
  5. [ディスク] をクリックし、[追加ディスク] の [新しいディスクを追加] をクリックします。
  6. [名前] フィールドに、新しいディスクの名前を入力します。
  7. [タイプ] として [ローカル SSD スクラッチ ディスク(最大 8 ディスク)] を選択します。
  8. [完了] をクリックします。
  9. [作成] をクリックしてインスタンスを作成します。
  10. ローカル SSD を作成した後は、使用する前にデバイスをフォーマットしてマウントする必要があります。

gcloud

ローカル SSD が接続された仮想マシン インスタンスを作成するには、--local-ssd フラグを使用してインスタンスを作成する手順を行います。これにより、ローカル SSD デバイスが作成されて接続されます。複数のローカル SSD デバイスを作成するには、--local-ssd フラグをさらに追加します。必要に応じて、各 --local-ssd フラグにインターフェースとデバイス名の値を設定することもできます。

同様に、SCSI インターフェースを使用する 2 個のローカル SSD を含むインスタンスは次のようにして作成できます。

gcloud compute instances create example-instance \
    --machine-type n1-standard-8 \
    --local-ssd interface=[INTERFACE_TYPE] \
    --local-ssd interface=[INTERFACE_TYPE] \
    --image-project [IMAGE_PROJECT] \
    --image-family [IMAGE_FAMILY]

ここで

必要に応じて、さまざまなデバイス用に nvmescsi を組み合わせたものを使用した単一のインスタンスにローカル SSD デバイスを接続できます。nvme デバイスのパフォーマンスは、お使いのインスタンス用の起動ディスク イメージに対応して変わります。

ローカル SSD を作成した後は、使用する前に、デバイスをフォーマットしてマウントする必要があります。

API

API では、仮想マシン インスタンスを作成するときに、initializeParams プロパティを使用してローカル SSD デバイスを作成できます。次のプロパティも指定する必要があります。

  • diskType: ローカル SSD に設定します
  • autoDelete: true に設定します
  • type: SCRATCH に設定します

次のプロパティは、ローカル SSD インスタンスには設定できません。

  • diskName
  • sourceImage プロパティ
  • diskSizeGb

起動ディスクとローカル SSD デバイスを含むインスタンスを作成するリクエストのペイロードの例を次に示します。

{
   "machineType":"zones/us-central1-f/machineTypes/n1-standard-8",
   "name":"local-ssd-instance",
   "disks":[
      {
         "type":"PERSISTENT",
         "initializeParams":{
            "sourceImage":"projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts"
         },
         "boot":true
      },
      {
         "type":"SCRATCH",
         "initializeParams":{
            "diskType":"zones/us-central1-f/diskTypes/local-ssd"
         },
         "autoDelete":true,
         "interface": "NVME"
      }
   ],
   "networkInterfaces":[
      {
         "network":"global/networks/default"
      }
   ]
 }

ローカル SSD を作成した後は、使用する前に、デバイスをフォーマットしてマウントする必要があります。

API でインスタンスを作成する方法について詳しくは、API リファレンスをご覧ください。

NVMe インターフェースまたは SCSI インターフェースを選択する

NVMe インターフェースまたは SCSI インターフェースを使用して、ローカル SSD をインスタンスに接続できます。NVMe と SCSI ドライバは、ほとんどの公開イメージに含まれています。ただし一部には、NVMe でインスタンスが最高のパフォーマンスを実現できるように最適化されたドライバが含まれているイメージや、SCSI インターフェースで最高のパフォーマンスを実現できるようにマルチキュー SCSI に対応しているイメージもあります。

  • NVMe 用に最適化された公開イメージ
    • Ubuntu 14.04 LTS のイメージ ubuntu-1404-trusty-v20170110 以降またはイメージ ファミリー ubuntu-1404-lts
    • Ubuntu 16.04 LTS のイメージ ubuntu-1604-xenial-v20170113 以降またはイメージ ファミリー ubuntu-1604-lts
    • Ubuntu 17.10 イメージ ファミリー ubuntu-1710
    • Ubuntu 18.04 LTS イメージ ファミリー ubuntu-1804-lts
  • マルチキュー SCSI 対応の公開イメージ
    • Debian 9 Stretch イメージまたはイメージ ファミリー debian-9
    • Ubuntu 14.04 LTS のイメージ ubuntu-1404-trusty-v20170807 以降またはイメージ ファミリー ubuntu-1404-lts
    • Ubuntu 16.04 LTS のイメージ ubuntu-1604-xenial-v20170803 以降またはイメージ ファミリー ubuntu-1604-lts
    • Ubuntu 17.10 イメージ ファミリー ubuntu-1710
    • Ubuntu 18.04 LTS イメージ ファミリー ubuntu-1804-lts
    • すべての Windows Server イメージ
    • すべての SQL Server イメージ

必要に応じて、プロジェクトにインポートするカスタム イメージのマルチキュー SCSI を有効にできます。詳しくは、マルチキュー SCSI を有効にするをご覧ください。

有効な数のローカル SSD を選択する

複数のローカル SSD を単一の VM インスタンスに接続する場合、VM インスタンスのマシンタイプに応じて、接続できるローカル SSD の有効な数に関して特定の制約があります。これらについて詳しくは、ローカル SSD およびマシンタイプの制限をご覧ください。

ローカル SSD デバイスのフォーマットとマウント

ローカル SSD デバイスを個別にフォーマットしてマウントする

ローカル SSD をインスタンスに接続する最も簡単な方法は、各デバイスを単一パーティションでフォーマットしてマウントすることです。または、複数のデバイスを単一の論理ボリュームに組み合わせることもできます。

Linux インスタンス

Linux インスタンスで新しいローカル SSD をフォーマットしてマウントします。必要に応じて任意のパーティション フォーマットと構成を使用できます。この例では、ext4 パーティションを 1 つだけ作成します。

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

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

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

  3. ターミナルで lsblk コマンドを使用して、マウントするローカル SSD の ID を確認します。SCSI モードのローカル SSD には、sdb といった標準の ID が割り当てられています。NVMe モードのローカル SSD には nvme0n1 といった ID が割り当てられています。

    $ lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   10G  0 disk
    └─sda1    8:1    0   10G  0 part /
    nvme0n1 259:0    0  375G  0 disk
    
  4. ローカル SSD を ext4 ファイル システムでフォーマットします。次のコマンドを使用すると、ローカル SSD から既存のデータがすべて削除されます。

    $ sudo mkfs.ext4 -F /dev/[SSD_ID]
    

    ここで、[SSD_ID] は、フォーマット対象のローカル SSD の ID です。

  5. mkdir コマンドを使用して、デバイスをマウントできるディレクトリを作成します。

    $ sudo mkdir -p /mnt/disks/[MNT_DIR]
    

    ここで、[MNT_DIR] はローカル SSD をマウントするディレクトリです。

  6. ローカル SSD をインスタンスにマウントします。必要に応じて、書き込みキャッシュのフラッシュを無効化すると、書き込みパフォーマンスを向上させることができます。ただし、無効化すると最大 2 秒間、キャッシュされたデータの書き込みの耐久性が低下する危険性があります。

    $ sudo mount /dev/[SSD_ID] /mnt/disks/[MNT_DIR]
    

    ここで

    • [SSD_ID] は、マウントするローカル SSD の ID です。
    • [MNT_DIR] は、ローカル SSD をマウントするディレクトリです。
  7. デバイスに対する読み取り / 書き込みアクセス権を構成します。次の例では、デバイスへの書き込みアクセス権をすべてのユーザーに付与します。

    $ sudo chmod a+w /mnt/disks/[MNT_DIR]
    

    ここで、[MNT_DIR] はローカル SSD をマウントするディレクトリです。

任意で、ローカル SSD を /etc/fstab ファイルに追加して、インスタンスの再起動時にデバイスが自動的にマウントされるようにできます。このエントリは、インスタンスが停止または終了した場合、ローカル SSD 上のデータを保持しません。ローカル SSD データ永続性の詳細は、ローカル SSD データ永続性の理解を参照してください。

/etc/fstab ファイルの入力を指定する場合は、必ず nofail オプションを含め、ローカル SSD が存在しない場合でも、インスタンスの起動が継続できるようにします。たとえば、ブートディスクのスナップショットを取り、どのようなローカル SSD も接続しないで新しいインスタンスを作成した場合、インスタンスが起動プロセスを続行することができ、無期限に一時停止することはありません。Ubuntu 12.04 または Ubuntu 14.04 を実行している場合は、nobootwaitオプションではなく、nofail オプションを指定します。

  1. /etc/fstab エントリを作成します。blkid コマンドを使用してデバイス上のファイル システムの UUID を見つけ、/etc/fstab ファイルを編集してその UUID とマウント オプションが含まれるようにします。この手順は 1 つのコマンドで完了できます。次に例を示します。

    $ echo UUID=`sudo blkid -s UUID -o value /dev/disk/by-id/google-local-ssd-0` /mnt/disks/[MNT_DIR] ext4 discard,defaults,[NOFAIL_OPTION] 0 2 | sudo tee -a /etc/fstab
    

    ここで

    • [MNT_DIR] は、ローカル SSD をマウントするディレクトリです。
    • [NOFAIL_OPTION] は、このローカル SSD をマウントできない場合のシステムの動作を指定するオプションです。ほとんどのディストリビューションでは nofail を指定します。Ubuntu 12.04 または Ubuntu 14.04 を実行しているインスタンスでは、nobootwait オプションを指定します。
  2. cat コマンドを使用して、/etc/fstab エントリが正しいことを確認します。

    $ cat /etc/fstab
    

このインスタンスのブートディスクからスナップショットを作成し、そのスナップショットを使用してローカル SSD を使用しない別のインスタンスを作成する場合は、/etc/fstab ファイルを編集して、このローカル SSD のエントリを削除します。nofail または nobootwait オプションを使用する場合でも、インスタンスに接続されているデバイスとの /etc/fstab ファイルの同期を維持し、ブートディスクのスナップショットを作成する前にこれらのエントリを削除します。

Windows インスタンス

Windows の [ディスクの管理] ツールを使用して、Windows インスタンス上のローカル SSD をフォーマットしてマウントします。

  1. RDP を使用してインスタンスに接続します。この例の場合は、[VM インスタンス] ページに移動し、ローカル SSD が接続されているインスタンスの横にある [RDP] ボタンをクリックします。ユーザー名とパスワードを入力すると、ウィンドウが開き、サーバーに対するデスクトップ インターフェースが表示されます。

  2. Windows [スタート] ボタンを右クリックして [ディスクの管理] を選択します。

    Windows の [スタート] ボタンの右クリック メニューから、Windows ディスク管理ツールを選択します。

  3. ローカル SSD の初期化がまだの場合、新しいデバイスのパーティション構成の選択を求められます。[GPT] を選択して [OK] をクリックします。

    ディスク初期化ウィンドウでパーティション化スキームを選択します。

  4. ローカル SSD を初期化した後、未割り当てのディスク スペースを右クリックして、[新しいシンプル ボリューム] を選択します。

    接続したディスクから新しいシンプル ボリュームを作成します。

  5. [新しいシンプル ボリューム ウィザード] の指示に従って新しいボリュームを構成します。任意のパーティション フォーマットを使用できますが、この例では NTFS を選択しています。また、[クイック フォーマットする] をオンにすると、フォーマット処理が高速化します。

    [新しいシンプル ボリューム ウィザード] でパーティションのフォーマット タイプを選択します。

  6. ウィザードを完了し、ボリュームのフォーマットが終了した後、新しいローカル SSD をチェックして、ステータスが [Healthy](正常)となっていることを確認します。

    Windows によって認識されたディスクのリストを表示し、ローカル SSD が [正常] ステータスであることを確認します。

これで作業完了です。ローカル SSD にファイルを書き込むことができます。

複数のローカル SSD デバイスをフォーマットして単一の論理ボリュームにマウントする

永続 SSD とは異なり、インスタンスに接続する各デバイスのローカル SSD の容量は 375 GB の固定です。複数のローカル SSD デバイスを単一の論理ボリュームに組み合わせる場合、これらのデバイス間のボリューム管理をユーザー自身が定義する必要があります。

Linux インスタンス

RAID 0 アレイを作成するには mdadm を使用します。この例では、1 つの ext4 ファイル システムを使用したアレイをフォーマットしますが、任意のファイル システムを適用できます。

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

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

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

  3. ターミナルで、mdadm ツールをインストールします。mdadm のインストール プロセスには、スクリプトを停止するユーザー プロンプトが含まれているため、このプロセスは手動で実行してください。

    Debian と Ubuntu:

    $ sudo apt-get update && sudo apt-get install mdadm --no-install-recommends
    

    CentOS と RHEL:

    $ sudo yum install mdadm -y
    

    SLES と openSUSE:

    $ sudo zypper install -y mdadm
    

  4. lsblk コマンドを使用して、まとめてマウントするすべてのローカル SSD を確認します。この例では、インスタンスに NVMe モードのローカル SSD デバイスが 8 個あります。

    $ lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   10G  0 disk
    └─sda1    8:1    0   10G  0 part /
    nvme0n1 259:0    0  375G  0 disk
    nvme0n2 259:1    0  375G  0 disk
    nvme0n3 259:2    0  375G  0 disk
    nvme0n4 259:3    0  375G  0 disk
    nvme0n5 259:4    0  375G  0 disk
    nvme0n6 259:5    0  375G  0 disk
    nvme0n7 259:6    0  375G  0 disk
    nvme0n8 259:7    0  375G  0 disk
    
    

    SCSI モードのローカル SSD には、sdb といった標準の ID が割り当てられています。NVMe モードのローカル SSD には nvme0n1 といった ID が割り当てられています。

  5. mdadm を使用して、複数のローカル SSD デバイスを /dev/md0 という名前の 1 つのアレイに結合します。この例では、NVMe モードの 8 個のローカル SSD デバイスをマージします。SCSI モードのローカル SSD デバイスについては、lsblk コマンドで取得した ID を指定します。

    $ sudo mdadm --create /dev/md0 --level=0 --raid-devices=8 \
    /dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 \
    /dev/nvme0n5 /dev/nvme0n6 /dev/nvme0n7 /dev/nvme0n8
    
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    
    
  6. /dev/md0 アレイ全体を ext4 ファイル システムでフォーマットします。次のコマンドを使用すると、ローカル SSD から既存のデータがすべて削除されます。

    $ sudo mkfs.ext4 -F /dev/md0
    
  7. /dev/md0 をマウントできるディレクトリを作成します。この例では、/mnt/disks/ssd-array ディレクトリを作成します。

    $ sudo mkdir -p /mnt/disks/[MNT_DIR]
    

    ここで、[MNT_DIR] はローカル SSD アレイをマウントするディレクトリです。

  8. /dev/md0 アレイを /mnt/disks/ssd-array ディレクトリにマウントします。必要に応じて、書き込みキャッシュのフラッシュを無効化すると、書き込みパフォーマンスを向上させることができます。ただし、無効化すると最大 2 秒間、キャッシュされたデータの書き込みの耐久性が低下する危険性があります。

    $ sudo mount /dev/md0 /mnt/disks/[MNT_DIR]
    

    ここで、[MNT_DIR] はローカル SSD アレイをマウントするディレクトリです。

  9. デバイスに対する読み取り / 書き込みアクセス権を構成します。次の例では、デバイスへの書き込みアクセス権をすべてのユーザーに付与します。

    $ sudo chmod a+w /mnt/disks/[MNT_DIR]
    

    ここで、[MNT_DIR] はローカル SSD アレイをマウントしたディレクトリです。

必要に応じて、ローカル SSD を /etc/fstab ファイルに追加して、インスタンスの再起同時にデバイスが自動的にマウントされるようにできます。このエントリは、インスタンスが終了した場合、ローカル SSD 上のデータを保持しません。ローカル SSD データ永続性の詳細は、ローカル SSD データ永続性の理解を参照してください。

/etc/fstab ファイルの入力を指定する場合は、必ず nofail オプションを含め、ローカル SSD が存在しない場合でも、インスタンスが起動できるようにします。たとえば、ブートディスクのスナップショットを取り、どのようなローカル SSD も接続しないで新しいインスタンスを作成した場合、インスタンスが起動プロセスを続行することができ、無期限に一時停止することはありません。Ubuntu 12.04 または Ubuntu 14.04 を実行している場合は、nobootwaitオプションではなく、nofail オプションを指定します。

  1. /etc/fstab エントリを作成します。blkid コマンドを使用してデバイス上のファイル システムの UUID を見つけ、/etc/fstab ファイルを編集してその UUID とマウント オプションが含まれるようにします。この手順は 1 つのコマンドで完了できます。次に例を示します。

    $ echo UUID=`sudo blkid -s UUID -o value /dev/md0` /mnt/disks/[MNT_DIR] ext4 discard,defaults,[NOFAIL_OPTION] 0 2 | sudo tee -a /etc/fstab
    

    ここで

    • [MNT_DIR] は、ローカル SSD アレイをマウントしたディレクトリです。
    • [NOFAIL_OPTION] は、このローカル SSD をマウントできない場合のシステムの動作を指定するオプションです。ほとんどのディストリビューションでは nofail を指定します。Ubuntu 12.04 または Ubuntu 14.04 を実行しているインスタンスでは、nobootwait オプションを指定します。
  2. cat コマンドを使用して、/etc/fstab エントリが正しいことを確認します。

    $ cat /etc/fstab
    

このインスタンスのブートディスクからスナップショットを作成し、そのスナップショットを使用してローカル SSD を使用しない別のインスタンスを作成する場合は、/etc/fstab ファイルを編集して、このローカル SSD のエントリを削除します。nofail または nobootwait オプションを使用する場合でも、インスタンスに接続されているデバイスとの /etc/fstab ファイルの同期を維持し、ブートディスクのスナップショットを作成する前にこれらのエントリを削除します。

Windows インスタンス

Windows の [ディスクの管理] ツールを使用して、Windows インスタンス上のローカル SSD のアレイをフォーマットしてマウントします。

  1. RDP を使用してインスタンスに接続します。この例の場合は、[VM インスタンス] ページに移動し、ローカル SSD が接続されているインスタンスの横にある [RDP] ボタンをクリックします。ユーザー名とパスワードを入力すると、ウィンドウが開き、サーバーに対するデスクトップ インターフェースが表示されます。

  2. Windows [スタート] ボタンを右クリックして [ディスクの管理] を選択します。

    Windows の [スタート] ボタンの右クリック メニューから、Windows ディスク管理ツールを選択します。

  3. ローカル SSD をまだ初期化していない場合、新しいデバイスのパーティション構成の選択を求められます。[GPT] を選択して [OK] をクリックします。

    ディスク初期化ウィンドウでパーティション化スキームを選択します。

  4. ローカル SSD を初期化した後、未割り当てのディスク スペースを右クリックして、[新しいストライプ ボリューム] を選択します。

    接続されたディスクから新しいストライプ ボリュームを作成します。

  5. ストライプ アレイに含めるローカル SSD デバイスを選択します。この例では、すべてのデバイスを選択して、1 つのローカル SSD デバイスに結合します。

    アレイに含めるローカル SSD デバイスを選択します。

  6. [新しいストライプ ボリューム ウィザード] の指示に従って新しいボリュームを構成します。任意のパーティション フォーマットを使用できますが、この例では NTFS を選択しています。また、[クイック フォーマットする] をオンにすると、フォーマット処理が高速化します。

    [新しいストライプ ボリューム ウィザード] でパーティションのフォーマット タイプを選択します。

  7. ウィザードを完了し、ボリュームのフォーマットが終了した後、新しいローカル SSD をチェックして、ステータスが [Healthy](正常)となっていることを確認します。

    Windows によって認識されたディスクのリストを表示し、ローカル SSD が [正常] ステータスであることを確認します。

これで作業完了です。ローカル SSD にファイルを書き込むことができます。

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

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

Compute Engine ドキュメント