読者です 読者をやめる 読者になる 読者になる

はわわーっ

はわわわわっ

ext4のめもその3

filesystem linux

http://yomi322.hateblo.jp/entry/2015/06/28/143213 のつづき。

でかいファイルを置いたときにどうなるか見てみる。

% for i in {0..1000000}; do echo 0123456789; done | sudo tee /test.txt
% stat /test.txt                                                      
  File: ‘/test.txt’
  Size: 11000011  	Blocks: 21488      IO Block: 4096   regular file
Device: fc00h/64512d	Inode: 16          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-06-28 19:30:51.672099608 +0900
Modify: 2015-06-28 19:31:26.976099722 +0900
Change: 2015-06-28 19:31:26.976099722 +0900
 Birth: -

inodeは16。

% echo $(( (16 - 1) / 0x2000 ))
0
% echo $(( (16 - 1) % 0x2000 ))
15

なので、ブロックグループ0の15番目のinodeをみる。
グループディスクリプタ0のinode tableが1057だったので、(15 * 0x100) + (1057 * 0x1000) = 0x421f00がアドレス。

% sudo hexdump -C -s 0x421f00 /dev/dm-0 | head
00421f00  a4 81 00 00 cb d8 a7 00  db cc 8f 55 fe cc 8f 55  |...........U...U|
00421f10  fe cc 8f 55 00 00 00 00  00 00 01 00 f0 53 00 00  |...U.........S..|
00421f20  00 00 08 00 01 00 00 00  0a f3 01 00 04 00 00 00  |................|
00421f30  00 00 00 00 00 00 00 00  7e 0a 00 00 00 60 09 00  |........~....`..|
00421f40  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00421f60  00 00 00 00 e8 66 32 14  00 00 00 00 00 00 00 00  |.....f2.........|
00421f70  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00421f80  1c 00 00 00 28 66 b8 e8  28 66 b8 e8 60 b4 3d a0  |....(f..(f..`.=.|
00421f90  db cc 8f 55 60 b4 3d a0  00 00 00 00 00 00 00 00  |...U`.=.........|

で、i_blockをみて次はアドレス0x96000000を見る。使っているブロック数は0xa7e。

% sudo hexdump -C -s 0x96000000 /dev/dm-0 | head
96000000  30 31 32 33 34 35 36 37  38 39 0a 30 31 32 33 34  |0123456789.01234|
96000010  35 36 37 38 39 0a 30 31  32 33 34 35 36 37 38 39  |56789.0123456789|
96000020  0a 30 31 32 33 34 35 36  37 38 39 0a 30 31 32 33  |.0123456789.0123|
96000030  34 35 36 37 38 39 0a 30  31 32 33 34 35 36 37 38  |456789.012345678|
96000040  39 0a 30 31 32 33 34 35  36 37 38 39 0a 30 31 32  |9.0123456789.012|
96000050  33 34 35 36 37 38 39 0a  30 31 32 33 34 35 36 37  |3456789.01234567|
96000060  38 39 0a 30 31 32 33 34  35 36 37 38 39 0a 30 31  |89.0123456789.01|
96000070  32 33 34 35 36 37 38 39  0a 30 31 32 33 34 35 36  |23456789.0123456|
96000080  37 38 39 0a 30 31 32 33  34 35 36 37 38 39 0a 30  |789.0123456789.0|
96000090  31 32 33 34 35 36 37 38  39 0a 30 31 32 33 34 35  |123456789.012345|

ブロックの境界あたりをみてみる。

% sudo hexdump -C -s 0x96000ff0 /dev/dm-0 | head
96000ff0  0a 30 31 32 33 34 35 36  37 38 39 0a 30 31 32 33  |.0123456789.0123|
96001000  34 35 36 37 38 39 0a 30  31 32 33 34 35 36 37 38  |456789.012345678|
96001010  39 0a 30 31 32 33 34 35  36 37 38 39 0a 30 31 32  |9.0123456789.012|
96001020  33 34 35 36 37 38 39 0a  30 31 32 33 34 35 36 37  |3456789.01234567|
96001030  38 39 0a 30 31 32 33 34  35 36 37 38 39 0a 30 31  |89.0123456789.01|
96001040  32 33 34 35 36 37 38 39  0a 30 31 32 33 34 35 36  |23456789.0123456|
96001050  37 38 39 0a 30 31 32 33  34 35 36 37 38 39 0a 30  |789.0123456789.0|
96001060  31 32 33 34 35 36 37 38  39 0a 30 31 32 33 34 35  |123456789.012345|
96001070  36 37 38 39 0a 30 31 32  33 34 35 36 37 38 39 0a  |6789.0123456789.|
96001080  30 31 32 33 34 35 36 37  38 39 0a 30 31 32 33 34  |0123456789.01234|

そのまま続いてるっぽい。最後あたり

% sudo hexdump -C -s 0x96a7d800 /dev/dm-0 | head -n 20
96a7d800  36 37 38 39 0a 30 31 32  33 34 35 36 37 38 39 0a  |6789.0123456789.|
96a7d810  30 31 32 33 34 35 36 37  38 39 0a 30 31 32 33 34  |0123456789.01234|
96a7d820  35 36 37 38 39 0a 30 31  32 33 34 35 36 37 38 39  |56789.0123456789|
96a7d830  0a 30 31 32 33 34 35 36  37 38 39 0a 30 31 32 33  |.0123456789.0123|
96a7d840  34 35 36 37 38 39 0a 30  31 32 33 34 35 36 37 38  |456789.012345678|
96a7d850  39 0a 30 31 32 33 34 35  36 37 38 39 0a 30 31 32  |9.0123456789.012|
96a7d860  33 34 35 36 37 38 39 0a  30 31 32 33 34 35 36 37  |3456789.01234567|
96a7d870  38 39 0a 30 31 32 33 34  35 36 37 38 39 0a 30 31  |89.0123456789.01|
96a7d880  32 33 34 35 36 37 38 39  0a 30 31 32 33 34 35 36  |23456789.0123456|
96a7d890  37 38 39 0a 30 31 32 33  34 35 36 37 38 39 0a 30  |789.0123456789.0|
96a7d8a0  31 32 33 34 35 36 37 38  39 0a 30 31 32 33 34 35  |123456789.012345|
96a7d8b0  36 37 38 39 0a 30 31 32  33 34 35 36 37 38 39 0a  |6789.0123456789.|
96a7d8c0  30 31 32 33 34 35 36 37  38 39 0a 00 00 00 00 00  |0123456789......|
96a7d8d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
97000000  50 61 63 6b 61 67 65 3a  20 6b 70 61 72 74 78 0a  |Package: kpartx.|
97000010  53 74 61 74 75 73 3a 20  69 6e 73 74 61 6c 6c 20  |Status: install |
97000020  6f 6b 20 69 6e 73 74 61  6c 6c 65 64 0a 50 72 69  |ok installed.Pri|
97000030  6f 72 69 74 79 3a 20 65  78 74 72 61 0a 53 65 63  |ority: extra.Sec|
97000040  74 69 6f 6e 3a 20 61 64  6d 69 6e 0a 49 6e 73 74  |tion: admin.Inst|

最後までファイル全部連続してた。
特にブロック境界とか関係なくそのまま続いてるっぽい。