web-dev-qa-db-ja.com

別のドライブに「ルート」をマウントするようにGRUB2を起動する方法(kvmスイッチのないリモートサーバー)

概要:ルートファイルシステムのコピーをRAIDアレイ(ディスクが1つ)に作成し、新しくコピーしたドライブからシステムを起動させようとしています。

背景:

  • サーバー内の同じサイズの2つのディスク(sda、sdb)
  • sdbは使用されていません
  • 私はすべてをraid1ミラーに移行しようとしています
  • 現在アクティブなパーティション:
    • sda1-ブート
    • sda2-スワップ
    • sda3-ルート(「/」にマウント)

私はkvmアクセスを持っていないので、どちらのドライブからも起動できる完全なraid1システムを作成できるかどうかはわかりません(トラブルチケットを介してジャムから抜け出すように指示することしかできません)

これまでに完了:

  • Sdaに一致するようにsdbにパーティションを作成しました
  • 新しいraid1アレイを作成しました(1ディスク)
  • / dev/md3は1つのディスクで構成されます:/ dev/sdb3
  • マウント/ dev/md3/mnt/md3
  • cp -ax// mnt/md3
  • これで、/と/ dev/md3に一致するデータのコピーができました。

GRUB2を編集して/ dev/md3をルートにすることはできますか?

私にはkvmアクセスがないので、絶対に確信する必要があります。 /boot/grub/grub.cfgを確認すると、次のエントリが表示されます。

menuentry 'Ubuntu, with Linux 2.6.32-28-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,1)'
    search --no-floppy --fs-uuid --set 18de6bbd-e46d-4f89-a2c9-fa2e7fa718b7
    linux   /vmlinuz-2.6.32-28-generic-pae root=/dev/sda3 ro   
    initrd  /initrd.img-2.6.32-28-generic-pae
}

したがって、「root =/dev/sda "」の部分に注意してください。それを「root =/dev/md3」に置き換えてから再起動できますか?

2
timh

ファイルシステムが/ dev/md3に直接あると仮定すると(そして、ファイルシステムをパーティション分割したり、LVMを使用したりしていない場合)、はい、root=/dev/md3を設定することが必要です。ただし、確認する必要があること:

  1. Initrdを再構築し、RAIDサポートが含まれていることを確認します(現在のルートはRAID上にないため、raid1/etc/initramfs-tools/modulesに追加して同軸ケーブルを使用する必要がある場合があります)。
  2. 劣化したアレイ[0]からの起動が有効になっていることを確認します(Ubuntuはデフォルトでこれを無効にします:BOOT_DEGRADED=true/etc/initramfs-tools/conf.d/mdadmを設定します)
  3. GRUBエントリを複製し、 フォールバック エントリをGRUBに設定して、(うまくいけば)非RAIDディスクを起動するようにします。 RAIDディスクの起動に失敗します(set fallback="2"行を/etc/grub.d/40_customに追加します。この番号は0から数えたメニューエントリの番号です)。
  4. おそらく、デフォルトを明示的に設定する代わりに grub-set-default --once を使用して、マシンを再起動するだけで非RAIDディスクを起動できるようにします。

[0]:アレイは実際には劣化していない可能性がありますが、とにかくこれが必要になる可能性があります。

1
mgorven

残念ながら、mgorvensのアドバイスに従うと、システムが起動できなくなる可能性があります。/dev内のデバイスは、現在起動している環境と一致しない可能性があります。その上で、動的に割り当てられた/ devエントリではなく、RAIDディスクのUUIDにrootを設定する必要があります。幸い、grubはこれらすべてを自動的に処理しますが、次のようにしてください。

sh -c /etc/grub.d/30_os-prober

RAIDデバイスを含むメニューエントリが表示されていると仮定して、次の手順でgrub2を更新します。

grub2-mkconfig > /boot/grub2/grub.cfg

これにより、grubブートメニューが正しい方法で更新されます。grubが更新されると上書きされる可能性が高いため、grub.cfgファイルを手動で編集する必要はありません。

1
Justin Buser