Filestoreを徹底解説。Google Cloudのマネージドなファイルサーバ

記事タイトルとURLをコピーする

G-gen の杉村です。Google Cloud のマネージドなファイルサーバである Filestore を徹底解説します。

はじめに

Filestore とは

Filestore は、Google Cloud のマネージドなファイルサーバのサービスです。

Filestore はインスタンスという単位で管理されます。事前に必要なサイズのストレージをプロビジョン (割り当て) したうえで、Compute Engine VM、Google Kubernetes Engine (GKE) クラスタ、オンプレミスマシン等から接続して利用できます。ストレージは、ダウンタイム無しで容量の拡張が可能です。

ファイルシステム・接続プロトコルは NFSv3 です。NFS (Network File System) は主に UNIX/Linux 系システムで利用される仕組みですが、Windows 7/Windows Server 2008 以降には NFSv2/v3 のクライアントが利用可能です。

ユースケース

Filestore は以下のようなユースケースで利用されます。

  • ファイルサーバ用途
  • Compute Engine や GKE のアプリケーションのファイル入出力先として利用 (複数サービスからのアクセス)
  • Google Cloud VMware Engine の外部ストレージとして利用

Compute Engine や GKE から利用されるストレージには他に、ブロックストレージである 永続ディスク やオブジェクトストレージである Cloud Storage が存在します。Filestore は「ファイルシステムとしてマウントできる」「複数マシンからの読み書きが想定されている」かつ「ディスクをホストするマシン自体の管理が不要」という特徴があります。

料金

ディスク容量

Filestore の料金は、割り当てたディスク容量 (GiB 単位) × インスタンスが存在した時間 (1秒単位) で発生します。ディスクが割り当てられていると、実際に使用されていなくても課金されます。

単価は、サービスティア (ディスクの種類。後述) によって異なります。

2023年8月現在の東京リージョンの単価では基本 HDD ティアで $0.000329 / GiB / hour です。作成可能な最小サイズである 1024 GiB のインスタンスを30日間使用すると、0.000329 × 1024 × 24 × 30 で 約 $242.64 / 月となります。

バックアップ

Filestore のバックアップ機能を使うと、GiB あたりの保管料が発生します。

2023年8月現在の東京リージョンの単価では $0.1/GiB/月です。

ネットワーク

Filestore への Ingress (上り) のトラフィックには課金されません。また、同一ゾーン内の Filestore・VM 間のトラフィックにも課金されません。

Filestore とクライアントが別々のゾーンに存在したり、インターネットや IPSec VPN 経由で接続された場合、Egress (下り)トラフィックに対して課金が発生します。これは Filestore というより、Google Cloud のネットワークの課金の仕組みです。単価や計算方法は、以下のドキュメントをご参照ください。

2023年8月現在の単価例をいくつか記載します。

  • 同一リージョン内の別ゾーンの VM への下り : $0.01/GiB
  • Google Cloud 外 (インターネット経由または IPSec 経由) への下り : $0.14/GiB (東京・プレミアムティア)

コンポーネント

イメージ図

イメージ図 (コンポーネントとネットワーク)

インスタンス

インスタンスは、ファイルシステムをホストする仮想サーバです。

インスタンスごとにサービスティアを選択します。

サービスティア

サービスティア概要

インスタンス作成時には4つのサービスティアから一つを選択します。サービスティアによって容量の最小・最大値やパフォーマンス、冗長性などに違いがあります。

ティア名 ディスク容量 スケール単位 パフォーマンス 冗長性
基本 HDD 1〜63.9 TiB 1 GiB単位で拡張。縮小は不可 固定(標準) ゾーン
基本 SSD 2.5〜63.9 TiB 1 GiB単位で拡張。縮小は不可 固定(プレミアム) ゾーン
ゾーン・低容量帯域 1〜9.75 TiB 256 GiB単位で拡張・縮小 容量に応じて変化 ゾーン
ゾーン・高容量帯域 10〜100 TiB 2.5 TiB単位で拡張・縮小 容量に応じて変化 ゾーン
エンタープライズ 1〜10 TiB インスタンスは 256 GiB単位で拡張・縮小 容量に応じて変化 リージョン

