ローカル 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 のデータが回復不能になるかを理解する必要があります。

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

  • ゲスト オペレーティング システムを再起動した場合。
  • インスタンスをライブ マイグレーション用に設定し、インスタンスがホスト保守イベントの間を通して使用される場合。
  • ホストシステムにホストエラーが発生すると、Compute Engine はローカル SSD データを保持しようとしますが、基本ドライブが 60 分以内で復旧した場合のみそれが可能になります。

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

  • インスタンスを手動で停止させた場合。
  • ゲスト オペレーティング システムをシャットダウンし、インスタンスを強制終了させた場合。
  • インスタンスをプリエンプティブとなるように設定し、インスタンスがプリエンプションの処理を通して使用される場合。
  • インスタンスを、ホスト保守イベントを終了させるように設定し、インスタンスがホスト保守イベントの間を通して使用される場合。
  • ホストシステムにホストエラーが発生し、基本ドライブが 60 分以内に復旧しない場合には、Compute Engine はローカル SSD のデータを保持しようとしません。
  • ローカル SSD を、誤って到達不能になるような設定にした場合。

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

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

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

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.04 イメージ ファミリー ubuntu-1704
  • マルチキュー 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.04 イメージ ファミリー ubuntu-1704
    • Ubuntu 17.10 イメージ ファミリー ubuntu-1710
    • すべての Windows Server イメージ
    • すべての SQL Server イメージ

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

ローカル SSD の作成

ローカル SSD を使用するインスタンスは、Google Cloud Platform Consolegcloud ツールAPI のいずれかで作成できます。

Console

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

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

  2. [作成] ボタンをクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンス向けに希望するプロパティを入力します。
  4. [管理、ディスク、ネットワーキング、SSH 認証鍵] を展開します。
  5. [ディスク] をクリックし、[追加ディスク] の [項目を追加] をクリックします。
  6. [名前] フィールドで、プルダウン メニューから [新しいディスクの作成] を選択します。
  7. ポップアップ画面で、[ディスクタイプ] の [ローカル SSD] を選択します。
  8. [作成] ボタンをクリックし、インスタンスを作成します。
  9. ローカル 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 リファレンスをご覧ください。

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

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

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

Linux インスタンス

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

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

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

  2. 新しいローカル SSD が接続されているインスタンスの横にある SSH ボタンをクリックします。ブラウザはインスタンスへの端末接続を開きます。

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

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

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

  4. ターミナルで、ls コマンドを使用して、マウントするローカル SSD を識別します。

    $ ls /dev/disk/by-id/
    
    google-example-instance        scsi-0Google_EphemeralDisk_local-ssd-0
    google-example-instance-part1  scsi-0Google_PersistentDisk_example-instance
    google-local-ssd-0             scsi-0Google_PersistentDisk_example-instance-part1
    

    ディスク ID は、通常、ローカル SSD の名前と、google- 接頭辞または scsi-0Google_EphemeralDisk_ 接頭辞を含みます。この例では、google-local-ssd-0 ID を使用します。

  5. ローカル SSD を ext4 ファイル システムでフォーマットします。このコマンドは、ローカル SSD から既存のデータをすべて削除します。

    $ sudo mkfs.ext4 -F /dev/disk/by-id/google-local-ssd-0
    

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

    $ sudo mount /dev/disk/by-id/google-local-ssd-0 /mnt/disks/[MNT_DIR]
    

    ここで、[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 を見つけ、その UUID とマウント オプションが含まれるように /etc/fstab ファイルを編集します。この手順は 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] 0 2 | sudo tee -a /etc/fstab
    

    ここで

    • [MNT_DIR] は、ローカル SSD をマウントするディレクトリです。
    • [NOFAIL] は、ローカル 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. ls コマンドを使用して、一緒にマウントする、すべてのローカル SSD を識別します。この例では、インスタンスには 4 個のローカル SSD デバイスがあります。

    $ ls /dev/disk/by-id/
    
    google-example-instance        scsi-0Google_EphemeralDisk_local-ssd-0
    google-example-instance-part1  scsi-0Google_EphemeralDisk_local-ssd-1
    google-local-ssd-0             scsi-0Google_EphemeralDisk_local-ssd-2
    google-local-ssd-1             scsi-0Google_EphemeralDisk_local-ssd-3
    google-local-ssd-2             scsi-0Google_PersistentDisk_example-instance
    google-local-ssd-3             scsi-0Google_PersistentDisk_example-instance-part1
    

    ディスク ID には、通常、各ローカル SSD の名前と、google- 接頭辞または scsi-0Google_EphemeralDisk_ 接頭辞が含まれます。この例では、google- 接頭辞付きの ID を使用します。

  5. mdadm を使用して、複数のローカル SSD デバイスを /dev/md0 という名前の 1 つのアレイに結合します。この例では 4 つの RAID デバイスをマージします。

    $ sudo mdadm --create /dev/md0 --level=0 --raid-devices=4 \
    /dev/disk/by-id/google-local-ssd-0 /dev/disk/by-id/google-local-ssd-1 \
    /dev/disk/by-id/google-local-ssd-2 /dev/disk/by-id/google-local-ssd-3

  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 を見つけ、その UUID とマウント オプションが含まれるように /etc/fstab ファイルを編集します。この手順は 1 つのコマンドで完了できます。次に例を示します。

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

    ここで

    • [MNT_DIR] はローカル SSD アレイをマウントしたディレクトリです。
    • [NOFAIL] は、ローカル 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 ドキュメント