← 返回博客

飞牛 OS 系统盘从 120G 扩容到 960G 完整踩坑 & 解决手册

Markdown · 操作手册 · 2026/06/11 05:44

#飞牛

说明:本文档为本人本次扩容操作的复盘记录,仅适用于本人当前的硬件环境(单盘飞牛 OS、系统盘为 SATA SSD、单盘 RAID1 结构),不保证通用。

一、材料准备

表格

序号 物品 用途说明
1 飞牛 OS NAS 主机 完好运行的设备,原配置:120G SSD 系统盘 + 1T HDD 数据盘
2 960G SATA SSD 新系统盘 本次扩容目标盘
3 USB 硬盘盒 用于在 Live 环境下连接新系统盘
4 U 盘(≥4G) 制作 Ubuntu Live 启动镜像
5 Ventoy 工具 制作多系统启动 U 盘,本次使用 Ubuntu 22.04 LTS 镜像

二、前期准备:制作 Ubuntu Live 启动 U 盘

  1. 用 Ventoy 工具格式化 U 盘,制作启动引导盘。
  2. 下载 Ubuntu 22.04 LTS 桌面版 ISO 镜像,放入 Ventoy 分区。
  3. 将 U 盘插入 NAS 主机,开机从 U 盘启动,在 Ventoy 菜单中选择 Ubuntu 镜像,进入Try Ubuntu(试用模式)。

三、Live 环境下的整盘克隆与分区扩容(关键避坑步骤)

1. 查看磁盘信息,确认盘符

在 Ubuntu 终端执行命令,确认所有磁盘的盘符,避免克隆时写错源 / 目标盘:

bash

运行

lsblk

本次操作中,各盘符对应如下:

  • /dev/sda:原 1T 机械数据盘
  • /dev/sdb:原 120G SSD 系统盘(源盘)
  • /dev/sdc:Ubuntu Live 启动 U 盘
  • /dev/sdd:960G 新系统盘(目标盘,通过硬盘盒连接)

2. 使用dd命令整盘克隆

⚠️ 核心注意点dd命令写错盘符会直接清空目标盘数据,务必确认盘符无误!

bash

运行

