CentOS 7服务器磁盘空间不足?分区扩容实战指南

LEAF
CentOS 7服务器磁盘空间不足会影响服务运行,需通过分区扩容解决,首先使用df -h、lsblk检查磁盘及分区状态,确认文件系统类型(如ext4/xfs),若为LVM,可通过lvextend扩展逻辑卷;若为普通分区,用fdisk调整分区表,重启后执行resize2fs(ext4)或xfs_growfs(xfs)扩展文件系统,最后通过df -h验证扩容结果,确保磁盘空间释放,保障服务器稳定运行。

在服务器运维中,磁盘空间不足是常见问题之一,尤其是运行多年的CentOS 7服务器,随着系统日志、应用数据、临时文件的积累,磁盘分区(尤其是根分区或/var)很容易被占满,导致服务异常、系统卡顿,甚至无法登录,本文将详细讲解如何排查CentOS 7服务器磁盘空间不足问题,并通过分区扩容(含LVM和传统分区)彻底解决空间瓶颈。

如何确认磁盘空间不足?

当服务器出现“磁盘空间不足”的告警或系统变慢时,需先通过命令定位具体是哪个分区耗尽了空间,以下是常用排查方法:

查看分区使用情况:df -h

df -h--human-readable)以易读的格式(GB/MB)显示各分区的磁盘使用量,重点关注Use%(使用率)和Avail(可用空间)。

df -h

示例输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   48G  1.5G  98% /    # 根分区使用率98%,严重不足
/dev/sdb1       100G   20G   80G  20% /data # 数据空间充足
tmpfs           1.9G     0  1.9G   0% /dev/shm

Use%超过90%,且Avail不足1GB,则需立即处理。

定位大文件/目录:du -sh + ls -lh

通过df -h确认问题分区后,用du -sh--summarize --human-readable)逐级排查目录大小,定位占用空间最多的文件或目录。

