Имеется:
Сервер Supermicro 825-7 с шестью SATA дисками ST31000524NS объеденными в RAID 10 средствами интегрированного raid-контроллера.
В качестве ОС установлена FreeBSD 8.2.
На сервере развернут ряд web-сервисов.
Больше никакой информации нет.
Преамбула:
По словам очевидцев. В какой-то момент, сервер перестал загружать ОС, при этом, судя по светодиодной и звуковой индикации один из жестких дисков вышел из строя (при очередной перезагрузке, напротив одного из дисков загорелся красный светодиод и зазвучал длинный звуковой сигнал).
К моменту моего прибытия на место аварии, никакой индикации не наблюдалось, однако ОС все равно не желала загружаться должным образом. Есть предположение, что контроллер автоматически провел ребилд массива и успокоился, однако часть данных все же была потеряна, как потом подтвердится.
Задача:
Восстановить работоспособность сервера, или, как минимум, восстановить большую часть данных.
Действия:
Raid-контроллер Adaptec, сообщил, что массив в полном порядке.
В процессе загрузки ОС сообщает, что не может смонтировать корневой раздел и предлагает произвести монтирование вручную, однако при нажатии любой клавиши происходит kernel panic и система зависает намертво.
В качестве загрузочного диска был выбран frenzy-1.4-lite. После загрузки с livecd, gpart list показал, что на жестких дисках имеется три раздела: freebsd-boot, freebd-swap и freebsd-zfs. Судя по размеру, все данные были как раз в zfs. Этот zfs меня несколько напугал, но как всегда, великий и ужасный web, пришел на выручку. К сожалению я не помню на каких именно ресурсах искал нужную информацию, поэтому просто приведу порядок действий.
Команда zdb -l /patch/to/block/device позволяет прочитать так называемые метки zfs, из файла блочного устройства раздела. Там много всякого разного, но меня интересовало только имя пула. Теперь, зная это имя, можно импортировать пул и получить доступ к файловой системе, для этого я использовал такую команду: zpool import -o atlroot=/some/directory POOL_NAME
Теперь раздел zfs доступен для чтения и записи в каталоге /some/directory
На этом все, пытаться восстанавливать загрузку ОС я не стал, так как часть данных все же была утеряна, например в usr не осталось ничего кроме home (что он там вообще делал не знаю, возможно это нормальное положение вещей для FreeBSD), меня интересовали только базы mysql, которые к счастью сохранились в полном объеме, в /var/db/mysql и сайты, которые так же лежали в /var/www/