在 Arch Linux 上运行 btrfs RAID 5 阵列

在 Arch Linux 上运行 btrfs RAID 5 阵列

两周以来,我一直尝试以 btrfs RAID 5 的 root 身份运行我的 Raspberry Pi(型号 B),但没有成功。

RAID 在三个 1TB 磁盘上运行/dev/sda/dev/sdb并且/dev/sdc。三张盘都擦干净了,wipefs -a /dev/sdX然后我把Pi的SD卡上的根分区复制到一张盘上;dd if=/dev/mmcblk0p5 of=/dev/sdb。我用 修复检查了磁盘fsck.ext4 -f /dev/sdb并调整了它的大小以适应 1TB 的大小resize2fs /dev/sdb

然后我将磁盘上的 ext4 文件系统转换为带有标签的 btrfs,RAID使用btrfs-convert -l RAID /dev/sdb.最后,我使用 挂载了磁盘,并使用mount /dev/sdb /mnt和 添加了另外两个磁盘,btrfs device add /dev/sdbbtrfs device add /dev/sdc使用 将其转换为 RAID 5 btrfs balance start -dconvert=raid5 -mconvert=raid5 /mntbtrfs filesystem show向我展示了三个磁盘,全部正常工作。

到这里一切都正常;我可以看到 中的所有文件和文件夹/mnt

我安装mkinitcpio并添加了btrfsraid456MODULES.btrfs由于 mkinitcpio 中的错误,我没有包含在钩子中(请参阅:https://wiki.archlinux.org/index.php/Btrfs#BTRFS:_open_ctree_failed)。然后我跑去mkinitcpio -g /boot/initrd创建一个 initrd 文件/boot

在该config.txt文件中,我尝试了以下加载initrd

initramfs initrd 0x00a00000
initramfs initrd 0x00800000
initramfs initrd 0x00f00000

cmdline.txt我尝试过:

root=/dev/sda rw rootwait rootfstype=btrfs initrd=0x00a00000
root=/dev/sda rw rootwait rootfstype=btrfs initrd=0x00800000
root=/dev/sda rw rootwait rootfstype=btrfs initrd=0x00f00000

在启动过程中我得到:

BTRFS: device label RAID devid 1 transid 2640 /dev/root
BTRFS: info (device sda): disk space caching is enabled
BTRFS: failed to read the system array on sda
BTRFS: open_ctree failed

然后内核会出现恐慌。

我的问题是:

  • 如何使用 cmdline.txt 中的“root=”命令指向我的 btrfs RAID 5

  • 我怎样才能确保已initrd加载(我尝试了几个地址,甚至不确定它是否已加载)。

  • ...或者简单地说:我如何让它发挥作用?

相关内容