web-dev-qa-db-ja.com

lvm2ルートをlvm2 raid1に変換した後に起動できない

最初のHDD(sda)にUbuntu 12.10(更新なし、カーネル3.5.0-17-generic)があり、MBRを使用し、LVM2を有効にして「Ubuntuにディスク全体を使用」としてパーティション分割されました。ルートファイルシステムはLVM2(VG:ubuntu)上にあります。今日、同じサイズの2番目のHDD(sdb)を追加し、最初のhddと同様にパーティション分割し、lvm2 PVを作成し、ルートLVをraid1に変換しました。

pvcreate /dev/sdb5
vgextend ubuntu /dev/sdb5
lvconvert --type raid1 -m1 /dev/ubuntu/root /dev/sdb5

100%再同期した後、リブートし、initramfsはルートfsを見つけることができませんでした。

Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
... (kernel messages)
Gave up waiting for root device. Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/mapper/ubuntu-root does not exist.  
Dropping to a Shell!

モジュールのリストがあります:

(initramfs) cat /proc/modules
hid_generic
usbhid
hid
e1000
raid10
raid456
async_pq
async_xor
xor
async_memcpy
async_raid6_recov
raid6_pq
async_tx
raid1
raid0
multipath
linear
(initramfs) cat /proc/cmdline
BOOT_IMAGE=/vmlinux-3.5.0-17-generic root=/dev/mapper/ubuntu-root ro
(initramfs) ls /dev/mapper
control     ubuntu-swap_1

lvmユーティリティからの出力があります。

lvm> pvscan
  PV /dev/sda5    VG ubuntu   lvm2 [ 13.76 GiB / 408.00 MiB free]
  PV /dev/sdb5    VG ubuntu   lvm2 [ 13.76 GiB / 508.00 MiB free]
lvm> vgscan
  Reading all physical volumes. This may take a while...
  Found volume group "ubuntu" using metadata type lvm2
lvm> lvscan
  inactive        '/dev/ubuntu/root' [13.26 GiB] inherit
  ACTIVE          '/dev/ubuntu/swap_1' [100.00 MiB] inherit

lvm> lvdisplay ubuntu
  --- Logical volume ---
  LV Path                /dev/ubuntu/root
  LV Name                root
  VG Name                ubuntu
  LV UUID                xxxxxxxxxxxxxxx
  LV Write Access        read/write
  LV Creation Host, time ubuntu, 2013-05-07
  LV Status              NOT available          <<<<< !!!!
  LV Size                13.26 GB
  Current LE             3394
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

そして、lvchange -ay ubuntuは失敗します:

lvm>  lvchange -ay ubuntu
  /sbin/modprobe failed: 1
  Can't process LV root: raid1 target support missing from kernel?

Initrdには何が欠けていますか?

4
osgx

私はDebianシステムでこの同じ問題にぶつかりました。いくつかの必要なモジュールがinitramfsにインストールされていないことが原因であることが判明しました。

具体的には、これらの行を/ etc/initramfs-tools/modulesに追加した後:

dm_mirror
dm_raid
dm_region_hash

そして実行中

update-initramfs -u -k all

システムが正常に起動します。

これらの行がすべて実際に必要であることを確認していないことに注意してください。少なくともデフォルトではdm_raidモジュールが欠落していると思います。

さらに検索した後、この問題に関してinitramfs-toolsに対して公開されているDebianのバグがあります。 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699804

5
Sami Liedes

別のオプションは、raid1の代わりにmirrorタイプを使用することです。これはデフォルトで機能するはずです。grub2でもサポートされています。代わりに

lvconvert --type raid1 -m1 /dev/ubuntu/root /dev/sdb5

これを行う:

lvconvert --type mirror -m1 /dev/ubuntu/root /dev/sdb5

(最後にsdb5を指定する必要はありません。LVMは適切なPVを選択してミラーを配置します。)

ただし、ミラータイプには大きな欠点があります。最初のデバイスからのみ読み取るため、RAID1で期待される読み取りパフォーマンスの高速化は得られません。

1
Paul Tobias