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

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

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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?