萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux sync 命令詳解:強制刷新快取確保資料落盤

Linux 為提升磁碟 I/O 效能,採用 write-back 快取機制:寫入資料先存入記憶體 buffer/cache,由核心執行緒(kflushd/kworker)定期或在記憶體壓力大時回寫磁碟。若遇突發斷電、核心恐慌,未刷新的資料將遺失。sync 命令即強制將所有檔案系統的髒頁寫回磁碟,確保資料持久化。

Buffer/Cache 機制示意圖

核心概念

  • Buffer:針對區塊裝置的寫入緩衝(如檔案系統元資料)。
  • Cache:針對檔案資料的讀取/寫入緩衝(Page Cache)。
  • Dirty Pages:已修改但尚未寫入磁碟的記憶體頁面。

sync 命令用法

# 基本用法
$ sync

# 同步特定掛載點(需 root)
# sync /mnt/data

# 查看髒頁數量
$ grep -i dirty /proc/vmstat

核心自動回寫機制

即使不手動執行 sync,核心也會透過兩種方式回寫:

  1. 定期回寫:由 pdflush/kworker 執行,間隔由 /proc/sys/vm/dirty_writeback_centisecs 控制(預設 5 秒)。
  2. 臨界觸發:髒頁佔比超過 dirty_ratio(預設 20%)或 dirty_background_ratio(預設 10%)時強制回寫。

實務應用場景

  • 關機/重啟前手動 sync; sync; sync(傳統習慣,現代 init 系統已自動處理)。
  • USB 隨身碟/外接硬碟拔除前:sync && eject /dev/sdX。
  • 資料庫/虛擬機映像檔備份前確保一致性。
  • 測試磁碟真實寫入效能:sync; dd if=/dev/zero of=test bs=1G count=1 oflag=direct。

延伸工具

  • blockdev --flushbufs /dev/sdX:針對區塊裝置刷新。
  • fsync()/fdatasync():程式層面精確控制單一檔案落盤。

理解 buffer/cache 與 sync 機制,能避免資料遺失風險,亦是儲存系統調優的基礎知識。

copyright © 萬盛學電腦網 all rights reserved