Raspberry Pi 3 B+(Ubuntu) でNFSファイルサーバーを作る

May 18, 2024, 7:06 AM

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
動いていますね!🍺
Jetson Orin Nano NX 16GB OSインストールから簡単なセットアップまでJetson Orin Nano NX 16GB OSインストールから簡単なセットアップまで
Kubernetes (k8s) で永続ボリュームを作る