RHEL7でnfsを再マウントするときに奇妙な問題が発見されました。
nfs-serverには2つのディレクトリが共有されています。
# showmount -e
Export list for localhost.localdomain:
/file2 192.168.122.1
/file1 192.168.122.1
次にクライアントにインストールします。
# sudo mount 192.168.122.100:/file2 /media
# sudo mount 192.168.122.100:/file1 /mnt/file1
# mount
192.168.122.100:/file1 on /mnt/file1 type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.122.1,local_lock=none,addr=192.168.122.100)
192.168.122.100:/file2 on /media type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.122.1,local_lock=none,addr=192.168.122.100)
その後、そのうちの1つをroに再インストールしようとしました。
# sudo mount -o ro,remount /mnt/file1/
この時、奇妙なことが起こり、どちらもROに変わりました。
192.168.122.100:/file1 on /mnt/file1 type nfs4 (ro,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.122.1,local_lock=none,addr=192.168.122.100)
192.168.122.100:/file2 on /media type nfs4 (ro,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.122.1,local_lock=none,addr=192.168.122.100)
一部のパケットをキャプチャしましたが、再マウント時にパケットが送信されていないことがわかりました。
今はわかりません。誰かが私を助けることができますか?
ありがとうございます。
答え1
見つけました。
これは、NFSがデフォルトで共有キャッシュを使用するためです。また見てくださいman nfs
:
sharecache / nosharecache
Determines how the client's data cache and attribute cache are shared when mounting the same export more than once concurrently. Using the same
cache reduces memory requirements on the client and presents identical file contents to applications when the same remote file is accessed via dif‐
ferent mount points.
If neither option is specified, or if the sharecache option is specified, then a single cache is used for all mount points that access the same
export. If the nosharecache option is specified, then that mount point gets a unique cache. Note that when data and attribute caches are shared,
the mount options from the first mount point take effect for subsequent concurrent mounts of the same export.
As of kernel 2.6.18, the behavior specified by nosharecache is legacy caching behavior. This is considered a data risk since multiple cached copies
of the same file on the same client can become out of sync following a local update of one of the copies.
マニュアルページにはa single cache is used for all mount points that access the same export
。
その後、オプションを使用しましたが、nosharecache
今は正常に動作します。
192.168.122.100:/file1 on /mnt/file1 type nfs4 (ro,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,nosharecache,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.122.1,local_lock=none,addr=192.168.122.100)
192.168.122.100:/file2 on /mnt/file2 type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,nosharecache,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.122.1,local_lock=none,addr=192.168.122.100