Oracle Cloud Infrastructure File Storage Service (FSS) では、永続的でスケーラブルな分散型のエンタープライズ規模のネットワーク・ファイル・システムを提供します。
仮想クラウド・ネットワーク(VCN)のベア・メタル、仮想マシン, コンテナ・インスタンス からファイル・ストレージ・サービスのファイル・システムに接続できます。
また、VCNピアリング、FastConnect およびインターネット・プロトコル・セキュリティ(IPSec)の仮想プライベート・ネットワーク(VPN)を使用して、VCNの外部からファイル・システムにアクセスすることもできます。
ということで、今回は、Windows Server 2022, Oracle Linux, Autonomous Database(ADB) からファイル・ストレージ・サービスのファイル・システムに接続してみてみます。
■ 構成
■ VCNのセキュリティリストの設定
FSSを配置するSubnetもしくは、FSSにアタッチするNetwork Security Groups(NSG)へ NFS通信に必要な 次の TCP と UDP のステートフル・イングレスとステートフル・エグレスの通信を許可します。
TCPポート: 111, 2048, 2049, 2050
UDPポート: 111, 2048
■ File Storage Serviceの作成
File Storage Service (FSS) を次の値で作成し、これら値を使用して各システムでマウントします。
項目 | 値 |
---|---|
IPアドレス | 10.0.0.170 |
ホスト名 | fss01 |
FQDN | fss01.publicsubnet01.vcn10000.oraclevcn.com |
エクスポート・パス | /FileSystem |
■ Windowsインスタンスからのファイル・システムのマウントする
Windows Server 2012 R2以降のバージョンのユーザーは、マウント・ターゲットのIPアドレスとファイル・システムのエクスポート・パスを使用して、使用可能な任意のドライブ文字にファイル・システムをマウントできます。
⚫︎ NFSクライアント設定
ファイル・システムのマウント元のインスタンス上にWindows NFSクライアントをインストールする必要があります。
1) 管理者として Windows PowerShellを起動
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows
PS C:\Windows\system32> Start-Process powershell -Verb runAs
2) NFS-Client インストール
Windows PowerShellで、次のように入力
PS C:\Windows\system32> Install-WindowsFeature -Name NFS-Client
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No NoChangeNeeded {}
3) NFSクライアントを設定
管理者用PowerShellで、次のように入力してNFSクライアントを取得
PS C:\Windows\system32> Set-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousUid -Value 0
PS C:\Windows\system32> Set-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousGid -Value 0
PS C:\Windows\system32> Stop-Service -Name NfsClnt
PS C:\Windows\system32> Restart-Service -Name NfsRdr
PS C:\Windows\system32> Start-Service -Name NfsClnt
⚫︎ ファイル・システムのマウント
1) Windowsコマンドライン(CMD)起動
標準のWindowsコマンドライン(CMD)ウィンドウで、次を入力してファイル・システムをマウントします。
2) ファイル・システムのマウント
mount -o sec=sys 10.x.x.x:/FileSystem X:
・ 10.x.x.x: を、マウント・ターゲットに割り当てられたローカル・サブネットIPアドレスに置き換えます。
・ FileSystem を、ファイル・システムをマウント・ターゲットに関連付ける際に指定したエクスポート・パスに置き換えます。
・ Xを、ファイル・システムのマップ先として使用可能なドライブのドライブ文字に置き換えます。
エクスポートでKerberos認証を使用する場合は、IPアドレスのかわりにマウント・ターゲットの完全修飾ドメイン名(FQDN)を使用します。
3) マウント確認
エクスプローラーを開き Xドライブにファイルシステムがマウントされていることを確認
⚫︎ ファイル書き込みテスト
- FSSをマウントしたXドライブに移動
X: コマンドで Xドライブに移動
C:\Users\opc>X:
- windows.txt 作成
echoコマンドでファイル作成う
X:\>echo > windows.txt
- windows.txt 作成確認
dirコマンドでファイル確認
X:\>dir
Volume in drive X has no label.
Volume Serial Number is 071D-8F2E
Directory of X:\
08/01/2023 02:47 PM <DIR> .
08/01/2023 02:47 PM <DIR> ..
08/01/2023 02:48 PM <DIR> .snapshot
08/01/2023 02:47 PM 13 windows.txt
1 File(s) 15 bytes
3 Dir(s) 9,223,372,036,854,763,520 bytes free
■ Linux, Red HatまたはCentOSからファイル・システムをマウントする
⚫︎ nfs-utils インストール
1) nfs-utils インストール
[opc@oracle-linux ~]$ sudo yum install nfs-utils
Loaded plugins: langpacks, ulninfo
・・・
Dependencies Resolved
===========================================================================================================================================================================================
Package Arch Version Repository Size
===========================================================================================================================================================================================
Updating:
nfs-utils x86_64 1:1.3.0-0.68.0.1.el7.2 ol7_latest 413 k
Transaction Summary
===========================================================================================================================================================================================
Upgrade 1 Package
Total download size: 413 k
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
nfs-utils-1.3.0-0.68.0.1.el7.2.x86_64.rpm | 413 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : 1:nfs-utils-1.3.0-0.68.0.1.el7.2.x86_64 1/2
Cleanup : 1:nfs-utils-1.3.0-0.65.0.1.el7.x86_64 2/2
Verifying : 1:nfs-utils-1.3.0-0.68.0.1.el7.2.x86_64 1/2
Verifying : 1:nfs-utils-1.3.0-0.65.0.1.el7.x86_64 2/2
Updated:
nfs-utils.x86_64 1:1.3.0-0.68.0.1.el7.2
Complete!
2) nfs-utils インストール確認
[opc@oracle-linux ~]$ sudo rpm -qa | grep nfs-utils
nfs-utils-1.3.0-0.65.0.1.el7.x86_64
⚫︎ マウント
次のマウント・オプションの組合せは File Storage Service でサポートされていません:
・soft ファイル・システムが読取り/書込みマウント・オプション(-o rw)でマウントされている場合。この組合せによって、データが破損する可能性があります。
次のマウント・オプションは、File Storage Service で使用することはお薦めしません:
・soft オプションは、ファイル・システムが読取り専用マウント・オプション(-o ro)でマウントされており、timeoが300秒未満で指定されている場合。この組合せによって、I/Oのエラー・レスポンスが多数発生する可能性があります。
・rsize または wsize オプションは、パフォーマンスの問題が発生します。
1) マウント・ポイント作成
[opc@oracle-linux ~]$ sudo mkdir -p /mnt/FileSystem
2) マウント
[opc@oracle-linux ~]$ sudo mount 10.0.0.170:/FileSystem /mnt/FileSystem
⚫︎ マウント確認
1) マウント確認
デフォルトで rsize, wsize が適切な値で設定されていることが確認できます。
[opc@oracle-linux ~]$ sudo mount | grep FileSystem
10.0.0.170:/FileSystem on /fss type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.0.1.107,mountvers=3,mountport=2048,mountproto=udp,local_lock=none,addr=10.0.1.107)
2) ファイル・システムを表示
[opc@oracle-linux ~]$ df -T | grep nfs
10.0.0.170:/FileSystem nfs 9007199254740992 0 9007199254740992 0% /mnt/FileSystem
3) 書き込みテスト
touchコマンドでテストファイルを作成してみてみます
[opc@oracle-linux ~]$ sudo touch /mnt/FileSystem/test.txt
4) 書き込み確認
[opc@oracle-linux ~]$ ls -l /mnt/FileSystem/
-rw-r--r--. 1 root root 0 Aug 1 09:54 /mnt/FileSystem/test.txt
5) ファイル削除テスト
[opc@oracle-linux ~]$ sudo rm -r /mnt/FileSystem
6) ファイル削除確認
[opc@oracle-linux ~]$ ls -l /mnt/FileSystem/
ls: cannot access '/mnt/FileSystem/': No such file or directory
■ Autonomous Database からファイル・システムをマウントする
⚫︎ ファイルシステムをADBに接続
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM プロシージャを使用して、 FileSystem という名前のファイル システムをADB のFSS_DIRディレクトリにアタッチ。
このプロシージャを呼び出す前にディレクトリ オブジェクトが存在している必要があるため、最初にディレクトリ オブジェクトを作成することに注意してください。
1) ディレクトリ オブジェクト作成
SQL> CREATE DIRECTORY FSS_DIR AS 'FSS';
Directory created.
2) ディレクトリ オブジェクト作成確認
SQL> col OWNER format a10
SQL> col DIRECTORY_NAME format a30
SQL> col DIRECTORY_PATH format a120
SQL> select * from DBA_DIRECTORIES where DIRECTORY_NAME = 'FSS_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH ORIGIN_CON_ID
---------- ------------------------------ ------------------------------------------------------------------------------------------------------------------------ -------------
SYS FSS_DIR /u03/dbfs/01D16905700631618000A03DF/data/FSS 194
3) FileSystem を FSS_DIRディレクトリにアタッチ
SQL> BEGIN
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM(
file_system_name => 'FileSystem',
file_system_location => 'fss01.publicsubnet01.vcn10000.oraclevcn.com:/FileSystem',
directory_name => 'FSS_DIR',
description => 'Mounting a NFS'
);
END;
/
PL/SQL procedure successfully completed.
4) ファイル システムを確認
DBA_CLOUD_FILE_SYSTEMS をクエリして、接続されているファイル システムを確認できることを確認します。
SQL> col file_system_name format a10
SQL> col file_system_location format a80
SQL> col directory_path format a80
SQL> SELECT
file_system_name,
file_system_location,
directory_path
FROM dba_cloud_file_systems;
FILE_SYSTE FILE_SYSTEM_LOCATION DIRECTORY_PATH
---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
FILESYSTEM fss01.publicsubnet01.vcn10000.oraclevcn.com:/FileSystem /u03/dbfs/01D16905700631618000A03DF/data/FSS/
⚫︎ ファイル作成テスト
UTL_FILE 経由でファイルを作成して書き込みます
adb_test.csvというファイルを作成し、そこに書き込みます。
1) adb_test.csvファイルを作成
SQL> DECLARE
l_file UTL_FILE.file_type;
l_location VARCHAR2(100) := 'FSS_DIR';
l_filename VARCHAR2(100) := 'adb_test.csv';
BEGIN
-- Open file.
l_file := UTL_FILE.fopen(l_location, l_filename, 'w');
UTL_FILE.PUT(l_file, 'Catalog, Indirect, 12');
-- Close the file.
UTL_FILE.fclose(l_file);
END;
/
PL/SQL procedure successfully completed.
2) adb_test.csvファイルを作成確認
DBMS_CLOUD.LIST_FILES を介してこの接続されたファイル システム内のファイルを一覧表示し、作成したばかりのファイルの内容を読み取ります。
SQL> SELECT object_name FROM DBMS_CLOUD.LIST_FILES('FSS_DIR');
OBJECT_NAME
--------------------------------------------------------------------------------
adb_test.csv
■ 参考
・File Storage: ファイル・システムのマウント
・Linux、Red HatまたはCentOSからファイル・システムをマウントするには
・Windowsインスタンスからのファイル・システムのマウント
・How to Attach a File System to your Autonomous Database