# 格式:dd if=源盘 of=目标盘 bs=4M status=progress conv=noerror,sync
dd if=/dev/sdb of=/dev/sdd bs=4M status=progress conv=noerror,sync
  • if:指定源盘(原 120G 系统盘/dev/sdb
  • of:指定目标盘(960G 新系统盘/dev/sdd
  • bs=4M:设置读写块大小,提升克隆速度
  • status=progress:实时显示克隆进度
  • conv=noerror,sync:遇到错误时继续克隆,避免中途中断

3. 克隆后关键操作:扩展系统盘第三分区(避坑点!)

克隆完成后,新盘的分区表仍停留在原 120G 盘的大小,第三分区(/dev/sdd3,对应飞牛 OS 的存储空间 2)后面存在大量未分配空间。如果直接重启,会导致系统无法识别新盘的全部空间,甚至启动失败。

必须先在 Live 环境下扩展/dev/sdd3分区,覆盖所有未分配空间:

  1. 查看分区结构,确认

    /dev/sdd3
    

    的分区号和类型:

    bash

    运行

    parted /dev/sdd print
    
  2. 使用

    parted
    

    扩展分区(或用 GParted 图形工具操作):

    bash

    运行

    # 进入分区工具
    parted /dev/sdd
    # 选择第三分区(根据print输出确认分区号)
    resizepart 3 100%
    # 退出并保存
    quit
    

    扩展完成后,

    lsblk
    

    /dev/sdd3
    

    的大小应显示为接近 960G(扣除前两个小分区的占用)。

parted修改后如图

1780194414130

4. 关闭 Live 环境,替换新盘

完成以上操作后,直接关机,拔出 U 盘和硬盘盒中的新盘,将新系统盘安装到 NAS 主机的 SATA 接口上,替换原 120G 系统盘。


四、第一次重启:成功进入系统,但存储空间 2 被锁死在 55G

现象

新盘替换后,系统正常启动,能识别到系统盘,但飞牛 OS 后台中,原系统盘对应的存储空间2总容量仅显示 55.2G,与旧盘大小一致,无法使用新盘的 800 多 G 空间。

原因分析

飞牛 OS 系统盘默认对数据分区(sda3)创建了单盘 RAID1(/dev/md0,再基于 RAID 设备创建 LVM 逻辑卷,最后格式化为 Btrfs 文件系统。克隆后,RAID 设备、LVM 逻辑卷、Btrfs 文件系统三层的大小都停留在旧盘的 55G,导致容量无法识别。


五、三层扩容:解决存储空间 2 容量锁定问题

1. 远程 SSH 登录 NAS 主机

使用 SSH 工具连接飞牛 OS,以root用户登录。

2. 关键步骤 1:扩展 RAID1 设备/dev/md0

单盘 RAID 设备需要先扩展自身大小,才能让后续 LVM 识别到全部空间:

bash

运行

# 查看RAID设备状态,确认md0的成员盘为sda3
cat /proc/mdstat

# 扩展md0到成员盘的最大可用空间
sudo mdadm --grow /dev/md0 --size=max

执行成功的标志:终端输出component size of /dev/md0 has been set to xxxxxK

cat /proc/mdstat 结果如图

image-20260531101203239

3. 关键步骤 2:扩展 LVM 物理卷(PV)

让 LVM 识别扩容后的 RAID 设备/dev/md0

bash

运行

# 扩展物理卷
sudo pvresize /dev/md0

执行成功的标志:终端输出Physical volume "/dev/md0" changed

4. 关键步骤 3:扩展 LVM 逻辑卷(LV)

将物理卷的全部空闲空间分配给数据卷对应的逻辑卷:

bash

运行

# 先查看逻辑卷名称(根据lsblk输出确认)
lsblk /dev/md0

# 扩展逻辑卷(替换为你的实际逻辑卷名称)
sudo lvextend -l +100%FREE /dev/mapper/trim_0d0d3931_0e0d_4a85_a2e0_0af20f3b8ed5-0

执行成功的标志:终端输出Logical volume ... successfully resized,并显示容量从 55G 扩展到 830G 左右。

5. 关键步骤 4:扩展 Btrfs 文件系统

让文件系统识别逻辑卷的新容量:

bash

运行

# 扩展/vol2挂载点的文件系统到最大
sudo btrfs filesystem resize max /vol2

六、扩容验证

执行以下命令确认扩容结果:

bash

运行

# 查看/vol2的实际容量
df -h /vol2

# 查看RAID设备大小
lsblk /dev/md0

正常情况下,df -h /vol2会显示总容量约 800G(扣除系统占用),飞牛 OS 手机 APP / 网页后台的存储空间2容量会同步更新。

这几步扩容操作和最终验证如图

image-20260531101422522


七、本次操作踩坑总结 & 避坑指南

表格

序号 踩坑点 错误做法 正确处理方式
1 克隆后直接替换新盘启动 整盘克隆后未扩展分区,直接重启 NAS 必须在 Live 环境下,先扩展系统盘第三分区,覆盖所有未分配空间,再替换启动
2 误删 RAID 元数据 为解决启动问题,手动删除了 RAID 元数据,导致数据卷无法识别 单盘 RAID 是飞牛 OS 默认结构,不要随意删除元数据,应通过mdadm --grow扩展 RAID 设备
3 跳过 RAID 层直接操作 LVM 直接对/dev/sda3执行pvresize,提示device is an md component 必须按顺序:先扩 RAID(md0)→ 再扩 LVM PV → 再扩 LV → 最后扩 Btrfs
4 误以为 LVM 已经是最大容量 直接执行lvextend提示New size matches existing size 先执行mdadm --growpvresize,让 LVM 识别到 RAID 设备的全部空间,再执行lvextend

八、后续优化建议(可选)

单盘环境下的 RAID1 无冗余意义,仅会增加扩容复杂度。若后续不想再被 RAID 折腾,可在备份数据后移除单盘 RAID1 结构,让 LVM 直接运行在分区上,简化后续扩容流程。