28.02.2021

Ошибка в патчах FreeNAS, вызывающая скрытое повреждение данных в ZFS

В добавленных дистрибутивом FreeNAS/TrueNAS патчах к OpenZFS 2.0 выявлена серьёзная ошибка, приводящая к скрытому повреждению данных в ZFS-разделах (zvol). Во FreeNAS/TrueNAS проблема проявлялась в двух последних обновлениях 12.0 и 12.1 (FreeNAS 11.3 проблеме не подвержен) и была вызвана включением недостаточно протестированного кода. В мае прошлого года включающее ошибку изменение было передано в основной git-репозиторий OpenZFS, но не вошло в основную ветку, так как ожидало рецензирования и не прошло автоматизированную проверку сборки на некоторых платформах.

Вначале представители компании iXsystems, разрабатывающей проект FreeNAS, не могли повторить условия, приводящие к потере данных, списывали проблему на неправильный бэкплейн и советовали обновить в нем прошивку, хотя изначально в сообщении о проблемах было сказано, что до перехода с FreeNAS 11.3 на TrueNAS 12.0 две разные системы в таком виде семь лет проработали без единого разрыва. После подтверждения возникновения проблемы ещё у нескольких пользователей ошибку наконец удалось локализовать и выпустить обновление модуля openzfs.ko, которое вчера было включено в состав обновления TrueNAS 12.0-U1.1.

Кроме того, в ходе обсуждения всплыла ещё одна давно не решённая проблема в основном коде OpenZFS, приводившая к обнулению файлов в резервной копии при передаче командой «zfs send» и проявляющаяся начиная с версии 0.7.5, опубликованной в конце 2017 года.

Источник.