GiB あたりの料金単価は、上記の表で下に行くほど高くなります (料金表参照)。

基本 HDD

基本 HDD はハードディスクドライブを使った Filestore インスタンスです。汎用的な用途に使えますが、全てのティアの中で最も安価・低性能です。

最小 1 TiB からインスタンスを作成できますが、10 TiB を超えるとスループット/IOPS が高くなります。最大サイズは 63.9 TiB です。

基本ティアの制約として 172.17.0.0/16 の範囲内にいるクライアントからは使用することができません。Filestore の内部コンポーネントでこの IP アドレスレンジが使用されていることに起因します。同じ理由から、基本ティアの Filestore インスタンスをこの IP レンジ範囲に作成することはできません (参考)。

同時接続クライアント数は 500 が推奨されています。

項目名
読み取りスループット ・容量が 1~10 TiB: 100 MiB/秒
・容量が 10 TiB〜: 180 MiB/秒
書き込みスループット ・容量が 1~10 TiB: 100 MiB/秒
・容量が 10 TiB〜: 120 MiB/秒
読み取り IOPS ・容量が 1~10 TiB: 600
・容量が 10 TiB〜: 1,000
書き込み IOPS ・容量が 1~10 TiB: 1,000
・容量が 10 TiB〜: 5,000

基本 SSD

基本 SSD は SSD を使った Filestore インスタンスです。基本 HDD と同じく汎用的な用途が想定されていますが、HDD よりも高性能です。

最小サイズは 2.5 TiB、最大サイズは 63.9 TiB で、容量に関わらず性能は固定です。

172.17.0.0/16 の IP アドレスレンジに関する制約は、基本 HDD ティアの説明に書いたものと同様です。

同時接続クライアント数は 500 が推奨されています。

項目名
読み取りスループット 1,200 MiB/秒
書き込みスループット 350 MiB/秒
読み取り IOPS 60,000
書き込み IOPS 25,000

ゾーン・低容量帯域

ゾーン・低容量帯域 (Zonal with a lower capacity band) は SSD を使った Filestore インスタンスです。基本 SSD よりも安価に利用できます。

最小サイズは 1 TiB、最大サイズは 9.75 TiB で、割り当てられたサイズに応じて最大性能 (スループット、IOPS、クライアント接続数) が向上していきます。

ディスクサイズの拡張だけでなく、基本ティアでは不可能なディスクサイズの縮小が可能です。

項目名
クライアント接続数 最大 1,000
読み取りスループット 割り当て 2.5 TiB あたり 650 MiB/秒
書き込みスループット 割り当て 2.5 TiB あたり 220 MiB/秒
読み取り IOPS 割り当て 2.5 TiB あたり 23,000
書き込み IOPS 割り当て 2.5 TiB あたり 6,500

ゾーン・高容量帯域

ゾーン・低容量帯域 (Zonal with a higher capacity band) も同様に SSD を使った Filestore インスタンスです。高価ではありますが高性能で、ゲノム解析や金融サービス取引分析など、HPC (High Performance Computing) 用途に適しています。

最小サイズは 10 TiB、最大サイズは 100 TiB で、割り当てられたサイズに応じて最大性能 (スループット、IOPS、クライアント接続数) が向上していきます。

こちらもディスクサイズの拡張だけでなく、基本ティアでは不可能なディスクサイズの縮小が可能です。

項目名
クライアント接続数 割り当て 10 TiB あたり 1,000
読み取りスループット 割り当て 2.5 TiB あたり 650 MiB/秒
書き込みスループット 割り当て 2.5 TiB あたり 220 MiB/秒
読み取り IOPS 割り当て 2.5 TiB あたり 23,000
書き込み IOPS 割り当て 2.5 TiB あたり 6,500

エンタープライズ

エンタープライズ は大規模なファイルシステム用途や SAP などの重要アプリケーションのために設計されたインスタンスティアです。

