Linux磁盘管理故障案例与特殊符号

老男孩教育-王牌班-83期-系统管理体系-

磁盘管理故障案例与特殊符号

1. 日常复盘与今日内容

1.1 复盘

磁盘命名与分区命名

磁盘分区,格式化,挂载

永久挂载

创建swap
mbr vs gpt (parted)
磁盘分区方案

1.2 今日内容

磁盘空间不足故障案例

正常磁盘空间不足

inode引起的
文件未彻底删除导致,磁盘空间不足.

特殊符号

正则表达式

2. 系统管理-磁盘故障案例

2.1 磁盘空间不足

现象: df -h某个磁盘分区使用率达到100%,如何排查,如何处理? no space
left on device
模拟: 创建 1 个大文件(小伙伴完成)
排查: df,du
解决: 通过du -sh 排查到具体的大文件或目录,找出后确认是否可以删除.
⚠ 温馨提示: /sys/ /proc/等目录是虚拟目录,不要在里面创建文件.
1 dd if=/dev/zero  of=/var/log/nginx.log  bs=1M count= 2000
#1. df -h 查看哪里空间不足,哪个分区
#2. du -sh详细查看目录所占空间
du -sh  排查占用空间大的目录
du -sh /var
du -sh /var/log
#3. 通过du -sh 排查到具体的大文件或目录
#4. 找出后确认是否可以删除.

1 2 3 4 5 6 7 8 9

10

11

12

2.2 磁盘空间不足-inode

现象: 操作的时候,提示no space left on device,df -h查看发现磁盘空间
没有满,问什么原因导致的?
原因: 磁盘空间不足,block导致,还有一种情况是inode不足.
排查:
 df -h查看磁盘空间没有满,df -i查看inode使用情况.
 找出这个分区中,大目录(目录本身大小大于1MB,du -sh目录所占空间)就
行.
 找出有大量小文件的目录
解决: 确认是否可以删除或处理.

找个目录模拟与分析

ls -l 查看的目录大小表示目录下面 1 层,文件名字大小
目录占的磁盘空间: du -sh 查看 目录下面所有文件block大小只和.
模拟inode满了,创建小文件100k
mkdir -p /oldboy/test-inode
cd /oldboy/test-inode
touch {1100000}

1 2 3 4 5 6

小结

现象: df -h查看磁盘空间没有满,df -i查看不足.
未来具体的情况,服务生成大量小文件.

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

1) 预备姿势

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

排查

如何知道硬连接数是否为0,一般rm后通过ls,find查看,没有则为0.
如何知道进程调用数是否为0, lsof(list open files显示打开的文件),
lsof |grep 文件名
dd if=/dev/zero  of=/tmp/100k bs=1k  count= 100
mkfs.ext4 /tmp/100k
mkdir -p /oldboy/inode/
mount /tmp/100k /oldboy/inode/
touch /oldboy/inode/lidao{0110}.txt
提示磁盘空间不足的时候,检查df -h 与df -i.

1 2 3 4 5 6 7

2) 故障模拟

现象:

提示磁盘空间不足,df -h提示磁盘空间满了.
继续排查du -sh排查,统计总大小,发现没有满.
怀疑可能是文件未彻底删除导致的.

模拟与排查

#1.

dd创建点大文件

1

2

通过tail -f 调用
rm -f /var/log/nginx.log
#2.
排查
df -h
[root@oldboy-aliyun-servers ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 461M 0 461M 0 % /dev
tmpfs 471M 0 471M 0 % /dev/shm
tmpfs 471M 728K 471M 1 % /run
tmpfs 471M 0 471M 0 % /sys/fs/cgroup
/dev/vda1 40G 24G 15G 63 % /
tmpfs 95M 0 95M 0 % /run/user/
tmpfs 95M 0 95M 0 % /run/user/
[root@oldboy-aliyun-servers ~]# du -sh /
3 .9G /
#3. 发现问题
通过du -sh 分析发现实际占用的才3.9GB
#4. 继续排查
需要使用lsof
lsof |grep delete
在lsof中delete标记表示这个文件没有入口(硬连接数为0),但是还有进程调
用.
lsof |grep nginx
tail 15974 root 3r REG
 253 ,1 20971520000 792978 /var/log/nginx.log (deleted)
#5. 解决问题
结束这个进程(服务),重启服务.

3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

磁盘空间

不足故障

分类

现象 排查 解决

block df -h磁盘空间不足
df -h,du -sh一层一层
找,直到找出对应的文件或
目录

确认

后再

删除

inode
df -h磁盘空间有剩余,创建
文件,操作服务提示磁盘空间
不足.
df -h,df -i,找出系统
中的大目录

确认

后再

删除

block 文
件未彻底
删除
df -h查看磁盘空间不足,du
-sh 查看磁盘空间还有剩余
loof |grep delete,找
出进程或服务

重启

服务

3) 小结

现象: df -h磁盘空间已经满了,du -sh 统计磁盘空间还有剩余.文件未彻底删除
导致的故障
排查:
 losf |grep delete ,找出对应的服务或命令
重启服务或结束命令,重启后被占用的空间会被释放.

2.4 总结

2.5 文件系统

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

常见文件系统

xfs centos 7默认的文件系统即可
ext4 centos 6.x ubuntu 默认的文件系统
ext3 centos 5.x 默认的文件系统

磁盘性能指标

吞吐量(读写速度) 读写速度

iops 每秒可以进行读写次数
延迟 进行读写的时候操作延时

2.5 磁盘性能指标

fio可以测试这些指标

3. 总结

磁盘选型

