この記事は、実際にOracle Cloud FSS(ファイルストレージサービス)を作成した際の手順やサービスの内容についてまとめたものです。
前提として、仮想クラウドネットワーク(VCN)とインスタンスは作成してあるものとします。
こんにちは!k.takeiです。
今回紹介する、ファイルストレージサービス(以降はFSSと記載します)は、共有のストレージを提供するサービスです。
インスタンスのストレージを拡張する場合にはブロック・ボリュームを使用すると思いますが、複数のインスタンスから同時に共有ストレージとして使用するには自身でファイルシステムを構築する必要があります。
しかし、このFSSを利用すると簡単に複数のインスタンスから利用できる共有ストレージを作成することができます。
FSSの全体イメージ
下記の図はFSSの全体のイメージです。※あくまでイメージです。

FSSを作ろうとした際に、ファイル・システムとマウント・ターゲットというものが作成されます。
マウント・ターゲットを作成すると、図のマウント・ターゲット2のように、ファイル・システムを複数紐づけることができます(後から紐づけることも可能)。
また、図では異なるVCN同士を共有ストレージに紐づけていますが、同じVCN内でも利用可能です。
ファイル・システムの作成方法
それでは、ファイル・システムの作成方法を説明します。
コンソールメニューからストレージ > ファイル・システムを選択します。
その後、遷移した画面にファイル・システム作成のボタンが出てくるので押下します。


作成するファイル・システムの情報を入力する画面が出てきます。
各情報の詳細の編集という文字をクリックすると項目が出てくるので、必要な項目を入力していきます。
- ファイル・システム情報
- 名前
ファイル・システムの名前を入力します。
- 可用性ドメイン
任意の可用性ドメインを選択します。
- コンパートメントに作成
任意のコンパートメントを選択します。
- 暗号化
Oracle管理キーを使用した暗号化(デフォルト)
※必要に応じて顧客管理キーを使用した暗号化を使用してください。
- 名前

- エクスポート情報
- エクスポート・パス
任意のパス名を入力します。
※パス名はマウント・ターゲット内の各ファイル・システムに対して一意になるように入力します。
- エクスポート・パス

- マウント・ターゲット情報
- 既存のマウント・ターゲットの選択
- マウント・ターゲット
既存のマウント・ターゲットを選択します。
- マウント・ターゲット
- 新規マウント・ターゲットの作成
- 新規マウント・ターゲット名
任意の名前を入力します。 - 仮想クラウド・ネットワーク
VCNを選択します。 - サブネット
サブネットを選択します。
- 新規マウント・ターゲット名
- 既存のマウント・ターゲットの選択

入力が終わったら、作成ボタンを押下します。
成功すると、ファイル・システムとマウント・ターゲットが作成されます。


続いて、ネットワーク・セキュリティ・グループを設定していきます。
初期状態ではファイアウォールによって通信がブロックされているので、NFS通信に必要なポートの通信を許可します。
許可するポートは下記です。
- TCP
111,2048-2050 - UDP
111,2048-2050
コンソールメニューからネットワーキング > 仮想クラウド・ネットワークを選択します。
設定したいVCNを選択し、遷移先の画面でネットワーク・セキュリティ・グループを押下します。

任意の名前とコンパートメントを指定して次へを押下します。

ルールを設定する画面に遷移するので、NFS通信に必要なポートの通信を許可します。
設定内容は下記です。
※今回はFSSがメインなので、詳細な説明は省略させて頂きます。
- 方向
イングレス - ソースタイプ
CIDR - ソースCIDR
0.0.0.0/0 もしくは マウント・ターゲットと通信するインスタンスのIPアドレス - IPプロトコル
TCP - ソース・ポート範囲
空欄 - 宛先ポート範囲
NFS通信に必要な111,2048-2050 - 説明
任意で入力
上記のIPプロトコルをUDPに変えたものも同じように作成します。



作成が完了したら、マウント・ターゲットの詳細画面に遷移します。
コンソールメニューから ストレージ > マウント・ターゲットを選択し、対象のマウント・ターゲット名を押下します。
マウント・ターゲット情報タブに記載されている、ネットワーク・セキュリティ・グループの編集という文字を押下します。
ネットワーク・セキュリティ・グループを選択するポップアップが出てくるので、先ほど作成したものを選択します。

これでネットワーク・セキュリティ・グループの設定は完了です。
実際にファイル共有をしてみる
作成された共有ストレージを使用してみます。
FSSはNFSv3に対応していています。
作成されたファイル・システムは、マウント・ターゲットにエクスポートされている状態です。
なので、このままNFSクライアントからネットワーク越しにアクセスできます。
インスタンス側には何も設定をしていないので、インスタンスにNFSクライアントをインストールして、ファイル・システムをマウントしていきます。
Linuxの手順
1.インスタンスにssh接続し、NFSクライアントを含むパッケージをインストールします。
$ sudo yum -y install nfs-utils
2.マウントするマウントポイントを作成します。※ファイルパスは任意
$ sudo mkdir -p /mnt/TutorialFileSystem
3.マウントを実施。
$ sudo mount [マウント・ターゲットのIPアドレス]:/[マウント・ターゲットのエクスポートパス名] [設定したマウントポイントのパス]

「df -h」コマンドを入力して上記の画面のようになっていたらマウントは成功しています。
Windowsの手順
1.RDPでインスタンスに接続し、Windows PowerShellを管理者で実行します。
2.下記のコマンドを実行して、NFSクライアントをインストールします。
Install-WindowsFeature -Name NFS-Client
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousUid -Value 0
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousGid -Value 0
Stop-Service -Name NfsClnt
Restart-Service -Name NfsRdr
Start-Service -Name NfsClnt
3.コマンドプロントを開き、マウントするためのコマンドを実行します。
mount [マウント・ターゲットのIPアドレス]:[マウント・ターゲットのエクスポート・パス] [ファイルシステムをマップする使用可能なドライブのドライブ文字]:
下記のコードは例です。
mount 10.0.0.0:/fs-export-path Z:

上記のようになったら成功です。
作成したファイル・システムにLinuxとWindowsのインスタンスが1つずつ紐づいている状態なので、実際にファイルが共有されているかを確認してみます。
「helloworld.txt」というファイルを共有ストレージに置いて、2つのインスタンスから見てみました。
Linux画面

Windows画面

無事にどちらからも確認できました。
まとめ
今回はファイル・システムについて記載しました。
この共有ストレージは可変サイズのブロックで領域が割り当てられるので、コストを最小限に抑えてくれます。
※このサービスは従量課金制のため
金額は「1ギガバイト・ストレージ容量/月」あたり、約36円($0.30)です。
どの程度使用しているかはファイル・システム詳細画面の使用率に記載されています。
また、最小ブロック・サイズは8192バイトなので、それ以下のファイルを置いたとしても8KiBは使用になります。
この場合、1GB未満なので約36円かかることになります。
共有ストレージが簡単に作成できるので皆さまもぜひお試しください!
最後までご覧頂き、ありがとうございました!