構造体ext2_inodeのi_block

構造体ext2_inodeのi_block

ext2形式とブロックサイズ1024を使用して/ext2別々のパーティション()でインストールしました。次のように表示されます。/dev/sda2debugfs

[root@ /]# ls -ild /ext2
2 drwxr-xr-x. 3 root root 1024 Dec 14 12:33 /ext2

[root@ /]# echo "stat <2>" | debugfs /dev/sda2
debugfs 1.42.9 (28-Dec-2013)
debugfs:  stat <2>
Inode: 2   Type: directory    Mode:  0755   Flags: 0x0
Generation: 0    Version: 0x00000000
User:     0   Group:     0   Size: 1024
File ACL: 522    Directory ACL: 0
Links: 3   Blockcount: 4
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x5a31ff1f -- Thu Dec 14 12:33:35 2017
atime: 0x5a36657c -- Sun Dec 17 20:39:24 2017
mtime: 0x5a31ff1e -- Thu Dec 14 12:33:34 2017
BLOCKS:
(0):508
TOTAL: 1

この出力でブロック数が4であることを確認しました。ただし、ディレクトリサイズは1024バイトにすぎません。このinodeのデータを含めるために予約された合計512バイトのブロック数が4であるのはなぜですか?なぜ2ではないのですか?

いくつかの例を調べたところ、ブロック数は常に2 *ブロックと2を追加するように設定する必要があることがわかりました。それで質問は: なぜ2を加えるか。

[root@ ext2]# ls -ilh
total 382K
11 drwx------. 2 root root 12K Dec 14 12:33 lost+found
15 -rw-r--r--. 1 root root 341K Dec 18 20:22 sqlite3.h
14 -rw-r--r--. 1 root root 679 Dec 18 20:08 ulockmgr.h
12 -rw-r--r--. 1 root root 2.0K Dec 18 16:04 values.h
13 -rw-r--r--. 1 root root 17K Dec 18 16:29 xtables.h
[root@ ext2]# echo "stat <15>" | debugfs /dev/sda2
debugfs 1.42.9 (28-Dec-2013)
debugfs: stat <15>
Inode: 15 Type: regular Mode: 0644 Flags: 0x0
Generation: 2356632954 Version: 0x00000001
User: 0 Group: 0 Size: 348618
File ACL: 524 Directory ACL: 0
Links: 1 Blockcount: 690
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5a37b313 -- Mon Dec 18 20:22:43 2017
atime: 0x5a37b313 -- Mon Dec 18 20:22:43 2017
mtime: 0x5a37b313 -- Mon Dec 18 20:22:43 2017
BLOCKS:
(0-11):1538-1549, (IND):526, (12-15):1550-1553, (16-63):593-640, (64-127):673-736, (128-2
55):769-896, (256-267):2177-2188, (DIND):562, (IND):527, (268-340):2189-2261
TOTAL: 344

ブロック数 = BLCOCKS*2 + 2 = 344*2 + 2 = 690

関連情報