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


 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