Восстановить софтверный RAID-1 в Hetzner
Чумовейшая чума.
Вчера вырубил все фильтры, которые блокировали разного рода рассылки в почте. И моментально свалилось три письма, с содержанием примерно о том что you have degraded array at /dev/mda0 и тому подобное — на все три партиции винта, стоящего в рейде и меньше года проработавшего. В Hetzner.
Просмотрел почту — валились такие письма уже месяца два. Написал в Hetzner — так мол и так — винт подох, не откликается по
hdparm -i /dev/sdb | grep SerialNo
HDIO_DRIVE_CMD (identify) failed: Input/output error
HDIO_GET_IDENTITY failed: No message of desired type
И пишут они мне человеческим языком — давайте, мол, запустим мы вам хардвар чек на 10 часов с отключением сервера.
Я так немножечко удивился — отвечаю — братюни, у меня винт из рейда выпал — вот, посмотрите —
cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[0]
1462516672 blocks [2/1] [U_]md1 : active raid1 sda2[0]
524224 blocks [2/1] [U_]md0 : active raid1 sda1[0]
2096064 blocks [2/1] [U_]unused devices:
А они такие — ну отлично — давайте тогда мы вам винт поменяем просто. 20 минут работы всего делов.
Ну, я по scp слил бекапы /etc, /home и /var — и говорю — ну, меняйте, чертяки языкастые. Даром чтоль вам плачу-то.
Пишут через полчаса — поменяли, проверяйте. Проверяю — и вправду, диск подключили, серийник его высвечивается. А вот в рейд его не впихнули. Пишу — мол, своими руками-то в рейд его колбасить? Отвечают — ну, своими и колбась, вот тебе ссылка на нашу вики что и как там делать.
ОК. Посмотрел вики. Сделал первому винту fdisk /dev/sda -l — запомнил все, что написали. Начал делать такое же для второго, новенького.
А винты-то кстати на полтора тера оба.
И второй в GPT притом. Правда, не сразу заметил. Ну, в общем, шаманил и шаманил с fstab, sfstab, cfstab, — даже потом в parted полез, — чтоб убедиться что последний ext3 не знает как системы до сих пор.
Что-то вроде было:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OKDisk /dev/sdb: 182401 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0Device Boot Start End #sectors Id System
/dev/sdb1 2048 4194303 4192256 fd Linux raid autodetect
/dev/sdb2 4194304 5242879 1048576 fd Linux raid autodetect
/dev/sdb3 5242880 2930276351 2925033472 fd Linux raid autodetect
/dev/sdb4 0 — 0 0 Empty
Warning: partition 1 does not end at a cylinder boundarysfdisk: I don't like these partitions — nothing changed.
(If you really want this, use the --force option.)
sfdisk -d /dev/sda | sfdisk /dev/sdb --force
Checking that no-one is using this disk right now ...
OKDisk /dev/sdb: 182401 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0Device Boot Start End #sectors Id System
/dev/sdb1 2048 4194303 4192256 fd Linux raid autodetect
/dev/sdb2 4194304 5242879 1048576 fd Linux raid autodetect
/dev/sdb3 5242880 2930276351 2925033472 fd Linux raid autodetect
/dev/sdb4 0 — 0 0 Empty
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition tableRe-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd (1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk (8).)
fdisk /dev/sda -lDisk /dev/sda: 1500.3 GB, 1500301910016 bytes
64 heads, 32 sectors/track, 1430799 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005d36cDevice Boot Start End Blocks Id System
/dev/sda1 2 2048 2096128 fd Linux raid autodetect
/dev/sda2 2049 2560 524288 fd Linux raid autodetect
/dev/sda3 2561 1430799 1462516736 fd Linux raid autodetect
fdisk /dev/sdb -lDisk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0×00000000Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2096128 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdb2 262 327 524288 fd Linux raid autodetect
Partition 2 does not end on cylinder boundary.
/dev/sdb3 327 182402 1462516736 fd Linux raid autodetect
Ничем в общем все заканчивалось — видать, где-то сам дурак был, недоразметил ему шапку дисковую. Хотя и dd пробовал подтесать ему, и с fdisk ms-dos-ил... В итоге просто в какой-то момент переписка моя с саппортом зашла в тупик и полез курить маны, куренные в последний раз года три назад.
В итоге забил мощный болт на их вики и несколькими мощными рывками кончил процесс следующим:
dd if=/dev/sda of=/tmp/sda.mbr bs=512 count=1
dd if=/tmp/sda.mbr of=/dev/sdb bs=512 count=1
fdisk /dev/sdb
После чего сохранил разметку партиции — ну а дальше дело техники —
mdadm /dev/md0 -a /dev/sdb1
mdadm /dev/md1 -a /dev/sdb2
mdadm /dev/md2 -a /dev/sdb3
Осталось 3 часа до синхронизации последней партиции. Радуюсь.
Привет, подскажи плиз. У меня тоже СОФТВЕРНЫЙ RAID-1 В HETZNER (2 x 750 GB SATA 3 Gb/s HDD (Software-RAID 1)). Не прошло и года как один винт отвалился, естественно винда не грузится. Они предлагают воткнуть новый, я не могу понять потеряются у меня данные или нет?
но странно, они говорят что винт отвален, а через SSH:
root@rescue ~ # hdparm -i /dev/sda | grep SerialNo
Model=ST31500341AS, FwRev=CC1H, SerialNo=9VS20NY0
root@rescue ~ # hdparm -i /dev/sdc | grep SerialNo
Model=ST31500341AS, FwRev=CC1H, SerialNo=9VS20NGR
root@rescue ~ #
Все будет хорошо, — но данные забакапь все равно.