為什麼硬碟空閑的時候也要保持旋轉?

不能像光碟機那樣讀數據的時候再轉嗎?


首先光碟機也是要等一段時間才停止的,並不是空閑的時候不轉要讀數據的時候才轉,只是空閑的時候可以轉比較慢。空閑時間長了當然可以停止,但是你下次用它的時候就會聽到一段啟動的聲音。

硬碟不能空閑時停轉的主要原因是1)硬碟需要較快的響應,且2)硬碟旋轉起停需要時間很長。也就最近硬碟起停快了許多,有的1秒多就完成了,過去的硬碟起停多需要5-90秒。你打開記事本寫了些文字,你點保存,它死在那兒等硬碟啟動,等10秒後它終於保存了,你體驗一下這是什麼感受。

所有說因為數據讀寫一直在進行的答案都是錯的,一直有數據讀寫在進行是硬碟不需要休息的結果,而非原因。在設計上考慮不用硬碟做存儲的系統里根本不需要一直進行數據讀寫。

要說硬碟能不能慢速待機,和光碟機一樣呢?也並不是不行,但是技術上成本高許多,而且壽命低不少。與其慢速旋轉在需要時加速,不如一直轉,這樣還省電。是的,一直轉比頻繁起停省電。不像光碟機,因為光碟質量參差不齊,一直旋轉的話會在碟片擺動上費很多電,硬碟不會,一直旋轉並不費電,比頻繁起停省電許多。


大家請先看看題目,問的是「硬碟沒有實際讀寫操作時」為何還要保持旋轉。

原因很簡單,機械硬碟的結構是要磁碟不停保持旋轉的。

現時普遍使用的機械硬碟,磁頭並不會接觸磁碟,而是靠磁碟旋轉時帶動的氣流,在磁碟上方「懸浮「,中間相隔的距離以微米計。如果磁碟停轉,磁頭會因為失去氣流的懸浮力而下墜,繼而」撞擊「磁碟(考慮到磁碟每分鐘旋轉數千次,普遍達7,200rpm),對磁頭與磁碟造成嚴重損壞。

正因為磁頭與磁碟表面的高相對速度(可超過100km/h),兩者在操作時要絕對禁止任何接觸,因此就算沒有讀寫,也要保持磁碟長年旋轉,確保有足夠氣流,保持磁頭懸浮。

好了,如果關機、休眠或突然斷電怎麼辦?硬碟會有特定的「磁頭停泊區」,在那處,磁碟與磁頭無需靠旋轉帶動的氣流懸浮,也能保障磁頭與磁碟不直接接觸,當電力中斷,磁頭臂會將磁頭拉到停泊區,這個動作極快,在氣流減弱至無法承托磁頭前就完成,如此就能避免磁頭與磁碟表面的損壞。

------補充的分割線------

不少知友提及過「硬碟空閑時可以停轉」。是的,如果是從一整台電腦的角度來說,的確是可以在硬碟長時間閑置的時候關掉;事實上Windows的電源選項也有「過了某一時間後關停硬碟」這一項。而對於硬碟本身來說,當Windows下達「關停硬碟」的指令,除了會停止數據界面的傳輸,更會向硬碟發出一個「關停」的指令,將硬碟「機械」的部分停止,只有硬碟控制器(就是硬碟上看到的一小塊電路板)保持待命狀態。這樣,從機械的角度來說,硬碟就等同進入了「關機」的狀態。

至於光碟機,因為激光讀寫元件是設於光碟下方,離開光碟有數個毫米的距離(只要激光聚焦正確就能進行讀寫),兩者並不可能接觸(排除受過度衝擊的情況),所以只要沒有讀寫,光碟並不需要長時間旋轉。


硬碟啟動需要時間。

除了 @余天升 提到的之外,我的電腦裝了ssd和機械硬碟。程序和系統都在ssd。每次改word很久的話機械盤就停了,然後我保存一下會有卡死,仔細聽的話可以聽到硬碟啟動,加速然後保存成功word退出。 這花費很長時間而且軟體會假死狀態沒有辦法操作。。


知乎基本規則:先問是不是,再問為什麼


硬碟空閑時是可以停止旋轉的。


首先,這個空閑是真正的空閑。你沒有在拷文件讀取數據不等於真正空閑。很多答案都回答了,系統盤的硬碟是一直有讀寫,硬碟並非真正的空閑。如果用SSD做系統盤,機械硬碟當數據盤,一般的Windows的默認設置是會在15分鐘(還是30分鐘來著?)之後停轉。

