第31课磁盘故障 2019-05-13

第八周day1.png

1、磁盘故障:

1.1 inode满的情况下如何处理:

1.1.1搭建环境:

第1个里程碑-创建100k的文件
[root@oldboyedu59 ~]# dd  if=/dev/zero  of=/tmp/100k bs=1k count=100
100+0 records in
100+0 records out
102400 bytes (102 kB) copied, 0.000433072 s, 236 MB/s
第2个里程碑-格式化
[root@oldboyedu59 ~]# file /tmp/100k
/tmp/100k: data
[root@oldboyedu59 ~]# mkfs.ext4 /tmp/100k 
mke2fs 1.42.9 (28-Dec-2013)
/tmp/100k is not a block special device.
Proceed anyway? (y,n) y

Filesystem too small for a journal
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 100 blocks
5 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done
第3个里程碑-挂载
[root@oldboyedu59 ~]# mkdir -p /app/log 
[root@oldboyedu59 ~]# mount /tmp/100k   /app/log/
第4个里程碑模拟inode满了
[root@oldboyedu59 ~]# cd /app/log/
[root@oldboyedu59 /app/log]# touch oldboy{01..10}.txt 
touch: cannot touch ‘oldboy06.txt’: No space left on device
touch: cannot touch ‘oldboy07.txt’: No space left on device
touch: cannot touch ‘oldboy08.txt’: No space left on device
touch: cannot touch ‘oldboy09.txt’: No space left on device
touch: cannot touch ‘oldboy10.txt’: No space left on device

1.1.2如何处理inode满的情况:
第一步检查block是否满:

[root@oldboyedu59 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        99G  1.8G   98G   2% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
/dev/sdb1        98M  5.3M   93M   6% /data
tmpfs           199M     0  199M   0% /run/user/0
/dev/loop0       93K   14K   72K  17% /app/log

第二步检查inode是否满:

[root@oldboyedu59 ~]# df -i
Filesystem       Inodes IUsed    IFree IUse% Mounted on
/dev/sda3      51801600 64784 51736816    1% /
devtmpfs         250795   412   250383    1% /dev
tmpfs            253511     1   253510    1% /dev/shm
tmpfs            253511   753   252758    1% /run
tmpfs            253511    16   253495    1% /sys/fs/cgroup
/dev/sda1        102400   326   102074    1% /boot
/dev/sdb1         51712     3    51709    1% /data
tmpfs            253511     1   253510    1% /run/user/0
/dev/loop0           16    16        0   100% /app/log

第三步解决办法:

找出系统中目录大于1MB的 然后确认之后删除下面的小文件;
使用命令:du -sh /*|sort -rn 进行查找文件系统较大的目录文件,然后进行删除。

备注:[root@oldboyedu59 ~]# ll -hd guoav/
drwxr-xr-x 2 root root 1.2M May 13 11:49 guoav/
目录的block的大小 block里面存放的是文件名(目录下的文件名(inode)存放在上级目录的block里面,所以目录的大小,实际也就是其下面文件inode的大小)

1.2 block满且无进程服务占用的情况下如何处理磁盘故障:

第一步:
df -h 命令检查block使用情况;

第二步:
使用du -sh /*|sort -rn 命令对文件或目录一层一层进行排查

第三步:
对文件目录进行确认之后删除。

1.3 block满且进程服务占用的情况下如何处理磁盘

注:Linux文件删除原理:
Linux彻底删除1个文件的条件:
1.没有入口(rm 硬链接数为0) oldboy.txt /etc/hosts
2.没有人使用这个文件(进程调用数为0) 重启这个服务
yum install lsof -y
lsof list open files 显示系统中所有被打开的文件(使用中)

1.3.1创建环境:模拟文件没有被彻底删除导致磁盘空间不足:

第1步:给系统日志写入大量数据,让其block扩大。
seq 500000000 >>/var/log/messages
第2步:删除/var/log/messages

1.3.2检查block空间的当前使用情况:
[root@wuxin-123 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  6.4G   13G  34% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.7M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/loop0       93K   14K   72K  17% /app/log
1.3.3检查block空间的实际使用情况:
[root@wuxin-123 /]# du -sh /var/log/*|sort -h
4.6G    /var/log/messages
[root@wuxin-123 /]# ll -h /var/log/messages
-rw------- 1 root root 4.6G May 13 23:44 /var/log/messages
此时发现文件已经删除,但是还在占用磁盘空间
1.3.4检查都有什么进程正在使用它:
[root@wuxin-123 /]# lsof |grep delete
rsyslogd   7261         root    6w      REG                8,3 4889020971     696001 /var/log/messages (deleted)
in:imjour  7261 7274    root    6w      REG                8,3 4889020971     696001 /var/log/messages (deleted)
rs:main    7261 7275    root    6w      REG                8,3 4889020971     696001 /var/log/messages (deleted)
1.3.5关闭程序进程,释放block空间:
systemctl restart rsyslog.service  abrtd.service 
1.3.6检查block空间的当前使用情况:
[root@wuxin-123 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.9G   17G  10% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.7M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/loop0       93K   14K   72K  17% /app/log
故障已处理
1.4 如何增加swap
添加文件系统
[root@oldboyedu59 ~]# dd  if=/dev/zero  of=/tmp/500m  bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 5.14645 s, 102 MB/s
格式化:
[root@oldboyedu59 ~]# mkswap /tmp/500m
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=6ba0befd-aeaf-4dd4-88b0-07cab2af6f61
增加权限以及挂载
[root@oldboyedu59 ~]# chmod 600 /tmp/500m
[root@oldboyedu59 ~]# swapon /tmp/500m 
查看:
[root@oldboyedu59 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        204M         76M        2.3M        1.7G        1.5G
Swap:          1.5G         32M        1.5G

你可能感兴趣的:(第31课磁盘故障 2019-05-13)