磁碟檢驗
由於系統在運行時誰也說不準啥時硬體或者是電源會有問題,所以『死機』可能是難免的情況(不管是硬體還是軟體)。 現在我們知道檔案系統運行時會有硬碟與記憶體資料非同步狀況發生,因此莫名其妙的死機非常可能導致檔案系統的錯亂。 問題來啦,如果檔案系統真的發生錯亂的話,那該如何是好?就...挽救啊!此時那個好用的 filesystem check, fsck 就得拿來仔細瞧瞧囉。
fsck
[root@www ~]# fsck [-t 檔案系統] [-ACay] 裝置名稱選項與參數:-t :如同 mkfs 一樣,fsck 也是個綜合軟體而已!因此我們同樣需要指定檔案系統。 不過由於現今的 Linux 太聰明了,他會自動的透過 superblock 去分辨檔案系統, 因此通常可以不需要這個選項的囉!請看後續的範例說明。-A :依據 /etc/fstab 的內容,將需要的裝置掃瞄一次。/etc/fstab 於下一小節說明, 通常啟動過程中就會運行此一命令了。-a :自動修複檢查到的有問題的扇區,所以你不用一直按 y 囉!-y :與 -a 類似,但是某些 filesystem 僅支援 -y 這個參數!-C :可以在檢驗的過程當中,使用一個長條圖來顯示目前的進度!EXT2/EXT3 的額外選項功能:(e2fsck 這支命令所提供)-f :強制檢查!一般來說,如果 fsck 沒有發現任何 unclean 的旗標,不會主動進入 細部檢查的,如果您想要強制 fsck 進入細部檢查,就得加上 -f 旗標囉!-D :針對檔案系統下的目錄進行最佳化配置。
強制的將/dev/hdc6 這個裝置給他檢驗一下
[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006)e2fsck 1.39 (29-May-2006)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary informationvbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks# 如果沒有加上 -f 的選項,則由於這個檔案系統不曾出現問題,# 檢查的經過非常快速!若加上 -f 強制檢查,才會一項一項的顯示過程。
系統有多少檔案系統支援的 fsck 軟體
[root@www ~]# fsck[tab][tab]fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat
這是用來檢查與修本文件系統錯誤的命令。注意:通常只有身為 root 且你的檔案系統有問題的時候才使用這個命令,否則在正常狀況下使用此一命令, 可能會造成對系統的危害!通常使用這個命令的場合都是在系統出現極大的問題,導致你在 Linux 啟動的時候得進入單人單機模式下進行維護的行為時,才必須使用此一命令!
另外,如果你懷疑剛剛格式化成功的硬碟有問題的時後,也可以使用 fsck 來檢查一硬碟呦!其實就有點像是 Windows 的 scandisk 啦!此外,由於 fsck 在掃瞄硬碟的時候,可能會造成部分 filesystem 的損壞,所以『運行 fsck 時, 被檢查的 partition 務必不可掛載到系統上!亦即是需要在卸載的狀態喔!』
ext2/ext3 檔案系統的最頂層(就是掛載點那個目錄底下)會存在一個『lost+found』的目錄吧! 該目錄就是在當你使用 fsck 檢查檔案系統後,若出現問題時,有問題的資料會被放置到這個目錄中喔! 所以理論上這個目錄不應該會有任何資料,若系統自動產生資料在裡面,那...你就得特別注意你的檔案系統囉!
另外,我們的系統實際啟動並執行 fsck 命令,其實是呼叫 e2fsck 這個軟體啦!可以 man e2fsck 找到更多的選項輔助喔!
badblocks
[root@www ~]# badblocks -[svw] 裝置名稱選項與參數:-s :在螢幕上列出進度-v :可以在螢幕上看到進度-w :使用寫入的方式來測試,建議不要使用此一參數,尤其是待檢查的裝置已有檔案時![root@www ~]# badblocks -sv /dev/hdc6Checking blocks 0 to 2008093Checking for bad blocks (read-only test): donePass completed, 0 bad blocks found.
剛剛談到的 fsck 是用來檢驗檔案系統是否出錯,至於 badblocks 則是用來檢查硬碟或磁碟片扇區有沒有壞軌的命令! 由於這個命令其實可以透過『 mke2fs -c 裝置檔案名稱 』在進行格式化的時候處理磁碟表面的讀取測試, 因此目前大多不使用這個命令囉!
轉自 http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem_3.php