NFSv4で繋げてみる
kerberos対応のみ注目していたが、調べるとそれ以外にも利点があるみたい。
http://www.snia-j.org/tech/WH/NFSv4/files/NFSv4.pdf
誤解していたが、kerberosによるユーザ認証は必須ではなく、従来のUID/GIDによるマッチングでも利用できる
また従来のままの/etc/exportsフォーマットでもNFSv4は効いているみたい。

NFSv4でkerberosを使う方式はこちらを参照NIS/NFSv4/krb5

構築

[root@nfs ~]# yum install nfs-utils
[root@nfs ~]# chkconfig --list
(中略)
nfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off    /etc/sysconfig/nfsでSECURE_NFS="yes"なら稼働
(中略)
[root@nfs ~]#

/etc/exports (従来形式)

基本従来型のフォーマットも使えるみたい。NFSサーバにて

[root@nfs ~]# cat /etc/exports
/export   *.chaperone.jp(rw)
/home     *.chaperone.jp(rw)
/opt/src  *.chaperone.jp(rw)
[root@nfs ~]#

クライアント側で静的NFSv4マウント

[root@client ~]# mount -t nfs4 nfs:/home   /home
[root@client ~]# mount -t nfs4 nfs:/export /export
[root@client ~]# mount -t nfs4 nfs:/opt/src /opt/src
[root@client ~]# mount
(中略)
nfs:/home on /home type nfs4 (rw,addr=192.168.0.41,clientaddr=192.168.0.20)
nfs:/export on /export type nfs4 (rw,addr=192.168.0.41,clientaddr=192.168.0.20)
nfs:/opt/src on /opt/src type nfs4 (rw,addr=192.168.0.41,clientaddr=192.168.0.20)
[root@client ~]#

とtypeが nfs4 を示している。またnfs4と指定しなくても mount -t nfs nfs:/home /home なら

nfs:/home on /home type nfs (rw,vers=4,addr=192.168.0.41,clientaddr=192.168.0.20)

vers=4表記される。
一方、従来型のフォーマットのままならNFSv3でマウントも当然ながら可能

[root@client ~]# mount -t nfs -o vers=3 nfs:/home /home
[root@client ~]# mount -t nfs -o vers=3 nfs:/export /export
[root@client ~]# mount -t nfs -o vers=3 nfs:/opt/src /opt/src
[root@client ~]# mount
(中略)
nfs:/home on /home type nfs (rw,vers=3,addr=192.168.0.41)
nfs:/export on /export type nfs (rw,vers=3,addr=192.168.0.41)
nfs:/opt/src on /opt/src type nfs (rw,vers=3,addr=192.168.0.41)
[root@client ~]#

となる。

/etc/exports(擬似ファイルシステム)

NFSv4で導入されたexportfsの新しい記述方法かな。公開するディレクトリで構成された擬似的なファイルシステムを作り、そのトップディレクトリを公開します。/homeと/expot、/opt/srcの公開なら、例えば /nfs を頂点としてファイルシステムを組み直して

[root@nfs ~]# mkdir -p /nfs/{home,export,src}
[root@nfs ~]# mount --bind  /home    /nfs/home
[root@nfs ~]# mount --bind  /export  /nfs/export
[root@nfs ~]# mount --bind  /opt/src /nfs/src

/nfs を公開します。
*このmountコマンドのbindオプションで繋ぐと/homeと/nfs/homeも同じものに見えます

再起動のたびにmountコマンドを打つわけには行かないので/etc/fstabには

[root@nfs ~]# cat /etc/fstab
/dev/sda2  /            ext4  defaults 1 1
(略)
/home      /nfs/home    none  bind     0 0
/export    /nfs/export  none  bind     0 0
/opt/src   /nfs/src     none  bind     0 0
[root@nfs ~]#

と記述する。
このような擬似ファイルシステムを作成後に /etc/exports を作る

[root@nfs ~]# vi /etc/exports
/nfs         *.chaperone.jp(rw,sync,fsid=0)
/nfs/home    *.chaperone.jp(rw,sync,nohide)
/nfs/export  *.chaperone.jp(rw,sync,nohide)
/nfs/src     *.chaperone.jp(rw,sync,nohide)
[root@nfs ~]#
[root@nfs ~]# exportfs -avr

