天天看點

SSD碎片早期網絡文章摘錄我的固态硬碟怎麼越來越卡。

第一篇 :

第二篇 : 

ssd 的價格一路走低,使得它也越來越被普通使用者接受,0噪音,抗震動,讀寫迅速使得很多使用者對它趨之若鹜。但是,多數使用者對 ssd 的認識确流于表面,特别是對它性能的了解。大部分使用者隻認 ssd 上标注的順序讀寫參數,這個确實也是一種悲哀。這篇文章,就是為廣大在 mac os x 下使用,和将要使用ssd的朋友,簡單說一說選購,使用 ssd 應該注意的一些問題。

1: 選 ssd 應該知道的概念

ssd 有幾個重要的概念,主要晶片,nand 存儲晶片,緩存。

主要晶片,相當與電腦的 cpu,它的好壞直接影響到 ssd 的穩定和效率。現在主流的ssd晶片,主要是 intel,jmicron,indilinx,toshiba,samsung,sandforce。intel的主要使用在自家産品以及為金士頓等品牌的貼牌産品中,它的特點是領先業界的并行10通道讀寫和優化的算法,使得 intel ssd 在穩定性,和随機讀寫性能在很長一段時間内遠遠領先其它廠商。

jmicron的晶片,一般為各大山寨品牌所使用,包括類似源科,pqi,金勝以及早期的ocz,photofast等diy品牌,優點就是價格便宜,穩定性性能幾乎沒有。indilinx,也是一個類似jmicron的低價位主要解決方案,但是它的穩定性和性能,都比jmicron要好很多,現在好多主流diy品牌的ssd在使用它的晶片。sandforce 是一個後起之秀,性能強悍,現在市場上diy品牌的高性能ssd,幾乎全是 sandforce 解決方案,著名的鎂光c300,ocz extreme,都是使用 sandforce 晶片。toshiba和samsung的主要,都用與自家的ssd之上,性能中庸,勝在穩定。

nand 存儲晶片,這個東西不用多說,從u盤開始,我們其實就已經接觸過這個東西了,主流的 nand 晶片,有samsung,toshiba,intel&micron(intel 鎂光合資)。這個東西,一般分為三種,slc, mlc,和新的 emlc. slc 就是著名 x25 e使用的nand晶片,單層存儲結構,性能超高,壽命長,極其穩定,但是容量小,價格高,一般在企業級市場使用。mlc,是最常見的ssd nand 存儲晶片,x25 m, samsung,toshiba,以及其它的diy品牌主流産品都有使用。多層存儲結構,性能不錯,容量大,價格低廉,壽命可以接受。還有一種,就是将要在 2011 ces 大會上,intel 釋出的 x25 e 二代使用的 emlc 存儲晶片。它是 mlc 的一個變種,雖然 slc 性能強悍,但是機關存儲價格太高,emlc 很好的解決的這個問題,通過給普通的mlc晶片加入ecc校驗,等等資料安全性能,已經使mlc的安全性可以進入企業業務關鍵領域。

緩存,早期的山寨ssd,都是沒有緩存的,這個就導緻ssd非常不穩定,容易出現資料讀寫錯誤。當然,目前市面上主流的ssd,都帶有緩存晶片。緩存有兩個參數,頻率和容量,和記憶體一樣,這個東西頻率越高,容量越大越好。但是 intel 似乎非常自信于它的主要設計,25e, 25m 的緩存從頻率到容量都不太能拿得出手,但是還有如此性能,可見它主要有多厲害了。現在主流的diy品牌,無一例外的都是128m,256m緩存起步,這樣雖然主要查一些,但是也能有非常厲害的順序讀寫性能,再加上不錯的 sandforce,資料就非常華麗了。可見,如果下一代intel,能夠提高緩存容量以及頻率,秒殺diy品牌應該不是什麼難事。

2: ssd 的參數如何看

ssd 有幾個重要的參數,順序讀寫性能,随機讀寫性能,抗震性能,壽命

順序讀寫,就是在磁盤上讀取和寫入一個連續大檔案的性能。這個性能一般也就是标示在 ssd 包裝盒上的那個讀寫性能。說實話,順序讀寫性能不能夠反映出一個 ssd 的真實性能,隻要緩存夠大,頻率夠高,一個垃圾山寨的 ssd,都能達到讀寫200mbs+的恐怖性能。是以,這個看看就得了。

随機讀寫性能,這個東西,才是能夠真實反應一個 ssd 主要水準和性能的最重要的參數。我們知道,檔案系統上的檔案,并不是連續存儲的,随着硬碟的使用,添加新檔案,删除老檔案,,,所有的檔案在實體層面上,都是松散存放,這也就是磁盤碎片的由來之一。而且,統計資料也說明,電腦上真正被頻繁使用讀寫的檔案,90%都是都是4kb~2048kb(2mb)左右大小的檔案。是以,這些小檔案的随機讀寫性能,就成為一個硬碟性能的重要考量。傳統的hdd由于機械結構,讀寫小檔案的時候,磁頭在磁盤盤面上進行頻繁的尋址操作(尋道 seek),是以小檔案随機讀寫ssd 由于不存在機械部件,是以尋址操作和随機讀寫的性能高于傳統hdd太多。是以選購ssd時,這是一個重要的參考參數。但是要注意,每一個品牌的ssd,在介紹随機讀寫性能時,可能會有 * 号注解。來表明這個性能是在某種特殊情況下得到,比如 25m g2 的性能介紹

