一次 KVM 虚拟机磁盘占满的排查过程

KVM 虚拟机系统为 CentOS,文件系统为 XFS。

现象如下:

  1. 使用 df -h 命令发现磁盘剩余空间为30k(总大小为30G),使用 df -i 发现 inode 可用数量为 800(总数为18w,正常状态为1000w+)
  2. 虚拟机为初始状态时,磁盘空间使用都正常

排查如下:

  1. 查看了几个日志,大小都在10M以下,并且这些日志几乎一一对应,不存在某个日志比其它多几个数量的问题,又因为是远程客户,于是漏了个文件,干
  2. 使用 du 命令(记住这个命令)排查具体是哪个目录占用的磁盘空间较多,du -h --max-depth=1 / 的结果显示磁盘空间只占用了 25% 左右,另寻它法
  3. 在网上搜索有磁盘文件删除未释放的说法,使用命令 lsof | grep deleted 找到未释放的文件小的可怜只有 10M 左右,这个不成立
  4. 既然磁盘看不出有啥问题,那就从 inode 数量看看,看看哪个目录下打开的文件数量较多 find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n -r | head -n 20 最多的目录还是 man 下的,最多5000,最多的20个目录下的数量相加不足50%,这个也不成立
  5. 从文件系统的角度看看,是不是碎片太多了需要回收一些这个碎片,找到磁盘号 df -aT | grep -w xfs,如果我的文件系统是 /dev/vda3, 那么通过xfs文件系统的命令 xfs_db -c frag -r /dev/vda3 看到只有 1.7% 的碎片,清理碎片 xfs_fsr /dev/vda3, 然而并没啥用处,再次查看只减少了 0.1% 的碎片
  6. 裂开了,找不到解决方案,于是向红帽发了封邮件(未回)

因为一下拿不出解决方案,只能硬着头皮把这个虚拟机从客户那搞回来,恢复现场,有了进展

  1. 解压完后这个镜像文件有 30G,没多想,就是觉得有的大
  2. 尝试对这个镜像文件进行磁盘扩容,qemu-img resize , 在这之前实验了一下一个临时的虚拟机,其中一个命令 qemu-img info 发现两个虚拟机的 virtual size 都是30G,但是显示临时虚拟机的disk size 只有6G,而那个有问题的虚拟机 disk size 刚好是 30G,目前这个虚拟机还没有启动,肯定是里面真的占用了这么多磁盘
  3. 于是准备把里面的日志文件拿出来在 vscode 中看一下,然后使用 virt-copy-out 一个文件时发现有一步巨慢,好了后看了一下这个文件 20G+,du的结果加上这个文件大小刚好就是总的大小,磁盘的问题就解决了,至于为什么这么大那是业务的东西了

由于和业务相关,所以写的还是有点模糊,这里解释一下

  1. xfs 文件系统的 inode 总数是会变的,在剩余磁盘空间不足5%时,开始减少
  2. 最最最重要的一个点,那个忽略的文件是被隐藏的(挂载内核),ls du 等命令是发现不了这个文件的,刚好人为的疏忽加上隐藏的特性导致排查的困难
  3. 碎片的清理功能还是很有用的,在宿主机上清理一下有几十的碎片被清理