そしてNFSクライアントからマウントすると

[root@client ~]# mount -t nfs4 nfs:/home /home
[root@client ~]# mount -t nfs4 nfs:/export /export
[root@client ~]# mount -t nfs4 nfs:/src /opt/src
[root@client ~]# mount
(中略)
nfs:/home on /home type nfs4 (rw,addr=192.168.0.41,clientaddr=192.168.0.20)
nfs:/export on /export type nfs4 (rw,addr=192.168.0.41,clientaddr=192.168.0.20)
nfs:/src on /opt/src type nfs4 (rw,addr=192.168.0.41,clientaddr=192.168.0.20)
[root@client ~]#

と認識される。* nfs:/src である事に注目
ただし擬似ファイルシステム構成だとNFSv3でマウントはできないみたい。

[root@client ~]# mount -t nfs -o vers=3 nfs:/home /home
mount.nfs: access denied by server while mounting nfs:/home
 
[root@client ~]# mount -t nfs -o vers=4 nfs:/home /home
[root@client ~]# mount |grep home
nfs:/home on /home type nfs (rw,vers=4,addr=192.168.0.41,clientaddr=192.168.0.20)
[root@client ~]#

CentOS5

CentOS5.10ではNFSv4が対応している。ただし-o vers=4は使えず、-t nfs4として使える

[root@client5 ~]# mount -t nfs -o vers=4 nfs:/home /home
'vers=4' is not supported.  Use '-t nfs4' instead.
[root@client5 ~]#
[root@client5 ~]# mount -t nfs4 nfs:/home /home
[root@client5 ~]# mount
(中略)
nfs:/home on /home type nfs4 (rw,addr=192.168.0.41)
[root@client5 ~]#

*NFSサーバの/etc/exportsはどちらの方式でも接続できた。
ただ、、/etc/exportsを擬似ファイルシステム形式でNISのauto.homeを

[root@client5 ~]# ypcat auto.home
-rw,vers=4 nfs:/export/saber
-rw,vers=4 nfs:/export/illya
[root@client5 ~]#

とすると接続できない。/etc/exportsを従来形式なら接続できたが、

[root@client5 ~]# (cd /home/saber)
[root@client5 ~]# mount
(中略)
nfs:/export/saber on /home/saber type nfs (rw,addr=192.168.0.41)
[root@client5 ~]#

とNFSv3で接続になるようだった。

一覧

NFSサーバ/etc/exportsNFSクライアントNFSマウントコマンド接続備考
従来型CentOS6mount -t nfs nfs:/home /home
mount -t nfs -o vers=4 nfs:/home /home
mount -t nfs4 nfs:/home /home
○ NFSv4
従来型CentOS6mount -t nfs -o vers=3 nfs:/home /home○ NFSv3
擬似ファイルシステムCentOS6mount -t nfs nfs:/home /home
mount -t nfs -o vers=4 nfs:/home /home
mount -t nfs4 nfs:/home /home
○ NFSv4
擬似ファイルシステムCentOS6mount -t nfs -o vers=3 nfs:/home /home× NFSv3(1)
従来型CentOS5mount -t nfs4 nfs:/home /home○ NFSv4
従来型CentOS5mount -t nfs -o vers=4 nfs:/home /home× NFSv4(2)
従来型CentOS5mount -t nfs nfs:/home /home
mount -t nfs -o vers=3 nfs:/home /home
○ NFSv3
擬似ファイルシステムCentOS5mount -t nfs4 nfs:/home /home○ NFSv4
擬似ファイルシステムCentOS5mount -t nfs -o vers=4 nfs:/home /home× NFSv4(2)
擬似ファイルシステムCentOS5mount -t nfs nfs:/home /home
mount -t nfs -o vers=3 nfs:/home /home
× NFSv3(3)
擬似ファイルシステムCentOS5mount -t nfs nfs:/nfs/home /home
mount -t nfs -o vers=3 nfs:/nfs/home /home
○ NFSv3

備考
1):mount.nfs: access denied by server while mounting nfs:/home
2):'vers=4' is not supported. Use '-t nfs4' instead.
3):mount: nfs:/home failed, reason given by server: Permission denied
*/proc/fs/nfsfs/volumesからNFS接続のバージョンを確認

