Eu montei como /ext2
uma partição separada ( /dev/sda2
), que é formatada como ext2 com um tamanho de bloco 1024. debugfs
mostra o seguinte:
[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
Nesta saída, notei que a contagem de blocos é 4. Mas o tamanho do diretório é de apenas 1024 bytes. Por que o número total de blocos de 512 bytes reservados para conter os dados desse inode é igual a 4? Por que não é 2?
Eu estudei alguns exemplos, descobri que o número de blocos é sempre definido adicionando blocos de 2 * e 2. Então a questão é: por que adicionar 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
Contagem de blocos = BLCOCKS * 2 + 2 = 344 * 2 + 2 = 690
Tags ext2