最近購買了一顆 Seagate 晶鑽 2.5吋 500GB 行動硬碟要拿來在 Linux 下做備份資料用。
當然啦,最基本的一定是先建 Partition,再來就是 mkfs.ext3。到此為止都還算順利。
開始使用就先 copy 約 80GB 的資料進去。等到隔天複製完了再把它卸載,收起來。 過了幾天,把硬碟接上,並進行掛載。咦?有錯誤訊息?
EXT3-fs warning (device sde1): ext3_clear_journal_err: Filesystem error recorded from previous mount: IO failure
EXT3-fs warning (device sde1): ext3_clear_journal_err: Marking fs in need of filesystem check.
EXT3-fs warning: mounting fs with errors, running e2fsck is recommended
EXT3 FS on sde1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
怪了,我不可能沒有卸載就拔 USB 插頭的,怎麼會有這種問題咧?
後來直接觀察 log,第一時間的判斷就是,硬碟去睡覺了。睡了之後,叫不醒。便開始 Google 資料了。
Google 後,證實為 Seagate 自作聰明,會讓硬碟 Spindown。要在 Windows 下才會叫的起來。在 Linux,Mac 下,都會有叫不醒的問題。國外有蠻多討論的。也有人用 crontab 很頻繁的去動一下硬碟,讓它不要昏過去。不過,這方式實在不漂亮,我不太能接受,所以,繼續尋找解決方案。
後來找到一篇用 sdparm 去修改硬碟的設定值,就姑且一試:
先檢查硬碟的狀態:
# sdparm -a /dev/sde
/dev/sde: Seagate Portable 0130
Power condition mode page:
IDLE 0 [cha: n, def: 0, sav: 0]
STANDBY 1 [cha: y, def: 1, sav: 1]
ICT 0 [cha: n, def: 0, sav: 0]
SCT 3000 [cha: y, def:3000, sav:3000]
更改硬碟 STANDBY 的值:
# sdparm --clear STANDBY -6 /dev/sde
/dev/sde: Seagate Portable 0130
啟動硬碟:
# sdparm --command=start /dev/sde
/dev/sde: Seagate Portable 0130
最後確認硬碟的狀態:
# sdparm -a /dev/sde
/dev/sde: Seagate Portable 0130
Power condition mode page:
IDLE 0 [cha: n, def: 0, sav: 0]
STANDBY 0 [cha: y, def: 1, sav: 1]
ICT 0 [cha: n, def: 0, sav: 0]
SCT 3000 [cha: y, def:3000, sav:3000]
這兩天測試,複製資料,複製完後就丟著不管它,放一整個晚上,隔天也不會有叫不醒的情形。所有的 mount,umount 都可以正常操作,沒有任何的錯誤訊息。
以上資料僅供參考,如果操作後有任何得問題恕不負責。
參考來源:
http://alienghic.livejournal.com/382903.html