ためしに、VMware Photon OS 2.0 で NFS 環境を構築してみようと思います。

今回は、NFS Server / NFS Clent の両方を Photon OS にしてみます。

 

NFS Server

  • ホスト名は ph20-nfs-sv-01
  • IP アドレス/サブネットマスクは 192.168.12.240/24

NFS Client

  • ホスト名は ph20-nfs-client-01
  • IP アドレス/サブネットマスクは 192.168.12.241/24

 

OS の準備。

Photon OS 2.0 は、OVA 版(photon-custom-hw13-2.0-304b817.ova)をデプロイしてあります。

NFS Server / NFS Client はどちらも、ホスト名、ネットワークの設定をすませて、

RPM をこの時点の最新のものにしてあります。

root@photon-machine [ ~ ]# hostnamectl set-hostname ph20-nfs-sv-01

root@photon-machine [ ~ ]# tdnf update -y

root@photon-machine [ ~ ]# reboot

 

NFS Server の構築。

今回は、NFS で共有するために VM に仮想ディスク 2(/dev/sdb)を追加しています。

仮想ディスク 2 は VM に追加ずみです。

(NFS で共有するディレクトリは、仮想ディスクをわけずにディレクトリを指定してもよいです)

 

NFS 共有のためのディスク準備。

ディスク(/dev/sdb)をフォーマットします。

sdb が認識されています。

root@ph20-nfs-sv-01 [ ~ ]# lsblk -l /dev/sd?

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda    8:0    0  16G  0 disk

sda1   8:1    0   3M  0 part

sda2   8:2    0  16G  0 part /

sdb    8:16   0  40G  0 disk

 

パーティションを作成します。これで /dev/sdb1 が作成されます。

root@ph20-nfs-sv-01 [ ~ ]# echo '2048,,L' | sfdisk -uS /dev/sdb

 

ext4 ファイルシステムでフォーマットします。

root@ph20-nfs-sv-01 [ ~ ]# mkfs -t ext4 /dev/sdb1

 

今回は、/opt/share ディレクトリを作成してマウントします。

root@ph20-nfs-sv-01 [ ~ ]# mkdir -p /opt/share

root@ph20-nfs-sv-01 [ ~ ]# chmod -R 755 /opt

root@ph20-nfs-sv-01 [ ~ ]# echo '/dev/sdb1 /opt/share ext4 defaults 0 0' >> /etc/fstab

root@ph20-nfs-sv-01 [ ~ ]# cat /etc/fstab

UUID=c1e929b0-5a75-4783-b99f-f79b4007da4e    /    ext4    defaults 1 1

/dev/sdb1 /opt/share ext4 defaults 0 0

root@ph20-nfs-sv-01 [ ~ ]# mount -a

root@ph20-nfs-sv-01 [ ~ ]# df -h /opt/share

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb1        40G   49M   38G   1% /opt/share

 

lsblk コマンドでも、/dev/sdb1 がマウントされたことが確認できます。

root@ph20-nfs-sv-01 [ ~ ]# lsblk -l /dev/sd?

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda    8:0    0  16G  0 disk

sda1   8:1    0   3M  0 part

sda2   8:2    0  16G  0 part /

sdb    8:16   0  40G  0 disk

sdb1   8:17   0  40G  0 part /opt/share

 

NFS Server のセットアップ。

nfs-utils をインストールします。

root@ph20-nfs-sv-01 [ ~ ]# tdnf install -y nfs-utils

 

NFS 関連のサービスを有効化 / 起動します。

 

rpcbind

root@ph20-nfs-sv-01 [ ~ ]# systemctl enable rpcbind

Created symlink /etc/systemd/system/multi-user.target.wants/rpcbind.service → /lib/systemd/system/rpcbind.service.

Created symlink /etc/systemd/system/sockets.target.wants/rpcbind.socket → /lib/systemd/system/rpcbind.socket.

root@ph20-nfs-sv-01 [ ~ ]# systemctl start rpcbind

root@ph20-nfs-sv-01 [ ~ ]# systemctl is-active rpcbind

active

 

nfs-server

root@ph20-nfs-sv-01 [ ~ ]# systemctl enable nfs-server

Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /lib/systemd/system/nfs-server.service.

