我有一个NFS_Server - NFS_Client系统。我的客户端挂载到NFS_Server 目录。我想通过使用扩展文件属性(xattr)来改变NFS_Server目录的文件属性。
当我试图从客户端设置一个属性时,它给出了以下答案:
root@ubuntu:/mnt/nfs/var/nfs # setfattr -n user.comment -v "some comment" test.txt
setfattr: nfs.txt:
权限被拒绝
我的问题是
-
是否可以通过NFS使用扩展文件属性?
-
如果可能,我该怎么做?
更新:
服务器端:$ more /etc/exports file has:
/var/nfs 192.168.56.123(rw,sync,no_subtree_check)
客户端:
$ root@ubuntu:/# mount -t nfs
192.168.56.130:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,vers=4,addr=192.168.56.130,clientaddr=192.168.56.123)
谢谢…
可以使用fuse_xattrs(一个融合文件系统层)来模拟NFS共享上的扩展属性(xattrs)。基本上你需要这样做:
- 挂载NFS共享例如:
/mnt/shared_data
- 安装保险丝xattr层:
$ fuse_xattrs /mnt/shared_data /mnt/shared_data_with_xattrs
/mnt/shared_data
上的所有文件都可以在支持xattrs的/mnt/shared_data_with_xattrs
上访问。扩展的属性将存储在sidecar文件中。扩展属性不会作为扩展属性存储在服务器文件系统上,它们将存储在sidecar文件中。
遗憾的是,这只是一个变通方法。
免责声明:我是fuse_xattrs的作者。
(这篇文章很老了,但是我在寻找这个功能时偶然发现了这篇文章,它并不代表当前的状态。)
正如其他人提到的,NFS中不支持扩展属性。然而,人们对它非常感兴趣,以至于有了一个拟议的标准(RFC 8276)。
所需要的只是在服务器和客户机上安装Linux内核版本5.9或更高,然后用NFS版本4.2或更高的版本挂载。当服务器和客户端都支持nfs 4.2时,将自动启用对扩展属性的支持。
我的服务器和客户端都安装了内核版本5.15.16的nfs-utils-2.5.4-r3,它为我工作:
NFS Server/etc/exports
/ 192.168.0.42(rw,subtree_check,no_root_squash)
NFS Client/etc/fstab
192.168.0.42:/ /mnt/slowpc nfs noatime,nodiratime,noauto,hard,rsize=1048576,wsize=1048576,timeo=60,retrans=60 0 0
NFS客户机# mount | grep /mnt/slowpc
192.168.0.42:/ on /mnt/slowpc type nfs4 (rw,noatime,nodiratime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=60,retrans=60,sec=sys,local_lock=none)
# cd /mnt/slowpc/tmp
# touch file
# printf bar | attr -s foo file
Attribute "foo" set to a 3 byte value for file:
bar
# attr -l file
Attribute "foo" has a 3 byte value for file
NFS服务器# attr -l /tmp/file
Attribute "foo" has a 3 byte value for /tmp/file
在https://lwn.net/Articles/799185/中提到新的挂载选项user_xattr是必需的。但是,当前的nfs实用程序不支持该选项。幸运的是,user_xattr在可能的情况下会自动启用。
# mount -o user_xattr /mnt/test
mount.nfs: an incorrect mount option was specified
# tail -n 1 /var/log/messages
Jan 30 02:51:08 utl01 kernel: nfs: Unknown parameter 'user_xattr'
nfs不支持扩展属性。nfs内核模块中没有用户属性的处理程序。要了解更多信息,请阅读nfsv4的RFC
Linux 5.9中的NFS代码终于提供了对用户扩展属性(user xattrs)的支持。
Linux 5.9的NFS服务器更新支持NFS上的用户扩展属性。这是通过IETF的RFC 8276概述的功能,用于处理NFSv4中的文件系统扩展属性。这个特性允许使用NFSv4客户端查询和操作扩展属性(以下也称为xattrs)。Xattrs由文件系统提供,用于将不透明的元数据(不被文件系统解释)与文件和目录关联起来。这种支持存在于许多现代本地文件系统中。提供了新的文件属性以允许客户端查询服务器是否支持xattr,该支持包括在文件系统对象上获取和设置xattr的新操作。"
来源:https://www.phoronix.com/scan.php?page=news_item& px = linux - 5.9 - nfs服务器-用户- xattr