Раньше у меня был программный рейд с использованием (mdadm
) приводов sda
и sdb
. sdb
не удалось, и единственный способ перезагрузить систему - отключить второй жесткий диск.
Теперь добавил свежие sdb
и sdc
к моей настройке RAID. sda
является самым старым (поэтому, скорее всего, выйдет из строя), и это диск, с которого мы загружаемся (я думаю, как я могу проверить?).
Как я могу гарантировать и протестировать (через конфигурацию GRUB и т. Д.), Что если sda
не работает, я все равно смогу загрузить свою машину.
fdisk -l
:
Disk /dev/sda: 250.0 GB, 250000000000 bytes
255 heads, 63 sectors/track, 30394 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: 0x00000080
Device Boot Start End Blocks Id System
/dev/sda1 * 1 30064 241489048+ fd Linux raid autodetect
/dev/sda2 30065 30394 2650725 5 Extended
/dev/sda5 30065 30394 2650693+ fd Linux raid autodetect
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 30064 241489048+ fd Linux raid autodetect
Partition 1 does not start on physical sector boundary.
/dev/sdb2 30065 30394 2650725 5 Extended
/dev/sdb5 30065 30394 2650693+ fd Linux raid autodetect
Partition 5 does not start on physical sector boundary.
Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 30064 241489048+ fd Linux raid autodetect
Partition 1 does not start on physical sector boundary.
/dev/sdc2 30065 30394 2650725 5 Extended
/dev/sdc5 30065 30394 2650693+ fd Linux raid autodetect
Partition 5 does not start on physical sector boundary.
Disk /dev/md0: 247.3 GB, 247284695040 bytes
2 heads, 4 sectors/track, 60372240 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Alignment offset: 512 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
Disk /dev/md1: 2714 MB, 2714238976 bytes
2 heads, 4 sectors/track, 662656 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Alignment offset: 512 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
Это старый каштан. Короткий ответ заключается в том, что «grub-install» часто является неправильным ответом для программного RAID. Вот пример, где у меня есть 3-полосный массив RAID-1. Раздел / boot хранится в / dev / md0. Это устанавливает GRUB на каждый диск, так что в случае отказа одного диска вы можете загрузиться с одного из других дисков.
# grub
grub> find /grub/stage1
(hd0,0)
(hd1,0)
(hd2,0)
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdc
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
В будущих версиях GRUB он будет намного умнее, но CentOS 6 / RHEL 6 по-прежнему будет поставляться со старым GRUB.
Для проверки: Измените значение «timeout = 5» в файле grub.conf (в / boot) на что-то вроде timeout = 30. Затем поменяйте местами два диска перед повторным включением системы. Или измените порядок загрузки жестких дисков в BIOS.
(Естественно ... убедитесь, что у вас есть хорошие резервные копии и вы знаете, как вернуть их в правильную конфигурацию. Тестирование этого на одноразовой системе всегда является хорошей идеей.)