random i/o operations per second (iops)?

random 4kb reads: up to 35,000 iops

up to 6,600 iops (80gb drive)

up to 8,600 iops (120gb drive)

up to 8,600 iops (160gb drive)

? measurement performed on 8gb span.

4kb 非常厲害,但是要注意那個 iops 後面的 1 字元,看到後面你就誰知道,原來這個是在特定連續的 8gb 區間下得到的。正常日常使用的時候,我們無法嚴格按照這個資料來使用。

抗震,這個不必多說,一般也沒人拿着ssd摔來摔去

壽命,不管是 slc 還是 mlc,都有一定的擦寫壽命,但是這個一般不用擔心,主流 ssd 主要都有均衡算法,會平衡的擦寫個個 nand cell,一般來說,mlc 3年到5年的壽命。slc 更長。

3: ssd 與檔案系統

現在還沒有一個能夠針對 ssd 的磁盤碎片整理程式,請千萬不要使用任何ssd生産廠家提供的程式以外的磁盤碎片整理程式整理 ssd。

這裡說 mac os x extended (hfs+) 檔案系統。這個檔案系統,對于 20 mib 下的檔案有自動的磁盤碎片整理的功能,這個你是無法幹預的,當然,對于 ssd 性能沒有本質影響。除了這個功能外,還有一個記錄檔案通路時間的功能 (access time). 這個功能與性能有關。檔案系統通過記錄每一個檔案的access time,進而計算得出那些檔案屬于 hot files (熱點檔案),當一個檔案擁有了 hot files 的資格後,檔案系統會自動将此檔案向磁盤卷的前部移動,甚至将此檔案添加到磁盤卷中繼資料樹中以便提高通路性能。但是,這個功能對于hdd來說是有很大效果的,墓喚檔痛排

allocation block與ssd raid,預設狀态下,snow leopard 是每個volume最多 2^3 2個 allocation block。每個 block 4kb(預設),這也就是說,平常我們為什麼在意4kb随機讀寫的原因。但是raid後,由于多加了一層硬體(或者軟體層),這個allocation block是一個可選的範圍,比如32kb,64kb,128kb等等,區塊的大小直接影響了4kb随機讀寫的效率,cpu占用率,磁盤占用率等等資料,說白了,就是一個 空間,時間和效率 的均衡問題,,,,對于軟 raid 來說,區塊過小,cpu占用率高,導緻系統性能下降,區塊過大,導緻磁盤使用率低下。而且,由于軟疾愕拇嬖冢 賈耂sd的4kb随機讀寫性能暴降。硬raid也有類似問題。

這裡就先說這麼多,希望對各位有幫助。

第三篇 : 

通過設定hpa提高intel mlc ssd硬碟的寫性能

我們知道intel mlc ssd硬碟随着使用會産生很碎片,随着碎片的增加性能會大大降低。intel的工程師介紹可以使用hpa技術保留一部分空間給ssd硬碟内部使用,這樣可以有效的降低碎片。 

先介紹一下什麼是hpa:

hpa是"host protected area"的縮寫,通俗的了解就是設定讀取的硬碟最大的扇區号,進而把高端的内容隐藏起來,這個最大的扇區号能夠寫在硬碟的某個地方,是以即使你把這個硬碟挂到其它機器上,正常情況下你也看不到隐藏的内容,fdisk,pqmaigc之類的工具也把這個硬碟當做一個稍小容量的硬碟。hpa是ata的标準,ata-4就包含了hpa,這個标準需要在hdd的 firmware支援的。 

在linux下使用新版本的hdparm工具可以設定hpa,rhel5.x下自帶的hdparm工具版本太低了,不能設定hpa。可以從sourceforge網站上下載下傳hdparm工具:http://sourceforge.net/projects/hdparm/,我下載下傳的版本是hdparm-9.27.tar.gz,下載下傳後放在/usr/src目錄下: 

#cd /usr/src 

#tar zxvf hdparm-9.27.tar.gz 

#cd hdparm-9.27 

#make 

#make install 

這樣就安裝好了新版本的hdparm, 

檢查hdparm的版本是否是新版本: 

#hdparm -v

hdparm v9.27 

注意設定hpa會導緻硬碟上原先的資料被破壞。 

檢視hpa的設定: 

#hdparm -n /dev/sdh 

/dev/sdh:

 max sectors   = 146800640/312581808, hpa is disabled 

可以看到hpa是關閉的。 

設定hpa,160g的ssd盤按2^30bytes/gb的話,大小為149gb,我們的的硬碟大小設定為120gb,留29gb給内部使用。 

