Google Compute Engine VM間で永続ディスクを共有する
Googleのドキュメントから:
永続ディスクを複数のインスタンスに接続することが可能です。ただし、永続ディスクを複数のインスタンスに接続する場合、すべてのインスタンスは読み取り専用モードで永続ディスクを接続する必要があります。永続ディスクを読み取り/書き込みモードで複数のインスタンスに接続することはできません。
永続ディスクを読み書きモードで接続し、その後ディスクを後続のインスタンスに接続しようとすると、Google Compute Engineはエラーを返します。
したがって、すべてのコンピューティングエンジンのフロントエンドとして永続ディスクを共有する必要があります。この共有ディスクにどのように書き込むことができますか?
私の推測(私は願っています)は読み取り/書き込み永続ディスクは1つのコンピューティングエンジンでのみ接続できますですが、この同じディスク他のユーザーと読み取り専用で共有できます VM、そうですか?
2つのCompute Engine VMと2つの永続ディスクがあるとします。このフローは可能ですか?
- compute1はdisk1を読み取り/書き込み、disk2は読み取り専用
- compute2読み取り/書き込みdisk2および読み取り専用disk1
いいえ、これは不可能です。 あなたが引用したドキュメント 執筆時点では(更新されているため):
ただし、永続ディスクを複数のインスタンスに接続する場合、すべてのインスタンスは読み取り専用モードで永続ディスクを接続する必要があります。
ドキュメントはそれ以来再配置されました。新しいドキュメントは 異なるURL にありますが、コンテンツは同じです:
非ルート永続ディスクを読み取り専用モードで複数の仮想マシンインスタンスに接続すると、複数のインスタンス間で静的データを共有できます。 1つの永続ディスクから複数のインスタンス間で静的データを共有する方が、個々のインスタンスの一意のディスクにデータを複製するよりも安価です。
永続ディスクを複数のインスタンスに接続する場合、それらのすべてのインスタンスは読み取り専用モードで永続ディスクを接続する必要があります。永続ディスクを読み取り/書き込みモードで複数のインスタンスに接続することはできません。複数のインスタンス間で動的ストレージスペースを共有する必要がある場合は、インスタンスを Cloud Storage または ネットワークファイルサーバーの作成 に接続します。
複数のインスタンス間で共有するデータを含む永続ディスクがある場合、読み取り/書き込みインスタンスから切り離し、読み取り専用モードで1つ以上のインスタンスに接続します。
つまり、あるインスタンスに書き込みアクセスを許可し、別のインスタンスに読み取り専用アクセスを許可することはできません。
それらの間でデータを共有する場合は、永続ディスク以外の何かを使用する必要があります。以下は可能な解決策です。
次のいずれかを使用できますホステッド/マネージドサービス:
- Google Cloud Filestore — NFSv3ファイルシステムを提供するため、おそらく探しているものに最も近い
- GCPのElastifile を 完全に管理されたサービス として使用することもできます。 GCPは2019年7月にElastifileを買収しました
- Google Cloud Datastore
- Google Cloud Storage 、GCS API(JSONまたはXML)経由で使用するか、 gcsfuse を使用してブロックデバイスとしてマウントできます
- Google Cloud Bigtable
- Google Cloud SQL
または、自分で実行することもできます:
- 自己管理 Elastifileストレージ展開 (完全管理の場合は、リンクについては前のセクションを参照)
- データベース(SQLかNoSQLか)
- Ceph 、 GlusterFS 、 OrangeFS 、 [〜#〜] zfs [〜#〜] などの分散ファイルシステム等.
- [〜#〜] nfs [〜#〜] や [〜#〜] samba [〜#〜] などのファイルサーバー
- single VM=データストレージノードとして、そして
sshfs
を使用して、そのデータにアクセスする他のVMからFuseマウントを作成します。