香港云服務(wù)器Linux硬盤(pán)資源包括[容量]及[文件數(shù)量(i節(jié)點(diǎn))]兩種,接下來(lái),我們來(lái)模擬一下這兩種資源分別被耗盡的故障。
環(huán)境搭建:
添加一塊硬盤(pán)sdb,并在其中劃分一塊15M大小的分區(qū)/dev/sdb1,并將分區(qū)掛載至/mnt/111下。最后的掛載情況:
[root@localhost ~]# df -m #查看容量
Filesystem 1M-blocks Used Available Use% Mounted on
……省略內(nèi)容
/dev/sdb1 16 2 14 8% /mnt/111
[root@localhost ~]# df -i #查看文件數(shù)量
Filesystem Inodes IUsed IFree IUse% Mounted on
……省略內(nèi)容
/dev/sdb1 4016 11 4005 1% /mnt/111
1,模擬文件數(shù)量(i節(jié)點(diǎn))耗盡故障
首先寫(xiě)一段bash腳本1.sh,不停地向分區(qū)系統(tǒng)里寫(xiě)入空文件。腳本內(nèi)容如下:
#! /bin/bash
i=124918
while [ $i -le 129000 ]
do
touch /mnt/111/file$i
let i++
done
然后賦予該腳本可執(zhí)行權(quán)限,并且執(zhí)行之。
[root@localhost ~]# chmod u+x 1.sh
[root@localhost ~]# ./1.sh
touch: cannot touch `/mnt/111/file128923': No space left on device
#提示容量不夠,注意此時(shí)可能彈出來(lái)大量重復(fù)提示容量不夠的語(yǔ)句,需要按Ctrl+c取消。
此時(shí)我們?cè)倏匆幌路謪^(qū)情況:
[root@localhost ~]# df -i #查看文件數(shù)量
Filesystem Inodes IUsed IFree IUse% Mounted on
……省略內(nèi)容
/dev/sdb1 4016 4016 0 100% /mnt/111
[root@localhost ~]# df -m #查看容量
Filesystem 1M-blocks Used Available Use% Mounted on
……省略內(nèi)容
/dev/sdb1 16 2 14 9% /mnt/111
可以看見(jiàn),分區(qū)容量尚未占滿,但文件數(shù)量已占用100%,因此不能創(chuàng)建新的文件了。也說(shuō)明我們實(shí)驗(yàn)的目的達(dá)到了。
實(shí)驗(yàn)完成后,/mnt/111目錄下產(chǎn)生了大量的file*文件,在用rm -rf /mnt/111/file*批量刪除時(shí),可能會(huì)出現(xiàn)如下錯(cuò)誤,下面也給出了解決方案:
[root@localhost ~]# rm -rf /mnt/111/file*
bash: /bin/rm: Argument list too long #刪除時(shí)產(chǎn)生錯(cuò)誤
#執(zhí)行下面的刪除語(yǔ)句就可以了
[root@localhost ~]# find /mnt/111 -type f -name 'file*' -print0 | xargs -0 rm
[root@localhost ~]# #刪除成功
2,模擬容量耗盡故障
我們劃分的分區(qū)只有15M,因?yàn)橐粭l簡(jiǎn)單的語(yǔ)句就可以把容量占滿了:
[root@localhost ~]# dd if=/dev/zero of=/mnt/111/test bs=1M count=16
dd: writing `/mnt/111/test': No space left on device #提示容量不夠
14+0 records in
13+0 records out
14516224 bytes (15 MB) copied, 7.54486 seconds, 1.9 MB/s
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
……省略內(nèi)容
/dev/sdb1 4016 12 4004 1% /mnt/111
[root@localhost ~]# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
……省略內(nèi)容
/dev/sdb1 16 16 0 100% /mnt/111
注意第一條dd語(yǔ)句,if表示從哪個(gè)設(shè)備(或文件)讀取,of表示寫(xiě)到哪個(gè)設(shè)備(或文件),bs表示每次讀取的文件塊體積,count表示文件塊的數(shù)量,執(zhí)行完成以后,相當(dāng)于在/mnt/111/目錄下創(chuàng)建了一個(gè)16M大小的文件test。
執(zhí)行完dd語(yǔ)句以后,馬上提示“No space left on device”,此時(shí)再看一下分區(qū)的情況,可以看見(jiàn),容量已經(jīng)耗盡,但文件數(shù)量才使用了1%。說(shuō)明我們的測(cè)試目的也達(dá)到了。