Случилась на работе ситуация — развалился от перегрева RAID 5 , сделанный на аппаратном контроллере Adaptec 2610SA, на файловом сервере с FreeBSD. После гугления были найдены UFS Explorer, RAID Reconstructor и R-Studio, умеющие программно собирать массив и предоставлять доступ к ФС в нем. Нас они не устроили по двум причинам: они не дружат с русскими именами файлов (а там таких много) и диски в массиве, как выяснилось, были битые. Еще подумав и погуглив чуток, пришли к простому очевидному решению, лежавшему на поверхности: восстановление массива непосредсвенно при помощи контроллера и Frenzy. Описанный способ, полагаю, будет работать и на других контроллерах.
Первым делом топаем в BIOS RAID контроллера и создаем массив заново. Обязательно с опцией «Quick Init», если вам дороги ваши данные. Затем засовываем диск с Frenzy, загружаемся как обычно, лезем в консоль и пишем
scan_ffs -l /dev/aacd0 > labels_file
Естественно, вместо aacd0 пишем имя своего устройства. Эта команда найдет в массиве дисковые метки FreeBSD c UFS. Вывод будет примерно таким:
X: 1048576 63 4.2BSD 2048 16384 0 # /
X: 2324480 1504959 4.2BSD 2048 16384 0 # /var
X: 1048576 3829439 4.2BSD 2048 16384 0 # /tmp
X: 17042960 4878015 4.2BSD 2048 16384 0 # /usr
Далее нам нужно в файле labels_file заменить символы «X» в начале строк на буквы, соответствующие дисковым меткам с UFS, примерно так:
a: 1048576 63 4.2BSD 2048 16384 0 # /
e: 2324480 1504959 4.2BSD 2048 16384 0 # /var
f: 1048576 3829439 4.2BSD 2048 16384 0 # /tmp
d: 17042960 4878015 4.2BSD 2048 16384 0 # /usr
Затем смотрим, что у нас получится:
#disklabel -R -n /dev/aacd0 labels_file
disklabel: write to disk label supressed - label was as follows:
# /dev/aacd0:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 63 4.2BSD 2048 16384 0
c: 21921792 0 unused 0 0 # "raw" part, don't edit
d: 17042960 4878015 4.2BSD 2048 16384 0
e: 2324480 1504959 4.2BSD 2048 16384 0
f: 1048576 3829439 4.2BSD 2048 16384 0
и сохраняем метки на диск:
disklabel -R /dev/aacd0 labels_file
Теперь можно смело примонтировать разделы и забрать оттуда данные:
mount /dev/aacd0a /mnt/aacd0a
А можно и использовать массив дальше, если конечно, диски целые и есть нормальное охлаждение. И да, берегите свои данные и не паникуйте, если на первый взгляд кажется, что восстановить их маловероятно.


Свежие комментарии