Сломался у товарищей значит Intel Entry Storage System SS4000-E. Дёрнулось электричество и аппарат сказал что диски у него теперь девственные и совсем новые. А раз там Linux Inside, притащили мне искать потерянное добро.
На дисках линуксовый программный RAID10. Вставили два страйповых диска в Debian, он их с радостью и нашёл:
denis@debian:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[2]
262976 blocks [4/1] [__U_]md3 : active raid1 sdb2[1] sda2[3]
131456 blocks [4/2] [_U_U]md1 : active raid10 sda3[0] sdb3[2]
1464359680 blocks 64K chunks 2 near-copies [4/2] [U_U_]
Системник, swap и массив с данными. Только вот на массиве с данными нет разделов – fdisk поругался что-то на выходящее за рамки и ничего не показал. O’Key, берём testdisk и делаем всё что надо:
testdisk /dev/md1
В результате на /dev/md1 имеем два раздела с XFS:
debian:~# cfdisk -P s /dev/md1
Partition Table for /dev/md1First Last
# Type Sector Sector Offset Length Filesystem Type (ID) Flag
— ——- ———– ———– —— ———– ——————– —-
Pri/Log 0 22271 0# 22272 Free Space None
1 Primary 22272 2927646463 0 2927624192 Linux (83) None
Pri/Log 2927646464 2927652607 0 6144 Free Space None
2 Primary 2927652608 2928062207 0 409600 Linux (83) None
Pri/Log 2928062208 2928719359 0 657152 Free Space None
Далее пересобираем массив с разделами:
debian:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
debian:~# mdadm --assemble /dev/md_d1 --auto=mdp /dev/sd[ab]3
mdadm: /dev/md_d1 has been started with 2 drives (out of 4).
Монтируем чтобы обновить журнал (или лучше было обнулить его?). Смотрим, что есть (ничего нет). Размонтируем и пару раз (для надёжности) проходим xfs_repair:
mount /dev/md_d1p1 /mnt/raid/
umount /mnt/raid/
xfs_repair /dev/md_d1p1
xfs_repair /dev/md_d1p1
mount /dev/md_d1p1 /mnt/raid/
Список имевшихся файлов можно посмотреть командой
xfs_ncheck /dev/md_d1p1
Всё что удалось спасти валяется в
/mnt/raid/lost+found/
Аминь.
ЗЫ ссылка по теме: http://em7210.kwaak.net/cgi-bin/trac.cgi
Про пару раз для надежности. На второй раз еще что-то починил? А если три раза — еще надёжней? :D
Дат атм всё круто порушилось, даже второй раз всё не починил…
с другой стороны это явный минус xfs ;)
Ага…и так чинить много раз для надёжности системы)))
Короче, все так и есть, кроме последнего пункта. Я абсолютно так же делал все, ход мысли у меня был правильный, пока я не наткнулся на эту статью и не понял, что самому землю носом рыть далее бессмысленно. ;)
Короче, я заранился (как говорили в моем зелено-пузыристом детстве) на xfs_repair, оно сцуко вываливается на третьем шаге своего похождения. xfs не находится и на здоровом разделе, т.е. его нужно ремонтировать. (кстати, почему? может, тестдиск немного не так отрабатывает?) Теперь мы тут взяли в руки gdb и пупыримся, если добьемся результатов – отпишемся, вдруг кому поможет.
testdisk нужен чтобы найти xfs раздел на диске. Нужно следить чтобы раздел оказался правильного размера. Без раздела xfs_repair бесполезен.
А как определить, что “раздел оказался правильного раздела”? (размера, я так понимаю?) Тестдиск отрабатывает без проблем, и его данные похожи на правду. Список файлов по xfs_ncheck выводится (впрочем, неудивительно).
размер должен быть чуть меньше размера зеркала
День добрый, не могу победить стадию “берём testdisk и делаем всё что надо”
как делаю:
1. testdisk /dev/md1
2. Select the partition table type выбираю none
3. Analise находим XFS 4
4. T: change type выбираю XFS 4
5. Затык здесь: write isn’t available because the partition table type “None” has been selected.
При выборе на пункте 2 [Intel] определяет партицию как linux.
Объясните пожалуйста подробнее как починить с помощью testdisk
очевидно надо выбрать что-то другое в “partition table type” :)
Дык, я ж говорю, что партиция в этом случае определяется как Linux но нам же нужно XFS 4 :(
вроде так и должно быть. Тип раздела – Linux, на разделе – XFS. Давно это было, не помню я.
Денис привет.
У меня проблема таже, только RAID в другой конфигурации, а именно RAID 5 из 4 дисков каждый по Террабайту – один из них отдан под чексумм (была там такая “супер спасительная опция”).
Дошел до сей комманды:
mdadm –assemble /dev/md_d1 –auto=mdp /dev/sd[ab]3
Понимаю что для моей конфигурации должны быть некие иные параметры?
Буду рад любой помощи, e-mail указан!
Спасибо.
мне кажется, данный случай зависит от того, что определил mdadm автоматически. Если в `cat /proc/mdstat` есть раздел с данными, то наверное можно что-то пытаться достать, вероятно assemble надо так:
mdadm –assemble /dev/md_d1 –auto=mdp –level 5 /dev/sd[abcd]3
mdadm –assemble /dev/md_d1 –auto=mdp –level 5 /dev/sd[abcd]3
к сожалению не отработала, не знает такого параметра как -level
я пересобрал в автомате (добавив диски) как в предыдущем примере.
вытащил немного файлов – это уже хорошо, но результат не совсем тот что я ожидал.
Может можно уточнить правильную комманду? (хотя mdadm понимает и так что за райд)
Или есть возможность связаться с Вами? Я так понимаю мы живем и работаем в одной стране :)
тел: 26671313 (код страны тотже)
я так понимаю что ??p1 – это порядковый номер логического диска на RAIDе.
пытаюсь восстановить md_d1p2 (основной по сути) но все что он показывает после маунтирования это ?Public и зайти нет возможности!
xfs_repair сильно ругался
мжно посмотреть в логе тут https://www.dropbox.com/s/eupaeuwr4i768ni/xfs-repair-log-01
спасибо.