树莓派LVM迁移指南
1. 核心逻辑
Section titled “1. 核心逻辑”将树莓派运行中的系统直接“全盘迁移”到新磁盘(如从 SD 卡迁移到 SSD,或从旧 SSD 迁移到新 SSD)并在此过程中启用 LVM(逻辑卷管理)是优化存储性能和后期扩容的核心方案。
最稳妥的实施路径是:先在目标盘上手动分区并建立 LVM,然后同步当前系统数据,最后配置并重构引导。
2. 迁移步骤
Section titled “2. 迁移步骤”2.1. 对目标盘进行手动分区
Section titled “2.1. 对目标盘进行手动分区”目标盘需要划分两个分区:一个 FAT32 启动分区(存放引导固件)和一个 LVM 分区(存放系统根目录及其他逻辑卷)。
使用 fdisk 对目标盘进行分区操作:
sudo fdisk /dev/sdb在交互命令行中依次执行:
- 创建启动分区:输入
n->p->1-> 起始扇区回车默认 -> 结束扇区输入+512M。 - 创建 LVM 分区:输入
n->p->2-> 起始扇区回车默认 -> 结束扇区回车默认(使用磁盘全部剩余空间)。 - 修改分区类型:
- 输入
t-> 指定分区1-> 输入十六进制代码c(W95 FAT32 LBA)。 - 输入
t-> 指定分区2-> 输入十六进制代码31(Linux LVM)。
- 输入
- 保存配置并退出:输入
w写入分区表。
2.2. 初始化 LVM
Section titled “2.2. 初始化 LVM”在新建的 Linux LVM 分区上初始化物理卷、卷组以及逻辑卷:
# 1. 将分区 /dev/sdb2 创建为物理卷 (PV)sudo pvcreate /dev/sdb2
# 2. 创建名为 vg_system 的卷组 (VG)sudo vgcreate vg_system /dev/sdb2
# 3. 在卷组中创建根目录逻辑卷 (LV),可先分配 100G(后期可随时动态扩容)sudo lvcreate -L 100G -n lv_root vg_system2.3. 格式化与数据同步
Section titled “2.3. 格式化与数据同步”将新分区进行格式化,并将源系统的文件内容完整、无损地“克隆”到 LVM 逻辑卷中。
- 格式化新分区
# 格式化引导分区为 FAT32,并设置卷标sudo mkfs.vfat -F 32 -n "boot-conf" /dev/sdb1
# 格式化逻辑卷根目录为 Ext4sudo mkfs.ext4 /dev/vg_system/lv_root- 挂载分区并同步文件系统
# 创建挂载点sudo mkdir -p /mnt/target_rootsudo mount /dev/vg_system/lv_root /mnt/target_root
# 挂载新引导分区到对应的 boot/firmware 目录中(适配树莓派新版目录结构)sudo mount /dev/sdb1 /mnt/target_root/boot/firmware --mkdir
# 使用 rsync 完美同步所有文件及权限属性(排除系统动态虚拟目录与临时挂载点)sudo rsync -axHAWXS --numeric-ids --info=progress2 \ --exclude=/proc/* \ --exclude=/sys/* \ --exclude=/dev/* \ --exclude=/run/* \ --exclude=/tmp/* \ --exclude=/mnt/* \ --exclude=/lost+found \ / /mnt/target_root/2.4. 修正引导配置与 Initramfs 重构
Section titled “2.4. 修正引导配置与 Initramfs 重构”这是 LVM 迁移中最容易出错的环节。必须显式告知内核启动引导的根目录位于 LVM 映射路径下,并且提前在 initramfs 引导镜像中加载 LVM 驱动。
- 修改目标系统的 fstab 挂载表
编辑 /mnt/target_root/etc/fstab,将根路径 / 的挂载源配置修改为 LVM 映射器地址:
/dev/mapper/vg_system-lv_root / ext4 defaults 0 1- 修改目标系统的引导命令行
编辑 /mnt/target_root/boot/firmware/cmdline.txt,修改其中的 root=... 参数,并增加启动延迟等待逻辑卷设备上线:
root=/dev/mapper/vg_system-lv_root rootdelay=5- 重构 Initramfs(关键避坑步骤)
由于默认的树莓派启动镜像中不带 LVM 驱动模块,直接重启会导致内核无法挂载根路径而发生挂死(Panic)。需要通过 chroot 进入目标系统重建 initramfs:
# 绑定宿主机的虚拟系统目录到新系统根路径中for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt/target_root$idone
# chroot 改变根目录进入新系统环境sudo chroot /mnt/target_root
# 在目标环境中更新/生成包含 LVM 驱动的 initramfs 镜像update-initramfs -u
# 退出 chroot 环境exit2.5. 测试启动
Section titled “2.5. 测试启动”- 安全卸载挂载的磁盘:
sudo umount -R /mnt/target_root - 关闭树莓派电源,拔掉原系统磁盘(如 SD 卡)。
- 确保目标 SSD 磁盘已妥善连接至树莓派的 USB 3.0 或 PCIe 接口。
- 重新上电,启动并验证系统是否正常进入 LVM 根分区。