linux innode节点读取,混沌工程之注入磁盘innode耗尽

混沌工程中为什么注入磁盘innode耗尽故障呢?不会像CPU和内存一样,系统中一般不会遇到磁盘innode耗尽,但期望耗尽后能恢复环境。

借用阿里混沌工程实践,磁盘innode耗尽如下:系统层-系统异常-磁盘inode耗尽。

阿里混沌工程测试模板背景

磁盘空间显示未达到100%,但不能创建新的文件,只能在已有文件中写数据,因为inode已经占满(大量的碎片文件和小文件占用着inode的使用)。

Linux系统的文件是存储在硬盘上的,而硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节(1K=1024字节,即一个扇区存储0.5K的信息)。操作系统在读取硬盘的时候,不是一个扇区一个扇区地读取的(这样效率太低),而是一次性连续读取多个扇区,一次性读取一个块,一个块一个块这样来读取的。一般连续8个扇区组成一个“块”(block),一个块是4K大小(即一次读取8个扇区),“块”(block)是文件的最小存储单位。

Linux系统中文件的文件名和文件数据是分开存储的,而文件数据又分为实际数据与元信息。元信息类似于文件属性,包括文件的创建者、创建日期、文件大小、文件权限等信息,实际信息存储在块中,而存储文件元信息的区域就叫做inode,因此一个文件必须占用一个inode, 并且至少占用一个block。

Linux系统通过inode号来识别文件,而非文件名,对于系统来说,文件名是inode号的别称,是便于用户识别文件的,文件名和inode号是一一对应的关系。

df -i /home 查看系统中innode的使用情况

文件系统  Inode  已用(I)  可用(I)    已用(I)%    挂载点

/dev/sdb1 327680 13  327667  1%  /home上脚本chaos-innode.sh(每个文件都有一个innode)

#!/bin/bash

i=1

innode_num=327668

while[ $i -le $innode_num  ]

do

touch  /home/file$i

let i++

done使用

1) df -i /home  查看/home挂载点的可用innode个数

2) 修改脚本中innode_num参数后执行sh chaos-innode.sh

3) df -i /home  查看/home挂载点的innode使用情况(占满)

4) df -h /home 查看磁盘空间使用情况

5) touch  /home/file-robot_test_boy

touch:无法创建“ /home/file-robot_test_boy ”:设备上没有空间

6) 如果不新建文件,往已有的文件中可以写数据

7) 恢复环境rm-rf /home/file*  (如果提示:命令提示参数列表过长 find . -name "file*"  | xargs rm -rf "file*")

8) 查看业务写数据是否正常,新建文件是否正常。参考

https://blog.csdn.net/qq_41816540/article/details/83510872

你可能感兴趣的:(linux,innode节点读取)