进阶-Linux系统管理体系-磁盘管理体系

一、磁盘管理之故障案例

1、磁盘空间不足-经典版本

错误提示: no space left on device

现象: df -h某个磁盘分区使用率达到100%,如何排查,如何处理?

模拟故障:创建1个大文件

dd if=/dev/zero of=/var/log/nginx.log bs=1M count=2000

这里插一个小bug:我看这个2G的文件有点小,模拟不够真实,我就直接20G,因为是2核2G的机器,导致CPU打满不下。我想再开一个终端kiss掉找补回来,但是提示abrt-cli status timed out,因为系统资源不足导致连接不上,差点宕机!所以创造大文件还是慎重!!!
在这里插入图片描述

排查:df -hdu -sh

#df -h 查看哪里空间不足,哪个分区#du -sh 详情查看目录所占空间
du -sh /*
du -sh /var/*
du -sh /var/log/*
​
#最终通过du -sh 排查到具体的大文件或大的目录
#找出后确认是否可以删除

温馨提示: /sys/ /proc/ 等目录是虚拟目录,不要在里面创建文件,/dev/是设备目录,也不要在里面创建

迷糊指南🌟🌟🌟🌟🌟🌟

ll显示中,所展示的目录,目录的大小是目录本身的大小。可以进入目录用ls -ldh验证

[root@yunwei ~]# ll -h
总用量 2.1M
drwxr-xr-x 2 root root 4.0K 26 18:47 find
drwxr-xr-x 2 root root 2.1M 26 18:31 inode
-rwxrwxrwx 1 root root    0 128 20:39 test.txt
-rw-r--r-- 1 root root    0 128 21:02 test.txt
[root@yunwei ~]# cd find/
[root@yunwei ~# ls -hld
drwxr-xr-x 2 root root 4.0K 26 18:47 

du -sh展示的是目录下所有文件的大小

[root@yunwei ~]# du -sh find/
2.0G    find/

那么你可能会追问这个-s是什么意思?(表示对指定目录或文件进行摘要统计,只显示总和。)

[root@yunwei ~]# du -h find/
2.0G    find/test
4.0G    find/

实验是检验整理的唯一标准!!!

2、磁盘空间不足-inode

inode存放文件属性信息,block存放文件内容.

inode在磁盘格式化后,数量是固定的

未来工作中可能出现大量小文件,导致占用inode速度快于block,inode不足了,也会导致磁盘空间不足

现象: 操作的时候,提示 no space left on device ,df -h查看发现磁盘空间没有满,问什么原因导致的?

原因: 磁盘空间不足,不是block导致的,还有一种情况是inode数量不足.

排查:

1、df -h查看磁盘空间没有满,df -i查看inode使用情况.

2、找出这个分区中,大目录(目录本身大小大于1MB,du -sh目录所占空间)就行

3、找出有大量小文件的目录

解决: 确认是否可以删除或处理.

[root@yunwei ~]# find / -type d -size +1M 
/test/inode
[root@yunwei ~]# ls -ldh /test/inode
drwxr-xr-x 2 root root 2.1M 26 18:31 /test/inode

目录的大小通常与其中包含的文件和子目录的数量有关,目录的大小实际上是它所占用的磁盘空间大小,包括存储元数据信息的空间以及指向目录中文件和子目录的指针所占用的空间。

找个目录模拟与分析touch {1..100000}

ls -l查看的目录大小表示目录下面1层的文件名字大小

目录占的磁盘空间:du -sh 查看目录下面所有文件block大小

如果在清理战场的时候报错列表过长,可以采用管道命令
在这里插入图片描述

3、磁盘空间不足-未彻底删除导致故障

3.1、预备姿势-文件删除原理

1个文件被彻底删除的条件:

  • 条件1:删除文件,硬连接数为0,文件相当于被删除了. 使用rm命令.
  • 条件2:文件调用数为0,文件是否被使用中(命令,服务)

如何排查?

  • 如何知道硬连接数是否为0,一般rm后通过ls,find查看,没有则为0.
  • 如何知道进程调用数是否为0,lsof(list open files显示打开的文件),lsof |grep 文件名
[root@yunwei ~]# lsof | grep passwd
tail      26178         root    3r      REG        253,1       1335     262590 /etc/passwd
#显示系统中所有被打开的文件(被调用的文件)
[root@yunwei ~]# ps -ef | grep tail
root     26178 25730  0 22:08 pts/2    00:00:00 tail -f /etc/passwd
lsof每一列说明
第1列命令或服务名字
第2列pid
第3列用户
第7列文件大小(字节)
第8列文件inode号码
最后一列文件名
3.2、故障模拟

现象:

  • 提示磁盘空间不足,df-h提示磁盘空间满了
  • 继续排查du -sh排查,统计总大小,发现没有满
  • 怀疑可能是文件未彻底删除导致的,
#1. 模拟故障(文件被调用中,但是没有入口)
seg 500000000 >big.1og
通过tai1 -f 调用
rm -f big.1og
​
#2.排查
[root@yunwei ~]# df -h
#磁盘满了
[root@yunwei ~]# du -sh /
#文件大小和上述占用不一样#3. 发现问题
通过du -sh 分析发现实际占用的才3.9GB
​
#4.继续排查,需要使用1sof
lsof | grep delete
在1sof中delete标记表示这个文件没有入口(硬连接数为0),但是还有进程调用.
tai]  15974 root 3r REG 253,1 20971520000 792978 /var/1og/nginx.1og(deleted)#5.解决问题
结束这个进程(服务),重启服务.

文件硬链接数为0了,但是进程调用数不为0导致的问题.

现象:df -h查看磁盘满了,实际使用du -sh查看发现没有满.

4、总结

磁盘空间不足故障分类现象排查解决
blockdf -h磁盘空间不足df -h,du -sh一层一层找,直到找出对应的文件或目录确认后再删除
inodedf -h磁盘空间有剩余,创建文件,操作服务提示磁盘空间不足.df -i,找出系统中的大目录确认后再删除
文件未彻底删除df -h查看磁盘空间不足,du -sh 查看磁盘空间还有剩余Isofgrep delete,找出进程或服务

二、文件系统

文件系统:磁盘中文件的组织方式

常见的文件系统说明
xfscentos 7默认的文件系统
ext4centos 6.x ubuntu 默认的文件系统,公有云
ext3centos 5.x默认的文件系统
swap交换分区,也算是个文件系统
#公有云常用的文件系统
[root@yunwei ~]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
devtmpfs       devtmpfs  1.8G     0  1.8G    0% /dev
tmpfs          tmpfs     1.9G   24K  1.9G    1% /dev/shm
tmpfs          tmpfs     1.9G  544K  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/vda1      ext4       50G   11G   37G   23% /
tmpfs          tmpfs     370M     0  370M    0% /run/user/0
[root@yunwei ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

三、磁盘性能指标

磁盘性能指标说明
吞吐量(读写速度)一般值得是磁盘读写速度
iops每秒可以进行的io数量(io per second),每秒可以进行读写次数
延迟进行读写的时候操作延时
故障间的平均时间(MTBF)固态硬盘 基本都是百万小时
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值