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