Raid级别
磁盘分区,格式化,挂载,永久挂载
swap创建
企业分区规则
磁盘故障案例: no space left on device,模拟环境(复现),分析,排查,解
决.
文件系统
磁盘性能指标
1 (https:help.aliyun.com/document_detail/147897.htm)

引号 含义

单引号 所见即所得,单引号里面的内容会原封不动输出.

双引号 和单引号类似,对双引号里面的特殊符号会进行解析.

不加引号 和双引号类似,额外支持通配符(匹配文件) *.log {110}
反引号 优先执行,先执行反引号里面的命令.

引号系列

重新向符号系列

正则表达式+grep

4. 三剑客日志处理系列-特殊符号

引号系列: '' "" 不加引号

重定向符号系列

4.1 引号系列 ⭐ ⭐ ⭐ ⭐ ⭐

对于Linux大部分命令通用,四剑客目前单独记忆与使用即可.

#单引号

echo 'oldboy `whoami` $(pwd) {ae}'
#双引号
echo "oldboy `whoami` $(pwd) {ae}"
#不加引号
echo oldboy `whoami` $(pwd) {ae}

1 2 3 4 5 6

4.2 重定向符号系列

1) 概述

重定向:改变输出的方向.

重定向符号 含义 应用场景

> 或 1> 标准输出重定向后写入. : 先清空文件,然

大部分情况下先清空的时

候可以使用.

创建文件.

或 1 标准输出追加重定向到文件末尾. : 直接写入 修改配置文件的时候. ,表示追加

2> 标准件,然后写入错误信息 错误 输出重定向: .先清空文 获取错误输出的时候使用.

2 标准把错误写入到文件末尾 错误追加 输出重定向. : 直接 获取错误输出的时候使用.

命令

oldboy.log
2>&

无论对错都把结果写入到文件中. 比较常用中常用. ,定时任务,脚本

命令

&oldboy.log 无论对错都把结果写入到文件中.

比较常用,定时任务,脚本

中常用.

< 或 0< 标准输入重定向 很少用用xargs,tr,搭配某几个命令
 或 0 标准输入追加重定向 与文件写入多行内容cat搭配使用 表示向

2) 重定向符号

标准输出重定向与错误重定向

[root@oldboy-aliyun-servers ~ eco aaaa lidao.txt
-bash: eco: command not found
[root@oldboy-aliyun-servers ~ cat lidao.txt
lidao
lidao
[root@oldboy-aliyun-servers ~ eco aaaa 2lidao.txt
[root@oldboy-aliyun-servers ~

1 2 3 4 5 6 7 8

同时记录正常与错误

输入重定向符号(与固定命令搭配)

[root@oldboy-aliyun-servers ~
[root@oldboy-aliyun-servers ~ cat lidao.txt
lidao
lidao
-bash: eco: command not found

9

10

11

12

13

14

echo oldboy  oldboy.log 2 oldboy.log
#
echo oldboy oldboy.log 2 >&
2 >&1 表示 2 错误输出写入到标准输出中(1)
#
echo oldboy &oldboy.log

1 2 3 4 5 6 7 8 9

cat >oldboy.txtEOF
I
love
linux
EOF
用于与cat命令实现批量写入内容.
cat >文件结束标记
结束标记

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

应用建议: 找个地方先写好了,直接粘贴到Linux中运行.

<输入重定向 xargs
cat EOF >oldboy.txt
I
love
linux
EOF
EOF End Of File文件结束

16

17

18

19

20

21

22

[root@oldboy83-prod oldboy]# seq 10 >cdx.txt
[root@oldboy83-prod oldboy]# cat cdx.txt
1 2 3 4 5 6 7 8 9

10

[root@oldboy83-prod oldboy]# xargs -n2 cdx.txt
^C
[root@oldboy83-prod oldboy]# xargs -n2 < cdx.txt
1 2
3 4
5 6
7 8
9 10
[root@oldboy83-prod oldboy]# xargs -n5 < cdx.txt
1 2 3 4 5

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

符号 含义

*星号 所有 , *.txt *.log '*ip*'
{}花括号 输出序列
[] 参考正则中含义即可.
? 任意一个字符

4.3 通配符

诞生:用于给linux中大部分命令使用,用于批量找文件名(找文件).

{}

6 7 8 9 10

[root@oldboy83-prod oldboy]# xargs < cdx.txt
1 2 3 4 5 6 7 8 9 10

23

24

25

26

#基本用法

echo {az}
echo {110}
echo {0110}
echo {01100}
#备份
[root@oldboy83-prod oldboy]# echo a{,c}
a ac
[root@oldboy83-prod oldboy]# echo oldboy.txt{,c}
oldboy.txt oldboy.txtc
[root@oldboy83-prod oldboy]# echo oldboy.txt{,.bak}

1 2 3 4 5 6 7 8 9

10

11

12

区别 用途(找的内容不同) 支持的命令不同

正则 匹配文件内容(匹配字符) 三剑客支持,开发语言.

通配符 匹配文件名(命令参数) Linux大部分命令都支持.

5. 三剑客日志处理系列-正则表达式

5.1 正则概述

用于给Linux三剑客,程序语言使用的.
使用正则表达式对字符进行过滤. 使用三剑客实现日志的过滤.
正则表达式本质是一些符号.

5.2 正则与通配符区别

6. 今日内容

磁盘故障案例: no space left on device
引号系列:单引号,双引号,不加引号,反引号区别.
重定向符号系列: >  
正则概述
oldboy.txt oldboy.txt.bak
[root@oldboy83-prod oldboy]# \cp oldboy.txt{,.bak}
[root@oldboy83-prod oldboy]# echo oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[root@oldboy83-prod oldboy]# echo a{,c}
a ac

13

14

15

16

17

18

posted @   rbcd  阅读(10)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示