我正在尝试通过 msdosfs 共享 USB 硬盘,连接方式如下:
mount_msdosfs -o large /dev/da1s1 /mnt/usb
我可以看到已安装的驱动器:
/dev/da1s1 on /mnt/usb (msdosfs, local)
但是当我尝试通过 NFS 共享驱动器时我的导出文件:
/mnt/usb -network 192.168.1.0 -mask 255.255.255.0
我收到错误
freebsd mountd[871]: can't export /mnt/usb MSDOSFS_LARGEFS flag set, cannot export
freebsd mountd[871]: bad exports list line /mnt/usb -network 192.168.1.0 -mask 255.255.255.0
除了将驱动器上的 msdosfs 更改为其他内容之外,还有什么线索可以解决这个问题吗?
答案1
MSDOS
由于某些实施限制,FreeBSD 不支持将大型文件系统作为 NFS 导出。您可以尝试不使用此选项是否可以成功挂载 FS -o large
,但如果失败,则 NFS 就没戏了(但也许您可以尝试使用 Samba)。
答案2
答:从早期的 2.4 内核开始,FAT 文件系统可以导出,但如果大量使用,则可能会造成麻烦。首先,只有导出的文件系统支持的操作才会被执行。这些文件系统不支持诸如“chown”、“link”和“symlink”之类的操作,因此会失败。只要文件保持相对不变,读取/写入/创建等操作应该没问题。
最严重的问题是 FAT 文件系统布局不包含足够的信息来创建 NFS 创建持久文件句柄所需的持久标识。例如,如果您获取一个文件,将其重命名为另一个目录,截断它并向其中写入新数据,则文件系统中没有任何内容可用于显示生成的文件在任何意义上与原始文件“相同”,并且无法根据原始文件的任何详细信息找到新文件。因此,如果文件以上述方式修改,Linux NFS 服务器无法保证一旦您打开文件,您就可以继续访问该文件。然后 NFS 可能无法正确定位或识别该文件,因此可能会返回 ESTALE 错误。
这是从 Linux NFS FAQ 中摘录的,也适用于 FreeBSD(当然,内核 2.4 除外)。只是想确保您了解这些内容。