固態硬碟真的不需要整理碎片嗎?


如果用接送孩子上學來比喻硬碟的數據讀寫,則

機械硬碟:相當於統一用一輛校車(磁頭)接送(讀寫)全市(整個硬碟)的孩子(數據),如果能讓孩子們都搬家挨在一起住(碎片整理),則校車的接送會很有效率;

固態硬碟:相當於每家都是家長開車接送孩子,這樣孩子們的家是否挨在一起絲毫不影響接送效率,你非要讓大家都搬家到一起住(碎片整理),只會是勞民傷財(增加擦寫次數),沒有任何意義;反而是大家分散住更有效率,可以緩解局部交通壓力(均衡存儲單元的擦寫次數,避免局部過早達到擦寫壽命的極限)。

=======================================

  1. 碎片整理是讓數據盡量集中並且連續存放,這樣機械硬碟的磁頭讀取的時候可以效率更高;
  2. 固態硬碟由於讀寫的原理與機械硬碟不同,就算進行碎片整理,並不能提高性能或效率;
  3. 整理工具往往是根據硬碟分區存儲數據的碎片化程度決定是否提示,可能並不考慮是否固態硬碟;
  4. 固態硬碟存儲單元的擦寫次數十分有限,一般情況下盡量避免不必要的數據擦寫,比如碎片整理;
  5. 同樣由於上一條原因,固態硬碟內部有晶元會盡量讓整個硬碟的存儲單元使用頻率均衡化,當硬碟只有一個分區時,自動將新增數據放到使用頻率較低的區域(PS:不太清楚這個調整能否跨越分區),這客觀上導致數據存儲很分散。也就是說固態硬碟的數據本來就應該是分散和碎片化的,這是正常的並且對硬碟壽命有好處。(很多人不建議固態硬碟分區,也是想避免有些區域超負荷有些區域閑置)

謝邀

固態硬碟(SSD)每個塊的讀取時間都是恆定的,不像機械硬碟讀取物理連續的扇區才有最快速度(因此機械硬碟才要「整理碎片」)。而且SSD的寫入壽命(按次數)比機械硬碟少一到兩個數量級,經常整理硬碟會大大加速老化。事實上,微軟官方也不推薦對SSD進行碎片整理:Windows 7 SSD: defragmentation, SuperFetch, prefetch

另外,SSD暴露給上層軟體系統的是「邏輯塊」,由控制器來映射到底層的快閃記憶體晶元上的物理塊。(絕大多數情況下)軟體無法繞過控制器直接管理物理塊。而且不同於機械硬碟的是,SSD的邏輯塊到物理塊的映射是高度複雜和相當動態的(題主關注的讀平衡問題已經被控制器演算法考慮到了,另外控制器還要考慮寫平衡、垃圾回收、壞塊替換等問題),也不適合上層軟體來管理


普通用戶日常使用,只要用稍微現代一點的文件系統(NTFS for Windows, ext3/4 for Linux, HFS+ for OS X),不管是機械硬碟還是固態硬碟都不需要手動整理碎片,效果微乎其微。


有一天,你用著用著SSD發現有那麼一兩分鐘好像速度變慢了,其實這時SSD Firmware在做後台整理了,不過對一般客戶而言基本上沒什麼影響。
補充:如果您的應用是極高清視頻流的即時存儲之類,那麼恭喜你,請選擇企業級SSD,消費級SSD滿足不了您的需求,企業級SSD貴30%是有道理的,內部需要預留更大的over-provision來防止客戶發現性能下降。


機械硬碟的瓶頸在於尋道時間,因此要減少文件的分散程度。
「磁碟碎片整理"的意義便是物理上把硬碟上代表某個文件的區塊合併在一起的過程
-
快閃記憶體的弱點在於寫入次數的壽命,垃圾回收和單個DIE的速率有限。
-
針對單個DIE速率有限,尋道時間極短的特點,快閃記憶體要求文件儘可能平均分散至每一個晶元里。
當然,在同一個DIE里怎麼做,我就不知道了。但是這一定會導致電腦看到的快閃記憶體內的地址是邏輯地址,而非實際的物理地址。

針對寫入次數壽命有限,抹除時只能以」塊「為最小單位的特點
意味著快閃記憶體不能在刪除數據的同時直接執行抹除操作,而要等到整一塊都被標記為已刪除/空後才可行動。但是也不能等到整個快閃記憶體里都塞滿了恰好部分內容被標記為刪除,部分被佔用的情況。又要減少/平均化抹除操作。
這些也需要專門的管理晶元。

