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

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

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

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群