飞牛 OS:4TB 数据盘无损迁移并扩容到 14TB 的完整实战教程
在这篇文章中,我将分享一次真实的飞牛 OS 数据盘无损迁移与扩容案例:
将一块 4TB 的机械硬盘更换为 14TB 的新盘,并完整保留所有数据、应用、Docker 容器与配置。
这篇教程适用于以下场景:
- 飞牛系统使用 Basic 模式 + Btrfs 文件系统
- 数据盘中包含 飞牛应用数据、Docker 数据、个人文件
- 希望做到 无损迁移 + 扩容
- 能以 root 身份登录 SSH
如果你不会 SSH,这篇文章不适合你,因为操作失误可能导致数据不可恢复。
目录
一、系统结构说明
朋友的飞牛机器有两块硬盘:
1. NVMe 1TB 固态(系统盘)
- 200GB 用于系统分区
- 剩余空间作为 存储空间 1
2. 4TB 机械盘(存储空间 2)
- Basic 模式
- Btrfs 文件系统
- 存储飞牛应用数据、Docker 数据、个人文件
现在要把这块 4TB 机械盘替换为 14TB 的新盘,并且 无损迁移所有数据。
二、准备工作
将 14TB 新硬盘连接到飞牛(内置或 USB 硬盘盒均可)。
不要在飞牛网页端挂载或初始化新硬盘!
然后以 root 登录 SSH。
三、查看硬盘信息
执行:
| |
你会看到类似输出(示例):
/dev/nvme0n1→ 系统盘/dev/sda→ 4TB 旧数据盘/dev/sdb→ 14TB 新硬盘
重点记录以下两个路径(每个人都不同,请务必记录你自己的):
- RAID 阵列设备:
/dev/md1 - 逻辑卷设备:
/dev/mapper/xxxx-xxxx-xxxx-0
这两个路径后面会用到。
四、使用 dd 全盘克隆旧盘 → 新盘
为了避免 SSH 断开导致中断,先安装 screen:
bash
apt-get update && apt-get install -y screen
创建会话:
bash
screen -S clone
开始克隆:
bash
dd if=/dev/sda of=/dev/sdb bs=4k status=progress conv=sync,noerror
等待数小时(可随时断开 SSH)。
重新进入会话查看进度:
bash
screen -r clone
克隆完成后:
- 关闭飞牛
- 拔掉旧 4TB 硬盘
- 装上 14TB 新硬盘
- 开机
此时飞牛会识别到新硬盘,但容量仍然是 3.7TB,因为分区表被原样克隆过来了。
五、开始扩容
1. 扩容分区(非常关键)
克隆后,新盘路径从 /dev/sdb 变成了 /dev/sda。
执行:
bash
fdisk /dev/sda
按以下顺序操作:
- 输入
d→ 删除原来的 sda1 - 输入
n→ 创建新分区(全部默认) - 提示是否删除旧签名 → 输入
n - 输入
t→ 修改分区类型 - 输入
42→ Linux RAID - 输入
w→ 保存
确认:
bash
fdisk -u -l
你应该看到 /dev/sda1 已经变成 12.7TB。
2. 扩容 Linux RAID 阵列(/dev/md1)
执行:
bash
mdadm --grow /dev/md1 -z max
然后扩容 PV:
bash
pvresize -v /dev/md1
3. 扩容 LVM 逻辑卷
逻辑卷路径类似:
代码
/dev/mapper/trim_xxxxxxxx-0
扩容:
bash
lvextend -l +100%FREE /dev/mapper/你的LV路径
4. 扩容 Btrfs 文件系统
假设挂载点为 /vol2: 存储空间顺序
bash
btrfs filesystem resize max /vol2
至此,扩容全部完成。
六、验证扩容结果
回到飞牛网页端 → 存储空间管理 你会看到:
- 存储空间 2 已从 3.7TB → 12.7TB
- 所有数据完整保留
七、注意事项
- 所有命令中的路径必须替换成你自己的!
/dev/md1、/dev/sda1、/dev/mapper/xxxx每个人都不同。 - 大小写敏感,输入错误可能导致数据丢失。
- dd 是扇区级克隆,所以分区表也会被克隆,扩容必须按本文步骤进行。
八、总结
这是飞牛 OS Basic 模式 + Btrfs 文件系统下,最安全、最完整、最可控的 无损迁移 + 扩容方案。
流程核心:
- dd 全盘克隆
- 扩容分区
- 扩容 mdadm 阵列
- 扩容 LVM
- 扩容 Btrfs
整个过程不需要重新初始化存储池,也不会丢失任何应用数据或 Docker 数据。