那麼,為了要儘可能把已標記為刪除但未擦除的區塊回收(也就是擦除)---這個是快閃記憶體的磁碟整理。
在操作系統的層面出現了TRIM指令。TRIM可以幫助固態硬碟更好的執行垃圾回收工作。


由於機械硬碟將數據的存儲在一個轉動的圓盤上,讀取數據時磁頭需要在圓盤上來回移動來尋找數據。假如數據碎片多,一個文件的內容被寫到硬碟的不同位置上,則磁頭就需要多次移動來讀取一個文件,浪費了時間,降低了效率。因此機械硬碟為了減少磁頭移動次數,事先整理碎片,把同一個文件挪到一個連續的區域,這樣磁頭就可以只用移動一次就可以讀完一個文件。
而固態硬碟是通過片選信號來訪問硬碟上的不同區塊,眾所周知,電信號不像磁頭,是沒有延遲的。因此即使數據再零碎,對於硬碟控制器來說都是一樣的,不會額外增加讀取時間。

結論:機械硬碟和固態硬碟都會有碎片,文件碎片不會影響固態硬碟的效率,因此沒必要整理。

補充幾點:1,固態硬碟寫入次數有限,碎片整理會嚴重損耗固態硬碟壽命。
2,固態硬碟還有許多磨損均衡的演算法,垃圾回收啊等等,這些演算法會與碎片整理衝突。
3,win8的碎片整理程序針對固態硬碟特別設計(實質就是trim),因此可以在win8使用自帶的碎片整理程序(trim)。其他版本的Windows最好不要用自帶的碎片整理程序。

片選信號是指:在每個存儲單元都有一個開關(低電平有效或者高電平有效,看晶元設計),開關被打開時,這個對應的單元便與匯流排接通,這時控制器就可以通過匯流排讀取存儲區內的數據。
固態硬碟中每個存儲單元開關都會被分派一個地址,這個地址就是片選信號。
當控制器想要讀取某個存儲單元時,控制器就會根據片選信號接通相應的存儲單元與匯流排的連接。


win7和win8都會自動關閉對固態硬碟的整理 你說xp?2001年xp發布的時候還沒有固態硬碟


1,不需要整理碎片。
2,但是隨著文件增多,性能會下降。
3,怎麼辦,用優化軟體優化文件系統,說白了每個文件系統都有一個點陣圖啊,鏈表啊,B-Tree 啊存儲文件、文件夾關係。這個東西是可優化的。當你發現文件讀寫效率降低,可以去優化這個東西,而不是給 SSD 做碎片整理。


相當於每家都是家長開車接送孩子,這樣孩子們的家是否挨在一起絲毫不影響接送效率,你非要讓大家都搬家到一起住(碎片整理),只會是勞民傷財(增加擦寫次數),沒有任何意義;反而是大家分散住更有效率,可以緩解局部交通壓力(均衡存儲單元的擦寫次數,避免局部過早達到擦寫壽命的極限)。


由於SSD有TRIM和GC就不需要碎片整理了。

但是如果您實在有閑可以通過Secure Erase恢復性能,但是用了一會性能還是會下降。

此外,對於NTFS等日誌型文件系統存在文件表/MFT碎片,不過除非你一直在SSD上編譯大工程一般不需要關心這個。


windows 10 已經發布了,可以識別Solid state drive,並且已經有了很好的回答

居然知乎投票這麼高的也是錯誤回答,還沒有人求證。真是無語。
有文件系統,就有碎片。
更高級的說法,有固定長度的數組來存儲不等長的數據,必然產生碎片。
和硬體一點關係都沒有。明明就是文件系統導致碎片。
大塊順序傳輸磁帶,磁碟,SSD相比優勢很大么?機械設備並沒有被數量級的甩開。
OS控制文件系統存到硬碟/SSD 不同的塊區,中間當然產生碎片,內存管理道理也一樣。
也許我的回答還不夠精確,但起碼我會用腦子思考問題的正確性。
哀其不搜,怒其不思。

補充
SSD修改操作是最噁心的。也就是因為這個噁心的機制,產生了碎片問題。
但NTFS,ext3,4文件系統又不是專門為SSD設計的,當然不會考慮到這個問題了。
但不排除未來有patch優化。
SSD的block是由128個4KB page組成,可以讀寫4KB,但是修改的基礎單位是block。是512KB。

修改有兩種可能
1. 非常理想的,我之前的block都寫滿了,我只是追加。申請新block寫就可以了。
2. 不理想的,我必須寫到碎片里,因為我SSD容量有限啊。沒辦法,寫把舊數據讀到
SSD cache,然後在cache裡面追加數據之後,再寫回到block。

