一、磁盘管理之毛病案例

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,由于体系资源缺乏导致连接不上,差点宕机!所以发明大文件仍是慎重啊

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

排查: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@nanjing shishuwu]# 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 shishuwu.txt
-rw-r--r-- 1 root root  0 128 21:02 test.txt
[root@nanjing shishuwu]# cd find/
[root@nanjing find]# ls -hld
drwxr-xr-x 2 root root 4.0K 26 18:47 

du -sh展现的是目录下所有文件的巨细

[root@nanjing shishuwu]# du -sh find/
2.0G  find/

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

[root@nanjing shishuwu]# 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@nanjing ~]# find / -type d -size +1M 
/shishuwu/inode
[root@nanjing ~]# ls -ldh /shishuwu/inode
drwxr-xr-x 2 root root 2.1M 2月  6 18:31 /shishuwu/inode

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

找个目录模仿与剖析touch {1..100000}

ls -l检查的目录巨细表明目录下面1层的文件姓名巨细

目录占的磁盘空间:du -sh 检查目录下面所有文件block巨细

如果在清理战场的时分报错列表过长,能够采用管道指令

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

3、磁盘空间缺乏-未完全删去导致毛病

3.1、准备姿态-文件删去原理

1个文件被完全删去的条件:

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

怎么排查?

  • 怎么知道硬连接数是否为0,一般rm后经过ls,find检查,没有则为0.
  • 怎么知道进程调用数是否为0,lsof(list open files显现打开的文件),lsof |grep 文件名
[root@nanjing ~]# lsof | grep passwd
tail   26178     root   3r    REG    253,1    1335   262590 /etc/passwd
#显现体系中所有被打开的文件(被调用的文件)
[root@nanjing ~]# 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@oldboy-aliyun-servers ~]# df -h
#磁盘满了
[root@oldboy-aliyun-servers ~]# 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、总结

磁盘空间缺乏毛病分类 现象 排查 解决
block df -h磁盘空间缺乏 df -h,du -sh一层一层找,直到找出对应的文件或目录 承认后再删去
inode df -h磁盘空间有剩下,创立文件,操作服务提示磁盘空间缺乏. df -i,找出体系中的大目录 承认后再删去
文件未完全删去 df -h检查磁盘空间缺乏,du -sh 检查磁盘空间还有剩下 Isof | grep delete,找出进程或服务 重启服务或者kill掉

二、文件体系

文件体系:磁盘中文件的组织方法

常见的文件体系 阐明
xfs centos 7默许的文件体系
ext4 centos 6.x ubuntu 默许的文件体系,公有云
ext3 centos 5.x默许的文件体系
swap 交流分区,也算是个文件体系
#公有云常用的文件体系
[root@nanjing ~]# 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@nanjing ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

三、磁盘功能指标

磁盘功能指标 阐明
吞吐量(读写速度) 一般值得是磁盘读写速度
iops 每秒能够进行的io数量(io per second),每秒能够进行读写次数
推迟 进行读写的时分操作延时
毛病间的均匀时间(MTBF) 固态硬盘 根本都是百万小时