ポイントは、リージョンレベルでの高可用性を確保するため、データがゾーン間でレプリケーションされている点です。

最小サイズは 1 TiB、最大サイズは 10 TiB で、割り当てられたサイズに応じて最大性能 (スループット、IOPS、クライアント接続数) が向上していきます。

エンタープライズティアでも、ディスクサイズの拡張だけでなく縮小が可能です。

項目名
クライアント接続数 割り当て 10 TiB あたり 1,000
読み取りスループット 割り当て 1 TiB あたり 120 MiB/秒
書き込みスループット 割り当て 1 TiB あたり 100 MiB/秒
読み取り IOPS 割り当て 1 TiB あたり 12,000
書き込み IOPS 割り当て 1 TiB あたり 4,000

共有

共有 (share) は Filestore インスタンス内に作成するストレージ領域で、マウント用のアクセスポイントを持ちます。

基本的にはインスタンス内に、共有を1個だけ作成できます。例外は「GKE 向け Filestore マルチシェア」機能で、エンタープライズティアでこの機能を利用する際にだけ、インスタンス内に複数の共有が作成されます。

共有名はインスタンス作成時に指定します。例として my_share_01 という共有でインスタンスの IP アドレスが 10.100.0.11 の場合 Linux でのマウント時のコマンドは以下のようになります。

sudo mount -o rw,intr 10.100.0.11:/my_share_01 /mnt/myshare

ネットワーク

インスタンスとネットワーク

Filestore インスタンスは、前掲の構成図の通り、ユーザの VPC とは別の、Google が管理する VPC ネットワーク上に作成されます。

インスタンス作成時に、Filestore の専有する IP アドレス範囲を指定します。このとき、ユーザーのネットワークと IP アドレス範囲が重複してはいけません。「基本 HDD」「基本 SSD」ティアでは /29 が、「ゾーン・低容量帯域」「ゾーン・高容量帯域」「エンタープライズティア」では /26 のアドレス範囲が必要です。また 172.17.0.0/16 は「基本 HDD」「基本 SSD」ティアにおいて内部コンポーネント用に予約されていますので、利用することができません (この範囲にいるクライアントは基本ティアの Filestore に接続できません)。

Filestore インスタンス用ネットワークとユーザの VPC ネットワークを接続する方法は二通りあります。VPC ネットワークピアリングプライベートサービスアクセスです。

どちらも Filestore 用ネットワークとユーザーのネットワークを接続するための方法ですが、以下のような違いがあります。

  • プライベートサービスアクセスではサービスプロジェクト側 (子の側) から共有 VPC ネットワークにインスタンスを作成可能
  • プライベートサービスアクセスでは他の Google Cloud のマネージドサービス (Cloud SQL や Memorystore など) と一括で IP アドレス範囲を管理可能

詳細は以下のドキュメントをご参照ください。

ネットワークレベルでのアクセス制御

概要

Filestore におけるネットワークレベルでのアクセス制御には、ファイアウォール (Cloud Firewall) と IP ベースのアクセス制御の2つがあります。これらは別々に管理され、両方の制御が AND で適用されます。

ファイアウォール (Cloud Firewall)

ここで言及するファイアウォールとは、VPC ファイアウォールまたはファイアウォールポリシーのことであり、Google Cloud 上のファイアウォールサービス (Cloud Firewall) のことです。しかしながら Cloud VPN (IPSec) や Cloud Interconnect (専用線) 経由で Filestore を利用する場合は同様の通信要件がオンプレミス側のファイアウォール機器等で必要です。

NFS プロトコルにおいては、ユーザのネットワークから Filestore への方向の Egress (下り) ルールで TCP ポート 111、2046、2049、2050、4045 が許可されている必要があります。VPC ではデフォルトで全ての Egress が許可される暗黙ルールが存在しますが、これをブロックするルールがある場合、これらのポートを許可する必要があります。

また NFS でのファイルロックが適切に動作するには、Filestore インスタンスからクライアントネットワークへの方向の通信で特定ポートを許可するため、ユーザのファイアウォールに Ingress (上り) ルールを設定する必要があります。NFS ファイルロックは TCP ポート 111 番の許可が必要なほか、クライアントが Linux の場合は statdnlockmgr デーモンが使うポートを許可する必要があります (Windows の場合は必要ありません)。

