瀏覽單個文章
ericshliao
Major Member
 

加入日期: Aug 2004
文章: 188
群暉NAS修復Volume crash的方法

群暉NAS如果碰到Volume crash的狀況, 而硬碟仍可讀取, 但不能寫入, 官方旳建議是把資料全複製到其他硬碟, 把原先的Volume砍了, 再建新的Volume. 官方的建議就到此為止, 其他就沒有了.

我碰到的問題是, Volume crash後, 看得到的檔案只有一部分可以複製, 還有很多無法複製出來. 群暉官方提供的方法對我完全沒用, 於是我開始研究如何解決這個狀況. 其實NAS裡的工具程式可以修復Volume crash, 但群暉官方並沒提供方法, 是靠使用者社群自己試出來的.

首先, 理論上的分析, 會出現Volume crash, 原因不出三種組合, bad sector, file system error, RAID error.

第一種bad sector, 可以用DiskGenius或HDD Regenerator來掃, 然後試著修復. 如果找到bad sector而且修得好, 大概就解決了. DiskGenius掃描速度大概比HDDR快十倍, 我一顆6TB的HDD, 用HDDR要掃100小時, 用DiskGenius大概低於9小時. 我用HDDR修了不少顆HDD. DiskGenius只用來掃, 沒用來修復過.

第二種file system error, 如果file system是用ext4, 可以用fsck程式來檢查並自動修復. 如果是用btrfs格式, 我就不知道了. 我沒用過btrfs.

第三種RAID error, 可以用mdadm程式來修復. 我只試過修復SHR, 其他RAID 0,1... 照理說應該也可以, 但我沒試過.

詳細的教學, 網路上可以找到, 我主要是看這幾篇:
https://serverfault.com/questions/6...ology-with-mdam

https://xpenology.com/forum/topic/2...crashed-volume/

https://blogs.dbcloudsvc.com/life/f...f-synology-nas/

https://ilmvfx.wordpress.com/2020/1...crashed-volume/

我自己的經驗, 碰過兩次Volume crash, 一次是在DSM6.2.3的黑群暉上, 因為檔案還可以全複製出來, 就全複製出來, 砍掉原本的Volume, 再重新建一個, 沒用到上面的方法.
後來又在一台跑DSM5.2的DS1010+上碰到Volume crash, 因為有大量的檔案看得到, 卻複製失敗, 才開始研究修復Volume crash的方法.
先看NAS log, 裡面有一段說found bad sector, 於是我先掃bad sector, 大概掃了百分之四十, 沒找到一個, 我判斷應該不是真的bad sector, 就改走修復file system的路, 用fsck檢查了一遍, 確實有錯誤, 就讓fsck自動修復. 不過, 修復後還是顯示Volume crash, 檔案還是複製不出來, 於是我用mdadm修復SHR. 修復SHR之後Volume就可以正常使用了.

如果當初一開始建Volume時, 只選Basic, 沒用RAID或SHR, 就只是單純的ext4格式, 那用fsck修復file system後就應該OK了.

fsck和mdadm都要配合一堆參數, 每台NAS不一樣, 使用者得自己研究.

如果有用RAID或SHR, 就得用mdadm修復RAID. 程序比較複雜, 有好幾個步驟, 簡單來說:
第一步先進SSH, 並把DSM裡有各種服務, package, docker全關掉.
第二步輸入命令: cat /proc/mdstat, 確認有問題的那顆硬碟的狀態確實是Error. 記好硬碟設備的路徑, 像我的是/dev/md3和/dev/sdb5
第三步輸入命令: mdadm --detail /dev/md3, 找到一行Array UUID : (接著一串數字符號)
第四步輸入命令: mdadm --stop /dev/md3 和 syno_poweroff_task -d (這兩個命令是把所有使用硬碟的程序都關掉, 連WEBUI也不能連, 然後才能對硬碟RAID進行修復)
第五步輸入命令: mdadm -Cf /dev/md3 -e1.2 -n1 -l1 /dev/sdc3 -u(-u後面要填上Array UUID, 不含括號). 當畫面顯示"Continue creating array?" 按y, 然後就會得到"mdadm: array /dev/md3 started." 這樣就修復成功. 重開機後就發現Volume顯示正常, 而非crash, 而原來看得到卻不能複製的檔案也全部可以成功複製.

最後提醒, 這上面提到的方法, 只能修復特定問題的Volume crash, 不是所有的Volume crash都能修, 而且, 一旦用錯了, 會導致本來可用別的方法救回的資料變成救不回來. 所以, 這只能當成最後手段, 不想找資料救援服務, 想自己搞, 才要走這條路, 走了可能就沒法回頭了. 大概也是因為太複雜了, 所以群暉官方的建議不會提這個方法.
     
      
舊 2022-08-24, 03:19 PM #1
回應時引用此文章
ericshliao離線中