实验一:inode耗尽导致磁盘故障
实验一:inode耗尽导致磁盘故障
实验步骤
- 新建一个约32MB大小的EXT4文件系统
- 分区
- 格式化
- 挂载
- 查看inode信息
- 编写一个测试程序,耗尽所有可用的inode
- 测试创建新文件
- 解决inode耗尽故障
实验过程
1.新建一个32M的EXT4的文件系统
分区
[root@Daring jason]# fdisk /dev/sdeWARNING: DOS-compatible mode is deprecated. It's strongly recommended toswitch off the mode (command 'c') and change display units tosectors (command 'u').Command (m for help): n
Command actione extendedp primary partition (1-4)
p
Selected partition 4
First cylinder (787-2610, default 787):
Using default value 787
Last cylinder, +cylinders or +size{K,M,G} (787-2610, default 2610): +32MCommand (m for help): pDisk /dev/sde: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe4b1d138Device Boot Start End Blocks Id System
/dev/sde1 1 262 2104483+ fd Linux raid autodetect
/dev/sde2 263 524 2104515 fd Linux raid autodetect
/dev/sde3 525 786 2104515 fd Linux raid autodetect
/dev/sde4 787 791 40162+ 83 LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[root@Daring jason]# partprobe /dev/sde //探测新分的分区
sde sde1 sde2 sde3 sde4 //探测到新的分区
[root@Daring jason]# partprobe /dev/sde
格式化成ext4
[root@Daring jason]# mkfs.ext4 /dev/sde4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
10040 inodes, 40160 blocks
2008 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=41156608
5 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 8193, 24577Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@Daring jason]#
挂载
[root@Daring /]# mount /dev/sde4 /testinode/
[root@Daring /]# df -hT /dev/sde4 //查看挂载和容量信息
Filesystem Type Size Used Avail Use% Mounted on
/dev/sde4 ext4 38M 4.5M 32M 13% /testinode //挂载成功,容量为32M
[root@Daring /]#
查看inode信息
[root@Daring Desktop]# df -i /dev/sde4
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sde4 10040 12 10028 1% /testinode
这里可以看出来
总数量 | 已经使用的 | 空闲的数量 |
---|---|---|
10040 | 12 | 10028 |
2.写批量创建文件的脚本(耗尽inode的脚本)
[root@Daring testinode]# vi create.sh #!/bin/bash
for n in $(seq 1 10040)
do
touch a_$n
done~
... //省略中间的“~”
~
:wq
这段代码的大致含义,就是从1-10040这个范围内从1开始,每个数字都会执行touch的命令,而文件的名称则是a_数字
再次查看inode信息
[root@Daring testinode]# df -i /testinode/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sde4 10040 12 10028 1% /testinode
[root@Daring testinode]#
此次对照失败是在创建create.sh之前没有查看/dev/sde4的inode信息
一个文件占用一个inode测试
[root@Daring testinode]# vi test
[root@Daring testinode]# cat test
123123
[root@Daring testinode]# df -i /testinode/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sde4 10040 13 10027 1% /testinode
[root@Daring testinode]#
这里可以看出来已经使用的inode是13,说明test这个文件占用了一个inode
3.测试创建新文件
执行create.sh来实现批量创建
[root@Daring testinode]# sh create.sh
touch: cannot touch `a_10028': No space left on device
touch: cannot touch `a_10029': No space left on device
touch: cannot touch `a_10030': No space left on device
touch: cannot touch `a_10031': No space left on device
touch: cannot touch `a_10032': No space left on device
touch: cannot touch `a_10033': No space left on device
touch: cannot touch `a_10034': No space left on device
touch: cannot touch `a_10035': No space left on device
touch: cannot touch `a_10036': No space left on device
touch: cannot touch `a_10037': No space left on device
touch: cannot touch `a_10038': No space left on device
touch: cannot touch `a_10039': No space left on device
touch: cannot touch `a_10040': No space left on device
[root@Daring testinode]#
因为空闲的inode只有10027个,所以在创建10028的时候inode实际上已经被耗尽了,但是因为for循环依旧在执行,所以后面的都会继续输出错误信息
[root@Daring testinode]# df -i /dev/sde4
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sde4 10040 10040 0 100% /testinode
[root@Daring testinode]# df -h /dev/sde4
Filesystem Size Used Avail Use% Mounted on
/dev/sde4 38M 4.7M 32M 14% /testinode
[root@Daring testinode]#
inode总数量 | inode已经使用的 | inode空闲的数量 |
---|---|---|
10040 | 10040 | 0 |
磁盘总容量 | 磁盘已经使用已经使用空间 | 磁盘已用所占百分比 |
---|---|---|
38M | 4.7M | 14% |
从这里可以看出来inode是耗尽了,但是磁盘空间还有大量的剩余
4.解决inode耗尽故障
修改create.sh来批量删除文件
[root@Daring testinode]# vi create.sh #!/bin/bash
for n in $(seq 1 10000)
do
rm -rf a_$n
done~
...//中间空行省略 ~
~
~
:wq
执行后,并查看
[root@Daring testinode]# sh create.sh
[root@Daring testinode]# ls -lh
total 14K
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10001
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10002
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10003
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10004
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10005
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10006
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10007
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10008
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10009
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10010
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10011
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10012
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10013
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10014
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10015
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10016
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10017
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10018
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10019
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10020
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10021
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10022
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10023
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10024
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10025
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10026
-rw-r--r-- 1 root root 0 Jun 29 09:27 a_10027
-rw-r--r-- 1 root root 57 Jun 29 09:44 create.sh
drwx------ 2 root root 12K Jun 29 08:42 lost+found
-rw-r--r-- 1 root root 7 Jun 29 09:22 test
[root@Daring testinode]#
从上面可以看出来,a_1~a_10000的文件都已经被删除
再次查看inode信息
[root@Daring testinode]# df -i /dev/sde4
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sde4 10040 40 10000 1% /testinode
[root@Daring testinode]#
inode总数量 | inode已经使用的 | inode空闲的数量 |
---|---|---|
10040 | 40 | 10000 |
解决inode耗尽故障
实验一:inode耗尽导致磁盘故障相关推荐
- Linux磁盘故障和文件系统修复(救援模式Centos7、Centos8)
文章目录 问题一:文件系统分区变成只读文件系统,无法写入新文件.新数据. 问题二:在Linux运行过程中,有时会因为误操作导致磁盘故障,系统无法启动. Linux救援模式 问题一:文件系统分区变成只读 ...
- 一次SSD磁盘寿命耗尽导致的TiDB集群写入变慢问题处理
作者: mydb 原文来源: https://tidb.net/blog/ada59a4c 1.背景 最近处理了一起由于 SSD 磁盘寿命耗尽导致的 TiDB 集群写入变慢的问题,集群部署组件如下表所 ...
- inode 耗尽故障处理办法
故障描述:由于每个文件都必须要有一个inode ,因此有可能发生inode 已经用光,但是硬盘还是未存满的情况.这时,就无法在硬盘上创建新文件. 造成故障原因:小字节缓存文件过多,虽然占用的 bloc ...
- 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例
4.10/4.11/4.12 lvm讲解 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化.挂载-->扩容. 磁盘分区 注: 创建分区时 ...
- 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例
2019独角兽企业重金招聘Python工程师标准>>> 准备磁盘分区 fdisk /dev/sdb n 创建三个新分区,分别1G t 改变分区类型为8e 准备物理卷 pvcreate ...
- 【kafka】一次磁盘故障后消费者无法消费
1.概述 转载:Kafka 运维纪实 – 一次磁盘故障后消费者无法消费 Kafka 自从某个版本加入 isr 等机制后真是越来越复杂了,再也不是原来那个单纯的 The log 了,碰上网络有个什么风吹 ...
- 机器学习实践(一):用KNN进行磁盘故障预测
问题:磁盘故障预测(Disk Failure Prediction) (一)背景和说明 在大规模IDCS和云计算环境中,各种磁盘故障是罕见但昂贵的事情.因此,为了节约成本,HDD供应商非常积极的去 ...
- lvm讲解和磁盘故障案例
一:lvm讲解 1.准备磁盘分区 fdisk /deb/sdb n创建三个新分区,分别为1G t改变分区类型为8e 2.pvcreate /dev/sdb1 yum install -y lvm [r ...
- oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决
在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象(ORA-30036: unable to extend segment by 8 in undo table ...
最新文章
- 机器学习面试的12个基础问题,强烈推荐!
- 读书笔记 effective c++ Item 50 了解何时替换new和delete 是有意义的
- 神经网络与机器学习 笔记—时序模式、非线性滤波
- 新手建站注意点,你有注意到没?
- hibernate防止sql语句注入
- C# foreach遇到async和await
- Lambda表达式的前世今生
- JAVA读取EMF文件并转化为PNG,JPG,GIF格式
- 《Haskell函数式编程入门》—— 第1章,第1.6节本章小结
- dreamweaver网页设计作业制作 学生个人网页单页 WEB静态网页作业模板 大学生个人主页博客网页代码 dw个人网页作业成品
- React组件Input输入拼音时触发搜索的解决方案
- 十大排序算法之二路归并排序(难点为对于递归的理解)
- 学习总结:即时通讯项目里面的语音处理-文件模式录音
- 通过iis发布网站、并添加ssl证书
- matlab plotyy 属性如何调整,(完整word版)matlab中plotyy函数加入双y轴说明的方法
- windows PC版微信双开
- 软件设计师-备考知识点总结
- 苹果三代耳机_链接2020.6.13其他团无线蓝牙耳机
- ubuntu找不到无线网络
- 利用有限元数值模拟技术辅助静电场学习