Назад | Перейти на главную страницу

Исправление неудачного обновления grub на RAID

Мы только что обновили выделенный сервер с Debian Lenny (5.0) до Debian Squeeze (6.0). В процессе обновления grub не удалось. Я (возможно, по глупости) последовал совету в https://askubuntu.com/a/39697/41567, и grub успешно удален и больше не устанавливается. Ошибка:

root@gaia:naught101#  grub-install /dev/sda
/usr/sbin/grub-setup: warn: This msdos-style partition label has no
post-MBR gap; embedding won't be possible!.
/usr/sbin/grub-setup: error: embedding is not possible, but this is
required when the root device is on a RAID array or LVM volume.
root@gaia:naught101#  grub-install --recheck /dev/sda
/usr/sbin/grub-setup: warn: This msdos-style partition label has no
post-MBR gap; embedding won't be possible!.
/usr/sbin/grub-setup: error: embedding is not possible, but this is
required when the root device is on a RAID array or LVM volume.
root@gaia:naught101# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.26-2-amd64
Found initrd image: /boot/initrd.img-2.6.26-2-amd64
Found linux image: /boot/vmlinuz-2.6.26-1-amd64
Found initrd image: /boot/initrd.img-2.6.26-1-amd64
     No volume groups found
done
root@gaia:naught101#

Я отправил электронное письмо нашей службе технической поддержки на Hetzner.de, и они сказали, что это проблема программного обеспечения, и поэтому я смогу решить ее. Однако в системе используется RAID, и я не уверен, как должны быть настроены разделы (и даже если я могу изменить их соответствующим образом. Таким образом, разделы будут:

root@gaia:naught101# parted -l
Model: ATA SAMSUNG HD403LJ (scsi)
Disk /dev/sda: 400GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
   1      512B    2155MB  2155MB  primary  linux-swap(v1)  raid
   2      2155MB  400GB   398GB   primary  ext3            raid


Model: ATA SAMSUNG HD403LJ (scsi)
Disk /dev/sdb: 400GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
   1      512B    2155MB  2155MB  primary  linux-swap(v1)  raid
   2      2155MB  400GB   398GB   primary  ext3            raid


fModel: Linux Software RAID Array (md)
Disk /dev/md0: 2155MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system     Flags
   1      0.00B  2155MB  2155MB  linux-swap(v1)


Model: Linux Software RAID Array (md)
Disk /dev/md1: 398GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
   1      0.00B  398GB  398GB  ext3


root@gaia:naught101# fdisk -l

Disk /dev/sda: 400.1 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 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: 0x00012254

     Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         262     2104514+  fd  Linux raid
autodetect
/dev/sda2             263       48641   388604317+  fd  Linux raid
autodetect

Disk /dev/sdb: 400.1 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 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: 0x000e7f04

     Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104514+  fd  Linux raid
autodetect
/dev/sdb2             263       48641   388604317+  fd  Linux raid
autodetect

Disk /dev/md0: 2154 MB, 2154954752 bytes
2 heads, 4 sectors/track, 526112 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 397.9 GB, 397930725376 bytes
2 heads, 4 sectors/track, 97151056 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table
root@gaia:naught101#

Я действительно не знаю, что с этим делать. http://ubuntuforums.org/showthread.php?t=1539205 предлагаю изменить флаги разделов, но я не думаю, что смогу сделать это при работающем сервере? В настоящее время я застрял с не загружаемым сервером (к счастью, он все еще работает). Кто-нибудь знает решение этой проблемы?

Наше решение заключалось в том, чтобы удалить /dev/md0 и соответствующие разделы подкачки (/dev/sda1/, /dev/sdb1), а затем повторно добавьте их, освободив 8 МБ в начале (рекомендуемый минимум 1 МБ, но в последних версиях Linux используется 2 МБ; мы не пропустим лишние 6 МБ), и установите grub в свободное место на начать с grub-install /dev/sda; grub-install /dev/sdb; update-grub.

У нас действительно были проблемы с удалением /dev/md0, и поэтому просто удалил, установил grub поверх и перезагрузился с md0 отсутствует (так что подкачки нет). Это нормально, если у вас достаточно барана. Затем мы воссоздали его и снова перезагрузили. Все это было сделано внутри системы, а не с liveCD (мы на другом континенте) или системы спасения.

Это, вероятно, один из лучших руководств по модификации RAID-массивов mdadm для наших целей: http://notes.benv.junerules.com/linux-software-raid-disk-upgrades/