其次,這跟操作系統以及省電設置有關係,伺服器操作系統往往是不會讓硬碟停轉的。


這其實跟你玩 FPS 遊戲那些重型機槍一樣,你得一下一下讓它轉著不要停下來,這樣才能確保敵人過來時可以馬上投入戰鬥。


windows是有磁碟休眠功能的,有的時候我嘗試打開一個不常用的盤,能聽到明顯的碟片加速的聲音,然後幾秒鐘之後才彈出文件窗口

因為啟動慢,所以


確實如你所說,硬碟是應該空閑時停止工作,需要讀寫時才旋轉起來的。只不過,對於計算機來說的空閑和對你的空閑是不一樣的,磁碟的讀寫幾乎每時每刻都在發生,所以硬碟也沒有機會能夠停下來。

你可能覺得,我沒有讀寫磁碟上的文件,就上個網或者開個QQ聊天,這種時候硬碟硬碟應該是不工作的。而實際上,QQ在保存聊天記錄的時候,會讀寫硬碟,當你收到一個表情的時候,這個表情會被保存到磁碟的文件中;上網的時候,整個網頁會被下載下來,保存到臨時文件中;反病毒軟體會有時不時的掃描一下磁碟上的文件;操作系統會把內存中的部分不常用的數據轉移到磁碟上,分配更多物理內存給需要使用的程序。這些都是你可能沒有察覺到的磁碟讀寫,並且每時每刻都在發生,所以硬碟也幾乎沒有機會空閑下來。


因為你硬碟根本就沒有完全空閑啊,你可以試試,你用SSD做系統盤,然後所有進程只用到SSD,然後你就會發現你的HDD關機停止旋轉,然後你再點開我的電腦,進入HDD中的一個分區,你就會發現需要等一陣子這個分區的文件才能讀取出來,同時你會聽到HDD開啟的聲音。


嗯 你買個移動硬碟插電腦上 就知道了 ……你很長時間不往移動硬碟里複製東西 然後突然複製一下 會聽到明顯的硬碟開始轉動的聲音


光碟機也是沒事經常在轉的,有時候速度慢聽不出。
硬碟是靠旋轉才能保持不接觸碟片,一接觸就廢了。停的時候磁頭要回到0位才能停。
高速電機頻繁起停有困難,停的時候產生熱能是額外的負擔。
以上都是機械硬碟被固態硬碟淘汰的原因之一。
歸根到底跟操作系統如何處理有關,以前windows是可以設置如果靜置很久就關閉硬碟的。win7我沒注意看過。

說後台進程在使用也有道理,不過補充一點,硬碟是有緩存的,內存里也會劃一部分緩存,不見得緩存里有東西就立刻寫進去,有的東西讀緩存就可以不用讀硬碟,具體怎麼辦還是要看操作系統和驅動怎麼去處理。



Win + R 運行 perfmon.exe /res 可打開 資源監視器,在「磁碟」選項卡中你會發現... 硬碟讀寫從未停下 = =


贊同 @藍莓子小姐 的答案,她說的已經非常詳細了。

我再補充兩句:

其實現在的電腦,如果一段時間不讀盤,硬碟是會停止轉動的,但這個技術不是最早就有的。

硬碟的發明其實很早,在80286時代,PC機就已經開始配置硬碟了,那個時候的硬碟,一開機就是一直轉到關機的,最早的硬碟關機的時候還要通過一個命令把磁頭移動到起停區才能關機。(如果你直接關機就有硬碟損壞的風險)

後來的硬碟關機的時候能自己「降落」,不再需要移動磁頭的命令了。

到了486的時候,由於美國能源之星標準的要求,BIOS開始支持長時間不使用的話硬碟停轉,記得當時可以選15分鐘,30分鐘,但默認值是一直轉動的。

早期技術不成熟的時候,磁頭的起降就像飛機的起降,是會影響硬碟壽命的,在一個硬碟大幾千元甚至萬元的時代,儘管硬碟噪音比現在大的多,但很少人會願意為了省電,噪音而去設計頻繁起降磁頭的功能的。

後來硬碟便宜了(2K以下),技術成熟了,才有了XX分鐘不用停轉的功能。

但如果現在的硬碟像光碟機一樣頻繁停止,還是容易壞的。


還有一個原因,從技術上說,實現按需旋轉比一直旋轉要更難。