注意:設定hpa時必須保證硬碟沒有被使用,同時設定完hpa後需要重新啟動機器才能生效。 

#hdparm -n p251658240 /dev/sdh 

 setting max visible sectors to 251658240 (permanent)

use of -nnnnnn is very dangerous.

you have requested reducing the apparent size of the drive.

this is a bad idea, and can easily destroy all of the drive's contents.

please supply the --yes-i-know-what-i-am-doing flag if you really want this.

program aborted. 

由于這個操作是會導緻盤上的資料全部丢失,是以hdparm會警告你,需要加 --yes-i-know-what-i-am-doing ,才會真正設定hpa。 

#hdparm -n p251658240 --yes-i-know-what-i-am-doing /dev/sdh 

指令中的pnnnnnnn中的p表明是持久化設定。 

重新啟動linux。 

檢查設定是否成功: 

 max sectors   = 251658240/312581808, hpa is enabled

第四篇 : 

前面我們已經系統的解釋了均衡磨損算法、磁盤碎片等概念,不過我們有點擔心說的太過潦草,讓人不明究裡。下面,我們就用大家都熟悉的學生宿舍居住方式,來解釋ssd磁盤碎片的産生,以及為何會影響性能。

    我們知道,ssd硬碟内部是按照block的方式來劃分區域的,一個block擁有4個page,一個page的容量一般是4kb。如果把它看做是學生宿舍,那麼情況大概是這樣,一幢宿舍樓有若幹層(block),每層有4個房間(page),每個房間住4個學生(一個人相當于1kb)。

    在正常情況下,每個宿舍都應該是住滿了4個學生後,再開辟一間新的宿舍,這和采用均衡磨損算法的情況完全一樣。不過,在所有宿舍都住上學生後,問題就出來了。

    每個宿舍的學生不會是完全穩定的,比如過些日子,某些宿舍的某些學生離開學校了。那麼他就空出了床位,而學校也會安排新生住進去。可是,就是在安排新生住進去的時候,管理宿舍的人就有點迷糊了,因為每個房間都曾經住過學生,哪些房間會有空床呢?

    就在宿舍管理者還沒徹底搞明白前,校長辦公室又來指令(均衡磨損算法),宿舍必須一個接一個住滿學生。可憐的管理者徹底暈了,他隻能重新徹底再次編排一下宿舍,把所有學生都叫出來,然後再一個個安排進宿舍。如果這種事情發生在ssd硬碟上,結果明顯,那就是系統速度慢下來了,因為内部正在進行資料整理。

    當然,問題還不僅如此,當管理者好不容易重新安排了學生宿舍後,學校班主任要求管理者把他們班的學生都找出來上課。而在之前的宿舍重新調整行動中,這個班的學生分散在整個大樓所有樓層若幹房間中。要想通知到他們,管理者必須從一層爬到最高層。如果這展現在ssd硬碟中,結果就是應用軟體運作速度很慢。如果用硬碟術語,這就是磁盤碎片太多,影響軟體效能。

    從上面的描述來看,當ssd硬碟容量基本用完時,混亂最容易發生。因為管理者(ssd硬碟控制器)、校長辦公室(均衡磨損算法)、班主任(應用程式)三者不停在發生沖突。如果硬碟很空,那還要安排一些,大不了就是多占用一些宿舍,起碼不容易出現反複調整資料結果的情況。

    那麼,從上面來看,有沒什麼好的方法解決這個問題呢?目前來看,可以減少每個宿舍住的人數,比方做到1kb/1 page。但是這樣一來,宿舍管理者日常的任務就重了,管100個宿舍就不輕省,管400個宿舍,每天就更加不容易。

    當然,如果沒有均衡算法搗亂也會好很多,見縫插針,那個宿舍空就去哪個,但這樣又不能保證ssd使用壽命。

    總之,磁盤碎片的問題目前對于ssd來說,還是一個非常難解決的問題。也許增加系統緩存是一個好方法,但如果沒有好的算法(管理方式)之前,恐怕也不會有很好的結果。我們還是要期待上遊廠家能夠有更加天才的設計,不過無論如何,ssd前景還是光明的,畢竟沒有哪款産品一出現就沒有任何問題,而且我們先前讨論的情況也非常極端,使用者未必就一定能碰到。

第五篇 : 

一開始用的時候還挺快的。很爽,不過現在,容量和剛開始做完ghsot時差不多,卻越來越卡。

用磁盤碎片分析工具,提示不需要整理。

30g 山寨版的ssd 

有解決辦法嗎?

把簇改成512個位元組,基本上不卡了。看來ssd硬碟是同時寫入多個簇的,當容量占用過高時,可供寫入的簇選擇性變差。是以容易出現假死狀态。

【參考】http://pterodactyl.iteye.com/blog/408130

http://www.diybl.com/course/6_system/linux/linuxjs/20100226/195951.html

http://hi.baidu.com/view520/blog/item/fffaca1b184cd50a8718bf7e.html

http://we.pcinlife.com/thread-1142929-1-1.html

繼續閱讀