centos虚拟机存储空间管理
导读:CentOS 虚拟机存储空间管理 一 快速排查与清理 查看整体占用与类型:运行df -h或df -Th,确认哪个挂载点(如**/、/var**、/home)接近满额,并识别文件系统类型(如xfs、ext4)。 定位大目录与文件: 逐级查...
CentOS 虚拟机存储空间管理
一 快速排查与清理
- 查看整体占用与类型:运行df -h或df -Th,确认哪个挂载点(如**/、/var**、/home)接近满额,并识别文件系统类型(如xfs、ext4)。
- 定位大目录与文件:
- 逐级查看一级目录占用:sudo du -sh / 2> /dev/null | sort -hr | head -n 20*
- 查找大于指定大小的文件:find / -type f -size +100M -exec ls -lh { } ; 2> /dev/null
- 常见可清理项(谨慎执行,避免删除正在使用的文件):
- 包管理缓存:sudo yum clean all;移除无用依赖:sudo yum autoremove
- 日志与临时文件:sudo find /var/log -type f -name “*.gz” -delete;sudo rm -rf /tmp/ /var/tmp/**
- 旧内核(RHEL/CentOS 7/8 常用):sudo package-cleanup --oldkernels
- Docker 垃圾回收:docker system prune -af --volumes(会删除停止容器、悬挂镜像与无用卷)
- 若发现**/var/lib/docker**占用异常高,优先清理无用镜像/容器/卷,再考虑迁移目录或扩容。
二 在线扩容流程 LVM 场景
- 宿主机侧扩容虚拟磁盘:在 VMware/VirtualBox/KVM 中先关机,扩展虚拟硬盘容量(例如从100G扩到200G),再启动系统。
- 识别新增空间:
- 查看磁盘与分区:lsblk、fdisk -l
- 若是 SCSI 设备未自动识别,可触发重扫:
- 例如:echo “- - -” > /sys/class/scsi_host/host0/scan(按需对 host0/host1 执行)
- 场景 A 扩展现有 sda 的未分配空间(推荐)
- 分区:执行fdisk /dev/sda,新建分区(通常得到**/dev/sda3**),将类型设为Linux LVM(8e),写入分区表。
- 通知内核:partprobe 或重启。
- 纳入 LVM:
- 创建物理卷:pvcreate /dev/sda3
- 扩展卷组:vgextend < VG名> /dev/sda3(VG 名可用 vgs 查看)
- 扩展逻辑卷:
- 将卷组剩余空间全给根 LV:lvextend -l +100%FREE /dev/mapper/-root
- 或指定增量:lvextend -L +50G /dev/mapper/-root
- 扩展文件系统:
- XFS:xfs_growfs /(或指定挂载点)
- ext2/3/4:resize2fs /dev/mapper/-root
- 验证:df -h 应显示新容量。
- 场景 B 新增一块磁盘(/dev/sdb)并加入 LVM
- 分区:fdisk /dev/sdb → 新建分区(如**/dev/sdb1**)→ 类型8e → 保存
- 纳入 LVM:pvcreate /dev/sdb1 → vgextend < VG名> /dev/sdb1
- 扩展 LV 与文件系统(同上)。
- 关键要点:
- LVM 扩容顺序为:PV → VG → LV → 文件系统;最后一步扩容文件系统不可遗漏。
- XFS 必须在挂载状态下扩容;ext4 可用 resize2fs 在线扩。
三 非 LVM 或根分区不在 LVM 的扩容
- 方案 1 使用 GParted LiveCD/ISO 调整分区
- 关闭虚拟机 → 挂载 GParted ISO 启动 → 调整目标分区大小 → 应用 → 重启进入系统后用 resize2fs/xfs_growfs 扩文件系统(按实际文件系统选择)。
- 方案 2 添加新磁盘并挂载为大目录
- 虚拟机设置中添加新硬盘 → 系统内分区并格式化(如 mkfs.xfs /dev/sdb1)→ 挂载到需要扩容的目录(如 /var/lib/docker):
- 临时:mount /dev/sdb1 /var/lib/docker
- 永久:写入 /etc/fstab(建议使用 UUID,可用 lsblk -f 查询)。
- 虚拟机设置中添加新硬盘 → 系统内分区并格式化(如 mkfs.xfs /dev/sdb1)→ 挂载到需要扩容的目录(如 /var/lib/docker):
- 方案 3 迁移目录后替换原挂载点
- 挂载新盘到临时目录 → 停相关服务(如 systemctl stop docker)→ rsync -aXS /var/lib/docker/ /mnt/newdisk/docker/ → 备份原目录 → 挂载新盘到 /var/lib/docker → 验证无误后删除旧数据。
- 风险提示:分区/移动系统目录存在数据风险,务必先完整备份,并在变更 /etc/fstab 前测试挂载。
四 缩减占用与回收空间
- 虚拟机层面回收磁盘:
- 清理无用文件后,执行磁盘“压缩/收缩”:
- VMware Workstation:图形界面“压缩”,或命令行:vmware-vdiskmanager -k /path/to/disk.vmdk
- VirtualBox:先对空闲空间写零(如 zerofree),再执行:VBoxManage modifyhd /path/to/disk.vdi --compact
- 删除无用快照(快照会显著占用宿主机空间)。
- 清理无用文件后,执行磁盘“压缩/收缩”:
- 系统层面精简:
- 清理包缓存、旧日志、临时文件、旧内核、未使用软件与容器镜像(见第一部分)。
- 若使用 LVM,可先缩小文件系统(需离线,风险高),再lvreduce,最后回收 PV;生产环境建议优先“加盘+迁移目录”替代缩容。
五 常用命令与排错清单
- 快速诊断
- 容量与类型:df -h、df -Th
- 块设备与分区:lsblk、fdisk -l
- LVM 结构:pvs、vgs、lvs、pvdisplay、vgdisplay、lvdisplay
- 扩容后容量未变化
- 确认已执行文件系统扩容:xfs_growfs < 挂载点> (XFS)或 resize2fs (ext4);XFS 需对挂载点执行,ext4 可对 LV 执行。
- 扩展分区看不到新空间
- 执行 partprobe 或重启;若是 SCSI 设备,尝试 echo “- - -” > /sys/class/scsi_host/hostX/scan 触发重扫。
- 扩展失败提示空间不足
- 使用 vgs 检查 Free 空间;必要时先扩展卷组(新增磁盘或扩展 sda 后创建新 PV 并 vgextend)。
- 生产建议
- 变更前创建快照/备份;对关键业务选择维护窗口;对 /var/lib/docker、/var/log 等大目录优先采用“新增磁盘+迁移”方案,降低风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos虚拟机存储空间管理
本文地址: https://pptw.com/jishu/778097.html