這個過程掉電就搞笑了,文件系統之所以要fsck,也是這個問題,OS沒有收到寫入磁碟/SSD的確認。這也是為什麼Enterprise SSD需要加上一排電容,保證寫入靠譜。
我之前就想一個問題,為什麼nand flash density的密度越高,性能越差呢?
這個也是因素之一。

使用SSD,大家問的最多一個問題就是,為什麼我SSD用了一段時間,就沒有剛裝系統的時候快了?
碎片整理方式改變,不代表沒有碎片。
目前的技術,任何把軟體和硬體企圖分開的想法都是紙老虎。我一看最佳回答就無語了,完全沒有提到OS和固件對SSD的管理(或者說是文件系統和SSD溝通過程)。
win8也在磁碟管理裡面,加入了對SSD的優化操作。
首先要搞清楚,硬體和文件系統是兩個玩意,文件系統只是告訴硬體,我要存多少多少數據,硬體返回實際數據存放的硬體地址,當然期間就是內核驅動與硬體固件之間的一個溝通。一層又一層展開說就太複雜了。

請看貼
ssd - What does "Optimize Drives" do in Windows 8?
Q. I heard solid state disks (SSDs) suffer from a decline in write performance as they"re used. Why?
Trim (computing)

請看圖,清晰明了。


來自微軟的回答,當中提到「Windows會根據驅動器的不同類型自動選擇合適的優化方式」似乎能回答鹵煮的問題了。簡單地說,保持系統默認的優化方式就好了。


在2013年的今天, 我想鄭重的說, 請不要進行磁碟碎片整理.忘了他吧
碎片整理這個概念是伴隨著fat32文件系統和機械硬碟產生的. 因為fat32 是用排隊的方法存取文件,機械硬碟上連續的空閑扇區存放文件整體, 隨著早先存放的文件的刪除, 被刪除的部分空閑出來可以存放其他文件, 但如果連續扇區空間不夠那就要把後來的較大文件分成幾份存放. 如此反覆, 不連續的文件愈來愈多. 然而機械硬碟的長處在於連續的扇區讀取, 但短處卻在於物理的磁頭尋找文件塊的過程,打比方你坐電梯送快遞, 你是喜歡從1樓2樓連續送到20樓還是1樓20樓7樓6樓這樣的亂續呢?電梯運行的過程好比機械硬碟移動磁頭的過程, 所以早先的重新安排文件存放的方法對當時的磁碟讀寫的確有點作用.
然而, 從xp時代開始, 我們的電腦逐漸換了ntfs文件系統, 與fat32在存放文件的策略上是有區別的, 針對fat32這種容易產生碎片的策略有了改進. 硬碟的磁頭移動策略和操作系統的文件系統演算法和外設緩衝演算法都在進步, 碎片變少, 磁碟讀取策略和緩衝策略有改進, 根本沒必要在機械硬碟上進行磁碟碎片整理, 因為windows速度真正的瓶頸是它龐大的註冊表.
以上說的是機械硬碟, 至於固態硬碟ssd, 頻繁的寫操作對於ssd就是自殺, 多寫一次快閃記憶體單元壽命少一次.從工作原理來說壓根沒有旋轉的碟片和磁頭(想像一下磁帶和快閃記憶體mp3的感覺), 隨機讀取也就是任意位置的讀取速度一樣, 文件不連續又有什麼關係?
這個概念在今天就是糊弄人的,當年糊弄人的可能性也不小.你想 你有n個小時整理的功夫, 還不如格式化重裝一遍痛快, 反正不長時間以後還要變成那樣 . 吐槽一下在linux這樣的ext文件系統下壓根沒這概念.
結論: 除了心理安慰, 磁碟碎片整理沒有任何用處, 純讓硬體燒電罷了, 還得讓你惦記, 何苦.


反對固態盤碎片整理會把所有數據整在一塊快閃記憶體上的評論,再反對固態盤數據越分散越高效的答案。

無論是機械盤還是固態盤,都是數據越連續越高效,這不用質疑。機械盤是因為機械裝置限制。固態盤是因為頁表大小限制,或者是樹狀表存儲空間限制,看FTL具體實現,FTL就是具體實現壞塊管理,磨損均衡,地址映射和糾錯的一個將快閃記憶體模擬為硬碟的適配層。至於單塊多塊快閃記憶體問題,目前基本上大家都是用類似內存雙通道的方式來控制,也不能算數據分散,因為按照地址上來說,還是統一的,只是位寬加大了。

