VPS

NFSのインストール・設定・使い方

初めに

NFS(Network File System)サーバーとは、別サーバーとの間でファイルの共有を、ローカルファイルと見え方が同じ様に出来る様にする機能です。
ファイルを転送するとかの処理を入れる位なら、ファイルを共有する設定(=マウント)する方が楽&費用的にも安くつくという事もあります。
この文章では、NFSのサーバー側と使う側のインストール・設定・使い方について説明していきます。

ファイルを共有する側のサーバーの設定

dnfの部分はubuntu系ならaptに変えて下さい。

dnf install -y nfs-utils;

/etc/exports
を編集して、共有したいディレクトリと共有を許可するホストを定義する。
analyzer1というサーバーとanalyzer2というサーバーと共有させたい場合

/var/log analyzer1(ro,async,root_squash)  analyzer2(ro,async,root_squash)

オプションの意味としては
rw = 読み書き許可 / 読みだけならro
async = 非同期書込 / 同期させるのならsync
root_squash = root権限をマウント側に持たせない / 持たせるのなら no_root_squash

NFSに必要なサービスを立ち上げる

systemctl start rpcbind;
systemctl enable rpcbind;
systemctl start nfs-server;
systemctl enable nfs-server;

ファイルの共有を受ける側(マウントする側)の設定

dnf -y install nfs-utils;

マウント用ディレクトリの作成
マウント元のサーバー名をprod-lb1としたら、単なる例ですが以下の様なディレクトリを作る

mkdir -p /mnt/prod-lb1/var/log;

/etc/fstab
を編集して、起動する時にマウントする設定にする

prod-lb1:/var/log /mnt/prod-lb1/var/log nfs defaults 0 0

defaultsは複数のオプションの集合体で
async = 非同期入出力
auto = mount -a でマウントされる
exec = バイナリの実行を許可
nouser = 一般ユーザーのマウントを許可しない
rw = 読み書き可能
suid = SUIDとSGIDを有効に
を意味する

その状態からのマウントは

mount -a;

マウントできたことを確認

df -kh;

以下の様な結果が表示され、prod-lb1:/var/log が /mnt/prod-lb1/var/log にマウント出来てることが確認できます。

Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           475M     0  475M   0% /dev
tmpfs              490M     0  490M   0% /dev/shm
tmpfs              490M   50M  441M  11% /run
tmpfs              490M     0  490M   0% /sys/fs/cgroup
/dev/vda1           25G   22G  3.1G  88% /
/dev/vdb            50G   21G   30G  41% /disk_psql
prod-lb1:/var/log   25G  9.9G   16G  40% /mnt/prod-lb1/var/log
tmpfs               98M     0   98M   0% /run/user/1000