XFS 出事前與出事後:xfsprogs 7.2.1 的指令分工

摘要

掛在 /usr/sbin 底下的一整套指令:mkfs 開盤、xfs_repair 離線修、xfs_growfs 掛載中擴充、xfs_scrub 邊跑邊健檢,另外還有配額、中繼資料傾印與除錯工具。

推薦
軟體名稱
XFS
版本
7.2.1
收費
免費
開源
開源
作業系統
Linux
更新時間
2026-10-22 21:44

檔案系統這種東西,沒壞的時候沒人提起,壞了才有人翻手冊。XFS 在使用者空間的那一半,就是 xfsprogs 7.2.1:開盤、修復、擴充、健檢,各自有專門的指令,誰也不兼別人的活。

指令的分工方式

XFS 是為吞吐量而生的日誌式檔案系統,出身 SGI 的 IRIX,進 Linux 之後改成完全多執行緒的寫法。大檔案與大容量是它的主場,延伸屬性、可調區塊大小也在支援之列。空間以 extent 為單位記帳,目錄、extent 與空閒空間各自用 B 樹索引,靠這套結構,它在目錄條目上百萬、中繼資料被同時猛敲的情況下仍然站得穩。掛載時可調的選項很長:allocsize 管延遲分配要先佔多少,預設 64KiB;inode64 放寬 inode 的落點;logbsize 決定日誌緩衝的大小。選項寫在手册裡,要改一律從命令列下手。

xfsprogs 就是包在這套機制外面的使用者空間工具。7.2.1 原始碼包的 man8 目錄底下掛了二十幾個獨立指令,彼此不重疊,也沒有一個總管全場的介面。

開盤這一步,參數比想像中重要

mkfs.xfs 加上裝備名稱就能生出一個可用的檔案系統,預設值對桌上型那顆碟夠了。上了機櫃就得看硬體:sunit 與 swidth 要對準 RAID 的條帶單元與條帶寬度,否則配置群組會騎在條帶邊界上;日誌要放外部裝置就指 logdev,要掛即時裝置就指 rtdev。配置群組的數目決定中繼資料能並行到什麼程度,區塊、inode 與日誌的大小則各有容許範圍。懶得每次重打的人可以把它們固定成預設,7.2.0 之後還能寫進設定檔,開盤變成讀一份檔案。

壞了之後:拆卸修復與掛著健檢

碟出狀況,第一件事是分辨哪一種。開機腳本裡的 fsck.xfs 是個佔位符,它什麼都不檢查;真正動刀的是 xfs_repair,代價是檔案系統必須先卸載。另一條路留給不能停機的場合:xfs_scrub 在掛載狀態下分段掃,能修的當場修,修不了的列出建議,跑完再把結果交給系統服務帶走。

7.1 那段更新紀錄,條目幾乎都堆在 xfs_scrub:spacemap 掃描的修正、即時群組的修復估算、外部日誌的空間統計、損壞區間的報告方式。工具成不成熟,看的就是這種沒人會拿來當賣點的細節。

空間不夠、配額、還有每天的巡檢

容量見底時,xfs_growfs 在掛載狀態下把底層區塊裝置長出來的部分收進來,服務不必中斷。配額歸 xfs_quota 管,使用者、群組、專案三種都有,專案配額怎麼定義、怎麼繼承,寫在 projects.5 與 projid.5 兩份手冊頁裡。

真正天天用到的反而是那些小工具。xfs_info 印出掛載參數與幾何,xfs_admin 改標籤與 UUID,xfs_bmap 查出檔案佔了哪些 extent,xfs_fsr 處理碎片,xfs_db 直接翻中繼資料的結構,xfs_metadump 與 xfs_mdrestore 負責傾印與還原。xfs_io 是互動式的殼,幾十個子指令把讀寫、屬性、空間預先配置都包了進去。

7.2.1 補了什麼,7.x 這半年又補了什麼

7.2.1 屬於修補:mkfs 可以關掉配額旗標,xfs_quota 修掉查詢狀態時的參數指標,xfs_scrub 遇上管理員卸載會把系統服務一併收掉,xfs_io 在即時群組的資訊裡補了一欄。

再往回一點,7.2.0 動得比較多。mkfs 能從設定檔讀預設值;xfs_admin、xfs_spaceman、xfs_db 都能把掛載中的組態印成文字,開盤參數終於可以複製貼上;mkfs 提前升級 autofsck 屬性,日誌太小的警告也改成看得懂的句子。7.0.0 的份量最重:xfs_healer 登場,這是常駐服務,訂閱健康事件、按需做局部修復,掛載點被搬走時靠 statmount 追上去;xfs_io 補齊健康事件訂閱與媒體校驗;mkfs 在反向引用全開的情況下,預設就把線上修復打開。

它做不到的事

沒有圖形介面,全部在終端機裡,參數查手冊,流程用 shell 串。擴充只往大的方向走,縮容不在能力範圍內,真要縮只能備份、重建、倒回去。修復也不是萬靈丹,中繼資料壞了能救,碟片本身壞了就是該換碟。

長年照顧伺服器與儲存設備的人,看上的正是它的顆粒度:查一個欄位、清一筆配額、驗一段中繼資料,都有一條指令對應,塞得進腳本,也塞得進排程。一般使用者不必理會,發行版在裝系統時就把它放在 /usr/sbin 了。

xfsprogs 7.2.1 沒有打算變得好按。它給的是一組邊界分明的工具:mkfs 開盤、xfs_repair 拆卸修復、xfs_growfs 掛著擴充、xfs_scrub 掛著健檢,旁邊再擺上配額、中繼資料傾印與除錯指令。7.x 把設定檔與背景修復服務補上之後,這套東西放進自動化腳本也順手多了。

XFS下載地址
支援的作業系統: Linux