但是,機械盤暴露給上層的LBA是直接能夠對應到具體位置的地址,因此連續LBA對機械盤的性能提升非常明顯。

固態盤甭管你哪裡,忽略查表時間(確實很短),基本讀取時間是恆定的。讀取速度基本取決於主控目前的狀態和flash性能。比如正在進行GC的時候,就會明顯的掉速。因為flash只能先擦後寫,為了解決flash壽命問題,只能用帶外更新加動態映射的方式來做。否則寫入放大會高到不可承受,因此,固態盤的頁表(混合映射實現)要爆炸的時候,和正在進行垃圾回收(把頁表指向的日誌頁給規整到塊表的連續數據塊內,類似硬碟碎片整理)的時候,就會掉速。因為此時硬碟的日誌塊不夠了,必須進行整理才能夠釋放塊表條目,從而允許小量隨機寫入。當然垃圾回收也是有代價的,就是寫入放大升高。因此如果要flash活久點,少點隨機寫入,多點順序和大塊寫入,就可以了。

另外,TRIM開啟也有助於遏止頁表爆炸問題,因為如果固態盤不知道你要刪除哪裡的數據,你如果直接寫小塊數據,它又以為是小塊更新,又用頁表映射,等你啪啪啪寫完一大塊數據後,垃圾回收君又要忙活了,而且可能不止一次,帶來掉速和大量寫放大的問題。如果直接告訴固態盤,這幾個邏輯塊俺不要了,固態盤可以直接這個時候執行可能的垃圾回收動作,然後擦掉不需要的數據。後續寫入文件基本上就可以直接找個新塊,不用頁表,清清爽爽的就把文件連續的寫進去咯。總而言之,就是臟塊越少,性能越好。盡量減少SSD的GC時間,比如盡量大塊的順序寫入,隨時TRIM。這樣就不易引起掉速。

所以說固態盤自身就包含了碎片整理的功能(注意和硬碟的物理連續不同),系統上層無需干預,就算干預也是無用,反而引發頁表爆炸(混合映射式),進而大量觸發垃圾回收操作。而且就算LBA給整理整齊了,那也是好看而已,真正的PBA,沒準被你整了這麼一次,和以前沒有變化(固態盤還是喜歡數據連續存放的,垃圾回收也是這個目的,物理上不連續頁表會難受,但是具體物理連續不連續,高層根本不知道,但是固態盤一定朝著物理連續的方向行進就對了╮(╯▽╰)╭)。所以除了空耗時間壽命外,根本沒什麼卵用。

順便吐槽一下FTL這東西。。。放在驅動或者固件層只能粗略預判上層文件系統想要幹嘛,總有點隔靴搔癢的意味,真希望有朝一日直接在PC上用MTD驅動加FlashFS,這樣就徹底不用考慮FTL模擬flash為傳統硬碟要實現的種種蛋疼又引發系統不穩定的問題了,比如SSD的預估壽命問題。╮(╯▽╰)╭


應該是不需要的吧,或者說即便整理了效果也不明顯。


對於老玩家而言,「磁碟碎片整理」一詞一定不會陌生。作為Windows內置的專為硬碟等存儲設備進行碎片整理的工具,在一定程度上減少了硬碟冗雜文件的堆積,加速了磁碟運轉速度,從而提升了電腦整體的運行速度。這一點的提升對於一些性能落後的、使用機械硬碟的老舊主機來說,還是特別有價值的。
然而,到了固態硬碟跑馬圈地,機械存儲式弱式微的當下,磁碟碎片整理卻淡出了我們的視野,越來越多的人表示,固態硬碟壓根就不需要磁碟碎片整理。
那麼為什麼固態硬碟不需要磁碟碎片整理呢?
在解決這個問題之前,我們先來看看到底什麼是磁碟碎片整理。
磁碟碎片整理顧名思義,就是通過系統軟體或者專業的磁碟碎片整理軟體對電腦磁碟在長期使用過程中產生的碎片和凌亂文件重新整理,可提高電腦的整體性能和運行速度。
我們知道,由於文件被分散保存到整個磁碟的不同地方,而不是連續地保存在磁碟連續的簇中,久而久之便產生了磁碟碎片。

