开发者

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

开发者 https://www.devze.com 2025-12-23 09:57 出处:网络 作者: 问道飞鱼
价值2999元 Java视频教程限时免费下载
专为Java开发者设计,涵盖核心技术、架构设计、性能优化等
立即下载
目录引言一、磁盘扩容(扩展容量)(一)按文件系统类型与分区方案分类1. 传统分区(非LVM,如/dev/sda1)2. LVM 逻辑卷(推荐生产环境)(二)特殊说明二、磁盘缩容(减小容量)(一)按文件系统类型与分区方案分类
目录
  • 引言
  • 一、磁盘扩容(扩展容量)
    • (一)按文件系统类型与分区方案分类
      • 1. 传统分区(非LVM,如/dev/sda1)
      • 2. LVM 逻辑卷(推荐生产环境)
    • (二)特殊说明
    • 二、磁盘缩容(减小容量)
      • (一)按文件系统类型与分区方案分类
        • 1. 传统分区(非LVM,ext4/Btrfs支持缩容,XFS不支持)
        • 2. LVM 逻辑卷(ext4/Btrfs支持缩容,XFS不支持)
      • (二)Swap分区扩缩容(独立说明)
        • 扩容(文件形式Swap):
        • 缩容(文件形式Swap):
    • 三、关键注意事项

      引言

      虚拟机磁盘扩缩容需遵循“先调整底层存储(虚拟机软件)→ 再调整分区/逻辑卷 → 最后调整文件系统”的流程。以下按扩容缩容两大类,结合文件系统类型(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(sdhttp://www.devze.coma为虚拟机磁盘)<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 /de编程客栈v/sda 1

      扩展文件系统(需指定挂载点):

      sudo btrfs filesystem resize max /mount_point

      lsblk /dev/sda1

      df -hT

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

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

      http://www.devze.com件系统详细步骤验证命令
      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  
      

      缩容(文http://www.devze.com件形式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磁盘扩缩容的资料请关注编程客栈(www.devze.com)其它相关文章!

      0
      价值2999元 Java视频教程限时免费下载
      专为Java开发者设计,涵盖核心技术、架构设计、性能优化等
      立即下载

      精彩评论

      暂无评论...
      验证码 换一张
      取 消