IP ベースのアクセス制御

Filestore では IP ベースのアクセス制御 が利用できます。この機能ではクライアントの IP アドレスに応じて、異なったアクセス権を与えることができます。

アクセスレベル 説明
管理者 root として全ファイルの閲覧・変更が可能
管理閲覧者 root として全ファイルの閲覧が可能
編集者 自分の uid/gid に基づいて表示と変更が可能
閲覧者 自分の uid/gid に基づいて表示のみ可能

また Filestore では RFC 1918 の IP アドレス (すなわち 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16) 以外のクライアントからも利用できますが、その場合は明示的にアクセス権を付与する必要があります。

接続

Compute Engine/オンプレミスマシンから

Filestore の共有をマウントする方法は、Compute Engine VM からでも、オンプレミスマシン (サーバ/PC) からでも同じです。

Filestore インターネットは Private IP しか持てないこと、また NFSv3 の通信は暗号化されないことから、オンプレミスから Filestore に接続する場合は、Google Cloud との間で Cloud VPN (IPSec) や Cloud Interconnect (専用線) でプライベート接続が確立されている必要があります。

通常の NFS マウントと同様に、Linux では mount コマンドを利用したり /etc/fstab に設定を記載することでマウントできます。

Windows では、NFS クライアントをインストールしたあと、mount コマンドでマウントします。

詳細な手順は以下のドキュメントを参照してください。

また、当社の以下の記事では、Compute Engine VM (Windows Server) から Filestore 共有をマウントする手順を詳細に解説しています。

blog.g-gen.co.jp

Google Kubernetes Engine (GKE) から

Google Kubernetes Engine (GKE) クラスタからは、GKE クラスタでFilestore CSI ドライバを有効化することで Filestore を利用できます。

詳細は、以下をご参照ください。

Cloud Run から

サーバーレスのコンテナプラットフォームサービスである Cloud Run からも Filestore を利用することが可能です。

Filestore が利用可能なのは Cloud Run サービスの第2世代です。コンテナからサーバーレス VPC アクセスコネクタを通じて、VPC 上の Filestore インスタンスへ接続します。

詳細は以下のガイドをご参照ください。

バックアップとリストア

バックアップ

Filestore では標準でバックアップ機能が利用可能です。全てのファイルのデータとメタデータが保存されます。

バックアップ機能は基本 HDD、SSD、エンタープライズティアでは GA ですが「ゾーン・低容量帯域」と「ゾーン・高容量帯域」ティアでは2023年11月現在、Preview 中の機能です。「ゾーン・低容量帯域」「ゾーン・高容量帯域」ティアでは代わりに後述のスナップショットを使うことが望ましいです。

バックアップは作成時に保存するリージョンを指定します。データ冗長化のため元のインスタンスと違うリージョンを指定することもできますが、ネットワーク Egress 料金が発生することには注意が必要です。

バックアップは増分で取得され、自動的に圧縮されます。保存費用は圧縮後のサイズに対して発生します。

なおバックアップ取得中は「ゾーン・低容量帯域」「ゾーン・高容量帯域」「エンタープライズ」ティアではパフォーマンスが低下する可能性があります。「基本 HDD」「基本 SSD」ティアにはパフォーマンス影響がないとされています。

バックアップからは、既存の共有にファイルをリストアすることも、新しいインスタンスとしてリストアすることもできます。

バックアップの自動取得

バックアップを自動で取得する機能は Filestore 自体には備わっておらず、Cloud Scheduler と Cloud Functions を使用して、定期的に API をコールすることで実現します。詳細は以下をご参照ください。

スナップショット

スナップショットは、取得時点でのデータを保存しておく機能です。バックアップとは異なり、Filestore インスタンス内に保存される子リソースです。また「ゾーン・低容量帯域」「ゾーン・高容量帯域」「エンタープライズ」ティアのみで利用可能で、「基本 HDD」「基本 SSD」ティアでは利用できません。

