OCI_File Storage(NFS)サービスを使ってみた。とNFSの勉強をちょっと
Categories:
準備
NFSマウント用のCompute Instance(リソース名はVM_NFS)を 作成
OSはOracle Linux 9
[opc@vm-nfs ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.8G 0 2.8G 0% /dev/shm
tmpfs 1.2G 9.1M 1.1G 1% /run
efivarfs 256K 14K 243K 6% /sys/firmware/efi/efivars
/dev/mapper/ocivolume-root 30G 8.5G 21G 29% /
/dev/sda2 2.0G 392M 1.6G 20% /boot
/dev/mapper/ocivolume-oled 15G 144M 15G 1% /var/oled
/dev/sda1 100M 7.5M 93M 8% /boot/efi
tmpfs 565M 0 565M 0% /run/user/989
tmpfs 565M 0 565M 0% /run/user/1000
[opc@vm-nfs ~]$
File Storage作成
Storage > File Storage > File Systems
Create File System
File System for NFSを選ぶ
→Edit detailsから各種設定が展開できる
デフォルト
Export pathはテスト用のためデフォルト
※Use secure Export optionsはセキュリティ上チェックしたほうがいいらしいが、今回の目的では不要なのでチェックつけない。
Mount Targetは別で作成したものを使うこともできるらしい
今回はここで作る
SubnetはCompute Instanceを作ったPrivate subnetを指定した(サブネットまたぎでも使用することは可能)
設定がらみで気になった部分をメモった
https://docs.oracle.com/ja-jp/iaas/Content/File/Concepts/filestorageoverview.htm
- ファイル・ストレージ・サービスでは、ネットワーク・ファイル・システム・バージョン3.0 (NFSv3)プロトコルをサポートしています。
- デフォルトでは、各可用性ドメインでアカウントごとに2つのマウント・ターゲットを作成できます。
- ファイル・ストレージ領域割当て:可変サイズのブロックで領域を割り当てます。
- ファイル・システムを別の可用性ドメインまたはリージョンに移動することはできません。
https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/managingmounttargets.htm
- 各マウント・ターゲットには3つのIPアドレスが必要です。
- マウント・ターゲット・タイプ:Standard、High Performanceが選べるらしい
https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/exportoptions.htm
- NFSエクスポート・オプション
- ソース: 接続しているNFSクライアントのIPアドレスまたはCIDRブロック
- ポート: デフォルトは任意ポート。特権ポート(1-1023を含む任意のポート)にするとrootのみmount出来る
- アクセス:「読取り/書込み」がデフォルト
- Squash: デフォルトはなし。ユーザーは再マップされません。
Createしたらすぐできた。
RejonalじゃないのでReplication推奨ってことらしい
MountTargetもできてた。デフォルトStandard。High Parformanceはもっと細かく20、40、80Gbpsって選べるらしい。
detail画面上でHostname付けられるらしい
hostnameを付けてみた
Domain Nameは勝手についた
Compute Instanceからmountして使用する
https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/mountingunixstyleos.htm
これにしたがってマウントする。Ubuntu用とか別にある。今回はOracle Linuxなのでこれ。
つながらなかった
[opc@vm-nfs ~]$ sudo yum install nfs-utils
Last metadata expiration check: 0:37:30 ago on Sun 07 Sep 2025 03:24:11 PM GMT.
Package nfs-utils-1:2.5.4-34.0.1.el9.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[opc@vm-nfs ~]$ sudo mkdir -p /mnt/base/test1
[opc@vm-nfs ~]$ sudo mount -o nosuid,resvport,sec=sys nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 /mnt/base/test1
^C
[opc@vm-nfs ~]$
DNSが原因ではないらしい
[opc@vm-nfs ~]$ host nfs-srv.sub05090751551.nwblogsash.oraclevcn.com
nfs-srv.sub05090751551.nwblogsash.oraclevcn.com has address 10.201.1.168
[opc@vm-nfs ~]$
NSG割り当て
はい、原因はNSGでした
https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/securitylistsfilestorage.htm
NSG作成
Networking > Virtual Cloud Networks > NW_Blogs_Ash > Security タブNetwork Security Groups
Create Network Security Group
↓作った作ったNSGをアタッチする
Compute > Instances > (作ったCompute instance:名前 VM_NFS) > Networking タブ
Network security groupsのところ Edit押して設定MountTargetにもNSGを適用する必要があるみたい
Storage> File Storage > Mount Taregts > (今回作ったMount Targetを選択)
Network Security Groupsのところ Edit押して設定今回1つのNSGに作っちゃったが上の2つがMountTargetに、下2つがNFS Client(Compute Instance)に必要なルールっぽい
マウントできました
[opc@vm-nfs ~]$ sudo mount -o nosuid,resvport,sec=sys nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 /mnt/base/test1
Created symlink /run/systemd/system/remote-fs.target.wants/rpc-statd.service → /usr/lib/systemd/system/rpc-statd.service.
[opc@vm-nfs ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.8G 0 2.8G 0% /dev/shm
tmpfs 1.2G 9.2M 1.1G 1% /run
efivarfs 256K 14K 243K 6% /sys/firmware/efi/efivars
/dev/mapper/ocivolume-root 30G 9.9G 20G 34% /
/dev/sda2 2.0G 392M 1.6G 20% /boot
/dev/mapper/ocivolume-oled 15G 237M 15G 2% /var/oled
/dev/sda1 100M 7.5M 93M 8% /boot/efi
tmpfs 565M 0 565M 0% /run/user/989
tmpfs 565M 0 565M 0% /run/user/1000
nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 8.0E 0 8.0E 0% /mnt/base/test1
[opc@vm-nfs ~]$
[opc@vm-nfs ~]$
NFSの確認
今回の目的これ。いくつか挙動を確認したかった。
※ACLやSELinuxデフォルトからいじってない前提
作成したマウントポイント(/mnt/base/test1/)とそのパーミッションこれ
[opc@vm-nfs ~]$ ls -ldR /mnt/base/
drwxr-xr-x. 3 root root 19 Sep 7 16:02 /mnt/base/
[opc@vm-nfs ~]$ ls -ld /mnt/base/
drwxr-xr-x. 3 root root 19 Sep 7 16:02 /mnt/base/
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxr-xr-x. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$
確認1:ローカルで作ったマウントポイントのパーミッションはNFSマウント後にNFSサーバ側のトップディレクトリのパーミッションで上書きされる
→OK、想定通り
[opc@vm-nfs ~]$ sudo chmod 777 /mnt/base/test1/
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo mount -o nosuid,resvport,sec=sys nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxr-xr-x. 2 root root 0 Sep 7 15:45 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo umount /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$
確認2:NFSマウントしたディレクトリのトップディレクトリの権限をmount後に書き換えられる
→OK、想定通り
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo mount -o nosuid,resvport,sec=sys nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxr-xr-x. 2 root root 0 Sep 7 15:45 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo chmod 777 /mnt/base/test1/
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 0 Sep 7 15:45 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo umount /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo mount -o nosuid,resvport,sec=sys nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 0 Sep 7 15:45 /mnt/base/test1/
[opc@vm-nfs ~]$
確認3:mountポイントの上位ディレクトリをopcのみアクセスできるようにした場合にNFSディレクトリにファイル作成できることを確認(NFSディレクトリ配下は777にしてある)
→opc、rootのみ書き込みができる(その他ユーザーは書き込み不可にしたい)という目的。NFSのトップディレクトリのパーミッションではなく上位ディレクトリとしたのは、NFSディレクトリは他のサーバでマウントされて権限が書き替えることが可能っていう前提の環境、プラスあくまでこのサーバー上からのアクセス制御をしたかったため。
[opc@vm-nfs ~]$ ls -ld /mnt/base/
drwxr-xr-x. 3 root root 19 Sep 7 16:02 /mnt/base/
[opc@vm-nfs ~]$ sudo chown opc:opc /mnt/base/
[opc@vm-nfs ~]$ sudo chmod 770 /mnt/base/
[opc@vm-nfs ~]$ ls -ld /mnt/base/
drwxrwx---. 3 opc opc 19 Sep 7 16:02 /mnt/base/
[opc@vm-nfs ~]$
→OK、想定通り
[opc@vm-nfs ~]$ cd /mnt/base/
[opc@vm-nfs base]$ ls -ltr
total 0
drwxrwxrwx. 2 root root 0 Sep 7 15:45 test1
[opc@vm-nfs base]$ cd test1/
[opc@vm-nfs test1]$ pwd
/mnt/base/test1
[opc@vm-nfs test1]$ df -h ./
Filesystem Size Used Avail Use% Mounted on
nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 8.0E 0 8.0E 0% /mnt/base/test1
[opc@vm-nfs test1]$ id
uid=1000(opc) gid=1000(opc) groups=1000(opc),4(adm),190(systemd-journal) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[opc@vm-nfs test1]$ touch test
[opc@vm-nfs test1]$ ls -ltr
total 0
-rw-r--r--. 1 opc opc 0 Sep 7 16:38 test
[opc@vm-nfs test1]$
一般ユーザでは当然降りられない
→OK、想定通り
[opc@vm-nfs test1]$ sudo useradd testuser
[opc@vm-nfs test1]$ sudo su - testuser
[testuser@vm-nfs ~]$ id
uid=1001(testuser) gid=1001(testuser) groups=1001(testuser) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[testuser@vm-nfs ~]$ cd /mnt/base/test1
-bash: cd: /mnt/base/test1: Permission denied
[testuser@vm-nfs ~]$ cd /mnt/base/test1
-bash: cd: /mnt/base/test1: Permission denied
[testuser@vm-nfs ~]$ cd /mnt/base
-bash: cd: /mnt/base: Permission denied
[testuser@vm-nfs ~]$
rootだと問題なくアクセスできる
デフォルトがNo squashなのでuidの再マップはされてない
→OK、想定通り
[testuser@vm-nfs mnt]$ exit
logout
[opc@vm-nfs test1]$ sudo su -
[root@vm-nfs ~]# cd /mnt/base/test1/
[root@vm-nfs test1]# pwd
/mnt/base/test1
[root@vm-nfs test1]# df -h ./
Filesystem Size Used Avail Use% Mounted on
nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 8.0E 0 8.0E 0% /mnt/base/test1
[root@vm-nfs test1]# touch root.txt
[root@vm-nfs test1]# ls -ltr
total 0
-rw-r--r--. 1 opc opc 0 Sep 7 16:38 test
-rw-r--r--. 1 root root 0 Sep 7 16:42 root.txt
[root@vm-nfs test1]#
確認4:ローカルのマウントポイントのパーミッションがNFSマウント後には影響しないことを確認
→mountポイント(ローカル)のパーミッションをrootのみアクセス可能にした状態で、NFSマウント後にopcでアクセスできるを確認
→OK、想定通り
[opc@vm-nfs test1]$ cd ~
[opc@vm-nfs ~]$ sudo umount /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo chmod 700 /mnt/base/test1/
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwx------. 2 root root 6 Sep 7 16:02 /mnt/base/test1/
[opc@vm-nfs ~]$ sudo mount -o nosuid,resvport,sec=sys nfs-srv.sub05090751551.nwblogsash.oraclevcn.com:/FileSystem-20250907-1521-08 /mnt/base/test1
[opc@vm-nfs ~]$ ls -ld /mnt/base/test1/
drwxrwxrwx. 2 root root 2 Sep 7 16:42 /mnt/base/test1/
[opc@vm-nfs ~]$ cd /mnt/base/test1/
[opc@vm-nfs test1]$ ls -ltr
total 0
-rw-r--r--. 1 opc opc 0 Sep 7 16:38 test
-rw-r--r--. 1 root root 0 Sep 7 16:42 root.txt
[opc@vm-nfs test1]$ touch opc.txt
[opc@vm-nfs test1]$ ls -ltr
total 0
-rw-r--r--. 1 opc opc 0 Sep 7 16:38 test
-rw-r--r--. 1 root root 0 Sep 7 16:42 root.txt
-rw-r--r--. 1 opc opc 0 Sep 7 16:47 opc.txt
[opc@vm-nfs test1]$