作者 | Kerneltalks
譯者 | DarkSun
在我們另一篇文章中,我帶您領略了一下什麼是 xfs,xfs 的相關特性等內容[1]。本文我們來看一些常用的 xfs 管理命令。我們將會透過幾個例子來講解如何建立 xfs 檔案系統,如何對 xfs 檔案系統進行擴容,如何檢測並修複 xfs 檔案系統。
建立 XFS 檔案系統
mkfs.xfs
命令用來建立 xfs 檔案系統。無需任何特別的引數,其輸出如下:
root@kerneltalks # mkfs.xfs /dev/xvdf
meta-data=/dev/xvdf isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
註意:一旦 XFS 檔案系統建立完畢就不能在縮容而只能進行擴容了。
調整 XFS 檔案系統容量
你只能對 XFS 進行擴容而不能縮容。我們使用 xfs_growfs
來進行擴容。你需要使用 -D
引數指定掛載點的新容量。-D
接受一個數字的引數,指定檔案系統塊的數量。若你沒有提供 -D
引數,則 xfs_growfs
會將檔案系統擴到最大。
root@kerneltalks # xfs_growfs /dev/xvdf -D 256
meta-data=/dev/xvdf isize=512 agcount=4, agsize=720896 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2883584, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size 256 too small, old size is 2883584
觀察上面的輸出中的最後一行。由於我分配的容量要小於現在的容量。它告訴你不能縮減 XFS 檔案系統。你只能對它進行擴充套件。
root@kerneltalks # xfs_growfs /dev/xvdf -D 2883840
meta-data=/dev/xvdf isize=512 agcount=4, agsize=720896 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2883584, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2883584 to 2883840
現在我多分配了 1GB 的空間,而且也成功地擴增了容量。
1GB 塊的計算方式:
當前檔案系統 bsize 為 4096,意思是塊的大小為 4MB。我們需要 1GB,也就是 256 個塊。因此在當前塊數,2883584 上加上 256 得到 2883840。因此我為 -D
傳遞引數 2883840。
修複 XFS 檔案系統
可以使用 xfs_repair
命令進行檔案系統一致性檢查和修複。使用 -n
引數則並不對檔案系統做出什麼實質性的修改。它只會搜尋並報告要做哪些修改。若不帶 -n
引數,則會修改檔案系統以保證檔案系統的純凈。
請註意,在檢查之前,你需要先解除安裝 XFS 檔案系統。否則會報錯。
root@kerneltalks # xfs_repair -n /dev/xvdf
xfs_repair: /dev/xvdf contains a mounted filesystem
xfs_repair: /dev/xvdf contains a mounted and writable filesystem
fatal error -- couldn't initialize XFS library
解除安裝後執行檢查命令。
root@kerneltalks # xfs_repair -n /dev/xvdf
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
- found root inode chunk
Phase 3 - for each AG...
- scan (but don't clear) agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- process newly discovered inodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity...
- traversing filesystem ...
- traversal finished ...
- moving disconnected inodes to lost+found ...
Phase 7 - verify link counts...
No modify flag set, skipping filesystem flush and exiting.
你可以看到,命令在每個階段都顯示出了為了檔案系統變得健康可能做出的修改。若你希望命令在掃描時實際應用這些修改,則不帶任何引數執行命令即可。
root @ kerneltalks # xfs_repair /dev/xvdf
Phase 1 - find and verify superblock . . .
Phase 2 - using internal log
- zero log . . .
- scan filesystem freespace and inode maps . . .
- found root inode chunk
Phase 3 - for each AG . . .
- scan and clear agi unlinked lists . . .
- process known inodes and perform inode discovery . . .
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- process newly discovered inodes . . .
Phase 4 - check for duplicate blocks . . .
- setting up duplicate extent list . . .
- check for inodes claiming duplicate blocks . . .
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
Phase 5 - rebuild AG essay-headers and trees . . .
- reset superblock . . .
Phase 6 - check inode connectivity . . .
- resetting contents of realtime bitmap and summary inodes
- traversing filesystem . . .
- traversal finished . . .
- moving disconnected inodes to lost + found . . .
Phase 7 - verify and correct link counts . . .
done
你會發現 xfs_repair
命令對檔案系統做出了修改讓其變得健康。
檢視 XFS 版本以及它的詳細資訊
檢視 xfs 檔案系統版本很簡單。使用 -V
引數執行 xfs_info
再加上掛載點就行了。
root@kerneltalks # xfs_info -V /shrikant
xfs_info version 4.5.0
若要檢視 XFS 檔案系統的詳細資訊,比如想計算擴容 XFS 檔案系統時要新增多少個塊,需要瞭解塊大小,塊的個數等資訊,則不帶任何選項執行 xfs_info
加上掛載點。
root@kerneltalks # xfs_info /shrikant
meta-data=/dev/xvdf isize=512 agcount=5, agsize=720896 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2883840, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
則會顯示 XFS 檔案系統的所有詳細資訊,就跟建立 XFS 檔案系統時顯示的資訊一樣。
此外還有一些 XFS 檔案系統管理命令可以修改並管理 XFS 的元資料。我們將在另一篇文章中來講解。
via: https://kerneltalks.com/commands/xfs-file-system-commands-with-examples/
作者:kerneltalks[3] 譯者:lujun9972 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出