При вчерашней попытке заменить диск в zpool в системе FreeBSD 10.3-RELEASE-p20 файловые системы zfs перестали отвечать после выдачи команды zpool detach srv gpt/d0
команда. Сервер действует как NFS-сервер, WebDAV-сервер и цель iSCSI, и после выполнения zpool detach
все клиенты iSCSI начали испытывать таймауты.
По всей видимости, это привело к зависанию всей подсистемы ZFS. zpool status
или любая другая команда просто зависнет и не выдаст никаких результатов. Ничего не было видно dmesg
, и top
не показывает никаких процессов, потребляющих большой объем ЦП. В конце концов, мы не смогли найти никакого решения и были вынуждены перезагрузить систему (включая жесткую перезагрузку, поскольку мягкий перезапуск не позволил перезагрузить систему после остановки всех служб), чтобы вернуть цели iSCSI в оперативный режим.
Что вызывает такую ситуацию и как ее избежать? Как мы можем предотвратить zpool detach
от зависания при замене устройства в пуле ZFS под FreeBSD?
Я не уверен Зачем это происходит, но мы обнаружили, что эта проблема связана с включением функции автоматического расширения ZFS в пуле. Настройка autoexpand=off
с помощью:
zpool set autoexpand=off srv
Позволили нам отсоединить и заменить другие устройства без zpool detach
висит точно так же.
Мне все еще интересно узнать больше об этом режиме отказа, но я отвечал на свой вопрос в надежде поделиться знаниями о том, что отключение авторасширения может решить эту проблему.
Похоже, это было исправлено в 11.0-RELEASE: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216881
Думаю, они не сочли его достойным обратного порта на 10.3-RELEASE-p22. :(