将根从 lvm2 转换为 lvm2+raid1(lvconvert --type raid1)后出现“LV 状态不可用”

将根从 lvm2 转换为 lvm2+raid1(lvconvert --type raid1)后出现“LV 状态不可用”

我刚刚将 lvm2 根文件系统从线性 lvm2(单个 HDD:sda)转换为 lvm2 raid1(使用lvconvert -m1 --type raid1 /dev/ubuntu/root /dev/sdb5命令)。但转换后,我无法启动我的 ubuntu 12.10(内核 3.5.0-17-generic)。

Initramfs 说它在 /dev/mapper 中找不到根文件系统:

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表明根 LV 处于非活动状态/不可用:

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在我的例子中,initrd 失败:

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

我的 initrd 中缺少哪个模块?现在我拥有此内核的完整模块集合,可以尝试任何模块。

答案1

你需要这个:

modprobe dm_raid

{pv,vg,lv}scan查看磁盘并查看其中的 LV。但由于内核无法以配置的方式提供对它们的访问,因此无法访问它们。

相关内容