若是 SCSI 硬碟的話,應該有能力自動作 re-mapping 的動作。 然而,因為一些神秘的因素,在出廠時,很多硬碟的這項功能是關閉的.
要將其重新開啟,您需要編輯裝置的第一個 page 模式 (first device page mode),在 FreeBSD 上可以用下面的指令辦到 (以 root 身分執行�
scsi -f /dev/rsd0c -m 1 -e -P 3
然後將 AWRE 和 ARRE 的數值從 0 變成 1:-
AWRE (Auto Write Reallocation Enbld): 1
ARRE (Auto Read Reallocation Enbld): 1
上面這段是由 Ted Mittelstaedt所提供:
若為 IDE 硬碟,任何的壞軌通常都是麻煩的預兆。目前所有較新的 IDE 硬 碟,內部都有自動 remapping 壞軌的能力。目前所有 IDE 硬碟製造商,都提供 了更久的保證,而且會幫您更換出現壞軌的硬碟。
如果您仍想要修復產生壞軌的 IDE 硬碟,您仍可以試著去下載 IDE 硬碟製造 商所提供的檢測程式,並用它來檢查您的硬碟。有時這些軟體可以強迫硬碟電路 重新檢查硬碟的壞軌,並將它們標示出來.
對 ESDI,RLL 及 MFM 的硬碟來說,通常壞軌是正常現象,也不是什麼麻煩的 前兆。在 PC 上,磁碟控制卡和 BIOS 負責標示壞軌的任務。這對一些使用 BIOS 來存取磁碟的作業環境(如 DOS)是沒有問題的。然而,FreeBSD 的磁碟驅動程式 並不經過 BIOS 來存取磁碟,所以,有個 bad144 的機制用來取代這項功能。 bad144 只能用在 wd 這個磁碟驅動程式上,它無法用在 SCSI 硬碟上。bad144 的工作方法是將所有找到的壞軌資料存到一個特別的檔案�堙C
使用 bad144 的警告 - 存著壞軌資料的特別檔案是放在硬碟的最後一軌 上。因為這個檔案儲存的壞軌資料中,有可能有些資料是指向硬碟最前端所發生 的壞軌情形,就是可能儲存 /kernel 這個檔的地方,所以它一定要能被開機程式 所讀取,而開機程式是透過 BIOS 來讀取 kernel 檔。這表示了使用 bad144 的 硬碟絕不能擁有超過 1024 個 cylinder,16 個 head 及 63 個 sector。 這造成了使用 bad144 的硬碟的大小不能大於 500 MB。
要使用 bad144 很簡單,只要在開始安裝時,在 FreeBSD fdisk 畫面把 "Bad Block" 掃瞄設為 ON 即可。在 FreeBSD 2.2.7 以後都可以使用此方法。 但這個硬碟的 cylinder 一定要在 1024 以下。使用前,我們建議這個硬碟要 至少先使用四個小時,以便熱膨脹與磁軌偏移達一般狀態。
如果這個硬碟擁有超過 1024 個 cylinder (像大容量的 ESDI 硬碟), ESDI 控制卡利用一個特別的轉換模式使它能在 DOS 下工作。 而如果您在 fdisk �堛� "set geometry" 中輸入 "轉換過" 的 geometry,wd 這 個驅動程式能了解這些轉換模式。您也絕對不能使用 dangerously dedicated 模 式來建立 FreeBSD 的分割區,因為它會忽略 geometry 這個參數。 此外,就算 fdisk 使用您所輸入的 geometry 參數,它依然會去讀取這硬碟的 真正資料,而會嘗試去建立一個過大的 FreeBSD 分割區。如果磁碟的 geometry 已經被 "轉換" 過了,那麼這個分割區 "必須" 以手動輸入 block 數目的方法來 建立。
一個快速的小技巧是利用 ESDI 控制卡來設定大容量的 ESDI 硬碟,用 DOS 開 機片開機,再將它 format 為 DOS 的分割區。然後重開機進入 FreeBSD 安裝程序 ,在 fdisk 畫面,把DOS 分割區的 blocksize 和 block number 抄下來。然後重 新設定 geometry 使其跟 DOS 使用的一樣。刪除 DOS 分割區,然後使用您剛剛抄 下的 blocksize 來建立一個 cooperative FreeBSD 分割區。然後設定這個分割區 為可開機,再打開壞軌掃瞄。在真正的安裝過程中,bad144 會在任何檔案系統被 建立前先被執行。(您可以按 Alt-F2 來監看這一切)如果在建立壞軌資料檔時發生 了問題,您會需要設定一個較大的磁碟 geometry - 這表示您需要重開機,然後全 部再重新開始 (包括重新分割以及在 DOS 下重新 format)。
如果 remapping 的功能已經啟動了,而您依然一直看到壞軌產生,那麼考慮 換一台硬碟吧。壞軌的情形只會隨時間增加而更為嚴重。