"stat / etc"サイズの不一致:24ブロック、サイズ12288の代わりに8192

私のstat /etcコマンドによると、ブロック数は24です。ここで、1ブロックは512バイトを意味することがわかります。したがって、全体のサイズは24×512、つまり12288バイトです。

しかし、8192バイトが表示されるのに理由がわかりません。私の考えには12288(3×4096)になるはずだ。

$ stat /etc
  File: /etc
  Size: 8192            Blocks: 24         IO Block: 4096   directory
Device: fd00h/64768d    Inode: 16777345    Links: 152
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-01-28 00:03:35.470200471 +0100
Modify: 2022-01-27 23:59:09.331606660 +0100
Change: 2022-01-27 23:59:09.331606660 +0100
 Birth: -

/etcXFSファイルシステムにあります。

ベストアンサー1

これはXFSにあるため、/etc報告されたサイズと割り当てられたブロック数の違いは、事前割り当てまたはディレクトリの縮小によって引き起こされる可能性があります。xfs_db( ) を使ってファイルシステムを見ると、割り当てられたxfs_db -r /dev/...ブロックを見ることができます。

$ sudo xfs_db -r ...
xfs_db> inode 16777345
xfs_db> print
[...]
u3.bmx[0-3] = [startoff,startblock,blockcount,extentflag] 
0:[0,1052355,1,0] 
1:[1,1094509,1,0] 
2:[2,1094191,1,0] 
3:[8388608,1052431,1,0]
[...]

inode上記のコマンドはシステムに適していますが、出力は異なります。)

これは、サイズが12,288バイトですが、割り当てられたサイズが16,384バイト(32ブロックとして報告されている)のディレクトリからのものですstat。これは、3つのデータブロック(開始オフセット0、1、2)と「使用可能リスト」の一部である1つの追加ブロック(開始オフセット8388608)として表示されます。つまりディレクトリに割り当てられているがディレクトリデータでは使用されないブロックです。

おすすめ記事