Google Compute Engine では、Google インフラで仮想マシンを作成および実行できます。各種 Linux (Debian、Ubuntu、Suse、Red Hat、CoreOS) および Windows Server を含む各種オペレーティング システムを実行する仮想マシンを作成できます!

ただし、仮想マシンを作成すると、データを保存するための容量が大きい永続ディスクを追加したくなるでしょう。

本ラボでは、永続ディスクの作成方法と仮想マシンへのその追加方法について学びます。

学習内容

必要な環境

本チュートリアルをどのように使用しますか?

通読するだけ 通読し、演習をこなす

Google Cloud Platform についてのあなたの習熟度として、最も適切なものを選択してください

初心者 中級者 上級者

自己学習環境セットアップ

Google アカウント (Gmail または Google Apps) をまだ持っていない場合、作成する必要があります。Google Cloud Platform コンソール (console.cloud.google.com) にサインインし、新しいプロジェクトを作成します。

すべての Google Cloud プロジェクトで一意の名前であるプロジェクト ID (上記の名前はすでに取得されているため、使用できません!) を覚えてください。以降、本コードラボでは PROJECT_ID と呼びます。

次に、Cloud Datastore、Cloud Storage などの Google Cloud リソースを使用するには、Developers Console で課金を有効にする必要があります。

本コードラボの実行には数ドルもかかりませんが、より多くのリソースを利用するか、実行し続けると、より多く料金がかかる場合があります (本書末尾の「クリーンアップ」セクションを参照してください)。価格については、次の資料を参照してください。Cloud Datastore & Cloud Storage

Google Cloud Platform の新規ユーザーは、300 ドル無料トライアルの対象となります。