1 操作系統經常需要向磁碟寫入和讀取數據。

例如 Windows 的註冊表會被頻繁訪問。註冊表有一個 dirty cache ,每幾秒鐘就要合併進入主資料庫。

例如 Linux 下的 btrfs ,有一個內核線程專門負責在文件關閉後清理,還有線程整理磁碟碎片。可以運行 iotop -a ,找出寫入磁碟的元兇!

2 你不是說有扇區級別的緩存嘛嗎?怎麼不提這個?

Windows 的緩存真心不給力,就不要提了。

Linux 是有緩存,但是為了防止意外事故導致數據丟失,寫緩存是幾秒鐘就要 flush 到磁碟上的。如果你看 Linux Kernel Document 的 laptop_mode ,就會發現這個參數會將 flush 的時間調得非常長,幾分鐘呢,於是硬碟真的就不怎麼轉了。但是代價在上面寫的很清楚,可能丟失這段時間內的數據。這些數據都在內存的 cache 裡面,突然當機斷電當然就丟失了。

3 經常寫入數據和硬碟轉不轉有神馬關係?寫入讀取數據的時候轉一下不就可以了嗎?

機械硬碟的磁頭在運行時離碟片非常近,需要碟片高速旋轉來將磁頭懸浮在碟片上。在碟片停止旋轉時則收回到停靠區域。這都是機械方法實現的,每次起停是有磨損的。

Windows 下可以拿 HddMon , Linux 下有 smartctl ,看看硬碟 SMART 數據的 Load_Cycle_Count 吧。這個數據就表示磁頭起停的次數。起停次數過高,硬碟就離壞不遠了。因此,為了延長硬碟的壽命,不能頻繁讓磁碟旋轉和靜止,讓磁頭懸空和停靠。

另外,磁碟從開始旋轉到指定轉速,可以讀寫數據是有一定時間的,一般是幾秒鐘。可以看 SMART 的 Spin_Up_Time 。你不會想等待幾秒鐘,只是因為兩次磁碟訪問之間間隔了幾毫秒,硬碟 spin down 了吧?

4 好悲劇啊!要節能,硬碟就短壽。要長壽就要一直旋轉,而且不能震動,否則就容易壞道啦!

的確如此。機械硬碟怕震,固態硬碟禁不起連續寫入。目前我沒有發現完美的個人存儲解決方案。


1、讀寫效率問題

2、硬碟每次load cycle都會影響硬碟壽命,增加磁頭物理損壞的風險。

當年ubuntu就這麼作了一次死:

Bugs : acpi-support package : Ubuntu


買過一個2T的綠盤作為電影倉儲盤,所以當時順便了解了一下綠盤的C1門.
根據當時了解的知識,至少對於一部分的西數硬碟(如綠盤)題目並不成立.

相關資料:"綠盤C1門","IntelliPark".


因為數據的存儲不能間斷,需要一直保存數據,及時電腦空閑下來,就像人的大腦,及時睡覺也在工作中


硬碟由於其機械結構,power state之間的transition是很慢的,馬達從靜止到全速要秒甚至分鐘級的時間。並且過於頻繁還會縮短壽命。

另外,過多的transition反而更耗電。想像一下每過幾秒馬達就要從零加速,和開車在鬧市區,走走停停更耗油 一個道理。

所以硬碟一空閑幾秒就停轉顯然是不可行的。
權衡下來,windows默認硬碟停轉的時間是20分鐘。


真沒懂了,一群人說啥「時刻準備著」根本就是瞎扯,只有一兩個答案是對的。

就是「你以為硬碟空閑」,其實一點都不閑。
你睡覺去了電腦放那啥也不做,系統還在記錄日誌,QQ群就算你沒打開,別人發的消息也被存入硬碟,更別說操作系統要運行本來就要不斷讀取硬碟里的文件了。

在你看不到的地方,沒有靜止,只有運動。你指的「空閑」,僅僅是一個表象罷了。


為各位答主補一張圖- -


並不知道機械硬碟自己的節能(?)措施有何作用以及如何作用...


推薦閱讀:

為什麼有關計算機 CPU 的知識不解密?
你碰到過的最難調試的 Bug 是什麼樣的?
電腦取隨機數是什麼原理,是真正的隨機數嗎?
CPU 能否和內存集成在一起?
什麼是張量 (tensor)?

TAG:計算機 | 硬體 | 筆記本電腦 | 硬碟 | 電腦硬體 |