標籤:
Linux的檔案系統有點像MySQL的儲存引擎,它支援各種各樣的檔案系統。它最上層是通過 virtual files system虛擬檔案系統作為一個抽象介面層來對外提供調用的。然後下層的各種檔案系統實現這些調用介面就行了。
1. Linux 中的 記錄檔系統和非記錄檔系統
檔案內容的修改涉及到兩部分:實際檔案內容的修改 和 檔案元(metadata)資訊的修改。所以在修改一個成功之後,修改另一個之前,此時系統崩潰,就會導致兩者的不一致。所以提出了記錄檔系統的概念。
所謂的記錄檔系統(Journaling file system),就是在實際修改檔案內容和檔案元資訊之前,將他們的修改先寫到一個日誌中(journal log)。這樣的話,如果發生系統崩潰,就可以使用日誌進行恢複。當然,寫日誌會對檔案系統的效能有一定的影響。除了ext2之外,其它檔案系統幾乎都是記錄檔系統。
記錄檔系統的處理過程是:1)先寫日誌;2)然後寫實際的檔案系統;3)刪除日誌;
記錄檔系統又可以分成三種類型:
1)記錄模式(journal): 將所有的中繼資料和資料改變均寫入日誌,對效能影響最大;
2)預定模式(ordered): 只記錄中繼資料的變化, 在資料寫入磁碟後再修改中繼資料,對效能影響中等;
3)寫回模式(writeback): 只記錄中繼資料的修改變化,對資料修改順序無要求,對效能影響最小;
我們可以在/etc/fstab 檔案中修改檔案系統的記錄模式。
/dev/sdb1 /testfs ext3 defaults,data=writeback 0 0
Linux 熱門檔案系統:
ext4, ext4, XFS, ReiserFS, JFS
其中最常用的是 ext4, XFS. 其中redhat7/centos7將XFS作為預設的檔案系統。在最新核心的測試中XFS效能也明顯超過ext4。所以對於mysql伺服器,最好選擇使用 XFS 檔案系統。
關於 ssd上的ext4和xfs有一個比較:
https://www.percona.com/blog/2012/03/15/ext4-vs-xfs-on-ssd/
在rhel6.4之前ext4效能比xfs好,因為xfs有lock爭用的bug。但是6.4開始,xfs的bug被fix了。所以xfs效能比ext4好。
在xfs的鎖爭用bug沒有解決時:
sync asyncthreads throughput throughput XFS ext4 XFS ext41 1.90/124k 1.41/92k 1.72/112k 1.41/92k2 1.01/64k 1.65/108k 0.97/62k 1.65/108k4 0.27/17k 1.55/102k 0.21/13k 1.55/102k8 0.13/8k 1.45/95k 0.15/9k 1.45/95k16 0.12/7k 1.45/95k 0.12/7k 1.45/95k
It’s pretty clear from these results that lock contention is killing XFS as the thread count grows. ext4 performance shows that it uses exclusive locking as well, but it is not degrading like XFS is due to different lock types being used.
但是當xfs的鎖爭用bug解決之後:
sync asyncthreads throughput throughput vanilla patched vanilla patched1 1.90/124k 1.83/120k 1.72/112k 1.69/111k2 1.01/64k 2.85/185k 0.97/62k 2.57/168k4 0.27/17k 3.68/241k 0.21/13k 3.41/223k8 0.13/8k 4.42/290k 0.15/9k 4.16/273k16 0.12/7k 4.95/325k 0.12/7k 4.86/319k
Throughput scales with thread count – each thread runs at 100% CPU utilsation, and XFS gets up to 3x as much throughput as ext4 does. So, basically, XFS is still the file system you want for direct IO。
掛在檔案時的最佳化(noatime,nodiratime):
mount –t ext4 –o rw,noatime,nodiratime /dev/sda6 /data
noatime 會有0-10%的效能提升,一般平均會有3%的效能提升。
noatime:
Do not update inode access times on this filesystem (e.g, for faster access on the news spool to speed up news servers).
nodiratime:
Do not update directory inode access times on this filesystem.
noatime,nodiratime的配置也可以在/etc/fstab中進行。
MySQL 調優基礎(三) Linux檔案系統