Ситуация такая: на сервере массив raid-0 двух 3ТБ дисков и как я понял один из них посыпался.
В ДЦ подключили 2 дополнительных таких же по объему диска в такой же конфигурации raid-0.
Как мне объяснили конфигурация такая:
Свежие рабочие диски (sdc и sdd) собраны в массивы, которые названы md10, md11, md12.
Старые диски (sda и sdb) имеют имена массивов md0, md1, md2.
md0 это swap раздел, md1 это boot раздел, то есть данные, которые необходимо вытащить, лежат в md2.
Очень важно вернуть хоть какие-то данные... В саппорте сообщили, что удалось вытащить только 63 Гб из 6ТБ.
Нагуглил что можно юзать ddrescue, делаю
[console]root@rescue ~ # ddrescue --force --retrim --max-retries=2 --verbose /dev/md2 /dev/md12 /mnt/md12/ddrescue.log
[/console]
Вот недавно заново запустил и вижу такое:
[console]GNU ddrescue 1.16
About to copy 5974 GBytes from /dev/md2 to /dev/md12
Starting positions: infile = 0 B, outfile = 0 B
Copy block size: 128 sectors Initial skip size: 128 sectors
Sector size: 512 Bytes
Press Ctrl-C to interrupt
rescued: 3018 MB, errsize: 5971 GB, current rate: 32768 B/s
ipos: 808235 MB, errors: 8612, average rate: 7435 kB/s
opos: 808235 MB, time since last successful read: 0 s
Splitting failed blocks...
[/console]
То есть как я понимаю ddrescue сообщает что уже что-то спасено (в даном случае 3ГБ), но куда он это пишет???
Если посмотреть:
[console]root@rescue ~ # df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 16G 16G 0 100% /
udev 16G 0 16G 0% /dev
213.133.99.101:/nfs 247G 120G 114G 52% /root/.oldroot/nfs
aufs 16G 16G 0 100% /
tmpfs 3.2G 332K 3.2G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 6.3G 0 6.3G 0% /run/shm
/dev/md2 5.4T 4.6T 619G 89% /mnt/md2
/dev/md12 5.4T 63G 5.1T 2% /mnt/md12
[/console]
То на /mnt/md12 ничего не меняется, как было ровно 63 Гб (это мне смог спасти саппорт) так и есть.
Что я не так делаю, подскажите что-то, может стоит что-то другое попробовать, может надо задавать параметрами не имена устройств-массивов, а самих дисков (хотя я уже и так пробовал - тоже по df -h как будто бы ничего не пишется никуда, место не меняется) - я вообще в этом сильно путаюсь.
В общем помогите пожалуйста разобраться хоть с чем-то, все сайты которые там были в офлайне, очень много важных данных утеряно, скриптов и т.д.
Помогите вернуть данные со сбойного диска
ddrescue --force --retrim --max-retries=2 --verbose /dev/md2 /dev/md12 /mnt/md12/ddrescue.log
я надеюсь, ты понимаешь, что ты пишешь напрямую на диск т.е. (как я понял) перезаписывашь уже спасённые саппортом данные, находящиеся на этом диске?
и если пишешь напрямую на диск то, чтобы не возникало ошибок в данных спасённых ddrescue, раздел должен быть отмонтирован....
Понимаю, среди тех 63 ГБ не нашлось вообще ничего из того что мне нужно. Поэтому его смело можно перезаписывать.
Если отмонтировать, то куда писать лог?
То, что он не отмонтирован, может быть причиной того что ddrescue сообщает что спасает данные, а на самом деле ничего не пишется?
Вот с последнего запуска:
[console]root@rescue ~ # ddrescue --force --retrim --max-retries=2 --verbose /dev/md2 /dev/md12 /mnt/md12/ddrescue.log
GNU ddrescue 1.16
About to copy 5974 GBytes from /dev/md2 to /dev/md12
Starting positions: infile = 0 B, outfile = 0 B
Copy block size: 128 sectors Initial skip size: 128 sectors
Sector size: 512 Bytes
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 15167 MB, errsize: 5959 GB, errors: 43416
Current status
rescued: 252072 MB, errsize: 5722 GB, current rate: 4482 kB/s
ipos: 4414 GB, errors: 515600, average rate: 2649 kB/s
opos: 4414 GB, time since last successful read: 0 s
Splitting failed blocks...
[/console]
Куда оно отбекапило этих 252 Гб, по дискам все также:
[console]root@rescue ~ # df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 16G 16G 0 100% /
udev 16G 0 16G 0% /dev
213.133.99.101:/nfs 247G 120G 114G 52% /root/.oldroot/nfs
aufs 16G 16G 0 100% /
tmpfs 3.2G 332K 3.2G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 6.3G 0 6.3G 0% /run/shm
/dev/md2 5.4T 4.6T 619G 89% /mnt/md2
/dev/md12 5.4T 63G 5.1T 2% /mnt/md12
[/console]
Кто может хоть что-то подсказать?
Вот и зря вы пишете на диск с поврежденными данными - чем больше вы туда пишете, тем ниже шанс вытащить то, что еще можно спасти. Увы, но посоветовать ничего не могу.
Вот и зря вы пишете на диск с поврежденными данными - чем больше вы туда пишете, тем ниже шанс вытащить то, что еще можно спасти.
Ну, вообще-то, логичным было-бы забить новый диск нулями dd if=/dev/zero of=/dev/[ЧЕГОТО_ТАМ]
Потом слить на него все со старого диска (дисков) dd if=/dev/XXX of=/dev/YYY conv=noerror,sync
Чтобы понимать что происходит - в соседней консоли запустить watch -n60 'sudo kill -USR1 $(pgrep ^dd)'
Лить именно на нулевый диск.
Потом, если определились ФС, пройтись по ним fsck, если не определились (так как слили мы кучу месива, а не данных), то сначала testdisk'ом прошвырнуться на наличие ФС, этот найдет все что угодно, единственное что, он любит вместо 0х83 лепить тип ФС 0х07, но то можно и руками поправить... А потом уже fsck... ну а потом монтировать и смотреть что выжило.
Всех с Новым годом!
сделалdd if=/dev/zero of=/dev/[ЧЕГОТО_ТАМ]
запускал, как я понял, остановка идет на 68ГБ и дальше ничего не копируется, хотя непонятно почему, как я понял noerror как бы должен был пропускать ошибки и заполнять нулями.Потом слить на него все со старого диска (дисков) dd if=/dev/XXX of=/dev/YYY conv=noerror,sync
Ну фиг с ним, пытаюсь проверить эти 68 Гб, пробую подмонтировать новый диск:
[console]mount /dev/md12 /mnt/md12[/console]
не монтируется, выдает ошибки, прохожусь по нему fsck - еще другие ошибки, вообще уже запутался...
Может кто подскажет такое, я точно знаю что у меня такой расклад:
Disk /dev/sda: 3000 GB (=> 2794 GiB)
Disk /dev/sdb: 3000 GB (=> 2794 GiB)
Disk /dev/sdc: 3000 GB (=> 2794 GiB)
Disk /dev/sdd: 3000 GB (=> 2794 GiB)
Первый 2 диска - с данными, вторые 2 - чистые подключенные. Первый диск /dev/sda - полностью отказал - в нем то и корень проблемы, /dev/sdb полностью рабочий. Но они в массиве raid-0 как устройство /dev/md2 который уже 6ТБ.
Логично предположить, что мне нечего восстановить с /dev/sda не удастся так как он полностью отказал намертво, но ведь /dev/sdb полностью рабочий - по идеи с него можно вытащить данные, но как я понимаю ситуация усложняется тем, что они в массиве и по отдельности я чтоли не могу доставать данные.
Я совсем запутался, я до сих пор путаюсь в понятиях: диск/устройство/массив/раздел, но очень нужны данные, я согласен потерять половину данных, но как вернуть остальные.
Может в таком случает не стоит работать со всем массивом, где мешает нерабочий винт, а как-то напрямую с /dev/sdb который живой, но как я понял, я чтоли не смогу достать файлы, так как нету файловой системы.
Подскажите как выдернуть данные с /dev/sdb, а то вроде бы и гуглю и изучаю сабж, но все как-то безтолку...
Правильно понимаешьно как я понимаю ситуация усложняется тем, что они в массиве и по отдельности я чтоли не могу доставать данные.
dd вылетает или просто делает вид что ничего не копирует???запускал, как я понял, остановка идет на 68ГБ и дальше ничего не копируется, хотя непонятно почему, как я понял noerror как бы должен был пропускать ошибки и заполнять нулями.
Если второе то смотреть на вывод sudo kill -USR1 $(pgrep ^dd) в соседней консоли.
Если копирование не отвалилось, значит все идет нормально, просто когда dd попадает на битые области - его скорость ОоОооочень сильно падает.
Копировать нужно не part2part а disk2disk (т.е. if=/dev/sda of=/dev/sdc; if=/dev/sdb of=/dev/sdd)
потом заганять на них testdisk, который должен опеделить по LVMразделу на каждом диске
после этого собирать уже новые диски в масив
Потом опять testdisk, уже по масиву
ну а потом уже fsck
dd вылетает или просто делает вид что ничего не копирует???
Если второе то смотреть на вывод sudo kill -USR1 $(pgrep ^dd) в соседней консоли.
При запущенном kill -USR1 $(pgrep ^dd) в другой консоли прекращается вывод статы в первую, то есть до этого каждые 60 сек показывался новый объем, а в какой-то момент все замирает на 68 ГБ - как бы отбрыв или зависания (без приглашения мигающим курсором)
так может тогда вообще не стоит копировать никуда сбойный /dev/sda - я уже готов потерять 3 ТБ, хоть бы остальные 3 вернуть или так невозможно в случае raid-0 массива?Копировать нужно не part2part а disk2disk (т.е. if=/dev/sda of=/dev/sdc; if=/dev/sdb of=/dev/sdd)
я вообще не в курсе как это делается, мне кажется это вообще на уровне ДЦ делают, там же наверно и raid аппаратный, разве я смогу самостоятельно это сделать?после этого собирать уже новые диски в масив
Кароче кошмар, как вернуть хоть какие-то данные непонятно. Буду пробовать.
Можно рискнуть, скопировать только второй диск (то только в том случае если раздел с даными меньше 3-х тер, иначе точно не проскочит), а первый пустым тулить в raid...так может тогда вообще не стоит копировать никуда сбойный /dev/sda - я уже готов потерять 3 ТБ, хоть бы остальные 3 вернуть или так невозможно в случае raid-0 массива?
UPD
Втыконул, когда писал, что там RAID0
Копировать прийдется оба диска, причем сумарные потери составят в два раза больше чем количество посыпавшихся блоков на сбойном диске так как в нулевом рейде инфа одновременно пишется на два диска:
DRIVE0 || DRIVE1
_________||_________
MD0 file1_part1 || file1_part2
file1_part3 || file1_part4
_________||_________
MD1 file2_part1 || file2_part2
file2_part3 || file2_part4
_________||_________
MD2 file3_part1 || file3_part2
file3_part3 || file3_part4
и т.д
Тоесть на каждом диске ровно по половине инфы с каждого раздела
Во-первых, зачем вы используете raid-0, он не надёжен, да вы и сами это видите, во-вторых, если вам нужны ваши данные, то едьте в ДЦ, отключайте и забирайте посыпавшиеся диски, далее едете с этими дисками либо в специализированный центр производителя дисков, т.е. WD, Seagate или какие у вас там диски, у них есть услуга по восстановлению данных с их дисков, кроме всего прочего они ещё и backup будут хранить какое-то время. Естественно это всё не дёшево, но этот способ даёт максимальный шанс на восстановление большей части информации, даже с повреждённых секторов. Либо можете обратиться просто в фирму по восстановлению данных с дисков, но здесь вероятность восстановления данных будет ниже, чем у производителя, но выше чем то, что сможете сделать вы программно.
А так, backup, backup и ещё раз backup, раз вам важны ваши данные, тем более у вас RAID-0, а не RAID-10. Ну либо купите соответствующую опцию в ДЦ.
Удачи.
ОГОВо-первых, зачем вы используете raid-0, он не надёжен, да вы и сами это видите, во-вторых, если вам нужны ваши данные, то едьте в ДЦ, отключайте и забирайте посыпавшиеся диски, далее едете с этими дисками либо в специализированный центр производителя дисков, т.е. WD, Seagate или какие у вас там диски, у них есть услуга по восстановлению данных с их дисков, кроме всего прочего они ещё и backup будут хранить какое-то время.
не то слово, ДЦ в Германии :)Естественно это всё не дёшево
Это как минимум дорого, если это 6ТБ...А так, backup, backup и ещё раз backup, раз вам важны ваши данные, тем более у вас RAID-0, а не RAID-10.
Пока что заполняет нулями уже вторые сутки, уже почти 5ТБ нулей есть :)
Потом начну танцы с бубном...
А вы его нулями в рейдмасиве забиваете???Пока что заполняет нулями уже вторые сутки, уже почти 5ТБ нулей есть
Это как минимум дорого, если это 6ТБ...
Не так уж и дорого увеличить дисковое пространство в два раза и собрать на нем RAID1+0
Ведь, когда вам приспичило, купили же два новых диска, так почему бы не купить их зарание
и не иметь такого гемороя???
valet, 'ого' вы скажете, когда увидите цену восстановления.
drBatty, Ага, за 6 тэр в штуку баксов не влезешь))))
Да, а как надо?А вы его нулями в рейдмасиве забиваете???
ну как бы выхода другого нет, года 2 работало без каких-либо проблем, получается все это время я бы их оплачивал...Ведь, когда вам приспичило, купили же два новых диска
не сомневаюсь, поэтому буду пытаться что-то сделать сам...'ого' вы скажете, когда увидите цену восстановления.
Нужно все, кроме fsck, делать вне масивов. Работать только с физическими накопителями, а не с логическими... Тоесть нулями нужно забивать /dev/sd{c,d} а не /dev/md{10,11,12}Да, а как надо?
Так же и копировать...
Почитайте внимательно мои посты выше.
ЗЫ
Естественно, перед всеми действиями, вывести все диски с масивов.
Сдается мне что это на порядок дешевле получится, чем за восстановление заплатить)получается все это время я бы их оплачивал...
А если делать в массиве, чем это грозит?Нужно все, кроме fsck, делать вне масивов.
Разве это реально, могу ошибаться, но разве это делается не апаратно на уровне ДЦ, ведь raid там как бы аппаратный, а не программный...вывести все диски с масивов.
Так а что, вы считаете своими силами это сделать невозможно, зачем вообще тогда какие-либо манипуляции...Сдается мне что это на порядок дешевле получится, чем за восстановление заплатить)