虚拟机飞牛OS(fnOS)内存/磁盘不足 SSH命令行扩容教程

一、扩容前提说明

虚拟机环境下的飞牛OS出现存储空间、内存不足时,仅在VMware、PVE、KVM等虚拟化平台完成磁盘扩容后,飞牛OS网页界面无法直接识别、完成系统内扩容,官方仅支持通过SSH连接系统,使用命令行完成全流程扩容操作。本教程为虚拟机专属保姆级扩容方案,适配飞牛OS默认GPT分区、MD RAID+LVM存储架构,兼容ext4、btrfs两种主流文件系统,全程支持在线扩容,无需停机清空数据。

重要前置要求:已在虚拟化平台将飞牛OS虚拟磁盘扩容至目标容量,且虚拟机已正常开机运行;扩容前建议备份重要数据,规避异常风险。

二、第一步:飞牛OS系统开启SSH服务

登录飞牛OS网页管理后台,开启SSH远程连接权限,为后续命令行操作做准备:

  1. 进入飞牛OS后台,点击顶部控制面板,找到系统设置模块;

  2. 在左侧菜单选择远程访问,找到SSH服务选项;

  3. 开启SSH服务,设置自定义端口(默认22,可保持默认),设置登录用户名、密码;

  4. 保存设置,确认SSH服务状态为已开启,记录飞牛OS的虚拟机IP地址、SSH端口、账号密码。

注意:飞牛OS默认禁止root账号直接登录,全程使用普通管理员账号+sudo命令提权操作。

三、第二步:SSH连接飞牛OS系统

使用Xshell、FinalShell、Putty等任意SSH工具,连接虚拟机内的飞牛OS:

  1. 新建连接,输入飞牛OS虚拟机IP地址、SSH端口;

  2. 输入后台设置的SSH管理员账号、密码完成登录;

  3. 登录成功后,所有扩容命令均通过终端执行,无需操作网页界面。

四、第三步:查询系统环境关键参数(必做)

不同虚拟机环境的磁盘设备名、RAID设备、LVM卷名、文件系统类型均不相同,需先执行命令查询专属参数,禁止直接照搬通用命令,避免数据异常。依次执行以下命令:

# 1.查看磁盘、分区、挂载层级关系
sudo lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
# 2.查看RAID阵列详情
sudo mdadm --detail /dev/md*
# 3.查看LVM卷组、逻辑卷信息
sudo pvs
sudo vgs
sudo lvs
# 4.查看文件系统类型(区分ext4/btrfs)
sudo df -hT /vol*
# 5.查看磁盘分区表类型
sudo fdisk -l /dev/vdb

重点记录4个核心参数:磁盘设备名(如/dev/vdb)、RAID设备名(如/dev/md127)、VG卷组名、LV逻辑卷名、文件系统类型、挂载点(默认/vol1)。

五、第四步:命令行全程扩容操作(核心步骤)

以下步骤为固定流程,适配所有虚拟机飞牛OS,仅最后一步根据文件系统类型区分命令,全程在线操作,无需卸载磁盘、无需重启系统。

1. 确认虚拟磁盘扩容生效

sudo fdisk -l /dev/vdb

查看输出结果,确认磁盘容量已更新为虚拟化平台扩容后的大小,此时分区仍为旧容量,且会出现GPT分区表不匹配提示,属于正常现象。

2. 修复GPT分区表异常

磁盘扩容后GPT备份表位置偏移,必须先修复,否则无法扩展分区:

sudo bash -c "echo 'Fix' | parted ---pretend-input-tty /dev/vdb print"

3. 扩展磁盘分区至全部空闲空间

sudo parted /dev/vdb resizepart 1 100%

执行后通过 sudo parted /dev/vdb print 验证,分区容量已同步为磁盘最大容量。

4. 扩展MD RAID阵列空间

sudo mdadm --grow /dev/md127 --size=max

替换命令中的/dev/md127为自己查询到的RAID设备名,自动适配全部空闲空间,执行后通过sudo mdadm \-\-detail /dev/md127验证阵列容量更新。

5. 扩容LVM物理卷(PV)

sudo pvresize /dev/md127

执行后通过sudo pvs查看,物理卷已出现空闲空间。

6. 扩容LVM逻辑卷(LV)

替换命令中的【VG名】【LV名】为自己查询的参数,占用全部空闲空间:

sudo lvextend -l +100%FREE /dev/【VG名】/【LV名】

示例:sudo lvextend \-l \+100%FREE /dev/trim\_56233b13\_6bd4\_4915\_8af4\_531da9d5a95a/0

7. 扩容文件系统(分类型执行)

根据此前df \-hT查询的文件系统类型,选择对应命令,此步骤为扩容最后关键步骤:

方案一:ext4文件系统

sudo resize2fs /dev/mapper/【VG名】-【LV名】

方案二:btrfs文件系统(飞牛OS默认常用)

sudo btrfs filesystem resize max /vol1

六、第五步:验证扩容结果

执行以下通用命令,确认扩容完全生效:

sudo df -hT /vol1

输出结果中,/vol1挂载点容量已更新为扩容后的总容量,即代表操作成功,此时返回飞牛OS网页后台,可正常识别新增存储空间,内存不足、磁盘爆满问题彻底解决。

七、示例

在这里插入图片描述

// 第 1 步:修复 GPT 分区表
echo -e "Fix\nquit" | sudo parted /dev/sda
//第 2 步:扩展 sda3 分区到最大可用空间
sudo parted /dev/sda resizepart 3 -1
//第 3 步:扩展 md0 RAID 阵列
sudo mdadm --grow /dev/md0 --size=max
//第 4 步:扩展 LVM 物理卷
sudo pvresize /dev/md0
//第 5 步:扩展 LVM 逻辑卷
sudo lvextend -l +100%FREE /dev/mapper/trim_65b19316_9c2f_45b7_ab94_68e9e483b930-0
//第 6 步:扩展 Btrfs 文件系统(飞牛默认)
sudo btrfs filesystem resize max /vol1
//第 7 步:验证扩容结果
df -h /vol1

七、常见问题与注意事项

  • 运行sudo parted /dev/sda resizepart 3 -1时有能回出错:
parted: invalid option -- '1'
Usage: parted [-hlmsfv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]

解决办法:

//第 1 步:进入 parted 交互式模式
sudo parted /dev/sda
//第 2 步:执行扩展分区命令 在(parted)提示符下,输入:
resizepart 3
//第 3 步:输入结束位置 当提示End? [468GB]?时,直接输入-1然后回车
-1
//第 4 步:退出 parted
quit
  • 禁止界面操作扩容:虚拟机扩容后,飞牛OS网页端无任何扩容入口,所有分区、空间扩展必须通过SSH命令行完成,界面操作无效;

  • 全程在线扩容:所有命令支持系统挂载状态下在线操作,无需停机、无需卸载数据盘,不影响已有数据;

  • 报错解决:若分区扩展报错,优先重新执行GPT分区表修复命令,大概率是分区表未同步导致;

  • 权限说明:所有命令必须加sudo提权,飞牛OS不支持root直接登录,无sudo权限会导致操作失败;

  • 禁止缩容:本教程仅适用于扩容,文件系统缩容风险极高,极易造成数据丢失,非必要不操作。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