ただし、スナップショットを取得した直後はストレージ容量は消費されません。共有内のファイルに変更があって初めて、過去データが複製されて保存され、容量を消費します。複数スナップショットを取得した場合、変更差分のみが保持されます。

リストアは .snapshot ディレクトリにアクセスすることで行います。スナップショットを作成すると全てのディレクトリに非表示の .snapshot ディレクトリが作成され、その中に過去の状態のファイルが保持されています。

また2023年11月現在 Preview ですがインスタンスをまるごとあるスナップショットの時点の状態に巻き戻すことも可能です。

詳細は以下のドキュメントをご参照ください。

運用と監視

モニタリング

Filestore の各種パフォーマンスメトリクスは Cloud Monitoring に自動的に記録されます。

Read/Write バイト数、I/O オペレーション数、レイテンシ、ディスク空き容量などが記録され、過去6週間分が保存されます。またメトリクスに対して、しきい値を超過/下回ったときにアラートを発報させることが可能です。

割り当てと上限 (Quotas and Limits)

他の Google Cloud サービスと同じく、Filestore にも割り当て (Quotas) と上限 (Limits) があります。割り当ては緩和申請を行うことで緩和できる可能性があり、上限は原則的に変更できません。

例としてプロジェクト・リージョン内で利用可能な Filestore の共有の TiB 数は割り当て (Quota) で制限されています。大規模に利用する中で、割り当てが足りなくなった場合は、急遽サイズ拡張が必要になったときに対応できるよう、予め割り当て緩和申請を行うなどの運用が必要です。

データ移行

公式ガイドで、いくつかのデータ移行のパターンが紹介されています。

  1. オンプレミスから Filestore へのデータコピー (gcloud compute scp コマンド利用)
  2. Cloud Storage から Filestore へのデータコピー (gsutil rsync コマンド利用)
  3. Filestore から Cloud Storage へのデータコピー (gsutil rsync コマンド利用)

データが大規模な場合は、以下の方法が紹介されています。

  1. 他クラウドから Cloud Storage へ : Storage Transfer Service
  2. オンプレミスから Cloud Storage へ : Transfer service for On-Premises Data

これらのツールを使って一度データを大規模に Cloud Storage へ送信してから、それを Filestore 共有に gsutil rsync することができます。ただしこの場合、ファイル権限などのメタデータは失われます。

ファイルのアクセス権限管理

アクセス権限管理は通常の NFS の仕様と同様ですので、当記事では詳細は割愛します。

特に Windows に馴染み深い方への注意点を記載すると、NFS では Windows で一般的に使われる NTFS/CIFS (SMB) における権限管理とは異なる体系・インターフェイスとなります。

以下のスクリーンショットは、Windows マシンから Filestore 共有上のファイルを右クリックして「プロパティ」を表示させた際のものです。

NFS アクセス権限管理

暗号化

通信の暗号化

NFSv3 では通信の暗号化はされません。Google Cloud ネットワークの内部通信はどんなプロトコルでも透過的に暗号化されていますが、オンプレミスから Google Cloud までの間は暗号化されていないため、IPSec VPN 等で経路が暗号化されることが前提です。

保存時の暗号化

Google Cloud では全てのサービスで、保存されるデータは暗号化されています (デフォルトの保存データの暗号化)。このとき、暗号鍵は Google が管理しています。

厳密なセキュリティ要件を満たすため、自社管理の鍵でデータを暗号化したい場合、Cloud KMS で管理される顧客管理の鍵 (CMEK = customer-managed encryption keys) で Filestore のストレージを暗号化することが可能です。

詳細は以下をご参照ください。

監査ログ

Filestore は Cloud Audit Logs と連携されています。

Filestore インスタンスに対する「インスタンス作成、削除」「スナップショット/バックアップ取得」などの管理オペレーションがデフォルトで記録されます。

一方でファイルの読み取り・書き込みなどファイルシステム上の監査については、Filestore としては提供していません。これらは、別の仕組みで取得する必要があります。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。