mdadm RAID1で必要なGRUBモジュールを起動する

mdadm RAID1で必要なGRUBモジュールを起動する

mdadmEXT4パーティション(OSファイルとGRUBファイルを含む)を持つマネージドRAID1があり、/boot/grubこのパーティションから起動するためにGRUBが必要なモジュールと構成が何であるかを知りたいです。

ベストアンサー1

最小要件grub.cfgは次のとおりです。

set timeout=1

set root='mduuid/ce16c757e4752e4fa9a2fd4935df1aef'

menuentry 'Arch Linux' {
 linux /boot/vmlinuz-linux root=UUID=05dddf23-1d9f-417e-b3f8-2281a328dc0b rw
 initrd /boot/initramfs-linux.img
}

はい、生成された長いガベージストリームとはかなり異なりますgrub-mkconfig。ご覧のとおり、この設定にはモジュールが必要ないようです。

私の特定の設定は、その上に組み込まれたRAID1アレイとそのアレイのEXT4パーティションを持つMBRフォーマットディスクの単一パーティションです。

このroot変数はmduuid/xxx次のように設定されます。RAIDアレイのUUIDmdadm --examine /dev/sdXRAIDアレイの一部であるディスクまたはパーティションで実行してこれを取得できます。これは、RAID経由のEXT4ファイルシステムのUUIDではありません。、報告されたUUIDを使用しないでください。lsblkこれは、UUIDが機能していないパーティションのUUIDのみを提供するためです。

RAIDアレイの作成時に指定したタグを使用してこの変数を設定することもできますroot()。ルートデバイスを指定する他の方法は次のとおりです。md/...mdadm ... -N "some label" ...文書を見る

カーネルパラメータ行のUUIDは次のとおりです。ファイルシステムUUIDこれは、以下を実行して取得できるRAIDアレイの上にありますlsblk -o NAME,UUID

NAME                                      UUID
loop0                                     
└─loop0p2                                 ce16c757-e475-2e4f-a9a2-fd4935df1aef
  └─md127                                 05dddf23-1d9f-417e-b3f8-2281a328dc0b
loop1                                     
└─loop1p2                                 ce16c757-e475-2e4f-a9a2-fd4935df1aef
  └─md127                                 05dddf23-1d9f-417e-b3f8-2281a328dc0b

私の場合は、mdXXXデバイスノードに対応します。この例では、05dddf23-1d9f-417e-b3f8-2281a328dc0bプライマリパーティションのUUIDを使用しないでください。loopXp2


ボーナスとしてここに素晴らしいシェルスクリプトがあります。ちょっとしたことQEMU/KVM 仮想マシンで GRUB を実験する場合。

一部の生ディスクを作成するには、ホストにマウントする「raw」でなければならず、qcow2またはvmdkは使用できません。

qemu-img create -f raw driveX.img XXXG # name and size

2つのディスク、ISO(この場合はArchlinuxですが、何でも構いません)とプライマリネットワークアクセスでVMを起動するには、次の手順を実行します。

/path/to/qemu-system-x86_64 -m 512 -cpu host -smp 2,cores=2,sockets=1 -machine q35,accel=kvm -balloon none -device ahci,id=ahci -drive if=none,file=drive1.img,format=raw,cache=none,aio=native,id=hdd1 -device ide-hd,bus=ahci.0,drive=hdd1 -drive if=none,file=drive2.img,format=raw,cache=none,aio=native,id=hdd2 -device ide-hd,bus=ahci.1,drive=hdd2 -drive if=none,file=arch.iso,format=raw,cache=none,aio=native,id=iso,snapshot=on -device ide-cd,bus=ahci.2,drive=iso -device pci-ohci,id=ohci -device usb-kbd,bus=ohci.0 -device usb-mouse,bus=ohci.0 -netdev user,id=net0 -device e1000-82545em,autonegotiation=on,netdev=net0 -realtime mlock=on

ホストに VM パーティションをマウントするスクリプトです。パーティションの破損を防ぐために、実行する前にQEMUを停止する必要があります。

losetup -P -f drive1.img # create loopback device nodes for the virtual disks
losetup -P -f drive2.img

mdadm --assemble /dev/md/root /dev/loop0p1 /dev/loop1p1 # assemble the RAID
# some distributions will auto-detect and assemble them so it sometimes fails
# running this script a second time usually succeeds in mounting it anyway
# if it failed the first time - I don't have time to fix the real issue

mount "/dev/md/root" rootfs # mount the root FS of the VM in this directory

削除スクリプトです。 VMのバックアップを開始する前に、このスクリプトを実行してください(安全のために複数回実行してください)。

umount rootfs # umount the FS

mdadm --stop /dev/md127 # sometimes the array appears under these names
mdadm --stop /dev/md126 # so we stop them as well just to be safe
mdadm --stop /dev/md/root # the correct name

losetup -D # detach all loop device nodes

おすすめ記事