クラウド環境にCentos 6サーバーがあり、ルートパーティションを既存のハードドライブから別のハードドライブに移動したいと思います。
/var
元のハードドライブ(/dev/xvda1)には、 、 のような他のフォルダがありますが、これらを移動したくなくて/usr
既存dd
のハードドライブ全体を新しいハードドライブ(/dev/xvdh1)。
これで、上記以外のrsync
すべての内容を別のハードドライブ(/dev/xvdg)に保存しました。新しいUUIDを使用するために、新しいハードドライブで次のファイルを修正しました。/
/dev/xvdh1
/var
/usr
- /etc/fstab
- /boot/grub/grub.conf
出力は次のとおりです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
2つのハードディスクメタデータ出力:
# 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)
上記のすべての手順を完了した後、既存のHDDを取り外し、新しいHDDを取り付けて/dev/xvda1
起動しました。ただし、マシンを起動すると grub エラーが発生します。
Booting from Hard Disk...
Geom Error
/dev/xvda1
サイズが異なるので、/dev/xvdh1
明らかにUUIDも異なります。だから私の質問例:ブートセクタコードにgrub-install
修正を書き込むには、何が必要ですか?grub.conf
それとも、ブートコードが同じで、ルートパーティション情報がそこに保存されず、追加のgrub.conf
ステップなしでブートコードを読み取って情報を取得できるので、これは必要ありませんか?
grubにサーバーを起動させるために別のファイルを変更する必要がある場合は、説明してください。ありがとうございます。 (グラブバージョン:0.94)
ベストアンサー1
grub-install
はい、場所(以下の説明を参照)は、手順2を含むファイルシステムによって異なるため、実行する必要があると思います。
以前のディスク(/dev/xvda
)のブートセクタを/dev/xvdh1
新しいディスク()の最初のパーティションにコピーしたと言いました。パーティションではなく新しいディスクの最初のセクタにコードを配置する必要はありませんか?
提案したように、最初のステップには、この回答のグラフに示されている2番目のステップへのポインタが含まれています。https://unix.stackexchange.com/a/258867/216116
さらに、Debianは定期的なソフトウェアアップデート中に実行されるように設定されているため、ソリューションを必要に応じて動作させるgrub-install
ことは問題ではありません(もちろん、適切なパラメータを使用して)。grub-install