Netatalk 3.0.1 在 FreeBSD 上因文件描述符错误而断开连接

Netatalk 3.0.1 在 FreeBSD 上因文件描述符错误而断开连接

我在 FreeBSD-9.1 版本上使用 netatalk 服务器 3.0.1 时遇到了问题。Netatalk 是从 ports collection 安装的,并且正在通过网络共享一些目录。

更新Netatalk 3.0.2 版本在我的计算机上也存在同样的问题

配置文件

[Global]
; Global server settings

[Homes]
basedir regex = /home
home name = $f - $u 's Home

[testvolume]
path = /var/tmp

[Storage]
path = /tank

[Time Machine Backup]
path=/tank/TM_backup
vol size limit = 2000000
time machine = yes

/tank在我的情况下是 ZFS 池的根,其下有不同的文件系统。我将一台运行 Mac OS X 10.7.5 的 Mac 连接到它,它可以完美地用作 Time Machine 设备。但是,如果我想使用存储共享在其上创建新的 Aperture 库,Aperture 就会停滞,无法在服务器上创建新的库。查看服务器日志,它输出以下内容:

服务器日志

Feb 17 20:09:09 glacier afpd[3501]: afp_disconnect: primary reconnect failed
Feb 17 20:09:09 glacier afpd[3210]: Terminated disconnected child[3229], client rebooted.
Feb 17 20:09:09 glacier afpd[3505]: AFP3.3 Login by towe
Feb 17 20:09:09 glacier kernel: pid 3501 (afpd), uid 501: exited on signal 6
Feb 17 20:09:09 glacier afpd[3505]: afp_disconnect: trying primary reconnect
Feb 17 20:09:09 glacier afpd[3210]: Reconnect: transfering session to child[3501]
Feb 17 20:09:09 glacier afpd[3210]: read: Bad file descriptor
Feb 17 20:09:09 glacier afpd[3210]: Reconnect: error sending DSI id to child[3501]
Feb 17 20:09:14 glacier afpd[3505]: afp_disconnect: primary reconnect failed
Feb 17 20:09:14 glacier afpd[3210]: Terminated disconnected child[3229], client rebooted.
Feb 17 20:09:14 glacier kernel: pid 3505 (afpd), uid 501: exited on signal 6
Feb 17 20:09:14 glacier afpd[3506]: AFP3.3 Login by towe
Feb 17 20:09:14 glacier afpd[3506]: afp_disconnect: trying primary reconnect
Feb 17 20:09:14 glacier afpd[3210]: Reconnect: transfering session to child[3505]
Feb 17 20:09:14 glacier afpd[3210]: read: Bad file descriptor
Feb 17 20:09:14 glacier afpd[3210]: Reconnect: error sending DSI id to child[3505]

因此服务器陷入了每 5 秒重复一次的重新连接循环中,并且总是失败。

这是该命令的输出zfs list

NAME                                    USED  AVAIL  REFER  MOUNTPOINT
tank                                    725G  4.62T   682K  /tank
tank/Downloads                         1.61G  4.62T  1.61G  /tank/Downloads
tank/TM_backup                          495G  4.62T   495G  /tank/TM_backup
tank/movies                             169G  4.62T   169G  /tank/movies
tank/music                             26.4G  4.62T  26.4G  /tank/music
tank/pictures                          24.3G  4.62T  24.3G  /tank/pictures

我的问题

  1. 我该如何修复这个重新连接循环?
  2. 如何防止已挂载的 AFP 共享在一段时间不活动后被卸载?

更新 我现在发现,只有当我写入 RAIDZ 文件系统时才会出现问题。普通的 ZFS 卷可以正常工作。

答案1

我不确定您是否遇到了同样的问题,但我最近遇到了非常类似的问题(FreeBSD 8 + ZFS + Netatalk)。客户端在读取卷上的文件时断开连接并超时。

对我来说,修复方法是重新编译 netatalk 端口并禁用 netatalk 端口中的 SENDFILE 选项。如果您启用了 SENDFILE 选项,可能值得一试。

相关内容