点滴生活,生活点滴,都需要你来陪伴,往后余生,请多多指教。男人最幸福的事情是:一个好妻子,一份好工作,一个好身体。

2009-2026
DFHL
首页 » 服务器运维 » mysql服务器/dev/mapper/centos-root 目录满导致服务异常

mysql服务器/dev/mapper/centos-root 目录满导致服务异常

故障背景:某一个应用无法登录,然后开发测试发现数据库锁死,然后我登录数据库服务器查看发现发现/dev/mapper/centos-root是满的,推测是没空间导致的数据库异常。
fdisk -l 查看发现还么有多余的硬盘,查看发现是虚拟机,然后给虚拟机增加了1块500G硬盘,本来想增加1t的但是宿主机才2T空间,先增加500g吧。然后就是通过lvm进行扩容然后很轻松就增加了系统空间,重启数据库后发现无法访问数据库服务,然后再看发现原来管理员直接防火墙是关闭的不是开放的3306端口。然后通过命令开放端口,重新加载防火墙策略,最后问题解决。


完整扩容步骤(直接复制执行)

  1. 创建物理卷(PV)
    将新硬盘 /dev/sdb 初始化为 LVM 物理卷:
    bash
    运行

    初始化新硬盘为LVM物理卷

    pvcreate /dev/sdb

验证物理卷创建结果(能看到/dev/sdb)

pvdisplay

  1. 将物理卷加入卷组(VG)
    将 /dev/sdb 加入根目录所在的卷组 centos:
    bash
    运行

    扩展卷组,把/dev/sdb加入centos卷组

    vgextend centos /dev/sdb

验证卷组空间(能看到Free PE / Size 增加了约500G)

vgdisplay centos

  1. 扩展逻辑卷(LV)
    将根目录对应的逻辑卷扩容(推荐直接使用全部空闲空间):
    bash
    运行

    扩展逻辑卷,使用卷组中全部空闲空间

    lvextend -l +100%FREE /dev/mapper/centos-root

验证逻辑卷扩容结果(Size 会显示扩容后的大小)

lvdisplay /dev/mapper/centos-root

  1. 扩容文件系统(关键步骤)
    CentOS 系统默认使用 XFS 文件系统,执行以下命令让系统识别扩容后的空间:
    bash
    运行

    在线扩容XFS文件系统(无需卸载)

    xfs_growfs /dev/mapper/centos-root
    如果你确认是 ext4 文件系统(极少数情况),请执行:resize2fs /dev/mapper/centos-root

  2. 验证扩容结果
    bash
    运行

    查看根目录空间(已用%会大幅下降)

    df -hl /
    常见问题处理
    如果执行 pvcreate /dev/sdb 提示 Device /dev/sdb already exists in filesystem:
    说明硬盘已有分区表,先清除:
    bash
    运行

    进入fdisk交互模式

    fdisk /dev/sdb

    输入d删除所有分区,再输入w保存退出

    重新执行pvcreate /dev/sdb

    如果卷组名不是 centos:
    执行 vgdisplay 查看实际卷组名,替换命令中的 centos 即可。

这两个常见问题都没有遇见,倒是遇见另外一个问题

报错 Couldn't create temporary archive name. 本质是根目录 / 空间 100% 已满,LVM 工具(vgextend)在执行时需要在 /etc/lvm/archive/ 或 /tmp 目录下创建临时归档文件,但根目录无剩余空间,导致创建失败。
✅ 解决方案(按优先级执行)
方案 1:临时清理根目录空间(应急操作)
先释放少量空间让 LVM 工具能正常工作:
bash
运行

1. 清理/tmp目录下的临时文件

rm -rf /tmp/*

2. 清理系统日志(保留最近7天)

find /var/log -type f -mtime +7 -delete

3. 清理yum缓存

yum clean all

4. 验证空间是否释放

df -hl /
清理出至少 100MB 空间后,重新执行 vgextend centos /dev/sdb。

方案 2:修改 LVM 临时目录(绕开根目录)
如果根目录无法清理出空间,可临时修改 LVM 配置,将临时文件指向其他有空间的目录:
创建临时目录(例如 /boot/tmp,从之前截图看 /boot 还有 864M 可用):
bash
运行
mkdir -p /boot/tmp
chmod 777 /boot/tmp
临时修改环境变量,让 LVM 使用新目录:
bash
运行
export TMPDIR=/boot/tmp
再次执行扩容命令:
bash
运行
vgextend centos /dev/sdb
操作完成后恢复环境变量:
bash
运行
unset TMPDIR
方案 3:使用 --force 跳过归档(风险操作)
如果以上方法都无效,可强制跳过归档步骤(仅应急使用):
bash
运行
vgextend --force centos /dev/sdb

我是使用的方案1解决的,感觉这个比较稳妥可控。

文章如无特别注明均为原创! 作者: 等风也等你, 转载或复制请以 超链接形式 并注明出处 走近风的BLOG
原文地址《 mysql服务器/dev/mapper/centos-root 目录满导致服务异常》发布于2026年3月18日

分享到:
打赏

评论

游客

看不清楚?点图切换