root@ph20-nfs-sv-01 [ ~ ]# systemctl start nfs-server

root@ph20-nfs-sv-01 [ ~ ]# systemctl is-active nfs-server

active

 

NFS で共有するディレクトリをエクスポートします。

今回は、マウントするアドレスを制限していない(「*」を指定している)ため
exportfs では /opt/share は「<world>」となっています。

ちなみに no_subtree_check は、exportfs 実行時のメッセージ抑止のためにデフォルト値をそのまま記載しています。

root@ph20-nfs-sv-01 [ ~ ]# echo '/opt/share *(rw,no_root_squash,no_subtree_check)' >> /etc/exports

root@ph20-nfs-sv-01 [ ~ ]# cat /etc/exports

/opt/share *(rw,no_root_squash,no_subtree_check)

root@ph20-nfs-sv-01 [ ~ ]# exportfs -r

root@ph20-nfs-sv-01 [ ~ ]# exportfs

/opt/share      <world>

 

iptables の設定。

2049 番ポートあての通信を許可しておきます。

今回の NFS Server / NFS Client は、どちらも 192.168.12.0/24 のネットワーク セグメントにあります。

※環境によっては、systemctl disable iptables でもよいかもしれません。

※今回は、NFS v4 を利用しています。(Photon OS 2.0 のデフォルト)

root@ph20-nfs-sv-01 [ ~ ]# iptables -A INPUT -s 192.168.12.0/24 -p tcp --dport 2049 -j ACCEPT

root@ph20-nfs-sv-01 [ ~ ]# iptables -A INPUT -s 192.168.12.0/24 -p udp --dport 2049 -j ACCEPT

root@ph20-nfs-sv-01 [ ~ ]# iptables-save > /etc/systemd/scripts/ip4save

 

NFS Client でのマウント。

Client 側でも、nfs-utils をインストールします。

root@ph20-nfs-client-01 [ ~ ]# tdnf install -y nfs-utils

 

/opt/share ディレクトリ を作成して、NFS をマウントします。

root@ph20-nfs-client-01 [ ~ ]# mkdir -p /opt/share

root@ph20-nfs-client-01 [ ~ ]# chmod -R 755 /opt

root@ph20-nfs-client-01 [ ~ ]# echo '192.168.12.240:/opt/share /opt/share nfs _netdev 0 0' >> /etc/fstab

root@ph20-nfs-client-01 [ ~ ]# mount -a

root@ph20-nfs-client-01 [ ~ ]# df -h /opt/share

Filesystem                 Size  Used Avail Use% Mounted on

192.168.12.240:/opt/share   40G   48M   38G   1% /opt/share

 

Photon OS 2.0 では、デフォルトは NFS v4 になります。

root@ph20-nfs-client-01 [ ~ ]# nfsstat -m

/opt/share from 192.168.12.240:/opt/share

Flags: rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.12.241,local_lock=none,addr=192.168.12.240

 

root@ph20-nfs-client-01 [ ~ ]# nfsstat -l

nfs v4 client        total:      300

------------- ------------- --------

nfs v4 client        write:        3

nfs v4 client         open:        9

nfs v4 client    open_noat:        4

nfs v4 client        close:        4

nfs v4 client      setattr:       10

nfs v4 client       fsinfo:       20

nfs v4 client       access:       24

nfs v4 client      getattr:       81

nfs v4 client       lookup:       24

nfs v4 client  lookup_root:        5

nfs v4 client       create:        2

nfs v4 client     pathconf:       15

nfs v4 client       statfs:        5

nfs v4 client      readdir:        8

nfs v4 client  server_caps:       35

nfs v4 client  delegreturn:        1

nfs v4 client  exchange_id:        5

nfs v4 client create_session:        5

nfs v4 client destroy_session:        4

nfs v4 client     sequence:       22

nfs v4 client reclaim_comp:        5

nfs v4 client   secinfo_no:        5

nfs v4 client destroy_clientid:        4

 

 

ちなみに photon の GitHub にも、少しだけ NFS についての説明があります。

photon/nfs-utils.md at master · vmware/photon · GitHub

 

以上、Photon OS 2.0 の NFS の様子でした。