Netatalk 3.0.1 отключается с помощью файлового дескриптора Bad во FreeBSD
У меня проблемы с моим сервером netatalk 3.0.1 на FreeBSD-9.1 RELEASE. NETatalk был установлен из коллекции портов и использует несколько каталогов по сети.
Обновление также Netatalk версии 3.0.2 имеет те же проблемы на моей машине
afpd.conf
[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 с Mac OS X 10.7.5, и он отлично работает как устройство 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
Мои вопросы
- Как я могу исправить эту петлю переподключения?
- Как предотвратить отключение подключенного общего ресурса AFP после некоторого времени бездействия?
ОБНОВЛЕНИЕ То, что я теперь узнал, - то, что проблема возникает, только если я пишу в файловую систему RAIDZ. Простой том ZFS работает.
1 ответ
Я не уверен, что у вас возникла та же проблема, но у меня была очень похожая проблема в недавнем прошлом (FreeBSD 8 + ZFS + Netatalk). Клиенты отключались и время ожидания при чтении файлов на томе.
Для меня исправлением была перекомпиляция порта netatalk и отключение опции SENDFILE в порту netatalk. Если у вас включена опция SENDFILE, возможно, стоит попробовать.