两周以来,我一直尝试以 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/sdb
并btrfs device add /dev/sdc
使用 将其转换为 RAID 5 btrfs balance start -dconvert=raid5 -mconvert=raid5 /mnt
。btrfs filesystem show
向我展示了三个磁盘,全部正常工作。
到这里一切都正常;我可以看到 中的所有文件和文件夹/mnt
。
我安装mkinitcpio
并添加了btrfs
和raid456
到MODULES
.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
加载(我尝试了几个地址,甚至不确定它是否已加载)。...或者简单地说:我如何让它发挥作用?