# 查看根分区下各目录大小(从大到小排序)
du -sh /* 2>/dev/null | sort -hr

示例输出

48G    /var      # /var目录占用48G(日志、缓存可能占大头)
1.2G   /usr      # 应用程序目录
0.5G   /tmp      # 临时文件

/var/log目录过大,可进一步查看日志文件:

du -sh /var/log/* 2>/dev/null | sort -hr

检查inode是否耗尽

有时磁盘空间未满,但inode(文件节点)用尽也会导致无法创建新文件,通过以下命令检查:

df -i

IUse%接近100%,需清理小文件(如临时文件、日志轮转残留)。

磁盘空间不足的解决方案:分区扩容

确认问题分区后,需根据服务器磁盘结构(LVM逻辑卷或传统MBR/GPT分区)选择扩容方案,CentOS 7默认推荐使用LVM(逻辑卷管理),因其支持动态调整分区大小,更灵活。

情况1:使用LVM逻辑卷(CentOS 7默认)

LVM通过“物理卷(PV)→卷组(VG)→逻辑卷(LV)”管理磁盘,扩容逻辑需按“扩容PV→扩容VG→扩容LV→扩容文件系统”步骤操作。

步骤1:确认LVM结构

通过以下命令查看当前LVM布局:

pvdisplay          # 查看物理卷(PV)
vgdisplay          # 查看卷组(VG)
lvdisplay          # 查看逻辑卷(LV)

示例场景

  • 根分区对应逻辑卷/dev/centos/root,属于卷组centos,当前大小50G,已用48G。
  • 服务器新增了一块磁盘/dev/sdb(20G,未分区),需将其加入卷组并扩容根分区。

步骤2:初始化新磁盘为物理卷(PV)

若新增磁盘未分区,可直接初始化为PV;若已分区,需确保分区类型为LVMfdisk/tune2fs设置)。

# 初始化新磁盘/dev/sdb为PV
pvcreate /dev/sdb

确认PV创建成功

pvdisplay /dev/sdb

步骤3:扩容卷组(VG)

将新PV加入现有卷组(如centos):

vgextend centos /dev/sdb

确认VG扩容成功

vgdisplay centos  # 查看"VG Size"是否增加

步骤4:扩容逻辑卷(LV)

为根分区对应的逻辑卷/dev/centos/root增加空间(如全部新增20G):

lvextend -L +20G /dev/centos/root

确认LV扩容成功

lvdisplay /dev/centos/root  # 查看"LV Size"是否变为70G

步骤5:扩容文件系统

逻辑卷扩容后,需同步扩容文件系统,根据文件系统类型选择命令:

  • ext4/xfs文件系统(CentOS 7默认xfs,早期可能为ext4):

    # xfs文件系统(在线扩容,无需卸载)
    xfs_growfs /
    # ext4文件系统(若为ext4)
    resize2fs /dev/centos/root

步骤6:验证扩容结果

再次执行df -h,确认根分区可用空间已增加:

df -h | grep "/dev/mapper/centos-root"

预期输出

/dev/mapper/centos_root  70G   48G   22G  70% /

情况2:传统分区(非LVM)

若服务器未使用LVM(如直接使用/dev/sda1作为根分区),扩容需通过调整分区表实现,操作前务必备份重要数据!

步骤1:确认磁盘与分区结构

lsblk          # 查看磁盘及分区(如/dev/sda为系统盘,/dev/sda1为根分区)
fdisk -l       # 查看分区详情(确认是否有未分配空间)

示例场景

  • 系统盘/dev/sda容量100G,分区/dev/sda1(根分区)占用50G,剩余50G为未分配空间(Unallocated)。

步骤2:调整分区大小(使用fdiskparted

fdisk为例(仅支持MBR分区,GPT分区建议用parted):

fdisk /dev/sda

操作步骤:

  1. 输入p查看当前分区(确认未分配空间位置)。
  2. 输入d删除原有根分区/dev/sda1删除分区会丢失数据,需确保已备份)。
  3. 输入n创建新分区:
    • 类型选择Primary(主分区)。
    • 起始扇区默认(直接回车),结束扇区输入未分配空间的结束位置(如+100G,占满剩余空间)。
  4. 输入t修改分区类型(若原为Linux,无需修改;MBR需确认83)。
  5. 输入w保存分区表(会触发磁盘重绘,可能需重启)。

步骤3:重启服务器(若提示)

fdisk保存后提示“重启使分区表生效”,需重启服务器:

reboot

步骤4:扩容文件系统

重启后,用对应文件系统命令扩容:

  • xfs文件系统
    xfs_growfs /
  • ext4文件系统
    resize2fs /dev/sda1

步骤5:验证扩容结果

df -h | grep "/dev/sda1"

预期输出

/dev/sda1   100G   48G   52G  48% /

情况3:无未分配空间?添加新磁盘并挂载

若服务器磁盘已无未分配空间(如所有分区已占满),且无法调整现有分区(如数据无法迁移),可添加新磁盘并挂载到指定目录(如/data)。

步骤1:添加新磁盘并识别

服务器插入新磁盘后,用以下命令识别:

lsblk          # 查看新磁盘(如/dev/sdc)
echo "- - -" > /sys/class/scsi_host/host0/scan  # 触发磁盘识别(若未自动显示)

步骤2:分区与格式化

# 使用parted分区(推荐GPT格式)
parted /dev/sdc mklabel gpt
parted /dev/sdc mkpart primary ext4 1MiB 100%    # 创建分区
parted /dev/sdc print                               # 确认分区
# 格式化分区
mkfs.ext4 /dev/sdc1

步骤3:创建挂载目录并挂载

mkdir /data
mount /dev/sdc1 /data

步骤4:设置开机自动挂载

编辑/etc/fstab,添加新磁盘信息:

echo "/dev/sdc1 /data ext4 defaults 0 0" >> /etc/fstab

步骤5:验证挂载

df -h | grep "/data"

风险提示与注意事项

  1. 操作前备份:分区调整(尤其是删除/重建分区)有数据丢失风险,务必提前备份重要数据(如使用rsynctar或快照)。
  2. 业务低峰期操作:避免在业务高峰期执行扩容,减少对服务的影响。
  3. 文件系统兼容性:不同文件系统(xfs/ext4)扩容命令不同,切勿混用(如ext4用xfs_growfs会失败)。
  4. LVM vs 传统分区:LVM扩容更灵活,支持在线调整;传统分区需调整分区表,风险较高,建议新服务器使用LVM。
  5. 监控与清理:扩容后需定期监控磁盘空间(如用crontab执行df -h告警),并清理无用文件(如日志轮转、临时文件)。

预防磁盘空间不足的日常维护

  1. 配置日志轮转:通过logrotate自动清理旧日志(如/etc/logrotate.conf)。
  2. 定期清理临时文件:删除/tmp/var/tmp中的过期文件(如find /tmp -mtime +7 -exec rm -rf {} \;)。
  3. 监控磁盘使用率:用nagioszabbixPrometheus设置告警阈值(如使用率超过80%告警)。
  4. 合理规划分区:安装系统时根据业务需求分配分区大小(如/var/home单独分区,避免根分区被占满)。

CentOS 7服务器磁盘空间不足可通过“排查定位→分区扩容(LVM/传统分区/新磁盘挂载)”解决,LVM因支持动态调整,是扩容的首选方案;传统分区风险较高,需谨慎操作;无未分配空间时,添加新磁盘并挂载是简单有效的替代方案,日常运维中,定期监控和清理磁盘空间,才能从根本上避免空间不足问题。

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码