每当我必须重新启动 server1 时,我可以在 server2 上重新安装 NFS 的唯一方法是更改server1 上/etc/exports文件中的“fsid”整数之一。否则,mount -a命令只会挂在 server2 上。
典型场景:
Server1 重新启动。在 server1 上,我在/etc/exports 中有两行代码:
/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=1,rw,no_root_squash,no_subtree_check,async)
Run Code Online (Sandbox Code Playgroud)
我发出这个命令:
"exportfs -r".
Run Code Online (Sandbox Code Playgroud)
在 server2 上,我在/etc/fstab 中有这个:
xxx.xxx.x.x:/server1_dir1/ /dir1_server2 nfs async,noatime 0 0
xxx.xxx.x.x:/server2_dir2 /dir2_server2 nfs async,noatime 0 0
Run Code Online (Sandbox Code Playgroud)
我首先“卸载”现在具有陈旧 NFS 句柄的旧目录。然后,
"mount -a"
Run Code Online (Sandbox Code Playgroud)
命令挂起。在我杀死它之后,df显示 dir1 已安装,但 dir2 没有。
让两个目录都挂载的唯一方法是将 fsid 整数更改为其他内容。例如,在 server1 上,我们现在有:
/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=2,rw,no_root_squash,no_subtree_check,async)
Run Code Online (Sandbox Code Playgroud)
我将fsid=1更改为 =2。我再次发出exportfs -r命令,瞧,mount -a命令适用于 server2。
也许我不明白fsid到底是做什么的,但显然必须有更好的方法来“重新安装”NFS,而不是每次都必须随机编辑 fsid 编号?
编辑:如果我在 server1 上的导出文件中没有包含fsid,它会给我
"Warning: /mnt/ramdisk/dir1 requires fsid= for NFS export"
Run Code Online (Sandbox Code Playgroud)
而且,如果我为两行(dir1 和 dir2)都设置 fsid=0,那么挂载点最终会与我的所有文件都被复制到 dir1 位置相同!所以似乎唯一的方法是不断地切换 fsid 整数,有点随机。
EDIT2:我删除了fsid=0因为它是“特殊的”,并将它们更改为fsid=1和fsid=2在server1 上的/etc/exports中。这当然有效(因为文件已更改)。但是今天只需要强行重启,然后(缓慢地)从 server2 卸载过时的驱动器后,mount -a失败了,就像以前一样。所以,(和以前一样),我在 server1 上编辑了导出文件,这一次,fsid=2和fsid=3,exportfs -r,瞧,mount -a再次在 server2 上工作。回到广场 1。
EDIT3关键信息:如果我以受控方式删除所有内容(即..server1 不会“崩溃”),并首先卸载 server2 上的目录,然后重新启动 server1,然后在 server2 上挂载 -a,效果很好。只有当server2 上的挂载突然中断时才会出现此问题。所以我猜测需要在 server2 上重置某些东西?我知道在 server1 崩溃后卸载 server2 上的陈旧句柄需要很长时间。
归档时间: |
|
查看次数: |
9100 次 |
最近记录: |