Linux虚拟机磁盘扩缩容的操作指南(按文件系统分类)

 更新时间:2025年12月23日 08:45:49   作者:问道飞鱼  
本文详细介绍了Linux虚拟机磁盘扩缩容的操作步骤,包括传统分区和LVM两种方案,以及各文件系统类型(ext4/XFS/Btrfs)的具体操作命令,同时强调了备份的重要性,并指出了不同虚拟机软件对磁盘操作的支持情况,需要的朋友可以参考下

引言

虚拟机磁盘扩缩容需遵循“先调整底层存储(虚拟机软件)→ 再调整分区/逻辑卷 → 最后调整文件系统”的流程。以下按扩容缩容两大类,结合文件系统类型(ext4/XFS/Btrfs)和分区方案(传统分区/LVM)详细说明,确保无歧义。

一、磁盘扩容(扩展容量)

前提:已在虚拟机软件(VMware/VirtualBox/KVM)中扩展虚拟磁盘容量(如从 20GB→40GB),虚拟机处于关机或运行中(部分场景需重启识别新容量)。

(一)按文件系统类型与分区方案分类

1. 传统分区(非LVM,如/dev/sda1)

适用场景:磁盘直接分区(无LVM),文件系统为 ext4/XFS/Btrfs。

文件系统详细步骤验证命令
ext4重新扫描磁盘(识别新容量):
`echo 1
sudo tee /sys/class/block/sda/device/rescan(sda为虚拟机磁盘)<br>② **扩展分区**:<br>sudo growpart /dev/sda 1(扩展第1分区,如/dev/sda1)<br>③ **扩展文件系统**:<br>sudo resize2fs /dev/sda1`(自动扩展到分区最大容量)
XFS重新扫描磁盘(同上)
扩展分区
sudo growpart /dev/sda 1
扩展文件系统(需指定挂载点):
sudo xfs_growfs /mount_point(如根分区挂载点为/,则sudo xfs_growfs /
lsblk /dev/sda1
df -hT
Btrfs重新扫描磁盘(同上)
扩展分区
sudo growpart /dev/sda 1
扩展文件系统(需指定挂载点):
sudo btrfs filesystem resize max /mount_point
lsblk /dev/sda1
df -hT

2. LVM 逻辑卷(推荐生产环境)

适用场景:磁盘通过LVM管理(物理卷PV→卷组VG→逻辑卷LV),文件系统为 ext4/XFS/Btrfs。

文件系统详细步骤验证命令
ext4重新扫描磁盘(同上)
扩展物理卷(PV)
sudo pvresize /dev/sda2(假设PV为/dev/sda2,新增空间已分配)
扩展逻辑卷(LV)
sudo lvextend -l +100%FREE /dev/vg_name/lv_name(vg_name为卷组名,lv_name为逻辑卷名,如vg0/root)
扩展文件系统
sudo resize2fs /dev/vg_name/lv_name
pvs(看PV容量)
lvs(看LV容量)
df -hT
XFS重新扫描磁盘(同上)
扩展PVsudo pvresize /dev/sda2
扩展LVsudo lvextend -l +100%FREE /dev/vg0/root
扩展文件系统(指定挂载点):
sudo xfs_growfs /mount_point(如/
pvs/lvs/df -hT
Btrfs重新扫描磁盘(同上)
扩展PVsudo pvresize /dev/sda2
扩展LVsudo lvextend -l +100%FREE /dev/vg0/root
扩展文件系统(指定挂载点):
sudo btrfs filesystem resize max /mount_point
pvs/lvs/df -hT

(二)特殊说明

  • 云虚拟机(如AWS EC2):底层磁盘为云盘(EBS),需先在云平台控制台扩展云盘,再通过growpart扩展分区(如NVMe磁盘/dev/nvme0n1p1)。
  • 在线扩容:LVM+ext4/XFS/Btrfs支持在线扩容(无需卸载文件系统);传统分区需确保分区未挂载(或根分区通过Live CD操作)。

二、磁盘缩容(减小容量)

风险提示:缩容需先缩小文件系统,再缩小分区/LV,数据丢失风险极高,务必先备份!XFS文件系统不支持缩容,需用迁移数据替代。

(一)按文件系统类型与分区方案分类

1. 传统分区(非LVM,ext4/Btrfs支持缩容,XFS不支持)

适用场景:ext4/Btrfs文件系统,非LVM分区(如/dev/sda1)。

文件系统详细步骤验证命令
ext4备份数据tar czvf /backup/data.tar.gz /mount_point(如/mount_point为/data)
卸载文件系统sudo umount /mount_point
检查错误sudo e2fsck -f /dev/sda1(强制检查)
缩小文件系统(目标容量需>已用空间):
sudo resize2fs /dev/sda1 20G(缩小至20GB)
缩小分区(用parted):
sudo parted /dev/sda(parted) resizepart 1→输入新结束位置(如20GB)→(parted) quit
重新挂载sudo mount /dev/sda1 /mount_point
df -hT(看容量)
lsblk /dev/sda1
Btrfs备份数据(同上)
卸载文件系统sudo umount /mount_point
缩小文件系统
sudo btrfs filesystem resize 20G /mount_point(缩小至20GB)
缩小分区(用parted,同上)
重新挂载
df -hT/lsblk
XFS不支持缩容!替代方案:
① 备份数据到外部存储
② 新建小分区(如20GB),格式化XFS:sudo mkfs.xfs /dev/sda1
③ 恢复数据到新分区
④ 修改/etc/fstab切换挂载点
-

2. LVM 逻辑卷(ext4/Btrfs支持缩容,XFS不支持)

适用场景:ext4/Btrfs文件系统,LVM逻辑卷(如vg0/root)。

文件系统详细步骤验证命令
ext4备份数据(同上)
卸载文件系统(根分区需进救援模式或用Live CD)
检查错误sudo e2fsck -f /dev/vg0/root
缩小文件系统
sudo resize2fs /dev/vg0/root 20G(缩小至20GB)
缩小逻辑卷(LV)
sudo lvreduce -L 20G /dev/vg0/root(LV容量需≥文件系统容量)
重新挂载
lvs(看LV容量)
df -hT
Btrfs备份数据(同上)
卸载文件系统
缩小文件系统
sudo btrfs filesystem resize 20G /mount_point
缩小LVsudo lvreduce -L 20G /dev/vg0/root
重新挂载
lvs/df -hT
XFS不支持缩容!替代方案:
① 备份数据到外部存储
② 新建小LV:sudo lvcreate -L 20G -n new_lv vg0
③ 格式化XFS:sudo mkfs.xfs /dev/vg0/new_lv
④ 恢复数据到新LV
⑤ 修改/etc/fstab切换挂载点
-

(二)Swap分区扩缩容(独立说明)

扩容(文件形式Swap):

# ① 创建Swap文件(如新增2GB)
sudo fallocate -l 2G /swapfile  
sudo chmod 600 /swapfile  
sudo mkswap /swapfile  
sudo swapon /swapfile  
# ② 永久生效(/etc/fstab添加):echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab  

缩容(文件形式Swap):

sudo swapoff /swapfile  # 关闭Swap  
sudo rm /swapfile       # 删除文件  
# 从/etc/fstab删除对应行  

三、关键注意事项

  1. 备份优先:缩容前必须用tar/rsync备份数据,避免不可逆损失。
  2. 文件系统限制:XFS仅支持扩容,不支持缩容;ext4/Btrfs支持扩缩容(需先缩小文件系统再缩小分区)。
  3. 分区与文件系统顺序:扩容时“先分区后文件系统”,缩容时“先文件系统后分区”。
  4. 虚拟机磁盘类型:动态分配磁盘(Thin Provision)缩容需先清理碎片(如virt-sparsify工具),固定大小磁盘(Thick Provision)缩容需虚拟机软件支持(如VMware需“压缩磁盘”功能)。

按上述步骤操作,可安全完成Linux虚拟机磁盘的扩缩容,确保数据完整与系统稳定。

以上就是Linux虚拟机磁盘扩缩容的操作指南(按文件系统分类)的详细内容,更多关于Linux磁盘扩缩容的资料请关注脚本之家其它相关文章!

相关文章

  • linux下使用Apache搭建文件服务器的步骤

    linux下使用Apache搭建文件服务器的步骤

    这篇文章主要介绍了linux下使用Apache搭建文件服务器的步骤,帮助大家更好的搭建服务器,感兴趣的朋友可以了解下
    2020-12-12
  • linux查看系统编码和修改系统编码的方法

    linux查看系统编码和修改系统编码的方法

    本文为大家介绍了linux查看系统编码和修改系统编码的方法,这里使用的是redhat系统,大家参考使用吧
    2014-01-01
  • Linux上增加自定义脚本的展现量

    Linux上增加自定义脚本的展现量

    本篇文章给大家详细分享了如何在Linux上增加自定义脚本的展现量,通过原理的过程详细做了分析,一起参考下。
    2018-02-02
  • CentOS平台快速搭建LAMP环境的方法

    CentOS平台快速搭建LAMP环境的方法

    这篇文章主要介绍了CentOS平台快速搭建LAMP环境的方法,结合实例形式分析了CentOS服务器上搭建LAMP环境的步骤、相关命令与操作注意事项,需要的朋友可以参考下
    2019-05-05
  • Linux下安装grafana并且添加influxdb监控的方法

    Linux下安装grafana并且添加influxdb监控的方法

    这篇文章主要介绍了Linux下安装grafana并且添加influxdb监控的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • centos克隆linux虚拟机的完整步骤分享

    centos克隆linux虚拟机的完整步骤分享

    这篇文章主要给大家分享介绍了关于centos克隆linux虚拟机的完整步骤,文中通过图文将实现的步骤一步步介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-11-11
  • Linux使用Systemd设置程序开机自启动的具体教程

    Linux使用Systemd设置程序开机自启动的具体教程

    Systemd是Linux系统中的初始化系统,旨在提高启动速度和效率,它通过并行启动服务、按需加载、cgroups管理进程、自动挂载管理等方式优化启动过程,本文给大家介绍了Linux系统中使用Systemd设置程序开机自启动教程,需要的朋友可以参考下
    2025-05-05
  • 详解Linux命令修改文件的三个时间

    详解Linux命令修改文件的三个时间

    这篇文章主要介绍了详解Linux命令如何修改文件的三个时间的相关资料,需要的朋友可以参考下
    2017-02-02
  • apache的access.log和error.log减肥

    apache的access.log和error.log减肥

    我的服务器是用apache搭建的,里面的access.log和error.log这两个文件要经常上去看,和清理,如果时间忙,忘记看和清理了,过不了多久,这两个文件就膨胀的非常的大,打都打不开了。
    2009-09-09
  • 对linux下syslogd以及syslog.conf文件的解读说明

    对linux下syslogd以及syslog.conf文件的解读说明

    今天小编就为大家分享一篇对linux下syslogd以及syslog.conf文件的解读说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论