磁盘管理-经典故障案例

磁盘管理-经典故障案例

1、磁盘空间空间不足

1.1 错误提示

no space left on device

1.2 模拟创建大文件

dd if=/dev/zero of=/var/log/nginx/nginx.log bs=1M count=2000    #模拟创建2G的大文件,时间充裕可创建更大一点的文件

1.3 排查流程

df -h    #查看哪个目录空间使用率接近100%
du -sh /var/*     #查看var目录下哪个目录占用的空间最大
du -sh /var/log/*
du -sh /var/log/nginx/*    #排查到更大的目录或者大文件

#找到大文件后确定这个文件是什么进程或软件产生的,是否可以删除

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

2、磁盘inode空间不足

2.1 错误提示

操作的时候,提示 no space left on device ,df -h查看发现磁盘空间没有满
磁盘空间不足,不是block导致的,还有一种情况是inode数量不足

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

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

2.2 模拟inode空间不足

#创建指定大小文件(1g用于称为磁盘分区)
dd if=/dev/zero of=/tmp/1g-new bs=1M count=1000

#磁盘格式化
mkfs.xfs /tmp/1g-new

#创建挂载点
mkdir -p /opt/inode-error

#进行挂载
mount /tmp/1g-new /opt/inode-error/

#创建测试文件
cd /opt/inode-error/
echo test{01..511111}.txt|xargs touch

2.3 排查流程

df -i    #查看哪个目录的inode空间快满了

ll -h /opt/
drwxr-xr-x. 2 root root `16M` Jan  4 15:54 inode-error      #ll -h查看目录下  16M代表的是目录下文件的名字所占用的空间,小文件越多,这个值越高,所以平常找大于1M的即可
如下

方式一:find /opt/ -type d -size +1M   #一般目录不会占用这么大的空间

方式二:find /opt/inode-error/ -type f |xargs dirname |sort |uniq -c    #dirname是取上级目录的命令,可以通过排序查看当前目录有多少文件

方式三(常用):for i in /opt/*; do echo $i; find $i | wc -l; done    #可以直观的观察到这个目录下的所有子目录有多少个小文件,然后确定可不可删除即可

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

3.1 文件被彻底删除的条件

  • 条件1:删除文件,硬连接数为0,文件相当于被删除了,使用rm命令
  • 条件2:文件调用数为0,文件是否被使用中(命令,服务)
  • 如何知道硬连接数是否为0,一般rm后通过ls,find查看,没有则为0
  • 如何知道进程调用数是否为0,lsof(list open files显示打开的文件),lsof |grep 文件名

3.2 lsof命令

lsof +D /tmp/    #显示所有在/tmp目录下打开的文件进程
lsof -p 1328     #列出进程id为1328的进程所打开的文件

lsof |grep sshd
sshd       1519         root  txt       REG              253,0    852856     622296 /usr/sbin/sshd
每列说明
第1列命令或服务名字
第2列pid
第3列用户
第7列文件大小(字节)
第8列文件inode号码
最后1列文件名

3.3 模拟故障

  • 现象:提示磁盘空间不足,df -h提示磁盘空间满了,继续排查du -sh排查,统计总大小,发现没有满,怀疑可能是文件未彻底删除导致的
  • 模拟过程
#1、模拟故障(文件被调用中,但是没有入口)
seq 500000000 >big.log
通过tail -f 调用

#查看空间
df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.6M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   27G   20G  7.2G  74% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
/dev/loop0               997M  304M  694M  31% /opt/inode-error

#du -sh /    #发现/实际才占用9G的空间
#lsof |grep delete  在lsof中delete标记表示这个文件没有入口(硬连接数为0),但是还有进程调用
#解决办法:结束这个进程或服务
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值