如何在NFS中使用扩展文件属性



我有一个NFS_Server - NFS_Client系统。我的客户端挂载到NFS_Server 目录。我想通过使用扩展文件属性(xattr)来改变NFS_Server目录的文件属性。

当我试图从客户端设置一个属性时,它给出了以下答案:

root@ubuntu:/mnt/nfs/var/nfs # setfattr -n user.comment -v "some comment" test.txtsetfattr: 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)。基本上你需要这样做:

  1. 挂载NFS共享例如:/mnt/shared_data
  2. 安装保险丝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

最新更新