BTRFS在RAID1模式下将在每个预定义的时间段内自动运行擦洗,从而在单个SD卡上提供最佳的抗破坏能力。
好处:
- 保留读写文件系统的能力
- 功能齐全的现代文件系统,具有用于RPi的非常有用的选项,例如透明压缩和快照
- 设计时要考虑闪存(除其他事项外)
这是操作方法:
我在ArchARM linux上运行RaspberryPi,并且卡在SD读取器中,因此请针对其他发行版和/ dev接口相应地修改这些说明。
这是一个示例分区布局:
/dev/mmcblk0p1: fat32 boot partition
/dev/mmcblk0p2: to be used as btrfs partition
/dev/mmcblk0p3: to be used as btrfs partition (mirrored with the above)
/dev/mmcblk0p4 (optional): swap
为了使btrfs进入RAID1,您可以这样创建文件系统:
mkfs.btrfs -m raid1 -d raid1 /dev/mmcblk0p2 /dev/mmcblk0p3
然后,rsync -aAXv
将其备份到以前备份的系统中。
要使其从raid1中的BTRFS引导,您需要修改initramfs。因此,当您的系统仍在旧文件系统上运行时,需要执行以下操作。
Raspberry通常不使用mkinitcpio,因此您必须安装它。然后,您需要在mkinitcpio.conf中的MODULES数组中添加“ btrfs”,并使用以下命令重新创建initramfs
mkinitcpio -g /boot/initrd -k YOUR_KERNEL_VERSION
要知道键入什么而不是YOUR_KERNEL_VERSION,请运行
ls /lib/modules
如果更新内核,则必须在重新启动之前重新创建initramfs。
然后,您需要修改RPi的启动文件。
在cmdline.txt中,您需要
root=/dev/mmcblk0p2 initrd=0x01f00000 rootfstype=btrfs
并在config.txt中,您需要添加
initramfs initrd 0x01f00000
完成所有步骤并成功启动到btrfs RAID1系统后,剩下的唯一事情就是使用systemd timer(首选)或cron(dcron)设置定期清理(每3-7天),如下所示:
btrfs scrub start /
如果发现任何损坏,它将在您的文件系统上运行,比较所有文件的校验和并修复(替换为正确的副本)它们。
BTRFS RAID1,单一介质和Raspberry Pi的组合使这些东西非常神秘。将所有组件组合在一起需要花费一些时间和精力,但现在就来了。