Крэш и восстановление диска
 Описывается физический крэш, то есть разрушения, вызванные физически малообратимыми процессами в накопителе на жестких магнитных дисках.

Названия файлов и программ указываются применительно к BSD системам, так как коммерческие системы имеют:

что имеют какое оно
подробную документацию где всё написано
безошибочное программное обеспечение которое всё сделает само
сертифицированных специалистов которые всё знают и чинят сами
brand name платформы которые никогда не отказывают
RAID который является патентованным средством от тараканов

Таким образом мы оставим вопросы типа \"Где хранится диагностика о номере банки диска ND-40E, которая скрежещет и мешает спокойно спать мне, когда подруга перед тем как пойти в школу запускает эмулятор mac под unicos?\" счастливым обладателям этой техники.

0. У Вас всё хорошо и всё работает.

Не обольщайтесь. Делайте backupы той информации, потеря которой опасна.

Самый простой способ - gzip на соседний диск или на соседнюю машину. Посмотрите, в /etc не так много чего, а Вы сможете его восстановить? Сделайте backup /var/mail и, если у Вас есть пользователи, хотя бы по несколько Mb у каждого пользователя.

Учтите, что backup на физически тот же диск практически бесполезен. Самая частая авария - это отказ устройства целиком.

Если у Вас в LAN есть соседи - договоритесь об обмене backup\'ами. Не забывайте их криптовать, если у Вас паранойя и запишите пароль на стене, если склероз.

Попытайтесь оценить стоимость информации на Вашем диске и стоимость её потери в каких-нибудь условных единицах. Если установка дополнительного оборудования принесёт ущерб не только Вам, то доведите эту информацию до заинтересованных лиц.

Запишите конфигурацию диска куда-нибудь на бумажку или соседнюю машину. Полезно иметь сохранённый в правильном месте результат работы следующих команд:

cat /etc/fstab
disklabel disk
fdisk disk
tunefs -p disk

Если Ваша лень превышает Вашу мнительность, то пошлите эти параметры по почте какому-нибудь ответственному товарищу с комментарием: \"ключ от системы, хранить ответственно и вечно\".

Также полезно посмотреть на результат работы dumpfs disk, но у меня ещё не было случая, чтобы он реально понадобился. я бы был очень признателен, если кто-нибудь мне сообщит, как при ремонте диска реально его использовать.

1. Произошёл крэш.

Если авария только-что произошла и далее всё спокойно (то есть дыма нет, скрежета нет, стука нет) то не выключайте компьютер физически из сети! Диск, который начал сбоить может не стартовать после выключения питания.

Оповестите заинтересованных лиц об аварии. Не нужно пытаться ремонтировать чужую машину. Обычно это плохо кончается, позовите хозяина, пусть он сам займётся приятной работой.

Оцените возможный ущерб от потери информации, вспомните про backup\'ы - когда они были и насколько соответствовали, оцените материальные и временные ресурсы по замене оборудования.

Вспомните, у кого в локальной сети есть достаточно места для сброса информации по nfs, попросите подготовить место (разрешить полное и безусловное монтирование на Ваш ip номер) и проверить, что оно работает, причём со всеми правильными правами. Помните, что практически всегда легко одолжить ide\'шник на 4..6Gb или потереть какой-нибудь proxy cache или news archive.

Если машина в сети - попробуйте кого-либо попросить собрать у себя функциональный эквивалент, перенести туда демоны или затычки и проставить alias ip номера.

Если у Вас есть электронщик - то позовите его, нормальный электронщик может по звуку/стуку/температуре и мерцанию лампочек приблизительно диагностировать неисправность и возможность ремонта.

Возможные неисправности:
  • Если у Вас были просто сбои на поверхности, то Вы рискуете немногим.
  • Если, к примеру, отвалилась одна фаза на вращалке и накопитель не экзотический, то его вполне можно починить.
  • Если у Вас головка задрала поверхность, то это очень плохо, но есть и такие умельцы, которые могут юстировать головы.
  • Но если у Вас поплыла из-за перегрева или почему ещё серво-поверхность или поехал подшипник в ступице - то нужно действовать достаточно оперативно.
  • Если у Вас последствия перегрева, то постарайтесь проветрить комнату. Мне как-то именно это помогло, диск на пару часов восстановился, был скопирован после чего отправился на помойку.

Если электронщик скажет, что у Вас сбоит дисковый контроллер, ни в коем случае не пытайтесь куда-то сохранять, переписывать и исправлять данные! В этом случае Вы просто получите искажённые битики, переставленные блоки и вообще что угодно. Причём у Вас появится отличный от нуля шанс записать полученный мусор обратно на диск.

