Network File System(NFS)
ネットワーク経由で取得されたデータをローカルのディスクにキャッシングしますFS-Cache
単純にNFSサーバを作る
CentOS7の一部のフォルダか、あるいは追加したHDDをNFSとして供出する。
ここでは/dev/sdbと/etc/sdcを供出した。
*HDD全体を使うので、パーティション操作は不要かな?って思うのだが、、良くわからない
[root@nfs ~]# mkfs -t xfs /dev/sdb
[root@nfs ~]# mkfs -t xfs /dev/sdc
[root@nfs ~]# blkid | grep -e sdb -e sdc
/dev/sdb: UUID="5fa03bdf-5f7b-4cc4-9448-4a742edb97fc" TYPE="xfs"
/dev/sdc: UUID="e510e1fc-50c4-43bb-aa00-a81651bc810b" TYPE="xfs"
[root@nfs ~]#
[root@nfs ~]# mkdir -p /home /Appl
[root@nfs ~]# vi /etc/fstab
(略)
UUID=5fa03bdf-5f7b-4cc4-9448-4a742edb97fc /home xfs defaults 0 0
UUID=e510e1fc-50c4-43bb-aa00-a81651bc810b /Appl xfs defaults 0 0
[root@nfs ~]# mount -a
[root@nfs ~]# mount | grep -e sdb -e sdc
/dev/sdb on /home type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdc on /Appl type xfs (rw,relatime,attr2,inode64,noquota)
[root@nfs ~]#
NFS機能を提供するパッケージをインストールして起動させます。
*事前にrpcbind.socketを起動しないとエラーになる
加えて、マシンが再起動したら自動的にNFSサービスも起動するように調整します。
[root@nfs ~]# yum install nfs-utils
[root@nfs ~]# systemctl start rpcbind.socket
[root@nfs ~]# systemctl start nfs-server.service
[root@nfs ~]# systemctl enable nfs-server.service
*rpcbind.socketは、nfs-utilsインストール時に enable になっている
次に、供出するファイルシステムを /etc/exportfs に記載します。書式は従来のままでも擬似ファイルシステムの形式でも構わない。
ここでは簡単に従来様式で記述する
[root@nfs ~]# vi /etc/exports
/Appl 192.168.0.0/24(rw,no_root_squash)
/home 192.168.0.0/24(rw)
[root@nfs ~]#
/ApplはNFS mountしたクライアントのrootでも操作可能にした。
これを反映させるために exportfs -av を実行する
[root@nfs ~]# exportfs -av
exporting 192.168.0.0/24:/Appl
exporting 192.168.0.0/24:/home
[root@nfs ~]#
クライアントからNFSサーバが提供しているファイルシステムをマウントしてみる。
インストールするパッケージは nfs-utils
[root@client ~]# yum -y install nfs-utils
再起動するか、rpcbind.socketを起動させて、mount操作を行う
[root@client ~]# systemctl start rpcbind.socket
[root@client ~]# mkdir -p /home /Appl
[root@client ~]# mount -t nfs nfs:/Appl /Appl
[root@client ~]# mount -t nfs nfs:/home /home
確認を行う
[root@client ~]# df | grep nfs
nfs:/Appl 16766976 32768 16734208 1% /Appl
nfs:/home 16766976 32768 16734208 1% /home
[root@client ~]#
[root@client ~]# mount | grep nfs
nfs:/Appl on /Appl type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,
retrans=2,sec=sys,clientaddr=192.168.0.20,local_lock=none,addr=192.168.0.41)
nfs:/home on /home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,
retrans=2,sec=sys,clientaddr=192.168.0.20,local_lock=none,addr=192.168.0.41)
[root@client ~]#
clientマシンを再起動しても/Applと/homeをmountさせるには /etc/fstabを修正する
[root@client ~]# umount /Appl /home
[root@client ~]# vi /etc/fstab
(略)
nfs:/Appl /Appl nfs defaults 0 0
nfs:/home /home nfs defaults 0 0
[root@client ~]# mount -a
[root@client ~]# df | grep nfs
nfs:/Appl 16766976 32768 16734208 1% /Appl
nfs:/home 16766976 32768 16734208 1% /home
[root@client ~]#
/ApplはNFSサーバ側で no_root_squash としたので、clientのroot権限で操作可能である。
[root@client ~]# cd /Appl
[root@client Appl]# ls
[root@client Appl]# touch sample
[root@client Appl]# ls -l
合計 0
-rw-r--r-- 1 root root 0 3月 6 14:19 sample
[root@client Appl]#
次に、no_root_squashを付けていない /home で同様の操作を行うと
[root@client ~]# cd /home
[root@client home]# touch sample
touch: `sample' に touch できません: 許可がありません
[root@client home]#
となる。
複数のmount pointを常時接続ではなく、その場所に移った時にmountさせるようにしてみる。
[root@client ~]# yum install autofs
[root@client ~]# vi /etc/auto.master.d/data.autofs
/- /etc/auto.nfs --timeout=60
[root@client ~]# vi /etc/auto.nfs
/data4 emfs:/data4
/data5 emfs:/data5
[root@client ~]# systemctl restart autofs
timeoutの時間は「/etc/autofs.conf」の「timeout = 300」で決まる。規定は300sec->5min
* 「dismount_interval」の値も効く様であるが,,,,