他のブラウザ タブ/ウィンドウから Google Cloud Console (https://console.cloud.google.com) に移動します。ラボプロクターから与えられたログイン資格情報を使用します。

非常に重要 - 次のページにアクセスして、Compute Engine API の有効化など、水面下での初期設定を行います。
Compute → Compute Engine → VM Instances

操作完了後の作業はほとんど、Google Cloud Shell (Cloud で動作するコマンド ライン環境) で行います。この Debian ベース仮想マシンには、必要な開発ツール (gcloudgit など) がすべてロードされており、永続的な 5GB ホーム ディレクトリを提供します。画面右上のアイコンをクリックして、Google Cloud Shell を開きます。

Certain Compute Engine リソースは、領域またはゾーンにあります。領域は、リソースを実行できる特定の地理的位置です。領域は、1 つまたは複数のゾーンで構成されます。たとえば、us-central1 領域は、us-central1-a、us-central1-b、および us-central1-fゾーンが含まれるアメリカ中部の領域を示しています。

仮想マシンインスタンスおよび永続ディスクは、ゾーンにあり、それらはゾーン リソースとして参照されます。たとえば、永続ディスクを仮想マシン インスタンスに追加するには、両方のリソースが同じゾーンになければなりません。

領域とゾーンの詳細については、Regions & Zones 説明書の完全なリストを参照してください。

まず、ブート ディスクがあり、追加永続ディスク ストレージはない Compute Engine 仮想マシンを作成しましょう。

Cloud Shell で、gcloud を使用して、コマンド ラインから新しい仮想マシン インスタンスを作成します。

$ gcloud compute instances create gcelab --zone us-central1-c
Created [...].
NAME       ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
myinstance europe-west1-c n1-standard-1             10.240.X.X  X.X.X.X        RUNNING

新たに作成された仮想マシン インスタンスには、ブート ディスクとしてデフォルトで 10 GB の永続ディスクがあります。

Google Compute Engine は、仮想マシン インスタンスのプライマリ ストレージとして使用できる永続ディスクを提供しています。永続ディスク ストレージは、仮想マシン インスタンスに追加できるネットワーク ストレージです。物理ハード ドライブと同様、永続ディスクは他のマシンからは独立しています。仮想マシン インスタンスが削除されても、追加された永続ディスクはそのデータを保持し続け、他のインスタンスに追加できます。

新規ディスクを作成します。

$ gcloud compute disks create mydisk --size=200GB \
--zone us-central1-c
NAME   ZONE          SIZE_GB TYPE        STATUS
mydisk us-central1-c 5       pd-standard READY

永続ディスクの追加

ディスクを実行中の仮想マシンに追加できます。新しいディスクを仮想マシン インスタンスに追加してみましょう。

ディスクを追加します。

$ gcloud compute instances attach-disk gcelab --disk mydisk --zone us-central1-c
Updated [https://www.googleapis.com/compute/v1/projects/...].

以上です!

仮想マシンでのデバイスの検出

永続ディスクは、仮想マシン インスタンスのブロック デバイスとして利用可能です。見ていきましょう。まず、仮想マシンへの SSH です。

$ gcloud compute ssh gcelab --zone us-central1-c
Warning:Permanently added 'X.X.X.X' (ECDSA) to the list of known hosts.
...
username@gcelab:~$ 

ディスク デバイスを見つけましょう。それは、/dev/disk/by-id/ as scsi-0Google_PersistentDisk_persistent-disk-1 にあります。

username@gcelab:~$ ls -l /dev/disk/by-id/
lrwxrwxrwx 1 root root  9 Feb 27 02:24 google-persistent-disk-0 -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 27 02:24 google-persistent-disk-0-part1 -> ../../sda1
lrwxrwxrwx 1 root root  9 Feb 27 02:25 google-persistent-disk-1 -> ../../sdb
lrwxrwxrwx 1 root root  9 Feb 27 02:24 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 27 02:24 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
lrwxrwxrwx 1 root root  9 Feb 27 02:25 scsi-0Google_PersistentDisk_persistent-disk-1 -> ../../sdb

永続ディスクのフォーマットとマウント

ブロック デバイスを検出すると、ディスクをパーティション、フォーマット、マウントできます。Linux に慣れている方であれば、ユーティリティ fdisk、mkfsおよび mountを簡単に使用できます。

まず、マウント ポイントを作成します。

username@gcelab:~$ sudo mkdir /mnt/mydisk

次に、mkfs ツールを使用して、単一の ext4 ファイルシステムでディスクをフォーマットします。このコマンドは、指定されたディスクからすべてのデータを削除します。

username@gcelab:~$ sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1

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

username@gcelab:~$ sudo mount -o discard,defaults /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1 /mnt/mydisk

以上です!

再起動時のディスクの自動マウント

仮想マシンが再起動されても、ディスクは再マウントされません。再起動時にディスクが再マウントされることを確認するには、エントリを /etc/fstab に追加する必要があります。「UUID=...」で始まる行を下に追加します

次に例を示します。

/dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1 /mnt/mydisk ext4 defaults 1 1

Google Compute Engine は、ローカル SSD も追加できます。ローカル SSD は、それらがマウントされる仮想マシン インスタンスをホストするサーバーに物理的に追加されます。この密結合によって、永続ディスクと比較して、1 秒あたりの入出力回数 (IOPS) が非常に高く、待機時間が非常に短い、優れたパフォーマンスが実現します。

ローカル SSD パフォーマンス:

これらのパフォーマンスの向上には、可用性、持続性、および柔軟性の一定のトレードオフが必要です。これらのトレードオフがあるため、ローカル SSD ストレージは自動的には複製されず、すべてのデータが、ディスクを到達不可能にするホスト エラーまたはユーザー設定エラー発生時に失われる可能性があります。ユーザーは、データのバックアップに当たっては、さらに注意しなければなりません。

本ラボでは、ローカル SSD についてはカバーしません。ローカル SSD パフォーマンスを最大化するには、NVMe をサポートする特殊な Linux イメージを使用する必要があります。ローカル SSD の詳細については、Local SSD 説明書を参照してください。

永続ディスクおよび永続ディスクとローカル SSD 間の主な違いについて学びました。永続ディスクを使用して、簡単にデータベース サーバーをセットアップおよび設定できます。

おさらい