NFS(Network File System) ローカルに接続されたストレージをネットワークを介して接続するファイルシステムのプロトコルになります。主にUnix系で利用されるプロトコルです。今回は Ubuntu Server 20.04 LTS にNFSサーバおよびNFSクライアントを設定方法を紹介します。
インストール環境
- 20.04.3 LTS (Focal Fossa)
NFSサーバの設定
NFSサーバのインストール
1 |
sudo apt install nfs-kernel-server |
NFSサーバをインストールするとデーモン(nfs-server)が起動されてに自動起動(is-enabled)の設定がされています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
test@test00-ubuntu2004:~$ systemctl status nfs-server ● nfs-server.service - NFS server and services Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled) Active: active (exited) since Fri 2021-12-31 02:26:12 UTC; 14min ago Main PID: 6036 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 2278) Memory: 0B CGroup: /system.slice/nfs-server.service Dec 31 02:26:11 test00-ubuntu2004 systemd[1]: Starting NFS server and services... Dec 31 02:26:12 test00-ubuntu2004 systemd[1]: Finished NFS server and services. test@test00-ubuntu2004:~$ systemctl is-enabled nfs-server enabled test@test00-ubuntu2004:~$ |
NFSサーバの設定ファイル ( /etc/exports )
NFSサーバがクラインに提供するディレクトリとして /nfsdata を設定するには /etc/exports に記述します。/etc/exports
1 2 |
sudo vi /etc/exports /nfsdata 172.28.0.0/16(rw,no_root_squash) |
上記の設定例は
- /nfsdata NFSサーバがクラインに公開するディレクトリ
- 172.28.0.0/16 NFSサーバがクライアントに公開するアドレスを指定。* 全ホストから接続が許可される形になります。
- (rw,no_root_squash) NFSサーバ設定オプションの指定になります。 rwは クラインとからの読み書きの許可、root_squash NFSクラインからroot権限でのアクセスした場合、NFSサーバ側も同じくroot権限として取り扱う 他のオプションは下記を参照
パラメータ | 意味 |
---|---|
ro | クライアントからの読み込みを許可、書き込みを不許可(デフォルト) |
rw | クライアントからの読み込み、書き込みを許可 |
sync | クライアントからの書き込みを同期(即時)動作する。(デフォルト) サーバークラッシュ時にデータを損失を防げるが転送効率が悪い |
async | クライアントからの書き込みを非同期動作する。 サーバからの書き込みをメモリ上にキャッシュするため転送効率が向上するが、クラッシュ時にデータ損失の可能性が上がる。 |
root_squash | クライアント側からrootとして読み込み、書き込みの要求を匿名(anonymous UID/GID)として処理する。 |
no_root_squash | クライアント側からrootとして読み込み、書き込みの要求をrootとして処理する。 |
no_all_squash | クライアント側のroot以外のUID/GIDの読み込み、書き込みの要求を、そのままのUID/GIDで処理される。(デフォルト動作) サーバ、クライアントでUID/GIDが一致させる必要がある。 |
all_squash | クライアント側のroot以外のUID/GIDの読み込み、書き込みの要求を匿名(anonymous UID/GID)として処理する。 |
anonuid=UID | 指定のUIDを anonymous UID としてマッピングする。 |
anonuid=GID | 指定のGIDを anonymous GID としてマッピングする。 |
オプションの一部を紹介 詳細は man exports コマンドで確認できます。
公開ディレクトリ作成
今回は新規のディレクトリのため作成します。
1 |
sudo mkdir /nfsdata |
設定の反映
1 |
sudo exportfs -a |
NFSクライアントの設定
NFSクライアントのインストール
1 |
sudo apt install nfs-common |
マウントポイントのディレクトリ作成
1 |
sudo mkdir /mnt/nfsdata |
一時的なマウント(接続)およびアンマウント(解除)
下記の方法は起動中は接続を維持していますが、再起動するとマウントが解除されます。
1 |
sudo mount -t nfs 172.28.3.0:/nfsdata /mnt/nfsdata |
動作の確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
ディレクトリがマウントされていることを確認 test@test01-ubuntu2004:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 950M 0 950M 0% /dev tmpfs 199M 1.2M 198M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 29G 4.3G 23G 16% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/loop0 33M 33M 0 100% /snap/snapd/12704 /dev/loop1 56M 56M 0 100% /snap/core18/2128 /dev/loop2 71M 71M 0 100% /snap/lxd/21029 /dev/sda2 976M 107M 803M 12% /boot tmpfs 199M 0 199M 0% /run/user/1000 172.28.3.0:/nfsdata 29G 4.3G 23G 16% /mnt/nfsdata test@test01-ubuntu2004:~$ クライアント側でファイル作成 test@test01-ubuntu2004:~$ ls -l /mnt/nfsdata/ total 0 test@test01-ubuntu2004:~$ sudo touch /mnt/nfsdata/test.txt test@test01-ubuntu2004:~$ ls -l /mnt/nfsdata/ total 0 -rw-r--r-- 1 root root 0 Dec 31 05:43 test.txt test@test01-ubuntu2004:~$ ------- サーバ側でファイルができていることを確認 test@test00-ubuntu2004:~$ ls -lt /nfsdata/ total 0 -rw-r--r-- 1 root root 0 Dec 31 05:43 test.txt test@test00-ubuntu2004:~$ |
接続の解除(アンマウント)
1 |
sudo umount /mnt/nfsdata |
解除の確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
test@test01-ubuntu2004:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 950M 0 950M 0% /dev tmpfs 199M 1.2M 198M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 29G 4.3G 23G 16% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/loop0 33M 33M 0 100% /snap/snapd/12704 /dev/loop1 56M 56M 0 100% /snap/core18/2128 /dev/loop2 71M 71M 0 100% /snap/lxd/21029 /dev/sda2 976M 107M 803M 12% /boot tmpfs 199M 0 199M 0% /run/user/1000 test@test01-ubuntu2004:~$ |
恒久的なマウント(接続)
再起動後も起動時に自動的にマウントされます。
1 2 3 4 |
sudo vi /etc/fstab 最終行に下記を追記 172.28.3.0:/nfsdata /mnt/nfsdata nfs defaults 0 0 sudo mount -a |
マウントの確認および動作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
test@test01-ubuntu2004:~$ sudo df -h Filesystem Size Used Avail Use% Mounted on udev 950M 0 950M 0% /dev tmpfs 199M 1.2M 198M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 29G 4.3G 23G 16% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/loop0 33M 33M 0 100% /snap/snapd/12704 /dev/loop1 56M 56M 0 100% /snap/core18/2128 /dev/loop2 71M 71M 0 100% /snap/lxd/21029 /dev/sda2 976M 107M 803M 12% /boot tmpfs 199M 0 199M 0% /run/user/1000 172.28.3.0:/nfsdata 29G 4.3G 23G 16% /mnt/nfsdata test@test01-ubuntu2004:~$ ls -l /mnt/nfsdata/ total 0 -rw-r--r-- 1 root root 0 Dec 31 05:43 test.txt test@test01-ubuntu2004:~$ sudo touch /mnt/nfsdata/test1.txt test@test01-ubuntu2004:~$ ls -l /mnt/nfsdata/ total 0 -rw-r--r-- 1 root root 0 Dec 31 06:15 test1.txt -rw-r--r-- 1 root root 0 Dec 31 05:43 test.txt test@test01-ubuntu2004:~$ #### サーバ側確認 test@test00-ubuntu2004:~$ ls -lt /nfsdata/ total 0 -rw-r--r-- 1 root root 0 Dec 31 06:15 test1.txt -rw-r--r-- 1 root root 0 Dec 31 05:43 test.txt test@test00-ubuntu2004:~$ |
参考サイト
スポンサーリンク
Ubuntu 20.04 LTS Server 記事一覧
Ubuntu 20.04 LTS Server インストール
Ubuntu 20.04 LTS Server 設定記事一覧
- タイムゾーンを日本時間(JST)に変更
- ネットワークの設定 ( IPv4アドレス、DNS(resolve) 、デフォルトゲートウェイ、static route )
- シリアルからコンソールに接続する設定
- ファイアウォール ufw の設定方法