【一般排查思路】针对银河麒麟高级服务器操作系统磁盘空间已满

本文主要是介绍【一般排查思路】针对银河麒麟高级服务器操作系统磁盘空间已满,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 本身磁盘空间已满

有时候我们会看到服务器上有提示“设备上没有空间”,如图1。

图 1

如果是磁盘本身空间已满,我们可以借助du工具来排查,比如首先cd / 切换到根目录,然后 du -sh * | sort -rh | head -n 3查看空间占用最大的前3个文件或者目录,这里我们可以看到 /usr、/var、/run目录占用比较大,如图2。

图 2

然后同理,使用 du 工具一层一层看子目录下哪个文件比较大,这里我们可以看到 /var/img3、/var/img1、/var/img4文件比较大以及 /usr/local/src/下面的 img、img1比较大,如图3。

图 3

删除对应的文件后,发现磁盘空间占用正常,如图4。

图 4

如果需要查看当前目录下所有文件以及文件夹的大小,可以执行 du -sh * ,如需排序使用du -sh  * | sort  -rh,如果只要查看当前目录某个文件大小,可以执行 du -sh  文件名,如图5。

图 5

2.存在未释放的 inode

在linux系统中,想要彻底的删除一个文件,取决于两个“计数器”,这两个计数器一个是磁盘引用的“计数器”(记录了这个文件有几个硬链接),另一个则是内存引用的“计数器”(纪录了这个文件正在被几个进程所调用),当这两个“计数器”全部为0,也就是这个文件没有硬链接,没有任何进程在调用的时候,这个文件才会真正的被删除。

有时候我们看到一种情况,df -h看到磁盘空间满了,但是du -sh查看,并未发现有占用空间大的文件,此时有可能系统中有进程使用了某些文件,但是在有进程使用这些文件的情况下,删除这些文件,则会看到文件虽然删除了,但是空间却没释放。需要结束进程,空间才能释放,这也是很多时候系统空间被沾满,重启了一下系统后又恢复了的原因。

可以使用lsof | grep deleted,最后有deleted标注的就是文件已经删了,但是句柄未释放,空间也未释放的进程,要释放空间,可以将对应的进程杀掉,如图6。

图 6

3.inode满了

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode爆满情况就较为严重了,程序运维会有问题,会报磁盘无空间 No space left on device,就像下图,查看df发现磁盘空间使用还没到100%,如图7。

图 7

但是如果df -i 发现根分区的inode到达100%的时候,也会报错“No space left on device”,解决方案就是删除这么小文件,如图8。

图 8

4. tmpfs 内存空间已满

/run 目录一般为 tmpfs文件系统,这些数据实际存储的是RAM和交换空间中,/run 目录的作用用于存储系统运行时候的重要的信息,如果他满了可能会导致系统无法启动新的进程,服务无法正常运行或者无法创建新的pid文件,下图,我们可以看到 /run目录使用为100%,此时如果有个人ssh到此服务器,如图9。

图 9

会看到日志里面有 No space left on device的提示,如图10。

图 10

同样,如果我们此时重启服务,比如auditd,会看到服务卡住无法重启,并且使用journalctl -xeu auditd日志里面同样有No space left on device的情况,说明即使根目录没满,/run目录满了后,会有类似磁盘空间已满的提示,如图11,如12。

图 11

图 12

另外,内存整体不够,同样会导致类似的问题,下图为启动时候,内存不够,导致系统启动异常,提示 No space left on device,如图13。

图 13

5.重复挂载

举个例子,假如我 /var/目录原来已经把空间占用满了,此时我们写入日志的时候,会报出来文件系统已满,但是如果我们此时用新的分区重新挂载到 /var/目录下,像下图,就会造成,df -h 看根分区占满了,已经用了48G了,但是通过 du -sh 看根分区下各个文件系统大小,加起来却只有17G,原因是,我用新的设备重新挂载 /var/目录,以至于我df -h算的是挂载之前的 /var/目录大小而不是挂载之后的 /var目录大小,如图14。

图 14

这篇关于【一般排查思路】针对银河麒麟高级服务器操作系统磁盘空间已满的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937199

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

MYSQL事务死锁问题排查及解决方案

《MYSQL事务死锁问题排查及解决方案》:本文主要介绍Java服务报错日志的情况,并通过一系列排查和优化措施,最终发现并解决了服务假死的问题,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录问题现象推测 1 - 客户端无错误重试配置推测 2 - 客户端超时时间过短推测 3 - mysql 版本问