我创建了一个 nfs 共享条目
mzhu@zeus:/share$ cat /etc/exports
/share *(rw,async,insecure)
从本地文件系统,在 /share 中执行“ls -al”。输出为
mzhu@zeus:/share$ ls -al
total 20
drwxrwxrwt 5 mzhu mzhu 4096 May 23 15:12 .
drwxr-xr-x 25 root root 4096 Nov 6 2013 ..
-rw-rw-r-- 1 mzhu mzhu 0 May 23 15:12 1
drwxrwxr-x 2 mzhu mzhu 4096 May 23 15:12 2
drwxrwxr-x 8 mzhu mzhu 4096 May 21 16:53 build
drwxr-xr-x 54 mzhu mzhu 4096 May 21 19:15 team
然后我将 nfs 共享挂载到 ~/test在同一台机器上。挂载输出为(我只删除了 IP 信息)
zeus:/share on /home/mzhu/test type nfs (rw,vers=4,addr=x.x.x.x,clientaddr=x.x.x.x)
从 NFS 执行“ls -al”。输出为:
mzhu@zeus:~/test$ ls -al
total 20
drwxrwxrwt 5 mzhu mzhu 4096 May 23 15:12 .
drwxr-xr-x 32 mzhu mzhu 4096 May 23 15:30 ..
-rw-rw-r-- 1 mzhu mzhu 0 May 23 15:12 1
drwxrwxr-x 2 mzhu mzhu 4096 May 23 15:12 2
drwxr-xr-x 2 root root 4096 Oct 20 2013 build
drwxr-xr-x 2 root root 4096 Oct 21 2013 team
比较两个输出,你会发现,在本地文件系统中,“build”的时间戳和权限是
drwxrwxr-x 8 mzhu mzhu 4096 May 21 16:53 build
而在 nfs 共享中(即使是同一台机器),'build' 的时间戳和权限是
drwxr-xr-x 2 root root 4096 Oct 20 2013 build
它们具有不同的权限、所有者、组和时间戳。
有谁能告诉我为什么会有这种差异?或者告诉我如何调试/排除此问题?
PS 当我第一次创建 nfs 共享时,系统日期/时间是 2013 年 10 月,但我已调整日期/时间并重新启动机器。
Ubuntu 发布信息:
mzhu@zeus:/share$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise
RPC信息:
mzhu@zeus:~/test$ rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 54306 status
100024 1 tcp 48737 status
100021 1 udp 42616 nlockmgr
100021 3 udp 42616 nlockmgr
100021 4 udp 42616 nlockmgr
100021 1 tcp 55986 nlockmgr
100021 3 tcp 55986 nlockmgr
100021 4 tcp 55986 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
100005 1 udp 59947 mountd
100005 1 tcp 46390 mountd
100005 2 udp 38311 mountd
100005 2 tcp 57959 mountd
100005 3 udp 55855 mountd
100005 3 tcp 50799 mountd
编辑:
mzhu@zeus:/share$ mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sdb1 on /share/build type ext4 (rw)
/dev/sdc1 on /share/team type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
cpddae:/cpddae/images on /mnt/cpddae type nfs (rw,addr=x.x.x.x)
gvfs-fuse-daemon on /var/lib/lightdm/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=lightdm)
x.x.x.x:/share on /mnt/share type nfs (rw,addr=x.x.x.x)
nfsd on /proc/fs/nfsd type nfsd (rw)
zeus:/share on /home/mzhu/test type nfs (rw,vers=4,addr=x.x.x.x,clientaddr=x.x.x.x)
答案1
所有者的不同是由于不同的 UID 和 GID。如果两个系统中 mzhu 的 UID 不同,则在共享上它将降为 root。
答案2
您能向我们展示一下 的输出mount
吗?如果您在 /share/build 和 /share/team 有更多文件系统,则这是预期的行为 - 本地ls
将看到已安装的文件系统,NFS 客户端将只看到安装点目录。要获得相同的视图,您还需要共享较低的文件系统并将其安装在客户端上。
编辑:mount
您添加的输出证实了我的假设:这里有三个卷,/share 是 sda1 的一部分,/share/build 是 sdb1,/share/team 是 sdc1。您创建日期显然是 2013 年 10 月挂载点在 sda1 上为 sdb1 和 sdc1 挂载了这些目录,但现在您已挂载了它们,因此无法再从本地系统看到这些目录。但是,在 NFS 客户端上,额外的卷未挂载,您可以看到原始挂载点。您可以通过在其中创建文件和目录来进一步探索这一点/home/mzhu/test/build
— 它们不会显示在 /share/build 中,而是会使用 sda1 中的空间。