在普通的Ext4檔案系統建立中會用到預設設定。對於預設的工作負載,這些設定正常工作。但是如果你的伺服器顯示一個非普通的效能模式時,你可能會從調節Ext4檔案系統的效能中受益。本篇文章中,我們就來看看如何將Ext4推動到效能的最大值。調查你的系統最佳化一個Ext4檔案系統不受到要調整這個檔案系統的限制。第一步要確保主機伺服器可以處理一個快速的檔案系統,通過指派足夠大量的RAM開始。一個調整好但記憶體不足的檔案系統不能提供最佳化的效能,因為沒有足夠的空間來恰當地緩衝這個檔案系統中繼資料表。要知道你的伺服器是否有足夠的記憶體,就使用免費命令。如果緩衝器和緩衝使用的總記憶體超過了RAM總量的20%,它就會工作。但是越多就越好。理想來說,你需要大概40%的伺服器記憶體用在緩衝器和緩衝上。下一步,檢查你的磁碟。為了獲得儘可能好的效能,你將需要用到儘可能好的磁碟。這不是說你只需要SSD磁碟。但是如果你需要速度,不要使用7200 RPM SATA,要使用15000 RPM串列SCSISAS)代替。還要將磁碟網域控制站參數納入考慮。確保啟用了電池備份的緩衝。為了增加寫入效能,將寫入配置為延遲。如果你更注重讀取效能,配置預讀取來增加機會,讓你下一步需要的資料更可能在你需要時已經在記憶體中負載了。最佳化Ext4檔案系統伺服器也檢查過了,現在我們就來最佳化Ext4檔案系統。你需要考慮兩個東西,然後你就可以檢查更具體的績效參數了。幾乎在所有情況下都有所協助的一個參數是關閉檔案系統訪問時間,使用/etc/fstab中的“一次都不noatime)”安裝選項。沒有這個選項,每次檔案被訪問包括讀取)時,這個檔案的中繼資料都會變更。大部分伺服器沒有對這些資訊做處理,所以關閉它就行了。另一個有意思的安裝選項是dealloc選項,它開啟了延遲的塊配置功能。這個功能在最後時刻決定寫入檔案發生時使用哪個塊,最佳化這個寫入程式。另一個重要的安裝選項調整檔案系統日誌。有三種記錄模式:data=journal、data=ordered和data=writeback。預設設定data=ordered提供效能和防護之間的最佳平衡。但是如果你的伺服器需要寫入大量資料,它可以長期凍結你的伺服器。如果是這種情況,使用iotop等工具,你會看到kjournald程式的高負載。如果你的伺服器遇到了這種行為,使用data=writeback選項來獲得更好的寫入效能。但是使用這個選項增加了風險,最新修改的資料會在宕機事件中崩潰。建立檔案系統來擷取更好效能時,可以用到多個選項。第一個是inode大小。inode用來儲存中繼資料,如果擴充屬性或存取控制清單ACL)用在一個檔案系統上,預設的inode不足以儲存所有資料並且配置了二級的inode。這也就是說,所有的檔案訪問你都需要用兩個操作來代替一個。使用有-I 256選項的mkfs,將inode大小從128設定成256。完全關閉使用者擴充屬性和ACL不是一個好方法,因為你需要它們來使用Ext4擴充。雖然預設的Ext4檔案系統最佳化得很好,轉向你的檔案系統可能會歸結到建立一個理想的伺服器硬體設定。noatime的安裝選項在多數情況下提供效能優勢。接著最佳化取決於你的伺服器正在做什麼。檔案系統效能不佳的大部分伺服器都是因為不能以高效的方式寫入資料。