工程師手記:一顆瑕疵硬碟的「好區分割」實錄
工程師思路系列・事出必有因 工程師手記:一顆瑕疵硬碟的「好區分割」實錄 用 AI 協助開發一套把壞區封印、好區留下的工具鏈 作者:Mr. τ / 風雲網通系統有限公司(PCPiLOT) 有時候,工程師會做一些很「客家」的事情。 不是因為買不起新的,而是看著一顆還能讀、還能轉、還能跑的老硬碟,心裡總會冒出一個問題: 「它真的已經完全沒有利用價值了嗎?」 這次的專案,就是從這個問題開始的。 一、問題從哪裡來 一般遇到硬碟出現壞軌,最標準的建議其實很簡單:備份資料、更換硬碟、淘汰。 這個答案沒有錯。尤其是企業伺服器、資料庫、NAS 等重要設備,硬碟一旦出現大量重新配置磁區、Pending Sector 或 Uncorrectable Sector,根本不應該拿來賭。 但是,如果今天手上的硬碟只是在某些區域出現瑕疵呢? 例如: 前面一大段可以正常讀取 中間有一段連續的問題區域 後面又有很長一段可以正常讀取 這顆硬碟不是「全部壞掉」,而是只有一部分不能用了。 於是我開始思考:如果可以把壞掉的區域隔離起來,只把確認可以正常使用的區域建立成 partition,是不是就能讓這顆硬碟繼續承擔一些低風險用途? 二、現有工具為什麼不夠用 一開始我也認為「這應該早就有人做了吧?」 畢竟 Linux 有 badblocks、有 SMART 工具、有 ddrescue、有各種 HDD surface scanner,也有非常成熟的 partition 工具。把它們組合起來,應該就完成了。 但仔細研究之後,才發現事情沒有那麼簡單。 現有工具大多各自解決一個問題: badblocks:找出有問題的 block smartmontools:分析硬碟健康狀態 ddrescue:在硬碟快壞掉時,盡可能把資料救出來 diskpart、fdisk、parted:建立與管理 partition 但我要做的事情其實不太一樣。 我不是要「修復硬碟」,也不是要「搶救資料」。 而是想做:找出還可以使用的區域,然後把不能使用的區域隔離。 不是把壞硬碟修好,而是重新定義這顆硬碟「哪些地方可以用」。... » read more