启动时自动运行 kpartx

启动时自动运行 kpartx

我在 SSD 上运行 Debian Wheezy,此外我还有两个采用 Intel 软件 RAID 0 (fakeraid) 的 500GB 硬盘。 SSD 和 RAID 阵列均具有 GPT 分区布局。我已将 fstab 设置为自动挂载 RAID 阵列上的分区之一,但根文件系统位于 SSD 上。

在启动过程中,dmraid 会找到阵列,但不会自动发现其上的分区。这会导致引导 fsck 失败并将我转储到恢复 shell。

在恢复 shell 中运行kpartx -a /dev/mapper/isw_xxx_Volume0会自动发现分区,一切都运行良好,但每次启动时都必须输入它,这有点烦人。难道我做错了什么?有什么方法可以自动进行分区探测吗?

/dev/sda(SSD)的分区布局

Number  Start (sector)    End (sector)  Size       Code  
   1            2048          411647   200.0 MiB   EF00  EFI System Partition
   2          411648       117598207   55.9 GiB    0700  Debian root filesystem
   3       117598208       250068991   63.2 GiB    0700  Not used yet

/dev/mapper/isw_cddhbifacg_Volume0(RAID 阵列)的分区布局

Number  Start (sector)    End (sector)  Size       Code  
   1            2048       937502719   447.0 GiB   0700  Debian extra stuff
   2       937502720       976564223   18.6 GiB    8200  Swap
   3       976564224      1953535999   465.9 GiB   0700  Not used yet

/etc/fstab 的内容

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=7f894df3-49f4-4119-bda9-f4734780eaab /               ext4    errors=remount-ro 0       1
UUID=0B6C-A37C  /boot/efi       vfat    defaults        0       1
/dev/mapper/isw_cddhbifacg_Volume0p1 /mnt/data       ext4    defaults        0       2
/dev/mapper/isw_cddhbifacg_Volume0p2 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/sdd1       /media/usb0     auto    rw,user,noauto  0       0
/dev/sde1       /media/usb1     auto    rw,user,noauto  0       0
/dev/sde2       /media/usb2     auto    rw,user,noauto  0       0

答案1

原问题的解决方案

安装kpartx

sudo aptitude install kpartx

更改以下行/lib/udev/rules.d/60-kpartx.rules

ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="dmraid-*", \
        RUN+="/sbin/kpartx -a -p -part /dev/$name"

对此:

ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="DMRAID-*", \
        RUN+="/sbin/kpartx -a /dev/$name"

更新 initramfs:

sudo update-initramfs -u

重新启动,分区应该已被正确检测到。

替代解决方案

使用 mdadm 而不是 dmraid。使用 Intel 配置实用程序(启动时按 Ctrl+I)设置 RAID 阵列,Debian Installer 7 RC1 将自动检测并激活它。

答案2

这似乎是 Debian 中的一个错误。您需要修复udev的规则kpartx

这里以获得所需的步骤。

有关更多详细信息,请参阅 Launchpad 上的整个错误报告Debian BTS 中的相关错误报告

答案3

您可以简单地安装 Ubuntu 版本的 dmraid 包,因为它有一个适当的 udev 规则来执行此操作,并且 initramfs 告诉 dmraid 甚至不要尝试激活分区。

或者您可能会完全停止使用 dmraid,因为最新版本的 dmraidmdadm可以激活 intel fakeraid,或者更好的是,完全停止使用 fakeraid,只切换到mdadm基于普通软件的 raid。

相关内容