fsck
使用權限 : 超級使用者
使用方式 : fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]
說明 : 在Linux系統中,為了增加系統性能,通常系統默認一些數據寫在內存中,並不會直接將數據寫入硬盤,這是因為內存速度要比硬盤快若干倍。但是有個問題,萬一由於“斷電”或者其他未知原因,造成系統死機,怎么辦?系統就崩潰了。所以,我們需要在特定的時候讓數據直接回存到硬盤中。這里提供幾個常用的命令,其中,fsck命令最重要. 當文件系統發生錯誤時,可用fsck命令嘗試加以修復.直接采用分區編號(如/dev/had3),或使用掛載點(Mount Point,如/、/usr等)指定文件系統皆可。假設一次指定多個文件系統,而這些系統分別位於不同的物理磁盤上,則fsck將會嘗試同步的方式去檢查他們,以節省操作時間。
參數 :
filesys : device 名稱(eg./dev/sda1),mount 點 (eg. / 或 /usr)
-t : 給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數
-s : 依序一個一個地執行 fsck 的指令來檢查
-A : 對/etc/fstab 中所有列出來的 partition 做檢查
-C : 顯示完整的檢查進度
-d : 列印 e2fsck 的 debug 結果
-p : 同時有 -A 條件時,同時有多個 fsck 的檢查一起執行
-R : 同時有 -A 條件時,省略 / 不檢查
-V : 詳細顯示模式
-a : 如果檢查有錯則自動修復
-r : 如果檢查有錯則由使用者回答是否修復
補充說明:
例子 :
檢查 msdos 檔案系統的 /dev/hda5 是否正常,如果有異常便自動修復 :
fsck -t msdos -a /dev/hda5
注意 :
此指令可與 /etc/fstab 相互參考操作來加以了解。
范例:檢查/dev/sda3
[root@localhost ~]# fsck -C -t ext3 /dev/sda3fsck 1.39 (29-May-2006)e2fsck 1.39 (29-May-2006)/dev/sda3 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may causeSEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/home: recovering journal/home: clean, 11/524288 files, 25399/524120 blocks#一切正常就會出現上述信息
#主意通常只有ROOT且系統有問題的時候才用這個命令,否則在正常狀態下使用此命令可能會損壞文件。
相關知識:
Linux FSCK數據出錯的災難應急方案介紹
[適用於]
1、文件系統:ext2 ext3 reiserfs xfs等
2、范圍:提示文件系統需要FSCK時,未執行或FSCK執行完成
[症狀]
1、無法MOUNT分區;
2、大量文件、目錄丟失,根目錄下生成/LOST+FOUND文件夾,里面有大量#XXXXXX類的文件和目錄;
3、FSCK很快報錯完成;
4、FSCK執行時,有大量提示,如修改節點、清0節點等操作
[應急方案]
1、如遇提示FSCK時,請小心。如果可能,請盡快斷開系統,UMOUNT所有分區。
2、必需執行FSCK時,先做准備工作,方法一:可事先用dd命令將所涉及到的分區輸出到另外的存儲體上(最好不要在出錯的存儲體本身上做dd) 命令大致結構可如: dd if=/dev/sda0 of=/dev/sdb0 .....
3、必需執行FSCK時,先做准備工作,方法二:將整個LINUX存儲體掛載到虛擬機環境,將LINUX存儲體設為Nonpersisten模式,再執行,執行過后,如果數據完好,應盡快通過FTP等方式拷貝出來。
4、必需執行FSCK時,先做准備工作,方法三:將整個LINUX存儲體掛載到其他系統上(如WINDOWS),做好鏡像后再做FSCK。
5、如上面幾種方式均因條件等原因無法實施,必須執行時,可小心觀察FSCK的執行提示(關掉-a)如果發現有提示節點錯誤需更正或清0、節點描述文件大小不正確等信息,應停止執行FSCK。
6、因恢復需要參考很多信息,因盡可能保持系統不工作狀態,至少不得再次MOUNT分區(即便不做任何讀寫操作,也會因系統的工作原理不斷降低數據恢復的可能性,增加數據恢復的難度)
7、尋求專業數據恢復公司幫助。
對磁盤進行鏡像的方案:
1、可用相同或大於源盤容量的硬盤做為目標盤,將源盤全部扇區方式CLONE到目標盤。
2、可將源盤完全以扇區方式輸出文件到某大容量存儲空間(如大容量硬盤、NAS、SAN、DAS等)
輸入Root密碼登錄后采用:fsck -t ext3 -r /usr/local 修復
xfs_repair
1.現狀
目前網上出現大量的主機輸入輸出錯誤,原因是由於主機文件系統損壞。一線人員大部分采用的是umont 和 mount的方式恢復,這種恢復方式不能真正修復已經損壞的文件系統,在后續使用過程中,仍然會再次出現主機端輸入輸出錯誤。
2.需要修復的場景
<1>.主機側發現存在文件系統不可讀寫的情況,也可以通過查看主機端日志來確認是否有文件系統異常發生: xfs_force_shutdown 、I/O error
<2>.出現異常停電,供電恢復正常,主機和陣列系統重起之后
<3>.存儲介質故障:出現LUN失效、RAID失效、以及IO超時或者出現慢盤,對慢盤進行更換,系統恢復正常之后
<4>.傳輸介質故障:如光纖、網線等損壞等,數據傳輸鏈路斷開后又恢復正常之后
3.檢查文件系統
注:檢查文件系統必須保證將文件系統umount成功。
在根目錄下輸入“xfs_check /dev/sdd(盤符);echo $?”(注意:在執行 此命令之前,必須將文件系統umount,否則會出現警告信 “xfs_check: /dev/sdd contains a mounted and writable filesystem ”)敲回車鍵,查看命令執行返回值:0表示正常,其他為不正常,說明文件系統 損壞,需要修復。
4.修復過程
注:修復時需要暫停主機側的業務,umount 和 mount 無法修復文件系統 。
1) 先umount要修復的文件系統的分區
3) 然后輸入 “xfs_repair /dev/sdd(盤符)”執行修復命令。
xfs_check /dev/sdd; echo $?
A)如果為0===》成功修復。
B) 如果不為0===》沒有成功:請執行xfs_repair –L /dev/sdd命令,再執 行xfs_repair(反復多修復幾次)
5.xfs常用命令
xfs_admin: 調整 xfs 文件系統的各種參數
xfs_copy: 拷貝 xfs 文件系統的內容到一個或多個目標系統(並行方式)
xfs_db: 調試或檢測 xfs 文件系統(查看文件系統碎片等)
xfs_check: 檢測 xfs 文件系統的完整性
xfs_bmap: 查看一個文件的塊映射
xfs_repair: 嘗試修復受損的 xfs 文件系統
xfs_fsr: 碎片整理
xfs_quota: 管理 xfs 文件系統的磁盤配額
xfs_metadump: 將 xfs 文件系統的元數據 (metadata) 拷貝到一個文件中
xfs_mdrestore: 從一個文件中將元數據 (metadata) 恢復到 xfs 文件系統
xfs_growfs: 調整一個 xfs 文件系統大小(只能擴展)
xfs_logprint: print the log of an XFS filesystem
xfs_mkfile: create an XFS file
xfs_info: expand an XFS filesystem
xfs_ncheck: generate pathnames from i-numbers for XFS
xfs_rtcp: XFS realtime copy command
xfs_freeze: suspend access to an XFS filesystem
xfs_io: debug the I/O path of an XFS filesystem
6.具體應用:
查看文件塊狀況: xfs_bmap -v sarubackup.tar.bz2
查看磁盤碎片狀況: xfs_db -c frag -r /dev/sda1
文件碎片整理: xfs_fsr sarubackup.tar.bz2
磁盤碎片整理: xfs_fsr /dev/sda1