web-dev-qa-db-ja.com

/ bootとMBRを新しいドライブに移動する

2台のハードドライブを搭載したCentOS 6サーバーがあります。古い3TBドライブで問題が発生したため、新しいドライブに移動します。私の/および/homeパーティションはLVMによって管理されているため、新しいドライブに簡単に移行できます。今、私は/bootパーティションとそれをすべて起動させるMBR。

ライブCDをロードし、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 -) 

起動時にグラブエラー15が発生します。これはカーソルの点滅よりも優れていますが、それが解決策に近いかどうかはわかりません。

11
Cloudkiller

2つのハードディスクのサイズが同じ(または新しいハードディスクの方が大きい)場合、古いディスクを新しいディスクにコピーしないのはなぜですか?つまり.

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

ここで、新しいハードディスクの方が大きい場合は、パーティションサイズをpartedまたはgpartedに変更します。これはすべて、ライブCD/USBスティックからの起動です。

3
erik

Rbootまたはダンプを使用して/ 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

最初の2つのddをもう一度実行して、すべてが正しくコピーされ、すべてのテストで破損していないことを確認しました。次に、3番目のddを実行して、ブートパーティションを古いドライブから新しいドライブにコピーしました。その後、シャットダウンして古いドライブを引き出し、問題なくCentOSにブートしました。

マウントされたドライブでダンプを使用することにより、コピーが正常に機能しなくなる問題があったはずです。とにかく、ddはトリックをしました。皆様のご協力ありがとうございます。

4
Cloudkiller

Ddではなく、新しいボリュームを作成しました。手順は増えますが、問題をコピーするのではなく修正する場合があります。破損した/ bootが小さすぎました。また、cento7とgrub2を併用していました。そのため、私の指示では、psusiが示唆するように、いくつかの調整またはgrub2へのアップグレードが必要になります。変更点に注意してみました。

注:「/ dev/sdx」を使用する場合、「sdx」を、/ bootにしたいディスク/ボリュームの名前に変更する必要があることを知っていると想定しています。

  • Fdisk(cfdiskではなく)を使用して、タイプ83(通常のLinuxパーツ)でパーティション化し、起動可能としてマークします。
    • Fdiskの理由:cfdiskは、ブートローダー用の領域がないため、パーティションをすぐに起動します。ブートローダーはパーティションの前に収まる必要があることを忘れないでください。
  • パーティションにファイルシステムを作成します。 Ext [234]、xfs。その他?.
  • / bootにマウント
  • 古い/ bootから* .imgファイルを/ bootにコピーします。少なくとも保持したいものをコピーします。
  • また、vmlinuz- *ファイルを古い/ bootから/ bootにコピーしました。それが必要かどうかはわかりません。
  • Grub2-install /dev/sdxを実行します
    • 注1:grub2ではなくgrubを使用している場合、正しいコマンドはgrub-install/dev/sdxだと思います
    • 注2:これは、先ほどフォーマットしたパーティションの前にインストールされるため、/ dev/sdx1を指定しないでください。
  • Grub2-mkconfig -o /boot/grub2/grub.cfgを実行します
  • / bootの/ etc/fstabを更新することを忘れないでください

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

3
Art Hill

問題は、そのようなMBRをコピーするためにddを使用すべきではないということです。新しいドライブにGRUBを再インストールするだけで、正しく更新されたMBRを取得できます。 MBRには、ダンプを復元したときに変更されたgrubステージ2ファイルの場所が含まれています。

また、grubのレガシーは何年も維持されておらず、grub2は非lvm/bootパーティションを必要としないため、grub2にアップグレードする必要があります。

2
psusi