vm.gowatana.jp

NEOにほんごVMware(仮)

VMware Photon OS 4.0 で NFS サーバ / NFS クライアントを構築してみる。

VMware Photon OS 4.0 で NFS 環境を構築してみようと思います。今回は、NFS サーバ / NFS クライアントの両方を Photon OS にしてみます。

 

今回の内容です。

 

今回の環境

今回は、NFS サーバ / クライアントを別のマシンとして用意します。

NFS サーバ

  • ホスト名: lab-nfs-01
  • IP アドレス/サブネットマスク: 192.168.30.67/24

NFS クライアント

  • ホスト名: lab-nfs-02
  • IP アドレス/サブネットマスク: 192.168.30.68/24

 

Photon OS 4.0 は、下記の OVA ファイルを利用しています。

 

1. OS の準備

Photon OS は、OVA ファイルのデプロイ、パワーオン、初回 root / changeme ログインでのパスワード変更を済ませてあります。ここでは、NFS サーバ用の lab-nfs-01 を設定していますが、NFS クライアント用の lab-nfs-02 も同様に設定します。

 

ホスト名を設定しておきます。

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

 

ネットワーク設定をしておきます。

root@photon-machine [ ~ ]# mv /etc/systemd/network/99-dhcp-en.network /etc/systemd/network/10-static.network
root@photon-machine [ ~ ]# vi /etc/systemd/network/10-static.network
root@photon-machine [ ~ ]# cat /etc/systemd/network/10-static.network
[Match]
Name=e*

[Network]
DHCP=no
IPv6AcceptRA=no
Address=192.168.30.67/24
Gateway=192.168.30.1
DNS=192.168.30.10
Domains=vcd.go-lab.jp

 

ネットワーク設定の反映には、systemd-networkd サービスの再起動が必要です。

root@photon-machine [ ~ ]# systemctl restart systemd-networkd

 

「tdnf update」でRPM の最新化して、OS を再起動しておきます。

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

 

今回の Photon OS のバージョンです。

root@lab-nfs-01 [ ~ ]# cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=2f5aad892

 

2. NFS サーバの構築

NFS Share にはディレクトリを指定できますが、今回は専用のディスクを割り当てます。NFS 領域として、lab-nfs-01 に 50 GB の仮想ディスクを追加してあります。

 

2-1. NFS Share のためのディスク追加

追加した仮想ディスクを、ゲスト OS で利用できるようにします。仮想ディスク 2 は、Photon OS では /dev/sdb として認識されます。

root@lab-nfs-01 [ ~ ]# lsblk -i /dev/sd?
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  16G  0 disk
|-sda1   8:1    0   4M  0 part
|-sda2   8:2    0  16G  0 part /
`-sda3   8:3    0  10M  0 part /boot/efi
sdb      8:16   0  50G  0 disk

 

sfdisk コマンドで、パーティションを作成します。これで、/dev/sdb から /dev/sdb1 が作成されます。

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

 

/dev/sdb1 を、ext4 ファイルシステムでフォーマットします。

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

 

/etc/fstab に、/nfs ディレクトリに /dev/sdb1 をマウントする設定を追記します。

root@lab-nfs-01 [ ~ ]# echo '/dev/sdb1 /nfs ext4 defaults 0 0' >> /etc/fstab
root@lab-nfs-01 [ ~ ]# cat /etc/fstab | grep sdb1
/dev/sdb1 /nfs ext4 defaults 0 0

 

/nfs ディレクトリを作成して /dev/sdb1 をマウントしておきます。

root@lab-nfs-01 [ ~ ]# mkdir /nfs
root@lab-nfs-01 [ ~ ]# df -h /nfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        16G  613M   15G   5% /
root@lab-nfs-01 [ ~ ]# mount -a
root@lab-nfs-01 [ ~ ]# df -h /nfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        49G   24K   47G   1% /nfs

 

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

root@lab-nfs-01 [ ~ ]# lsblk -i /dev/sd?
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  16G  0 disk
|-sda1   8:1    0   4M  0 part
|-sda2   8:2    0  16G  0 part /
`-sda3   8:3    0  10M  0 part /boot/efi
sdb      8:16   0  50G  0 disk
`-sdb1   8:17   0  50G  0 part /nfs

 

2-2. NFS サーバのセットアップ

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

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

 

nfs-server サービスを有効化 / 起動します。

root@lab-nfs-01 [ ~ ]# systemctl enable nfs-server
root@lab-nfs-01 [ ~ ]# systemctl start nfs-server

 

NFS Share として共有するディレクトリの設定を /etc/exports に追記して、エクスポートします。今回の /etc/exports ファイルでは、/nfs でマウントするアドレスを制限しない「*」を指定しているため、exportfs では 「<world>」と表示されています。

また、no_subtree_check はデフォルトの挙動ですが、exportfs 実行時のメッセージ抑止のためにあえて設定しています。

root@lab-nfs-01 [ ~ ]# echo '/nfs *(rw,sync,no_subtree_check,no_root_squash)' >> /etc/exports
root@lab-nfs-01 [ ~ ]# cat /etc/exports
/nfs *(rw,sync,no_subtree_check,no_root_squash)

 

/etc/exports ファイルの設定で、NFS Share をエクスポートします。

root@lab-nfs-01 [ ~ ]# exportfs -r
root@lab-nfs-01 [ ~ ]# exportfs
/nfs            

 

2-3. iptables の設定

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

  • 今回の NFS サーバ / NFS クライアントは、どちらも 192.168.30.0/24 のネットワーク セグメントにあります。
  • ラボ環境では、systemctl stop iptables と systemctl disable iptables で無効化してもよいかなと思います。
  • 今回は、NFS v4 を利用しています。(Photon OS 4.0 のデフォルト)
root@lab-nfs-01 [ ~ ]# iptables -A INPUT -s 192.168.30.0/24 -p tcp --dport 2049 -j ACCEPT
root@lab-nfs-01 [ ~ ]# iptables -A INPUT -s 192.168.30.0/24 -p udp --dport 2049 -j ACCEPT
root@lab-nfs-01 [ ~ ]# iptables-save > /etc/systemd/scripts/ip4save

 

3. NFS クライアントからのマウント

NFS クライアント側でも、nfs-utils をインストールします。

root@lab-nfs-02 [ ~ ]# tdnf install -y nfs-utils

 

NFS サーバの Share を確認しておきます。

root@lab-nfs-02 [ ~ ]# showmount -e 192.168.30.67
Export list for 192.168.30.67:
/nfs *

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

root@lab-nfs-02 [ ~ ]# mkdir /nfs-share
root@lab-nfs-02 [ ~ ]# echo '192.168.30.67:/nfs /nfs-share nfs _netdev 0 0' >> /etc/fstab

 

マウントします。

root@lab-nfs-02 [ ~ ]# mount -a
root@lab-nfs-02 [ ~ ]# df -h /nfs-share
Filesystem          Size  Used Avail Use% Mounted on
192.168.30.67:/nfs   49G     0   47G   0% /nfs-share

 

マウントした NFS Share に、ファイルが書き込めることを確認しておきます。

root@lab-nfs-02 [ ~ ]# echo test > /nfs-share/test.txt
root@lab-nfs-02 [ ~ ]# cat /nfs-share/test.txt
test

 

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

root@lab-nfs-02 [ ~ ]# nfsstat -m
/nfs-share from 192.168.30.67:/nfs
 Flags: rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.30.68,local_lock=none,addr=192.168.30.67
root@lab-nfs-02 [ ~ ]#
root@lab-nfs-02 [ ~ ]# nfsstat -l
nfs v4 client        total:       33
------------- ------------- --------
nfs v4 client         null:        1
nfs v4 client        write:        1
nfs v4 client         open:        1
nfs v4 client    open_noat:        1
nfs v4 client        close:        2
nfs v4 client       fsinfo:        3
nfs v4 client       access:        2
nfs v4 client      getattr:        4
nfs v4 client       lookup:        2
nfs v4 client  lookup_root:        1
nfs v4 client     pathconf:        2
nfs v4 client       statfs:        1
nfs v4 client  server_caps:        5
nfs v4 client  exchange_id:        2
nfs v4 client create_session:        1
nfs v4 client     sequence:        2
nfs v4 client reclaim_comp:        1
nfs v4 client   secinfo_no:        1

 

ESXi からのマウント

ESXi で NFS データストアとしてマウントする場合には、NFS v3 でもマウントできます。今回は、ESXi 7.0 のホストからマウントしてあります。

 

NFS データストアとして、NFS v3 でマウントしてあります。

 

NFS サーバ側でも、ESXi から NFS v3 で接続されていることがわかります。

root@lab-nfs-01 [ ~ ]# showmount -a
All mount points on lab-nfs-01:
192.168.31.201:/nfs
192.168.31.202:/nfs
root@lab-nfs-01 [ ~ ]# nfsstat -l
nfs v3 server        total:      506
------------- ------------- --------
nfs v3 server      getattr:      408
nfs v3 server       lookup:       40
nfs v3 server       access:       29
nfs v3 server       fsstat:       27
nfs v3 server       fsinfo:        2

nfs v4 server        total:      236
------------- ------------- --------
nfs v4 server         null:        2
nfs v4 server     compound:      234

nfs v4 servop        total:      379
------------- ------------- --------
nfs v4 servop       access:        7
nfs v4 servop        close:        3
nfs v4 servop  delegreturn:        1
nfs v4 servop      getattr:       54
nfs v4 servop        getfh:        7
nfs v4 servop       lookup:        4
nfs v4 servop         open:        3
nfs v4 servop        putfh:       55
nfs v4 servop    putrootfh:        4
nfs v4 servop         read:        1
nfs v4 servop      readdir:        1
nfs v4 servop        write:        1
nfs v4 servop  exchange_id:        4
nfs v4 servop   create_ses:        2
nfs v4 servop  destroy_ses:        1
nfs v4 servop secinfononam:        2
nfs v4 servop     sequence:      226
nfs v4 servop destroy_clid:        1
nfs v4 servop reclaim_comp:        2

 

ちなみに Photon OS のドキュメントにも、少しだけ NFS についての説明があります。

 

以上、Photon OS 4.0 で NFS 環境を構築してみる話でした。