Linux 的文件系統猶如 MySQL 的存儲引擎,支援多種文件系統類型。其架構採用虛擬文件系統(VFS)作為上層抽象接口,下層由具體文件系統實現具體調用。
文件修改涉及兩部分:實際數據內容與元數據。若在修改完其中一部分時系統崩潰,會導致數據不一致。日誌式文件系統在實際寫入前,先將變更記錄到日誌中,崩潰後可利用日誌恢復。除 ext2 外,主流文件系統均為日誌式。
日誌處理流程:① 寫日誌 → ② 寫實際文件系統 → ③ 刪除日誌。
日誌模式分三種:
可通過 /etc/fstab 調整模式,例如:
/dev/sdb1 /testfs ext3 defaults,data=writeback 0 0
常見文件系統:ext4、XFS、ReiserFS、JFS。生產環境最常用 ext4 與 XFS。RHEL 7/CentOS 7 預設採用 XFS,且新內核測試顯示 XFS 性能明顯優於 ext4。對於 MySQL 服務器,強烈建議採用 XFS 文件系統。
關於 SSD 上的 ext4 與 XFS 對比,早期 XFS 存在鎖爭用 Bug(RHEL 6.4 前),導致高併發下性能劣於 ext4;修復後 XFS 吞吐量隨線程數線性增長,最高可達 ext4 的 3 倍,特別適合 Direct I/O 場景。
掛載時添加 noatime,nodiratime 可禁用訪問時間更新,帶來 0-10% 性能提升(平均約 3%)。
mount -t ext4 -o rw,noatime,nodiratime /dev/sda6 /data
亦可寫入 /etc/fstab 永久生效。