-
实验:磁盘资源耗尽故障模拟并修复
1.环境描述:
磁盘空间显示还有,但无法存储东西,inode已经占满。(大量的碎片文件和小文件占用的inode的使用)
2.实验案例演示:
第一,模拟i节点耗尽故障
1.添加一块硬盘,分区格式化,挂载
1>fdisk/dev/sdb--->n-->p-->1-->几次回车跳出-->w
2>mkfs.ext3/dev/sdb1
3>mkdir/wang
4>mount/dev/sdb1 /wang
5>df-i /wang 确认该文件系统中i节点的使用情况
显示结果:
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 327680 13 327667 1% /wang
第二,编写测试程序,耗尽i节点
1>vim cai.sh
具体内容如下:
#!/bin/bash
i=1
while[ $i -le 327668 ]
do
touch/wang/a$i
leti++
done
第三,执行脚本并验证i节点占用情况
1>shcai.sh &
2>df-i /wang
显示结果:
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 327680 327680 0 100% /wang
3>尝试创建文件
touch/wang/file
显示结果:
touch:无法创建“/wang/file”:设备上没有空间
4>查看磁盘剩余空间
df-hT /wang
显示结果:
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb1 5029504 28184 4722792 1% /wang
第四,修复i节点耗尽故障
rm-rf /wang/a* (如果提示:命令提示参数列表过长 find . -name "a*" | xargs rm -rf "a*")
实验步骤:
[root@a ~]# fdisk –l //查看磁盘设备
[root@a ~]# fdisk /dev/sdb //对新加的硬盘分区
[root@a ~]# cat /proc/partitions //查看内核是否识别出,分区的硬盘,如果没有,刷新
major minor #blocks name
8 0 20971520 sda
8 1 524288 sda1
8 2 18349056 sda2
8 3 2097152 sda3
8 16 10485760 sdb
8 17 5242880 sdb1 //以识别
11 0 8491008 sr0
[root@a ~]# mke2fs -t ext4 /dev/sdb1 //对分区进行格式化,写入文件系统。
[root@a ~]#mkdir /wang //创建挂载点
[root@a ~]# mount /dev/sdb1 /wang/ //将硬盘挂载到wang
[root@a ~]# df -i /dev/sdb1 //查看inode使用情况,还有327667可用
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 327680 13 327667 1% /wang
[root@a ~]# vim cai.sh //创建脚本,将inode填满,模拟故障
[root@a ~]# sh cai.sh //运行shell脚本
touch: 无法创建"/wang/a327668":设备上没有空间
[root@a ~]# df -i /wang/ //查看是否把磁盘的inode写满了
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 327680 327680 0 100% /wang
[root@a ~]# df /wang/ //而可用空间还很多
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb1 5029504 28184 4722792 1% /wang
[root@a ~]#touch /wang/file //尝试创建文件
touch: 无法创建"/wang/file":设备上没有空间
[root@a wang]#find . -name "a*" | xargs rm -rf "a*" //rm删除
[root@a ~]# df-i /wang //又可以写东西了
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 327680 13 327667 1% /wang
实验:磁盘inode耗尽故障模拟并修复
最新推荐文章于 2025-03-06 23:30:00 发布