При таком раскладе машину нужно выключать, контроллер чинить. Пока его нет поищите другой, на самом деле scsi диски обычно переносимы между простыми контроллерами легко, а сложные (типа dpt) пишут что-то своё в начало диска, то есть Вы получаете просто сдвиг на несколько секторов.

Если контроллер организовывал RAID-что_то_там и сдох, причём таких же на складе нет и не будет, то вспомните, что RAID - это патентованное средство от тараканов в Вашей голове и, по-видимости, начало работать. Попросите маркетоидов, которые Вам впарили этот хлам, возместить компенсацию за всё то добро, которое они Вам причинили.

IDE диски обычно совместимы без каких-либо вопросов, потому как нормальному unix от bios нужно только прочитать самое начало диска (начальный загрузчик) и передать на него управление. Во всём остальном они почти одинаковы.

2. Сохранение информации

Первым делом необходимо попытаться получить утерянную информацию. Для этого достаточно монтировать диск в режиме -ro (read only).

Постарайтесь найти конфигурацию диска которую Вы предварительно на случай аварии записали куда-нибудь на бумажку или соседнюю машину.

Переведите систему в single user, если она ещё не там (или ещё где).

2.1 Радикальное средство: dd

Попробуем скопировать диск как устройство куда-нибудь. Это делается командой dd. Прочитайте на отдельной машине man dd.

Пример для FreeBSD: сыплется корень копируем его на /usr Эта операция имеет смысл, если /usr - другой hdd. Не пытайтесь делать копию \"неисправных\" файлов в исправные! Это часто приводит к разрушению информации на соседних секторах/блоках.

nik.pu.ru# dd if=/dev/rwd0a of=/usr/wd0a
524288+0 records in
524288+0 records out 
268435456 bytes transferred in 255.306025 secs (1051426 bytes/sec)
nik.pu.ru#

После чего у меня появился файл

-rw-r--r--   1 root  wheel  259361280 15 авг 03:00 wd0a
где содержится то, что было в корневом разделе.

я теперь могу спокойно перелиться на новый hdd, а затем скопировать этот файл куда-нибудь, сделать там fsck, в общем то что можно - спасено.

Поэтому, если копирование пройдёт - можно отереть пот со лба, страшное позади, остальное вопрос времени.

2.2 Пофайловое копирование

Возможна ситуация, при которой на консоли сбои, ругань, прочая задница и ничего не прочитать. Это плохо. Как Вы понимаете. При этом появляется ругань на тему \"что-то там плохо и у диска time-out\" и прочая.

Посмотреть, можно ли смонтировать диск форсированно, обычно это получается если монтировать read only, плюс ключик -f
mount -f -o ro /dev/disk /mnt

Если получилось - аккуратно копируйте, начиная с важной информации, на другую ленту, живой диск, backup nfs и по дискетам :-)

Обратите внимание, что в плохой ситуации как только Вы наступите на плохой блок, то всё зависнет. Поэтому чаще (например после копирования каждого файла) делайте sync или монтируйте destination disk (то есть тот, куда копируете) с ключом sync в /etc/fstab.

2.3 Ремонт остатков

Только после того, как данные спасены, можно немного расслабиться и посмотреть, а что же собственно с hdd произошло. Самый простой способ - запустить
fsck -y disk
и подождать куда и как всё это грохнется.

Если Вы вытащили не всю информацию, то попытайтесь перед fsck -y disk сделать fsck -n disk, посмотреть, затем просто fsck disk и поотвечать на вопросы.

В любом случае диск полезно переразметить при помощи newfs. В старые добрые времена имел смысл формат bad144, который позволял использовать диски с bad blocks, устанавливая их как при помощи начальной инициализации (man bad144), так и при помощи программки badsect (man badsect). У меня сложилось впечатление, что с большими дисками (>2Gb) она не работает. я не разбирался подробно.

В любом случае самый простой способ разбирательства с \"полуисправными\" дисками - это или замена, или установка в неответственные места (копии cd, proxy кэш, ньюсопомойка).

3. Восстановление информации

Обратите внимание, что процедура восстановления обычно позволяет одновременно переконфигурировать компьютер, установить свежую версию os, подключить дополнительный backup device и навести порядок.

Не забудьте сохранить информацию о характеристиках дисков, которые Вы установили, в отдельной тетради и запереть её в сейф.

В качестве backup я рекомендую использовать scsi streamer для ленты dds3 (это от 12 до 24Gb в зависимости от упакованности информации).