私の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: -
/etc
XFSファイルシステムにあります。
答え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)として表示されます。つまりディレクトリに割り当てられているがディレクトリデータでは使用されないブロックです。