Назад | Перейти на главную страницу

Как исправить в zpool detach висит весь бассейн?

При вчерашней попытке заменить диск в 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. :(