ext4檔案系統的優化

餘二五發表於2017-11-14

ext4作為ext3的下一代,是Linux上的經典檔案系統,功能上雖不及zfs、btrfs那麼花哨,但是可靠實用,被廣泛部署在企業級的生產環境中。


ext4 作為一個通用檔案系統,預設情況下已經工作良好。通過下面的調優,可以獲得額外的效能。


掛載選項


1、noatime

atime,它通常沒有用處,尤其對於日誌型的檔案系統而言,每次檔案讀操作都會改變後設資料,形成寫操作,這變得不太合理,對於大多數日誌型檔案系統,noatime通常都是一個更好的選擇。


2、data=writeback

writeback儘量滿足檔案內容的寫操作,檔案後設資料寫入會推遲一點,這種模式可能會損害檔案儲存的安全性,意外斷電情況下,重啟後可能會讓你得到舊資料而不是新寫的資料。如果你正在使用硬體陣列卡,且上面有電池模組的話,那麼你就不用太擔心了。


3、delalloc

Linux作業系統通常會慷慨的拿出大量記憶體作為檔案系統緩衝,讀寫效能因此大大受益,所謂延遲分配指的是檔案在記憶體中寫後才在檔案系統上分配block ,這樣可以提高block連續性,減少碎片。如果不急著把髒資料刷進檔案系統的話,延遲分配block也會增加ext4檔案系統的效能。


4、journal_dev

ext4 預設在自己所在的分割槽內維護日誌,如果把日誌寫入另外一個分割槽或者硬碟的話,本地檔案系統就會變得更輕鬆。


5、barrier=0

為了寫安全,日誌檔案系統通常在寫操作完成時寫barrier,用於確認後設資料完整性。如果應用以讀為主,禁用barrier可提高效能。


6、async

非同步IO,在作業系統級別,儘可能的不直接從硬碟讀寫,對於以讀為主的應用可以使用非同步IO來提高效能,寫操作使用非同步IO會比較危險。


7、noacl、nouser_xattr、

減少檔案系統特性,給檔案系統減負


8、nodev、noexec、nosuid

這三個選項通常用於增加安全性,適合作為資料分割槽的掛載選項。

(nosuid是否更安全,暫且存疑。見man mount)


其他優化方法

deadline 通常是一個更好的IO排程器,使用方法

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


如果你打算使用4TB硬碟作為資料分割槽/data ,建立檔案系統時,預設會保留5%,也就是200G給root專用,用下面的辦法改變它

mkfs.ext4 -m0 /dev/sdb1


總結


效能調優通常以犧牲安全為代價,極端的優化會拋棄安全,讓系統裸奔。因此,效能調優也要講究適度,把握好效能和安全的平衡。畢竟,資料無價。


效能調優也是一個細活兒,需要經過大量調查考證,效能測試和事後跟蹤。一般來說,調優很難讓效能在整體上有大幅度的提升。相比於更換硬體,後者的效能提升更大更明顯一下,比如將普通硬碟替換成SSD硬碟。


本人才疏學淺,很多地方解釋可能不到位,不足之處,還望指教。

本文轉自 紫色葡萄 51CTO部落格,原文連結:http://blog.51cto.com/purplegrape/1421331,如需轉載請自行聯絡原作者


相關文章