У меня есть сервер Centos 6, расположенный в облачной среде, и я хочу переместить корневой раздел с существующего жесткого диска на другой.
На исходном жестком диске (/ dev / xvda1) есть другие папки, например / var
, / usr
, и я не хочу их перемещать, поэтому я не может просто dd
весь старый жесткий диск на новый (/ dev / xvdh1).
Теперь у меня rsync
все содержимое из /
(кроме упомянутых выше) в / dev / xvdh1
и / var
/ usr
на другой жесткий диск (/ dev / xvdg). Я изменил следующий файл на новом жестком диске, чтобы использовать новый UUID:
Вот результат blkid
:
/dev/xvdh1: UUID="9b84e28c-5a12-4889-804a-753e56645333" TYPE="ext4"
строка в / etc / fstab
, которая выполняет монтирование /
:
UUID="9b84e28c-5a12-4889-804a-753e56645333" / ext4 defaults 1 1
/boot/grub/grub.conf
:
default=0
timeout=1
title CentOS 6 (2.6.32-573.18.1.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-573.18.1.el6.x86_64 ro root=UUID=9b84e28c-5a12-4889-804a-753e56645333 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD console=ttyS0,115200 crashkernel=auto SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-2.6.32-573.18.1.el6.x86_64.img
У меня также есть dd
код загрузочного сектора от / dev / xvda
до / dev / xvdh1
:
dd if=/dev/xvda of=/dev/xvdh bs=446 count=1
Вывод метаданных обоих жестких дисков:
# file -s /dev/xvda
/dev/xvda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8cc500, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 16775168 sectors, code offset 0x48
# file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)
# file -s /dev/xvdh
/dev/xvdh: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8cc500, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 4192256 sectors, code offset 0x48
# file -s /dev/xvdh1
/dev/xvdh1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)
После выполнения всех вышеуказанных шагов , Я отсоединил старый жесткий диск и подключил новый жесткий диск как / dev / xvda1
, затем загрузился. Однако, когда я загружаю машину, я застрял с ошибкой на grub:
Booting from Hard Disk...
Geom Error
Размер / dev / xvda1
и / dev / xvdh1
разные, и, очевидно, их UUID тоже отличается . Итак, мой вопрос : нужно ли мне делать grub-install
, чтобы внести изменения, которые я сделал для grub.conf
в код загрузочного сектора? Или в этом нет необходимости, потому что загрузочный код тот же самый, а информация о корневом разделе никогда не сохраняется там, где загрузочный код сможет прочитать grub.conf
, чтобы получить информацию без дополнительных шаг нужен?
Пожалуйста, пролейте свет, если мне нужно изменить какой-либо другой файл, чтобы grub загружал сервер, спасибо. (версия grub: 0.94)
Да, я считаю, что вам следует запустить grub-install
, поскольку расположение (указано ниже) зависит от файловой системы, содержащей этап 2.
Вы говорите, что скопировали загрузочный сектор со старого диска ( / dev / xvda
) в первый раздел. на новом диске ( / dev / xvdh1
). Разве код не должен находиться в первом секторе нового диска, а не в разделе?
Начальный этап содержит указатель на второй этап, как вы предлагаете, и отмечен на рисунке в этом ответе: https: //unix.stackexchange.com / a / 258867/216116
Кроме того, Debian настроен для запуска grub-install
во время регулярных обновлений программного обеспечения, поэтому выполнение grub не должно причинить вреда (в) вашем решении. -установите
как хотите (конечно, с правильными аргументами).