歡迎光臨
每天分享高質量文章

通過案例學習 xfs 檔案系統相關命令 | Linux 中國

本文我們來看一些常用的 xfs 管理命令。我們將會通過幾個例子來講解如何創建 xfs 檔案系統,如何對 xfs 檔案系統進行擴容,如何檢測並修複 xfs 檔案系統。
— Kerneltalks


本文導航
編譯自 | https://kerneltalks.com/commands/xfs-file-system-commands-with-examples/ 
 作者 | Kerneltalks
 譯者 | DarkSun

在我們另一篇文章中,我帶您領略了一下什麼是 xfs,xfs 的相關特性等內容[1]。本文我們來看一些常用的 xfs 管理命令。我們將會通過幾個例子來講解如何創建 xfs 檔案系統,如何對 xfs 檔案系統進行擴容,如何檢測並修複 xfs 檔案系統。

創建 XFS 檔案系統

mkfs.xfs 命令用來創建 xfs 檔案系統。無需任何特別的引數,其輸出如下:

  1. root@kerneltalks # mkfs.xfs /dev/xvdf

  2. meta-data=/dev/xvdf              isize=512    agcount=4, agsize=1310720 blks

  3.         =                       sectsz=512   attr=2, projid32bit=1

  4.         =                       crc=1        finobt=0, sparse=0

  5. data     =                       bsize=4096   blocks=5242880, imaxpct=25

  6.         =                       sunit=0      swidth=0 blks

  7. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

  8. log      =internal log           bsize=4096   blocks=2560, version=2

  9.         =                       sectsz=512   sunit=0 blks, lazy-count=1

  10. realtime =none                   extsz=4096   blocks=0, rtextents=0

註意:一旦 XFS 檔案系統創建完畢就不能在縮容而只能進行擴容了。

調整 XFS 檔案系統容量

你只能對 XFS 進行擴容而不能縮容。我們使用 xfs_growfs 來進行擴容。你需要使用 -D引數指定掛載點的新容量。-D 接受一個數字的引數,指定檔案系統塊的數量。若你沒有提供 -D 引數,則 xfs_growfs 會將檔案系統擴到最大。

  1. root@kerneltalks # xfs_growfs /dev/xvdf -D 256

  2. meta-data=/dev/xvdf              isize=512    agcount=4, agsize=720896 blks

  3.         =                       sectsz=512   attr=2, projid32bit=1

  4.         =                       crc=1        finobt=0 spinodes=0

  5. data     =                       bsize=4096   blocks=2883584, imaxpct=25

  6.         =                       sunit=0      swidth=0 blks

  7. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

  8. log      =internal               bsize=4096   blocks=2560, version=2

  9.         =                       sectsz=512   sunit=0 blks, lazy-count=1

  10. realtime =none                   extsz=4096   blocks=0, rtextents=0

  11. data size 256 too small, old size is 2883584

觀察上面的輸出中的最後一行。由於我分配的容量要小於現在的容量。它告訴你不能縮減 XFS 檔案系統。你只能對它進行擴展。

  1. root@kerneltalks #  xfs_growfs /dev/xvdf -D 2883840

  2. meta-data=/dev/xvdf              isize=512    agcount=4, agsize=720896 blks

  3.         =                       sectsz=512   attr=2, projid32bit=1

  4.         =                       crc=1        finobt=0 spinodes=0

  5. data     =                       bsize=4096   blocks=2883584, imaxpct=25

  6.         =                       sunit=0      swidth=0 blks

  7. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

  8. log      =internal               bsize=4096   blocks=2560, version=2

  9.         =                       sectsz=512   sunit=0 blks, lazy-count=1

  10. realtime =none                   extsz=4096   blocks=0, rtextents=0

  11. 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 檔案系統。否則會報錯。

  1. root@kerneltalks # xfs_repair -n /dev/xvdf

  2. xfs_repair: /dev/xvdf contains a mounted filesystem

  3. xfs_repair: /dev/xvdf contains a mounted and writable filesystem

  4. fatal error -- couldn't initialize XFS library

