Перемещение / загрузка и MBR на новый диск

11

У меня есть сервер CentOS 6 с двумя жесткими дисками. Мой старый накопитель на 3 ТБ вызывал у меня некоторые проблемы, поэтому я перенес все на новый диск. Поскольку мой /и /homeраздел управляются LVM, их было легко перенести на новый диск. Теперь я хочу переместить мой /bootраздел и MBR, который заставляет все это запускаться.

Я загрузил живой компакт-диск и rsyncedповерх моего /bootраздела в раздел того же размера на моем новом диске. Я также попытался скопировать MBR с помощью следующих команд:

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1

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

Я пропустил шаг здесь? Или мне нужно еще кое-что сделать, чтобы все загрузилось, чтобы я мог полностью удалить свой старый диск?

РЕДАКТИРОВАТЬ: я начинаю думать, что rsync не был способ скопировать раздел / boot с одного диска на другой. Основываясь на этом руководстве , я попытался использовать команду дампа вместо этого. В этой команде я скопировал мой старый размонтированный загрузочный раздел в мой новый пустой смонтированный загрузочный раздел.

dump -0f - /dev/sdaX | (cd /mnt/boot; restore -rf -) 

Я получаю ошибку grub 15 при загрузке, которая лучше мигающего курсора, но я не знаю, ближе ли это к решению.

Cloudkiller
источник
Почему бы не grub-install на новый диск?
frostschutz
Каждый раз, когда мне надоело запускать grub-install, я заканчивал тем, что загружался и получал только приглашение grub.
Cloudkiller

Ответы:

3

Если два жестких диска имеют одинаковый размер (или новый больше), почему вы просто не скопировали старый диск на новый? Т.е.

dd if=/dev/sda of=/dev/sdb

Теперь, если новый жесткий диск больше, измените размеры разделов с помощью parted или gparted. Все это делается загрузкой с живого CD / USB-флешки.

Erik
источник
Они разного размера. 3Тб было просто излишним для сервера, поэтому я перешел к хищнику 1Тб, надеясь получить немного большую скорость. Несмотря на это, клонирование, похоже, не является проблемой. По крайней мере, часть LVM переместилась легко, и кажется, что загрузочный раздел полностью скопирован с моим последним дампом. Теперь я думаю, что проблема как-то связана с моим grub или MBR. Я думаю, проблема в том, что я недостаточно знаю о grub2 и о том, как он взаимодействует с LVM, чтобы исправить это.
Cloudkiller
использование dd, которое выполняет битовую копию, является древним способом миграции данных, особенно когда размеры дисков находятся в терабайтном диапазоне, и чаще всего объем фактических данных на диске составляет менее 10 ГБ; чистая свежая установка SUSE с множеством установленных библиотек позволяет загружать около 5 ГБ на диске, который я записываю в один файл, и использовать карту памяти емкостью 8 ГБ для перемещения этого файла tar, загрузочный раздел, будь то EFI или MBR, запускается лишь несколькими MB.
Рон
если вы можете использовать EFI или UEFI, а не BIOS, и иметь загрузочный раздел EFI через GPT, а не загрузочный раздел MBR & dos, это упростит задачу: просто отформатируйте раздел EFI как fat32 и скопируйте несколько МБ связанных файлов; в противном случае для MBR вы должны понять, как он работает, исправить адреса в нем относительно нового диска, а затем установить новую MBR на новый диск в первом секторе, чтобы BIOS мог получить к нему надлежащий доступ; EFI намного лучше, если ваше оборудование поддерживает EFI
ron
и ELILO лучше GRUB / GRUB2, слишком много вещей в grub, которые я никогда не использую и просто усложняю; один файл elilo.conf и все готово! если он не загружается только один файл для просмотра и исправления
Рон
4

Оказалось, что проблема была в использовании rsync или dump для копирования раздела / boot. Основываясь на ответе Эрика выше, я загрузил живой CD в режим восстановления и выполнил следующие команды dd.

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1
dd if=/dev/sda1 of=/dev/sdb1

