fsck|xfs_repair 磁盤修復


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM