树莓派从ext4文件系统更改成raid1启动的方法
23:59 2026-8-22
19:23 2026-8-22
总结
树莓派从ext4文件系统更改成raid1启动的方法,不会再有磁盘系统损坏焦虑,如果2个分区不够,那就多加几个热备份盘!系统文件占用基本都不大。可根据实际使用情况设置raid分区大小
分区只根据大小有关,至于一个磁盘还是多个磁盘自己选择,大小一致就可以加入热备份
使用其他分区创建raid1,
挂载分区
复制系统到md0
chroot
更新update-initramfs -u
写入raid配置到md0下面的系统
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
配置文件更改点,第一个是/boot/firmware下面的/boot/firmware/cmdline.txt 改成 UUID=123123
第二个配置文件 /mnt/newroot/etc/fstab
根目录改成md0的uuid
/boot/firmware 照旧
root@pi2b4:~# cat /etc/fstab
UUID=67a150f2-0313-4289-8d21-de361ff92512 / ext4 discard,errors=remount-ro 0 1
# UUID=70be746e-039c-4dea-92d9-3276cac1e6ea / ext4 discard,errors=remount-ro 0 1
# LABEL=writable / ext4 discard,errors=remount-ro 0 1
LABEL=system-boot /boot/firmware vfat defaults 0 1
# UUID=A0CD-3E3F /boot/firmware vfat defaults 0 1
然后退出chroot
重启
验证
df -h
root@pi2b4:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 92M 3.0M 89M 4% /run
/dev/md0 20G 3.8G 15G 21% /
tmpfs 459M 0 459M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 991M 224M 700M 25% /boot
/dev/mmcblk0p1 505M 132M 373M 27% /boot/firmware
tmpfs 92M 4.0K 92M 1% /run/user/0
之后就是添加硬盘分区,可以然后同步,raid,最好多添加几个分区,坏了自动恢复。
mdadm /dev/md0 -G -n2
mdadm -a /dev/md0 /dev/sda4
监控同步进度
watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat pi2b4: Sun Aug 23 00:34:20 2026
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda4[2] sda3[0]
20955136 blocks super 1.2 [3/1] [U__]
[======>..............] recovery = 34.6% (7251776/20955136) finish=19.7min speed=11577K/sec
unused devices: <none>
# --raid-devices=2 表示活动成员数量
# --spare-devices=1 表示热备盘数量
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1
# 清除新硬盘上的超级块信息(警告:这会删除该盘上的所有 RAID 信息)
sudo mdadm --zero-superblock /dev/sdd
# 如果新硬盘需要分区,请确保分区大小与现有 RAID 成员一致
# 这里假设我们直接使用整盘 /dev/sdd 或分区 /dev/sdd1 作为备份
# 语法:sudo mdadm <阵列设备> --add <新硬盘设备>
sudo mdadm /dev/md0 --add /dev/sdd
sudo mdadm --detail /dev/md0
更改磁盘数量
root@pi2b4:~# mdadm /dev/md0 -G -n2
raid_disks for /dev/md0 set to 4
root@pi2b4:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 53.8M 1 loop /snap/core20/2320
loop1 7:1 0 53.7M 1 loop /snap/core20/2867
loop2 7:2 0 65.8M 1 loop /snap/core22/2439
loop3 7:3 0 63.2M 1 loop /snap/lxd/29350
loop4 7:4 0 86.6M 1 loop /snap/lxd/40337
loop5 7:5 0 33.1M 1 loop /snap/snapd/21762
sda 8:0 0 118G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 20G 0 part
├─sda3 8:3 0 20G 0 part
│ └─md0 9:0 0 20G 0 raid1 /
└─sda4 8:4 0 20G 0 part
└─md0 9:0 0 20G 0 raid1 /
mmcblk0 179:0 0 7.2G 0 disk
└─mmcblk0p1 179:1 0 512M 0 part /boot/firmware
这里是操作流程起始点!
sudo apt update
sudo apt install mdadm initramfs-tools grub-pc
use!!!
apt install grub2-common
# 创建根分区的 RAID 1,暂时缺失第二块盘
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda2 missing
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
格式化 RAID 设备
bash
mkfs.ext4 -b 4096 /dev/md0
挂载
sudo mkdir /mnt/newroot
sudo mount /dev/md0 /mnt/newroot
迁移数据
排除 /proc, /sys, /dev, /run, /mnt 等虚拟或临时文件系统
sudo rsync -avxHAX --progress / /mnt/newroot/
调整 fstab
sudo blkid /dev/md0
root@pi2b4:~# blkid
/dev/md0: UUID="67a150f2-0313-4289-8d21-de361ff92512" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda2: LABEL="writable" UUID="c24df5a0-4386-e84b-ab68-93b2dcb486a5" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux data partition" PARTUUID="217ab792-c805-400c-ba23-a898009119e9"
/dev/sda3: UUID="381b4288-c582-bb91-7599-38f0d28c47be" UUID_SUB="05e9627b-4853-5529-1e3c-4d6c21957ed2" LABEL="pi2b4:0" TYPE="linux_raid_member" PARTLABEL="Linux swap partition" PARTUUID="fa540c30-5dda-4471-b106-b80bc283ebf9"
/dev/sda1: LABEL="bootfs" UUID="662f8068-de18-3d43-8cf9-5b992d75a1a3" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux data partition" PARTUUID="a33f7a3e-6e32-4114-9cea-ddff522eb415"
/dev/mmcblk0p1: LABEL_FATBOOT="system-boot" LABEL="system-boot" UUID="A0CD-3E3F" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="2e338a26-01"
/dev/loop1: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop0: TYPE="squashfs"
/dev/sda4: PARTLABEL="Linux swap partition" PARTUUID="20d3d717-d6a3-48e9-8bf4-2b035884e884"
/dev/loop5: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
root@pi2b4:~#
设置标签 未使用
# 直接为/dev/sdb的1号分区设置PARTLABEL为system_root
sudo parted /dev/md0 name 1 system_root
ls -l /dev/disk/by-uuid/
调整 fstab
获取新 RAID 设备的 UUID:
bash
sudo blkid /dev/md0
sudo blkid /dev/md1
编辑 /mnt/newroot/etc/fstab,将根分区 / 和 swap 的 UUID 替换为 /dev/md0 和 /dev/md1 的新 UUID。
bash
sudo nano /mnt/newroot/etc/fstab
第四阶段:更新引导加载程序 (GRUB)
这是最关键的一步,确保系统能从 RAID 阵列启动。
绑定必要目录并 chroot
bash
sudo mount --bind /dev /mnt/newroot/dev
sudo mount --bind /proc /mnt/newroot/proc
sudo mount --bind /sys /mnt/newroot/sys
sudo chroot /mnt/newroot
安装 GRUB 到两块硬盘
在 chroot 环境中执行:
bash
# 安装 grub 到物理磁盘 MBR/EFI
apt install grub2-common
grub-install /dev/sda
grub-install /dev/sdb
# 更新 grub 配置文件
update-grub
更新 initramfs
确保内核启动时能加载 mdadm 模块并识别阵列:
bash
update-initramfs -u
退出 chroot 并卸载
bash
exit
sudo umount /mnt/newroot/dev
sudo umount /mnt/newroot/proc
sudo umount /mnt/newroot/sys
sudo umount /mnt/newroot
第五阶段:重启测试与添加第二块盘
重启系统
bash
sudo reboot
注意:如果启动失败,请使用 Live USB 进入救援模式检查 GRUB 和 mdadm 配置。
验证启动
启动后,检查根分区是否挂载在 /dev/md0 上:
bash
df -h /
cat /proc/mdstat
此时你应该看到 /dev/md0 处于 active 状态,但只有一块盘在工作(状态可能显示为 _U 或类似,表示缺失一块)。
添加第二块盘到阵列
将 /dev/sdb 的对应分区加入 RAID:
bash
sudo mdadm --manage /dev/md0 --add /dev/sdb1
sudo mdadm --manage /dev/md1 --add /dev/sdb2 # 如果有 swap raid
监控同步进度
bash
watch -n 1 cat /proc/mdstat
等待同步完成(Resyncing 结束)。
第六阶段:保存配置
更新 mdadm 配置文件
bash
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
再次更新 initramfs
!!!!okok
执行mdadm --assemble --scan使新配置生效,无需重启
bash
sudo update-initramfs -u
update-initramfs -u -k all
https://lanzouw.com/iJjuU27vI9cd
更多推荐

所有评论(0)