Я снова запустил первые два dd, чтобы убедиться, что все скопировано правильно и не повреждено во время всех тестов, которые я проводил. Затем я запустил третий dd, чтобы скопировать загрузочный раздел со старого диска на новый. После этого я выключился, вытащил свой старый диск и загрузился без проблем в мой CentOS.

Должна быть некоторая проблема, вызванная использованием дампа на смонтированном диске, из-за которой копия работала некорректно. Независимо от того, дд сделал свое дело. Спасибо за вашу помощь всем.

Cloudkiller
источник
это хороший пример невежества - блаженства, так как оно сработало. Спросите себя, что сделал аварийный компакт-диск для устранения проблемы в MBR? Имеет ли в системе два диска одновременно, какой является sda, а какой - sdb, и когда вы удаляете старый диск и имеете только новый диск, это меняется, а затем становится sda или sdb?
Рон
в зависимости от того, что вы делаете, это может не иметь значения, но, как правило, лучше загружать или идентифицировать диски с помощью какого-то уникального метода, такого как идентификатор устройства или UUID.
Рон
использование dd и MBR похоже на использование точек и конденсатора на двигателе, а не на электронное зажигание с электронным впрыском топлива (EFI) ... предназначено для каламбура ... и не используется EFI, потому что это не до конца понятно.
Рон
3

Вместо дд я построил новый том. Больше шагов, но можно исправить проблемы, а не копировать их. У меня был слишком маленький / boot, который был поврежден. Я также использовал cento7 с grub2. Так что мои инструкции потребуют некоторых настроек или обновления до grub2, как предложил psusi. Я попытался отметить изменения.

ПРИМЕЧАНИЕ. Когда я использую «/ dev / sdx», я предполагаю, что вы знаете, что «sdx» необходимо изменить на любое имя диска / тома, который вы хотите использовать в качестве / boot.

  • Используйте fdisk (не cfdisk) для раздела с типом 83 (обычная часть linux) и пометьте как загрузочный.
    • Причина для fdisk: cfdisk запускает раздел слишком рано, нет места для загрузчика. Помните, что загрузчик должен соответствовать перед разделом.
  • Сделать файловую систему на разделе. Ext [234], xfs. другие ?.
  • Смонтировать в / boot
  • Скопируйте * .img файлы из старого / boot в / boot ... по крайней мере те, которые вы хотите сохранить.
  • Я также скопировал файлы vmlinuz- * из старого / boot в / boot ... не уверен, если это необходимо.
  • Запустите grub2-install / dev / sdx
    • Примечание 1: Если вы используете grub (а не grub2), я считаю, что правильной командой является grub-install / dev / sdx
    • Примечание 2: Это устанавливает перед разделом, который мы только что отформатировали, поэтому НЕ указывайте на / dev / sdx1!
  • Запустите grub2-mkconfig -o /boot/grub2/grub.cfg
  • Не забудьте обновить / etc / fstab для / boot

ссылки: http://www.ocztechnologyforum.com/fo...226#post373226 http://www.patriotmemory.com/forums/...ead.php?t=3696 http://thunk.org/tytso /blog/2009/02/...se-block-size/ https://ubuntuforums.org/showthread.php?t=1528529 https://wiki.centos.org/HowTos/Grub2

Арт Хилл
источник
2

Проблема в том, что вы не должны использовать ddдля копирования MBR, как это. Вам просто нужно переустановить grub на новом диске, чтобы получить правильно обновленную MBR. MBR содержит расположение файла этапа 2 grub, который изменился при восстановлении дампа.

Также вам следует перейти на grub2, так как наследие grub не поддерживалось годами, и grub2 не требует разделов, отличных от lvm / boot.

psusi
источник
Я использую grub2, это то, что установщик CentOS 6 поместил на мой диск. Кроме того, раздел non lvm / boot также был настройкой по умолчанию, предоставляемой CentOS. Я много раз пытался переустановить grub2 на диске, но заставить его работать мне было не по себе.
Cloudkiller