#author("2020-03-29T18:59:33+00:00","default:sysosa","sysosa") #author("2021-03-09T18:34:00+00:00","default:sysosa","sysosa") Network File System(NFS) &size(10){ネットワーク経由で取得されたデータをローカルのディスクにキャッシングします};[[FS-Cache>CacheFS]] 単純にNFSサーバを作る CentOS7の一部のフォルダか、あるいは追加したHDDをNFSとして供出する。 ここでは/dev/sdbと/etc/sdcを供出した。 &color(red){*};&size(10){HDD全体を使うので、パーティション操作は不要かな?って思うのだが、、良くわからない}; #code(nonumber){{ [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機能を提供するパッケージをインストールして起動させます。 &color(red){*};&size(10){事前にrpcbind.socketを起動しないとエラーになる}; 加えて、マシンが再起動したら自動的にNFSサービスも起動するように調整します。 #code(nonumber){{ [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 }} &color(red){*};&size(10){rpcbind.socketは、nfs-utilsインストール時に enable になっている}; 次に、供出するファイルシステムを /etc/exportfs に記載します。書式は従来のままでも擬似ファイルシステムの形式でも構わない。 ここでは簡単に従来様式で記述する #code(nonumber){{ [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 を実行する #code(nonumber){{ [root@nfs ~]# exportfs -av exporting 192.168.0.0/24:/Appl exporting 192.168.0.0/24:/home [root@nfs ~]# }} ***NFS mount [#lcdce2d9] クライアントからNFSサーバが提供しているファイルシステムをマウントしてみる。 インストールするパッケージは nfs-utils #code(nonumber){{ [root@client ~]# yum -y install nfs-utils }} 再起動するか、rpcbind.socketを起動させて、mount操作を行う #code(nonumber){{ [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 }} 確認を行う #code(nonumber){{ [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を修正する #code(nonumber){{ [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 ~]# }} ***no_root_squashのテスト [#a1301e09] /ApplはNFSサーバ側で no_root_squash としたので、clientのroot権限で操作可能である。 #code(nonumber){{ [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 で同様の操作を行うと #code(nonumber){{ [root@client ~]# cd /home [root@client home]# touch sample touch: `sample' に touch できません: 許可がありません [root@client home]# }} となる。 ***autofs [#fb1e4326] 複数のmount pointを常時接続ではなく、その場所に移った時にmountさせるようにしてみる。 #code(nonumber){{ [root@client ~]# yum install autofs [root@client ~]# vi /etc/auto.master.d/data.autofs /- /etc/auto.nfs /- /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 &color(red){*}; 「dismount_interval」の値も効く様であるが,,,,