一種固態(tài)硬盤性能優(yōu)化的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及固態(tài)硬盤及Linux領(lǐng)域,尤其涉及一種固態(tài)硬盤性能優(yōu)化的方法。
【背景技術(shù)】
[0002]閃存(Flash memory)誕生于20世紀(jì)80年代末,它是一種存取高速、抗震性強(qiáng)、體積小、容量大、功耗低、掉電數(shù)據(jù)不丟失的存儲(chǔ)介質(zhì)。閃存在近十年來(lái)不斷發(fā)展,已經(jīng)被廣泛應(yīng)用于手機(jī)、數(shù)碼相機(jī)、游戲機(jī)等各種便捷式設(shè)備和嵌入式系統(tǒng)中。與傳統(tǒng)硬盤相比,閃存在抗震性和數(shù)據(jù)的存儲(chǔ)速度上具有明顯優(yōu)勢(shì),因而已經(jīng)成為替代磁盤的首選存儲(chǔ)介質(zhì)。閃存對(duì)突發(fā)I/O的響應(yīng)時(shí)間也只有傳統(tǒng)硬盤的百分之一,直接將現(xiàn)有數(shù)據(jù)庫(kù)系統(tǒng)部署在閃存上,聯(lián)機(jī)事務(wù)的處理能力有大約5~10倍的提升,響應(yīng)時(shí)間也有大幅改善。此外,閃存比傳統(tǒng)硬盤可靠性更高,MTBF (平均故障間隔時(shí)間)優(yōu)于傳統(tǒng)硬盤。閃存的這些優(yōu)勢(shì)使它非常適合用于存儲(chǔ)數(shù)據(jù)庫(kù),提高數(shù)據(jù)庫(kù)的存取效率和降低能耗。
[0003]固態(tài)硬盤(SSD: solid-state drive)使用閃存作為存儲(chǔ)介質(zhì),它擁有閃存的所有優(yōu)點(diǎn):數(shù)據(jù)存儲(chǔ)速度快,抗震性強(qiáng),耗電低等。它已經(jīng)逐漸被各大廠商用作存儲(chǔ)介質(zhì)。百度也使用SSD全面替代磁盤存儲(chǔ)搜索業(yè)務(wù)的后臺(tái)信息,成為全球首個(gè)大規(guī)模商用SSD的互聯(lián)網(wǎng)公司O固態(tài)硬盤(solid-state drive,SSD)泛指使用固體狀態(tài)記憶體來(lái)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備。用于固態(tài)硬盤的記憶體通常有SRAM、DRAM和閃存等。本文所指固態(tài)硬盤,特指使用閃存作為記憶體的、用于存儲(chǔ)持久數(shù)據(jù)的存儲(chǔ)設(shè)備。
[0004]固態(tài)硬盤通常由三部分組成,存儲(chǔ)芯片、控制芯片和高速緩存。存儲(chǔ)芯片也即閃存。因?yàn)閱纹W存的速度很有限,所以固態(tài)硬盤中通常配有8到16塊不等的閃存,在控制芯片的幫助下組成類似RAID O的陣列,用以提高其吞吐率。高速緩存通常是幾十乃至幾百兆的RAM,用以提高響應(yīng)速度,并可以延緩和減少擦除操作的數(shù)量??刂菩酒钦麄€(gè)固態(tài)硬盤的中樞,負(fù)責(zé)管理緩存和實(shí)現(xiàn)FTL (Flash Translat1n Layer,閃存轉(zhuǎn)換層)
固態(tài)硬盤因?yàn)槭褂瞄W存作為記憶體而不是能旋轉(zhuǎn)的磁盤片,比傳統(tǒng)硬盤少了各種機(jī)械設(shè)備,所以體積小、重量輕,而且省電抗震且速度大大超出磁盤,但因?yàn)樗腎/O特征尚未明了,數(shù)據(jù)庫(kù)系統(tǒng)也并未完全發(fā)揮SSD的特性,SSD數(shù)據(jù)庫(kù)的性能并沒(méi)有得到相應(yīng)的提升。
【發(fā)明內(nèi)容】
[0005]為了解決以上的問(wèn)題,本發(fā)明提出了一種固態(tài)硬盤性能優(yōu)化的方法。本發(fā)明主要包括兩個(gè)方面介紹固態(tài)硬盤性能的優(yōu)化,首先是通過(guò)調(diào)整參數(shù),對(duì)各種查詢計(jì)劃進(jìn)行了性能測(cè)試和分析,總體的查詢性能最優(yōu)。其次是通過(guò)了解用戶配置及使用場(chǎng)景,有針對(duì)的提出硬盤使用策略以求達(dá)到最佳性能。
[0006]通過(guò)調(diào)整參數(shù)來(lái)調(diào)優(yōu)固態(tài)硬盤
I)升級(jí)SSD固件
SSD刷固件主要作用是對(duì)FLT進(jìn)行升級(jí),F(xiàn)TL層就是一個(gè)讓閃存模擬傳統(tǒng)硬盤操作的軟件層,有了 FTL閃存設(shè)備才能使用,F(xiàn)TL層的效率直接影響設(shè)備的性能。FTL層的主要作用有邏輯塊映射、寫前擦除操作和耗損平衡技術(shù)。更新固件就是對(duì)這些操作的算法進(jìn)行升級(jí),優(yōu)化后的算法能提高并有效的使整個(gè)讀寫時(shí)間大大縮短,使系統(tǒng)整體性能獲得提升。除了能提升性能之外,SSD升級(jí)固件還能解決一些舊版本存在的的BUG,因此也可以把SSD的固件升級(jí)當(dāng)成是顯卡的驅(qū)動(dòng)升級(jí)或者是游戲的升級(jí)補(bǔ)丁。因此,升級(jí)SSD固件至最新是購(gòu)買SSD之后首要完成的事。當(dāng)然任何事物都具有兩面性,SSD固件升級(jí)能提升產(chǎn)品性能但一定要到官方網(wǎng)站下載固件進(jìn)行操作,否則可能因升級(jí)不當(dāng)導(dǎo)致固態(tài)硬盤故障。
[0007]2)安裝系統(tǒng)前,確定B1S中SATA工作在AHCI模式下
開啟AHCI模式能夠大幅縮短硬盤無(wú)用的尋道次數(shù)和縮短數(shù)據(jù)查找時(shí)間,這樣能讓多任務(wù)下的磁盤能夠高效地使用。所以開啟AHCI對(duì)于性能提升是非常有必要的。
[0008]3)內(nèi)核升級(jí)并啟用TR頂功能
系統(tǒng)內(nèi)核升級(jí)到2.6.37以上,最好用最新的3.00設(shè)置禁用disk 1 scheduler模塊,并在fstab中添加discard來(lái)開啟TRIM功能,如:
原始的:
UU I D = 2f6beO Cf-2f 5 4 -4 6 4 6 -b8C6 - 5fbOaaO I ef23 / e x t 4defaults, errors=remount-ro 0 I改后的:
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 discard,defaults, errors=remount-ro 0 I
4)4K對(duì)齊Linux各大發(fā)行版基本上已經(jīng)在創(chuàng)建分區(qū)時(shí)也默認(rèn)首扇區(qū)對(duì)齊,可以使用sudo /sbin/fdisk -1 /dev/sda (假設(shè)ssd是sda)命令,看看各分區(qū)首扇區(qū)是否能被8整除,如果可以就是對(duì)齊了!
5)禁止記錄最近一次訪問(wèn)的時(shí)間戳
運(yùn)行” sudo gedit /etc/fstab”來(lái)修改fstab文件,在掛載參數(shù)中同時(shí)加上noatime。noatime這個(gè)參數(shù)來(lái)禁止記錄最近一次訪問(wèn)時(shí)間戳;
6)配置固態(tài)硬盤(SSD)的Ext4
要優(yōu)化文件系統(tǒng)刪除字節(jié)區(qū)塊的效率,就必須確保小于512K的文件分布在不同的刪除字節(jié)區(qū)塊上。要做到這一點(diǎn),必須確保在創(chuàng)建可擴(kuò)展文件系統(tǒng)時(shí)指定了需要使用的條帶的寬度和幅度。這些值在頁(yè)面中指定,默認(rèn)大小為4KB.要?jiǎng)?chuàng)建一個(gè)最佳的可擴(kuò)展文件系統(tǒng),應(yīng)該使用如下命令:
mkfs.ext4 -E stride=128, stripe-width=128 /dev/sdal如果要修改現(xiàn)有的文件系統(tǒng)的參數(shù),可以使用tune2fs實(shí)用程序:tune2fs -E stride=128, stripe-width=128 /dev/sdal
7)配置固態(tài)硬盤(SSD)的1/0調(diào)度程序
優(yōu)化的第三個(gè)部分涉及到I/o調(diào)度程序。在內(nèi)核加載時(shí)把elevator=deadline加入到系統(tǒng)引導(dǎo)管理器(GURB)中;在rc.local文件中加入如下命令以便每次當(dāng)系統(tǒng)重啟,期限調(diào)度就會(huì)應(yīng)用到指定的磁盤。echo deadline >/sys/block/sda/queue/scheduler
8)清理固態(tài)硬盤(SSD)中的數(shù)據(jù)塊
該操作可以確保在刪除文件后相應(yīng)的數(shù)據(jù)塊真正清空,然后在創(chuàng)建新的文件時(shí)才能有可用的數(shù)據(jù)塊。如果沒(méi)有清理操作,一旦數(shù)據(jù)塊空間填滿,固態(tài)硬盤的性能就會(huì)下降。如果使用丟棄掛載選項(xiàng),當(dāng)文件刪除后,數(shù)據(jù)塊也會(huì)被相應(yīng)地清除,這樣可以顯著提高固態(tài)硬盤的性能。
[0009]啟用清理功能,需要在固態(tài)硬盤的/etc/fstab配置中為掛載文件系統(tǒng)添加丟棄選項(xiàng),命令如下:/dev/system/root/ext4 discard, errors=remount-ro, noatime 0 1,該命令同時(shí)也添加了 Noatime選項(xiàng),該選項(xiàng)保證了文件的訪問(wèn)時(shí)間不會(huì)因?yàn)槊看巫x取而更新,從而降低對(duì)文件系統(tǒng)的寫入次數(shù)。在fasab配文件中完成對(duì)文件系統(tǒng)的這些修改后,重啟計(jì)算機(jī),或者通知文件系統(tǒng)重新讀取其配置,然后使用/etc/fstab文件中包含的mount-ο命令重新安裝每個(gè)文件系統(tǒng)。
[0010]通過(guò)了解用戶配置及使用場(chǎng)景,有針對(duì)的提出硬盤使用策略以求達(dá)到最佳性能。
[0011]對(duì)各種查詢計(jì)劃進(jìn)行了性能測(cè)試和分析,并針對(duì)磁盤、SSD混合存儲(chǔ)方案和純SSD存儲(chǔ)方案都提出了性能優(yōu)化的方法。其中,針對(duì)混合存儲(chǔ)方案,本文提出了一種靜態(tài)的數(shù)據(jù)存放方式,在SSD空間非常有限的情況下也能讓數(shù)據(jù)庫(kù)性能提升2~3倍。而針對(duì)純SSD存儲(chǔ),本文通過(guò)調(diào)整參數(shù),對(duì)各查詢的各種查詢計(jì)劃進(jìn)行了性能測(cè)試和分析,總體的查詢性能最優(yōu)。
[0012]I)分析各個(gè)品牌SSD性能特征,根據(jù)性能特征來(lái)調(diào)整參數(shù)。目前市面上的SSD因?yàn)槠淇刂菩酒呗缘牟煌㈤W存芯片不同,不同品牌SSD的性能會(huì)有很大差別。而如果將SSD建立成RAID陣列,則性能特征將繼續(xù)發(fā)生變化。數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)當(dāng)主動(dòng)地收集和分析底層設(shè)備的性能特征,包括不同方式的讀寫操作的耗時(shí)特征,及從一種操作轉(zhuǎn)換成另一種操作的耗時(shí)特征,以便優(yōu)化性能。例如,應(yīng)盡快獲取順序操作和隨機(jī)操作的耗時(shí)比,以便選擇查