卸載後運行檢查命令。

  1. root@kerneltalks # xfs_repair -n /dev/xvdf

  2. Phase 1 - find and verify superblock...

  3. Phase 2 - using internal log

  4.        - zero log...

  5.        - scan filesystem freespace and inode maps...

  6.        - found root inode chunk

  7. Phase 3 - for each AG...

  8.        - scan (but don't clear) agi unlinked lists...

  9.        - process known inodes and perform inode discovery...

  10.        - agno = 0

  11.        - agno = 1

  12.        - agno = 2

  13.        - agno = 3

  14.        - agno = 4

  15.        - process newly discovered inodes...

  16. Phase 4 - check for duplicate blocks...

  17.        - setting up duplicate extent list...

  18.        - check for inodes claiming duplicate blocks...

  19.        - agno = 0

  20.        - agno = 1

  21.        - agno = 2

  22.        - agno = 3

  23.        - agno = 4

  24. No modify flag set, skipping phase 5

  25. Phase 6 - check inode connectivity...

  26.        - traversing filesystem ...

  27.        - traversal finished ...

  28.        - moving disconnected inodes to lost+found ...

  29. Phase 7 - verify link counts...

  30. No modify flag set, skipping filesystem flush and exiting.

你可以看到,命令在每個階段都顯示出了為了檔案系統變得健康可能做出的修改。若你希望命令在掃描時實際應用這些修改,則不帶任何引數運行命令即可。

  1. root @ kerneltalks # xfs_repair /dev/xvdf

  2. Phase 1 - find and verify superblock . . .

  3. Phase 2 - using internal log

  4.        - zero log . . .

  5.        - scan filesystem freespace and inode maps . . .

  6.        - found root inode chunk

  7. Phase 3 - for each AG . . .

  8.        - scan and clear agi unlinked lists . . .

  9.        - process known inodes and perform inode discovery . . .

  10.        - agno = 0

  11.        - agno = 1

  12.        - agno = 2

  13.        - agno = 3

  14.        - agno = 4

  15.        - process newly discovered inodes . . .

  16. Phase 4 - check for duplicate blocks . . .

  17.        - setting up duplicate extent list . . .

  18.        - check for inodes claiming duplicate blocks . . .

  19.        - agno = 0

  20.        - agno = 1

  21.        - agno = 2

  22.        - agno = 3

  23.        - agno = 4

  24. Phase 5 - rebuild AG essay-headers and trees . . .

  25.        - reset superblock . . .

  26. Phase 6 - check inode connectivity . . .

  27.        - resetting contents of realtime bitmap and summary inodes

  28.        - traversing filesystem . . .

  29.        - traversal finished . . .

  30.        - moving disconnected inodes to lost + found . . .

  31. Phase 7 - verify and correct link counts . . .

  32. done

你會發現 xfs_repair 命令對檔案系統做出了修改讓其變得健康。

查看 XFS 版本以及它的詳細信息

查看 xfs 檔案系統版本很簡單。使用 -V 引數運行 xfs_info 再加上掛載點就行了。

  1. root@kerneltalks # xfs_info -V /shrikant

  2. xfs_info version 4.5.0

若要查看 XFS 檔案系統的詳細信息,比如想計算擴容 XFS 檔案系統時要新增多少個塊,需要瞭解塊大小,塊的個數等信息,則不帶任何選項運行 xfs_info 加上掛載點。

  1. root@kerneltalks # xfs_info /shrikant

  2. meta-data=/dev/xvdf              isize=512    agcount=5, agsize=720896 blks

  3.         =                       sectsz=512   attr=2, projid32bit=1

  4.         =                       crc=1        finobt=0 spinodes=0

  5. data     =                       bsize=4096   blocks=2883840, imaxpct=25

  6.         =                       sunit=0      swidth=0 blks

  7. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

  8. log      =internal               bsize=4096   blocks=2560, version=2

  9.         =                       sectsz=512   sunit=0 blks, lazy-count=1

  10. 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中國 榮譽推出

LCTT 譯者

DarkSun(lujun9972) ? ? ? ?
共計翻譯:75 篇
貢獻時間:76 天


推薦文章

< 左右滑動查看相關文章 >

點擊圖片、輸入文章 ID 或識別二維碼直達

赞(0)

分享創造快樂

© 2021 知識星球   网站地图