之前一直以為固態硬碟各方面都比機械硬碟效能高,所以首選固態硬碟,直到看了極客時間-深入淺出計算機組成原理中硬碟相關章節的內容,才發現固態硬碟原來是有缺點的,所以這裡來做一個總結。
機械硬碟(HDD)
機械硬碟由以下幾個部分組成:
盤面:盤面(碟片)上有一層磁性塗層,資料就是儲存在這個磁性的塗層上,一個盤面在正反兩面都有磁性塗層。盤面中央有一個可以旋轉的主軸,主軸可以使碟片以固定的旋轉速率進行旋轉,我們看到磁碟標註的每分鐘多少轉(RPM , Revolution Per Minute)指的就是這個旋轉速率,比如7200轉,表示一分鐘可以旋轉7200下:
(注:圖片來自極客時間-深入淺出計算機組成原理)
一個盤面又可以劃為多個扇區和多個磁軌。
磁軌:一個碟片可以劃分為多個同心圓,每一個圓環就叫做磁軌,可以理解為是碟片上的圓形環道:
扇區:每個磁軌又可以分為一個個扇區,也就是磁軌上的一個弧段:
柱面:上下平行的一個個盤面的相同扇區組成的部分,稱作一個柱面。
(注:圖片來自極客時間-深入淺出計算機組成原理)
磁頭:用於從盤面讀取資料傳輸到匯流排,一個盤面有正反兩面,正反兩面都會有一個磁頭。
傳動臂(懸臂):與磁頭相連線,透過沿著半徑軸前後移動傳動臂,可以將磁頭定位到每一個磁軌上,讀取儲存的資料。
磁碟是由一個或者多個平行疊放在一起的碟片組成的,將它們封裝在一個密封的包裝內,整個裝置稱為磁碟驅動器,也就是我們常說的磁碟。
磁碟以扇區為大小進行資料讀寫,資料讀寫的耗時主要有以下幾部分:
- 尋道時間:首先傳動臂需要將磁頭定位到包含目標扇區的磁軌上,移動傳動臂所需的時間稱為尋道時間,它依賴於磁頭當前所在的位置以及傳動臂在盤面上移動的速度。
- 旋轉時間:將磁頭定位到目標扇區所在的磁軌後,需要等待目標扇區的第一個位旋轉到磁頭下,它依賴於磁碟的旋轉速率。
從資料讀取步驟當中可以看出,如果我們將資料進行順序存放,儘可能將資料放在同一個扇區或者是一個柱面,這樣只需旋轉一次盤面,進行一次尋道,即可讀取出內容,這也是順序讀寫比隨機讀寫效能高的原因。
固態硬碟(SSD)
固態硬碟是一種基於快閃記憶體的儲存技術,由半導體儲存器構成,沒有移動的部件,不需要像機械硬碟一樣進行尋道,所以在順序寫以及隨機寫的效能上相比機械硬碟都要高,但是它的耐用性缺比較差,接下來就看下SSD硬碟的耐用性為何差。
固態硬碟是有多個裸片疊在一起的:
(注:圖片來自極客時間-深入淺出計算機組成原理)
一張裸片上可以放多個平面(Plane),一個平面上又會劃分為多個塊(Block),一個塊的大小通常在幾百KB到幾MB,一個塊裡會劃分為多個頁(Page),一個頁的大小通常是4KB:
(注:圖片來自極客時間-深入淺出計算機組成原理)
SSD硬碟寫入的基本單位為頁,按頁進行資料寫入,但是它不能像機械硬碟一樣直接透過覆蓋進行寫入,如果某一頁已經寫入過資料,需要被擦除後才可以重新寫入資料,而且SSD硬碟是按塊進行擦除的,也就是說如果某個頁的資料被刪掉還不能直接對頁進行擦除,需要等待這個頁所在的塊整個被擦除才可以重新寫入資料,而每一個塊的擦除次數是有限的,當達到一定的擦除次數容易損壞。
舉個例子
假設白色代表這個頁未寫入過資料,綠色代表這個頁寫入了有效資料,紅色代表之前寫入了有效資料後來資料被刪除:
-
首先在某些空白頁內寫入了一些資料,寫入資料的頁變為綠色:
-
刪除一部分資料,由於SSD需要按塊擦除,所以某個塊內的頁如果既有有效資料又有刪除資料,被刪除的那部分資料會先標記為刪除狀態此時資料並未真正刪除:
-
當某個塊內的所有頁都被標記為已刪除,此時這個塊就可以被擦除,這個塊內的頁就恢復成了白色:
-
假如刪除的資料不連續,分散在各個塊內,由於紅色的頁在被擦除之前不能寫入資料,所以這些紅色的頁看起來類似磁碟碎片,既不能清理又不能寫入資料,到達一定程度時可能沒有合適的空白頁進行資料寫入,所以這時候需要做一次類似於磁碟碎片整理的工作,找一個紅色頁最多的塊,將裡面綠色頁的資料移動到另外一個塊中,然後將整個紅色頁所在的塊進行擦除:
總結
機械硬碟可能更適合於寫多(順序寫)讀少的場景,固態硬碟更適合於讀多寫少的場景,不過也不能一概而論,最終還是要根據實際的應用場景來定。
參考
《深入理解計算機系統》