メモリ内 RAM ディスクの作成


Compute Engine インスタンスは、アプリケーションの実行に使用できる高性能なエンタープライズクラスのメモリを備えています。このメモリの一部を、レイテンシが極めて低くスループットが高い RAM ディスクを作成するために割り当てることができます。ファイル システム構造を必要とし、システムメモリに単純にデータを格納することができないアプリケーションの場合は、RAM ディスクが適しています。RAM ディスクだけではストレージの冗長性や柔軟性は提供されないので、RAM ディスクを他のインスタンス ストレージ オプションと組み合わせて使用するのが最善の方法です。

RAM ディスクはインスタンスのメモリをアプリケーションと共有します。インスタンスのメモリが RAM ディスクとアプリケーションを格納するのに十分でない場合は、highmem マシンタイプ(N2 など)でインスタンスを作成するか、既存のインスタンスをアップグレードしてメモリを追加してください。

始める前に

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

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

    コンソール

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

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

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

    REST

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

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

RAM ディスクの作成

RAM ディスクは、tmpfs ファイル システムで作成できます。このファイル システムは、ほとんどの Linux ディストリビューションにデフォルトで含まれています。

  1. インスタンスに使用可能なメモリが十分にない場合は、必要に応じて、メモリ量の多いマシンタイプにインスタンスのマシンタイプを変更できます。

  2. SSH 経由でインスタンスに接続します。この例では、[VM インスタンス] ページに移動し、RAM ディスクを追加するインスタンスの隣の [SSH] ボタンをクリックします。

  3. RAM ディスクのマウント ポイントを作成します。

    $ sudo mkdir /mnt/ram-disk
    
  4. 新しい tmpfs RAM ディスクを作成してマウントします。アプリケーションとシステムメモリの競合を回避し、使用可能なすべてのメモリが消費されないようにしつつ、ストレージ要件を満たす値を size プロパティに設定する必要があります。この例では、インスタンスのマシンタイプが n1-highmem-32 でメモリは 208 GB なので、RAM ディスクのサイズとしては 50g が適切です。

    $ sudo mount -t tmpfs -o size=50g tmpfs /mnt/ram-disk
    
  5. RAM ディスクを /etc/fstab ファイルに追加し、インスタンスを再起動した場合にデバイスが自動的に再びマウントされるようにします。

    $ echo 'tmpfs /mnt/ram-disk tmpfs nodev,nosuid,noexec,nodiratime,size=50G 0 0' | sudo tee -a /etc/fstab
    

RAM ディスクの削除

tmpfs RAM ディスクは他のボリュームと同じようにマウント解除できます。マウントを解除すると、RAM ディスクと、そこに格納されているすべてのデータが削除されます。この例では、/mnt/ram-disk にマウントされている RAM ディスクを削除します。

$ sudo umount /mnt/ram-disk

インスタンスの再起動の間に RAM ディスクのデータを自動的にバックアップする

インスタンスが再起動する前に RAM ディスクをバックアップすることにより、インスタンスが再び起動するまで RAM ディスクのデータを保持できます。データを永続ディスクにバックアップして保持する方法は以下のとおりです。

  1. RAM ディスクのバックアップ ディスクとして使用する永続ディスクを作成してマウントします。永続ディスクが RAM ディスクの情報を格納するのに十分な大きさであることを確認します。

  2. rsync コマンドを使用してインスタンスのシャットダウン スクリプトを作成します。このスクリプトは、RAM ディスクの内容をバックアップ ボリュームに書き込みます。この例では gcloud CLI を使用して、RAM ディスクが /mnt/ram-disk にマウントされ、永続ディスクが /mnt/ram-disk-backup にマウントされているインスタンスに shutdown-script メタデータを追加します。

    gcloud compute instances add-metadata example-instance --metadata shutdown-script="#! /bin/bash
    rsync -a --delete --recursive --force /mnt/ram-disk/ /mnt/ram-disk-backup/
    EOF"
    
  3. 必要に応じて、インスタンスが再開したときにファイルを RAM ディスクに復元するスタートアップ スクリプトを作成することもできます。gcloud CLI を使用して startup-script メタデータをインスタンスに追加します。

    gcloud compute instances add-metadata example-instance --metadata startup-script="#! /bin/bash
    rsync -a --recursive --force /mnt/ram-disk-backup/ /mnt/ram-disk/
    EOF"