wiki:jazz/10-07-18

Version 3 (modified by jazz, 14 years ago) (diff)

--

2010-07-18

  • [備忘] 修復 reiserfs 壞軌問題
    • [狀況] 以前裝的一台 server 因為電源瞬斷,復電後發生硬碟資料疑似壞軌而有問題。
    • 雖然用 Clonezilla Live CD 專家模式,加入 --resecure 參數,仍舊無法順利備份。
    • [參考][1] Repairing ReiserFS file system with reiserfsck
    • [參考][2] Dealing with ReiserFS bad blocks
    • [參考][3] ReiserFS Filesystem Recovery
    • [參考][4] [
    • STEP 0 : 檢查檔案系統正確性
      # reiserfsck -n /dev/sda1
      # reiserfsck --check /dev/sda1
      
      如果出現錯誤 "Bad root block 0" :
      
      # reiserfsck --scan-whole-partition --rebuild-tree /dev/sda1
      
      如果出現錯誤 "superblock was missing" 或掛載時出現 "read_super_block: can't find a reiserfs file system":
      
      # reiserfsck --rebuild-sb /dev/sda1
      
    • STEP 1 : 低階備份的指令 [1]
      # ddrescue /dev/sda /dev/sdb
      
      或者
      
      # dd if=/dev/sda of=/dev/sdb conv=noerror,sync
      
      看到一個更神奇的指令是用 SSH 把運作中的硬碟資訊 dump 到遠端 [
      
      $ ssh ${deadserver} dd if=/dev/hda1 conv=noerror,sync > hda1.img
      
      conv=noerror 會略過壞軌的錯誤,繼續複製
      conv=sync    遇到壞軌時,會填入 zero 以維持資料完整性
      
    • STEP 2 : 用 badblocks 指令確認壞軌位置,產生 badblocksfile 並重新做 fsck
      # blocksize=$(debugreiserfs <device> | grep -i 'blocksize')
      # badblocks -n -b $blocksize -o badblocksfile $(your_device)
      # reiserfsck --fix-fixable --badblocks badblocksfile $(your_device)