IPを固定に
今回は、100.64.1.114
に設定します。
$ sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [100.64.1.114/24]
routes:
- to: default
via: 100.64.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
wlan0:
optional: true
$ sudo netplan apply
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.64.1.114 netmask 255.255.255.0 broadcast 100.64.1.255
色々アップデート
$ sudo apt update
$ sudo apt upgrade -y
NFSサーバー構築
パッケージインストール
$ sudo apt update
$ sudo apt install nfs-kernel-server -y
エクスポートするディレクトリの作成と設定
$ sudo mkdir -p /srv/nfs/share
$ sudo chown nobody:nogroup /srv/nfs/share
$ sudo chmod 777 /srv/nfs/share
$ sudo ls -la /srv/nfs/share
total 8
drwxrwx--- 2 nobody nogroup 4096 May
drwxr-xr-x 3 root root 4096 May
NFSエクスポートの設定
$ sudo nano /etc/exports
/srv/nfs/share *(rw,sync,no_subtree_check)
オプション解説
- rw : 読み書き可能
- ro : 読み取り専用
- sync : 同期モード。サーバーはすべてのデータをディスクに書き込んでからクライアントに操作完了を通知します。データの整合性を保つために推奨されます。
- no_subtree_check : サブツリーのチェックを無効にします。クライアントが親ディレクトリにもアクセスできるようになります。つけるとリスクが上がりますが、チェックがなくなる分、性能が良くなるそうです。
- no_root_squash : ルートスカッシュを無効にします。通常、NFSではクライアントのrootユーザーは匿名ユーザーにマップされますが、このオプションを使用すると、クライアントのrootユーザーがサーバーでもroot権限を持ちます
NFSサーバーの設定を適用
$ sudo exportfs -ra
$ sudo systemctl restart nfs-kernel-server
# sudo exportfs -v
/srv/nfs/share <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
確認
他のPCから (この場合は、Macから行っています。)
$ showmount -e 100.64.1.114
Exports list on 100.64.1.114:
/srv/nfs/share *
$ sudo mkdir -p /Volumes/nfs
$ sudo mount -t nfs -o resvport,rw 100.64.1.114:/srv/nfs/share /Volumes/nfs
$ echo "Hello NFS" | sudo tee /Volumes/nfs/testfile.txt
Hello NFS
$ cat /Volumes/nfs/testfile.txt
Hello NFS
アンマウント
$ sudo umount /Volumes/nfs
アンマウントできないときは
$ lsof /Volumes/nfs
の結果を kill
NFCサーバー側でも確認
worker-03@worker-03:~$ cat /srv/nfs/share/testfile.txt
Hello NFS
動いていますね!🍺