nobody:nobodyなファイルがある。

自分のファイル/ディレクトリなのに所有者が nobody:nobody となってしまった。

[root@client ~]# ls -ld /home/saber
drwxr-xr-x 2 nobody nobody 59  9月 21 11:18 2014 /home/saber
[root@client ~]#

正しく自分のIDが入ったファイル名にするには auto.home に vers=3 とNFSv3としてマウントすれば回避される

[root@client ~]# ls -ld /home/user40
drwxr-xr-x 2 nobody nobody 59  9月 21 11:18 2014 /home/user40
[root@client ~]# ls -ld /home/user39
drwxr-xr-x 2 user39 g8 59  9月 21 11:18 2014 /home/user39
[root@client ~]# mount
(中略)
nfs2:/export/user40 on /home/user40 type nfs (rw,sloppy,vers=4,addr=192.168.0.44,clientaddr=192.168.0.20)
nfs2:/export/user39 on /home/user39 type nfs (rw,nfsvers=3,sloppy,addr=192.168.0.44)
[root@client ~]#

だが、せっかくなのでNFSv4のまま動かしたい。この場合はNFSv4でもユーザ名が判明すればいいみたい。
NFSv4の /etc/init.d/nfs で連動する rpc.idmapd は、/etc/idmapd.conf にてその動作が定義される。
このファイルの Method = nsswitchは、/etc/nsswitch.conf でIDと名前を決める事を意味する。
NFSv3ではypbindの稼働は不要なのだが、NFSv4ではypbindを動かす必要があるみたい。
*あと、/etc/idmapd.confのDomain =も重要だが、同一ドメインなら記述不要かも

MacOSXをクライアントにNFSv4なフォルダをマウントしてみる

擬似ファイルシステム構成下記の様にして

[root@c ~]# cat /etc/exports
/nfs      192.168.0.0/255.255.255.0(rw,sync,insecure,fsid=0)
/nfs/home 192.168.0.0/255.255.255.0(rw,sync,insecure,nohide)
/nfs/Appl 192.168.0.0/255.255.255.0(rw,sync,insecure,nohide)
[root@c ~]# exportfs -avr
exporting 192.168.0.0/255.255.255.0:/nfs/Appl
exporting 192.168.0.0/255.255.255.0:/nfs/home
exporting 192.168.0.0/255.255.255.0:/nfs
[root@c ~]#

MacOSX側でマウントしてみた

mac:~ foo$ sudo /sbin/mount -t nfs -o vers=4   192.168.0.3:/home /mnt/nfs
mac:~ foo$
mac:~ foo$ nfsstat -m
/mnt/nfs from 192.168.0.3:/home
  -- Original mount options:
     General mount flags: 0x0
     NFS parameters: vers=4
     File system locations:
       /home @ 192.168.0.3 (192.168.0.3)
  -- Current mount parameters:
     General mount flags: 0x4000000 multilabel
     NFS parameters: vers=4.0,tcp,port=2049,hard,nointr,noresvport,(略),sec=sys
     File system locations:
       /home @ 192.168.0.3 (192.168.0.3)
     Status flags: 0x0
 
mac:~ foo$

と成功

従来形式の

[root@c ~]# cat /etc/exports
/home 192.168.0.0/255.255.255.0(rw,insecure)
[root@c ~]# exportfs -avr
exporting 192.168.0.0/255.255.255.0:/home
[root@c ~]#

でもMacOSX側で

mac:~ foo$ sudo /sbin/mount -t nfs -o vers=4 192.168.0.3:/home /mnt/nfs
mac:~ foo$ nfsstat -m
/mnt/nfs from 192.168.0.3:/home
  -- Original mount options:
     General mount flags: 0x0
     NFS parameters: vers=4
     File system locations:
       /home @ 192.168.0.3 (192.168.0.3)
  -- Current mount parameters:
     General mount flags: 0x4000000 multilabel
     NFS parameters: vers=4.0,tcp,port=2049,hard,nointr,noresvport,(略),sec=sys
     File system locations:
       /home @ 192.168.0.3 (192.168.0.3)
     Status flags: 0x0
 
mac:~ foo$

とvers=4なNFSv4でマウントはできる。っが、UID/GIDの問題が別途ある


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2015-03-13 (金) 00:26:43 (803d)