我在 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。