ZFS: gang block detected (FreeBSD)

В сабже — мутная ошибка в бздёвой ZFS, проявляется, когда свободное место на томе подходит к концу (вообще это крайне нежелательно для ZFS), данные не теряются, но бутблок херится и всё отлично работает до ребута.

Вот по этой ссылке можно прочитать много интересного по теме, но на английском языке...

Что делать, если такое произошло?

Идем вот сюда, качаем образ, режем болванку, загружаемся с неё (если что — по ссылке крайне полезный в хозяйстве проджект mfsBSD, образ FreeBSD, загружающийся в лайвсиди в диски в памяти и работающий с них, на борту имеется скрипт для установки FreeBSD корнем на ZFS).

Импортируем пул, с которым стало плохо:

zpool import POOLNAME

Отмонтируем, всё что смонитировалось при импорте пула:

zfs unmount -a

Указываем куда смонтировать корень пула:

zfs set mountpoint=/SOMEMOUNTPOINT POOLNAME

Монтируем:

zfs mount POOLNAME

Сносим /boot и записываем имеющийся под рукой (из mfsBSD):

rm -rf /SOMEMOUNTPOINT/boot
cp -r /boot /SOMEMOUNTPOINT/

Кстати, на данном этапе полезно сохранить /boot/loader.conf и /boot/modules, чтобы закинуть их потом в новый /boot.

Отмонтируем и указываем снова монтировать пулу в корень

zfs unmount -a
zfs set mountpoint=legacy POOLNAME

Для лишней надёжности можно перезаписать бут-код в GEOM:

gpart bootcode -p /boot/gptzfsboot -i 1 adN

Ну и...

reboot