一次 KVM 虚拟机磁盘占满的排查过程的更多相关文章

  1. KVM -> 虚拟机磁盘管理_03

    1.KVM磁盘管理 1.KVM qcow2.raw.vmdk等镜像格式说明:http://blog.csdn.net/zhengmx100/article/details/53887162 raw: ...

  2. 更改kvm虚拟机磁盘大小

    kvm 虚拟机的磁盘大小可通过命令:qemu-img resize filename size 来改,要注意的是resize只支持raw格式的磁盘文件,如果想更改qcow2等格式的磁盘大小,需先用qe ...

  3. nohup磁盘打满问题排查与解决

    使用nohup ... & 命令启动服务器后,磁盘满了,服务宕了,然后一步一步排查是哪个文件过大,最终定位到是nohup.out文件过大,占了40G, df -lh #磁盘容量命令 du -s ...

  4. 记录一次数据库CPU被打满的排查过程

    1 前言 近期随着数据量的增长,数据库CPU使用率100%报警频繁起来.第一个想到的就是慢Sql,我们对未合理运用索引的表加入索引后,问题依然没有得到解决,深入排查时,发现在 order by id ...

  5. Linux磁盘占满 no space left on device

    假如当前文件删除了,如果还有其他进程还在使用这个文件,这个文件删不干净:https://www.cnblogs.com/heyonggang/p/3644736.html 在Linux下查看磁盘空间使 ...

  6. jenkins导致磁盘占满问题

    背景 今天登陆jenkins提示磁盘空间不足,且构建发生错误 排查问题 cd到jenkins 安装目录 执行df -h 发现root目录沾满 执行 du -ah --max-depth=1 发现是.j ...

  7. 【问题记录】 Linux分区磁盘占满,导致ssh登陆闪退

    问题描述 今天要去后台看日志查个问题,通过ssh登陆到服务器后准备用平时非常熟悉的less命令打开日志查看,突然xshell客户端就闪退了.一时感觉很蒙,怎么回事??由于之前有同事遇到类似的问题,提醒 ...

  8. openstack kvm 虚拟机磁盘差异衍生

    1, openstack虚拟实例备份之--多镜像格式多镜像文件合并为一个镜像文件衍生-差异镜像文件    /var/lib/nova/instances/b0abc22f-1a73-4079-b1bc ...

  9. Docker启动出现"No space left on device" 或者 docker日志太多导致磁盘占满问题

    机房有一台服务器上面部署了多个docker容器, 并且每个docker容器都往stderr中源源不断的输出日志,导致磁盘被占满了.Docker容器在启动/重启的时候会往/var/lib/docker中 ...

随机推荐

  1. Spring Boot第四弹,一文教你如何无感知切换日志框架?

    持续原创输出,点击上方蓝字关注我吧 目录 前言 Spring Boot 版本 什么是日志门面? 如何做到无感知切换? 如何切换? 引入依赖 指定配置文件 日志如何配置? 总结 前言 首先要感谢一下读者 ...

  2. 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据

    070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...

  3. GetDlgItem(函数详解)

    转载: https://blog.csdn.net/hk121/article/details/80942850 hwndScroll = GetDlgItem(hwnd, IDC_SCROLL); ...

  4. matlab中reshape 重构数组

    来源:https://ww2.mathworks.cn/help/matlab/ref/reshape.html?searchHighlight=reshape&s_tid=doc_srcht ...

  5. 【题解】 [GZOI2017]小z玩游戏

    题目戳我 \(\text{Solution:}\) 考虑建图.操作可以看作对\(1\)进行的操作,于是有以下运行过程: \(1\to w[i]\to e[i]\to...\) 考虑倍数,一个数可以走到 ...

  6. ASP。netcore,Angular2 CRUD动画使用模板包,WEB API和EF 1.0.1

    下载Angular2ASPCORE.zip - 1 MB 介绍 在本文中,让我们看看如何创建一个ASP.NET Core CRUD web应用程序与Angular2动画使用模板包,web API和EF ...

  7. shell-字符串及整数操作符讲解与多实践

    1. 字符串测试操作符 字符串测试操作符的作用:比较两个字符串是否相同.字符串长度是否为零,字符串是否为null(注:bash区分零长度字符串和空字符串)等. "="比较两个字符串 ...

  8. Pycharm开发环境配置与调试

    在Windows宿主机上搭建Ubuntu虚拟机的Pycharm开发环境,Ubuntu开启Samba服务,使用网络映射将Ununtu下Python项目工程路径映射到Windows下 创建Pycharm工 ...

  9. 多测师_高级肖sir分享pycharm中设置主题和设置代码颜色方法

    一.修改pycharm中的主题颜色 二.修改代码颜色 File-->Settings-->Editor--> Color Scheme-->Language Defaults- ...

  10. 【C语言C++编程入门】——程序结构:构思!

    学习编程语言的最好方法是编写程序.一般来说,初学者编写的第一个程序是一个名为"Hello World"的程序,它简单地将"Hello World"打印到你的电脑 ...