數據存儲產業服務平臺

對提升Linux下固態硬盤使用率的探討

固態硬盤(SSD)不是普通的硬盤。文件在固態硬盤中的處理方式與地普通硬盤中的方式完全不同,如果安裝Linux不同版本時沒有把這些差異考慮進去,就很難充分發揮固態硬盤的優勢,而且很可能在使用一段時間后造成嚴重的性能下降。

修改默認的固態硬盤(SSD)柱面大小

提升Linux下固態硬盤的使用率,在安裝Linux操作系統前就應該做相關工作。系統會先在磁盤上創建分區,通常創建的分區包含固定數量的柱面,而默認情況下,每個柱面由16065512個字節的扇區組成。

現在的問題是,當默認柱面空間大小被完全使用后,固態硬盤就不能發揮最佳性能。因為要固態硬盤讀這個操作需要使用4KB的字節塊,而固態硬盤控制器刪除操作則需要512KB的字節塊。問題是,有了通常用于Linux上的默認分區,分區的開始沒必要也是一個4KB新分區的開始。結果,一次讀取或寫入操作也許需要SSD設備上的兩個不同的區塊,這也減緩了SSD磁盤的性能。

為了避免這種問題,可以采用fdisk方式來創建分區,配置三個選項來指定使用柱面及拍面大小。具體的命令如下:

fdisk -H 32 -C 32 –c

這確保了分區均衡的方式兼容SSD寫入和刪除區塊。一些最新的Linux版本默認情況下已經考慮了這個問題,以FedoraCore 14為例,它的第一個分區都會自動以第2048個扇區為開始,這就意味著寫入和刪除字節區塊始終在同一個柱面上。

配置固態硬盤(SSD)的Ext 4

接著需要關注的就是文件系統。想要優化文件系統刪除字節區塊的效率,就必須確保小于512K的文件分布在不同的刪除字節區塊上。要做到這一點,必須確保在創建可擴展文件系統時指定了需要使用的條帶的寬度和幅度。這些值在頁面中指定,默認大小為4KB.要創建一個最佳的可擴展文件系統,應該使用如下命令:

mkfs.ext4 -E stride=128,stripe-width=128 /dev/sda1

如果要修改現有的文件系統的參數,可以使用tune2fs實用程序:

tune2fs -E stride=128,stripe-width=128 /dev/sda1

配置固態硬盤(SSD)的I/O調度程序

優化的第三個部分涉及到I/O調度程序。該模塊是一個決定如何處理I/O請求的核心組件。默認情況下就是非常公平的排隊,對于普通的磁盤驅動器來說,這是很好的方案,但對于以期限調度為優勢的固態硬盤來說,這并不是最好的。

如果你想在系統中對所有磁盤采用期限調度,可以在內核加載時把elevator=deadline這句話加入到系統引導管理器(GURB)中;如果你只是想針對某一個磁盤,就應該在rc.local文件中加入類似如下實例的一句話,那么每次當系統重啟,期限調度就會應用到指定的磁盤。如下實例將會對/dev/sdb磁盤采用期限調度。

echo deadline >/sys/block/sda/queue/scheduler

清理固態硬盤(SSD)中的數據塊

最后一個重要的步驟稱為“清理”,該操作可以確保在刪除文件后相應的數據塊真正清空,然后在創建新的文件時才能有可用的數據塊。如果沒有清理操作,一旦數據塊空間填滿,固態硬盤的性能就會下降。如果使用丟棄掛載選項,當文件刪除后,數據塊也會被相應地清除,這樣可以顯著提高固態硬盤的性能。2.6.33 以上的內核已經支持清理操作。

啟用清理功能,需要在固態硬盤的/etc/fstab配置中為掛載文件系統添加丟棄選項。示例中的命令為掛載的根邏輯卷啟用了清理操作。

/dev/system/root/ext4 discard,errors=remount-ro,noatime 0 1

該命令同時也添加了Noatime選項,該選項保證了文件的訪問時間不會因為每次讀取而更新,從而降低對文件系統的寫入次數。

在fasab配文件中完成對文件系統的這些修改后,重啟計算機,或者通知文件系統重新讀取其配置,然后使用/etc/fstab文件中包含的mount -o命令重新安裝每個文件系統。

未經允許不得轉載:存儲在線-存儲專業媒體 » 對提升Linux下固態硬盤使用率的探討
精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走