固態硬碟不需要磁碟碎片整理的原因:
從磁碟碎片的產生原理,我們看出,磁碟碎片整理能夠提升個人電腦性能的秘密在於,通過整理磁碟碎片文件,讓碎片文件合成一體,加速了磁碟的尋道時間,從而整體上加速了電腦運行速度。
電荷尋道耗時幾乎為零
而我們知道固態硬碟的存儲單元,是基於快閃記憶體顆粒的電子存儲,因而在尋道時間上理論上是永恆不變的,影響其性能的則取決於主控晶元的性能和快閃記憶體顆粒的工藝。這也是為什麼許多玩家都建議在固態硬碟時代,不需要磁碟碎片整理的第一大原因。
固態硬碟讀寫次數的珍貴
其二,由於磁碟碎片整理的工作機制是重新將存儲在磁碟中的文件按照一定的順序重新讀寫一遍並整理,這對於把擦寫次數視為生命的固態硬碟而言,無異於自取滅亡。固態硬碟的快閃記憶體存儲特性決定了其擦寫次數是有限的,一旦超過限額,磁碟將無法寫入成為廢盤。因而,固態硬碟時代進行磁碟碎片整理實在是一種近乎自殺的行為,這是玩家們不建議磁碟碎片整理的第二大原因。
固態硬碟自帶TRIM的功能優勢
其三,則是固態硬碟自帶的TRIM功能,開啟後能夠充分發揮固態硬碟的整體讀寫性能,某種意上來說,其實已經充當了磁碟碎片整理的工作。
綜合以上原因,無論是從原理上還是從現實作用中,磁碟碎片整理功能其實在固態硬碟時代的存在價值真的微乎其微了,雖然從win8開始微軟已經針對固態硬碟的特性進行了相關磁碟整理功能的革新換代,但是就目前固態硬碟的快閃記憶體特性而言,其作用也是極小的。


細心的人可以發現win8以後就不是磁碟整理了,(磁碟優化)改成優化了


我做過flash驅動,ssd就是由flash構成的。
操作系統通過文件系統向flash裡面寫入,然而並不是立即寫入。而是在內存里有個緩存。文件系統有自己的策略,有的是數據量大了,才向flash寫入,有的則小一點。
但是文件系統也不是直接寫入的,而是透過flash驅動程序寫入。
flash的特性是每個地方(頁,相當於硬碟的磁軌)寫入次數不能超過3000次。而且這還是早期的flash,越到後期,隨著flash裡面每一個cell裡面可以存2個3個甚至更多比特(注意不是位元組),每個頁可以被重寫的次數也越來越少。
有一種使用情況是:有一些小文件不停的被修改然後寫入。這種情況下,如果只是向同一個地方寫,很快這個地方就達到使用壽命了。因此,flash驅動裡面做了「磨損平衡」。
這個磨損平衡目的就是把每一個塊(相當於機械硬碟的扇區)每一個頁,每個cell,的寫入次數做到相似,而不是只使用其中一部分。
機械硬碟每個地方使用壽命是比較大的。所以不需要磨損平衡,他就隨便寫,哪有空餘的地方就往哪寫就可以了。隨著使用過程的增加,寫入、刪除次數也越來越多。會出現某些大文件不是連續存儲在硬碟上,而是這裡放一點,那裡放一點。
機械硬碟是這樣讀寫的:首先文件系統接受操作系統的命令向硬碟讀寫。硬碟根據文件系統確定文件位置,硬碟首先將讀寫頭移動到對應的磁軌上,然後等待磁軌轉到讀寫頭下方後,開始讀寫。
如果文件不連續,在硬碟里到處都是,那就要不停的移動讀寫頭,不停的等待磁軌轉到對應位置。這樣導致機械硬碟讀寫文件變得非常慢,解決的辦法就是需要整理碎片,重新把所有文件連續的存儲在硬碟上。這樣機械硬碟只要做一次讀寫頭的移動和磁軌等待就可以了。大大提高機械硬碟效率。
由於ssd是flash,它是直接硬體電路讀寫的,沒有機械,一切都是瞬間完成。因此,不需要整理碎片。上面也說了,整理也是白整理,人家還要做磨損平衡呢,實際上也不可能給你寫成連續的。對於ssd的碎片整理,不但浪費自己的生命,還浪費ssd的生命(早期最好的才3000次而已啊,現在完全不行啊,達不到啊)
而且,對於SSD,不推薦使用NTFS這種日誌型文件系統。除非真的要有超過4G的文件要存儲在硬碟上。


你的理解是錯誤的,固態硬碟在存儲數據時即會根據控制器演算法將數據分為多份存儲在不同的區塊上,讀取時從這些區塊同時讀取,不存在通過整理將數據分散以提高讀取速度的過程。


只要固態硬碟支持trim就好了,不需要其他整理的。


推薦閱讀:

TAG:固態硬碟 | 硬碟 | 快閃記憶體(NAND) | 儲存 |