1. 程式人生 > >實驗:磁碟inode耗盡故障模擬並修復

實驗:磁碟inode耗盡故障模擬並修復

  • 實驗:磁碟資源耗盡故障模擬並修復

    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*")

            

     

    實驗步驟:

    [[email protected] ~]# fdisk –l               //檢視磁碟裝置

    [[email protected] ~]# fdisk /dev/sdb         //對新加的硬碟分割槽

    [[email protected] ~]# 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

    [[email protected] ~]# mke2fs -t ext4 /dev/sdb1      //對分割槽進行格式化,寫入檔案系統。

    [[email protected] ~]#mkdir  /wang                                     //建立掛載點

    [[email protected] ~]# mount /dev/sdb1  /wang/      //將硬碟掛載到wang

     

    [[email protected] ~]# df -i /dev/sdb1                                          //檢視inode使用情況,還有327667可用

    檔案系統        Inode 已用(I) 可用(I) 已用(I)% 掛載點

    /dev/sdb1      327680      13 327667       1% /wang

     

    [[email protected] ~]# vim cai.sh                        //建立指令碼,將inode填滿,模擬故障

     

    [[email protected] ~]# sh cai.sh                              //執行shell指令碼

    touch: 無法建立"/wang/a327668":裝置上沒有空間

     

    [[email protected] ~]# df -i /wang/                            //檢視是否把磁碟的inode寫滿了

    檔案系統        Inode 已用(I) 可用(I) 已用(I)% 掛載點

    /dev/sdb1      327680 327680       0     100% /wang

     

    [[email protected] ~]# df /wang/                                  //而可用空間還很多

    檔案系統         1K-塊  已用    可用 已用% 掛載點

    /dev/sdb1      5029504 28184 4722792    1% /wang

     

    [[email protected] ~]#touch /wang/file                              //嘗試建立檔案

    touch: 無法建立"/wang/file":裝置上沒有空間                          

     

    [[email protected] wang]#find . -name "a*" | xargs rm -rf "a*"           //rm刪除

     

    [[email protected] ~]# df-i /wang                                                                                       //又可以寫東西了

    檔案系統        Inode 已用(I) 可用(I) 已用(I)% 掛載點

    /dev/sdb1      327680      13 327667       1% /wang