����λ�ã���ҳ > �����̳� > �̳� > �ļ�ϵͳ(��)��һ�Ŀ���linux ext4�ļ�ϵͳ����ԭ��

�ļ�ϵͳ(��)��һ�Ŀ���linux ext4�ļ�ϵͳ����ԭ��

��Դ������������|��ʱ�䣺2024-06-11 09:45:45 |���Ķ���116��|�� ��ǩ�� ϵ T in ���� linux �� |����������

liwen01 2024.06.09 ǰ�� Linuxϵͳ�е�ext2��ext3��ext4 �ļ�ϵͳ�����Ƕ��к�ǿ��������ǰ�����ԣ����������ݲ���ʧ������½����ļ�ϵͳ��������Ŀǰext4��һ����Խϳ��졢�ȶ��Ҹ�Ч���ļ�ϵͳ�������ھ��󲿷ֹ�ģ�������Linux������ ext4��ͻ�����ص��У���

liwen01 2024.06.09

ǰ��

Linuxϵͳ�е�ext2��ext3��ext4 �ļ�ϵͳ�����Ƕ��к�ǿ��������ǰ�����ԣ����������ݲ���ʧ������½����ļ�ϵͳ��������Ŀǰext4��һ����Խϳ��졢�ȶ��Ҹ�Ч���ļ�ϵͳ�������ھ��󲿷ֹ�ģ�������Linux������

ext4��ͻ�����ص��У� ���ݷֶι����������䡢�ӳٷ��䡢�־�Ԥ���䡢��־У�顢֧�ָ�����ļ�ϵͳ���ļ���С��

ext4�ļ�ϵͳ�ľ���ʵ�ֱȽϸ��ӣ����ij����ñȽϼ򵥵ķ�ʽ��һƪ���µ�ƪ�����򵥵ؽ���һ�����Ĺ���ԭ����

(һ)����ext�ļ�ϵͳ

Ϊ�˷���ext4 �ļ�ϵͳ���ڲ��ṹ��ԭ��������������Linux�д���һ��ext4�ļ�ϵͳ����Ȼ��ͨ��loop�����豸��ext4�����ļ����ص�ij��Ŀ¼�ϡ�����ʵ�ֲ������£�

  1. ����һ��1GB���ļ�
dd if=/dev/zero of=./ext4_image.img bs=1M count=1024
  1. ������ļ���ʽ���� ext4 �ļ�ϵͳ��ʽ
mkfs.ext4 ext4_image.img
  1. ͨ��Linux��loop�����豸���ļ����ص�Ŀ¼��
sudo mount -o loop ext4_image.img /home/biao/test/ext4/ext4_simulator
  1. dumpe2fs �鿴�ļ�ϵͳ������Ϣ
dumpe2fs ext4_image.img  

���������Ϣ(�м�ʡ���˲�������):

dumpe2fs 1.44.1 (24-Mar-2018)
Filesystem volume name:   
Last mounted on:          /home/biao/test/ext4/ext4_simulator
Filesystem UUID:          0169498e-f5f7-4fb8-9e9e-532088e41333
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65536
Block count:              262144
Reserved block count:     13107
Free blocks:              247703
Free inodes:              65517
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      127
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Fri May 24 17:18:57 2024
Last mount time:          Wed Jun  5 19:15:36 2024
Last write time:          Wed Jun  5 19:15:36 2024
Mount count:              3
Maximum mount count:      -1
Last checked:             Fri May 24 17:18:57 2024
Check interval:           0 ()
Lifetime writes:          6997 kB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      0faf0e8c-f385-4ecd-b3a4-db2a3329e121
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x32dc1b70
Journal features:         journal_64bit journal_checksum_v3
Journal size:             32M
Journal length:           8192
Journal sequence:         0x00000017
Journal start:            1
Journal checksum type:    crc32c
Journal checksum:         0xa3c1b983

Group 0: (Blocks 0-32767) csum 0xf19b [ITABLE_ZEROED]
  Primary superblock at 0, Group descriptors at 1-1
  Reserved GDT blocks at 2-128
  Block bitmap at 129 (+129), csum 0x8efc34cf
  Inode bitmap at 137 (+137), csum 0x49f91ed6
  Inode table at 145-656 (+145)
  28517 free blocks, 8176 free inodes, 3 directories, 8176 unused inodes
  Free blocks: 4251-32767
  Free inodes: 17-8192
..........
..........
..........
Group 7: (Blocks 229376-262143) csum 0x7daa [INODE_UNINIT, ITABLE_ZEROED]
  Backup superblock at 229376, Group descriptors at 229377-229377
  Reserved GDT blocks at 229378-229504
  Block bitmap at 136 (bg #0 + 136), csum 0x5bd8cca0
  Inode bitmap at 144 (bg #0 + 144), csum 0x00000000
  Inode table at 3729-4240 (bg #0 + 3729)
  32639 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 229505-262143
  Free inodes: 57345-65536
1.1 ext4�ļ�ϵͳ��Ϣ��

(��)ext4 ���̲���

������dumpe2fs�����������ǿ��Կ�����һ��1GB��С�Ŀռ䣬ext4 �ļ�ϵͳ�����ָ�����0~7��8��Group��

ext4 ��������̲������£�
Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ2.1 ext4���岼��
���У�ÿ��Group������superblock��Group descriptors��bitmap��Inode table��usrer data������һЩ�����ռ䣬ϸ��֮��Ŀռ䲼�����£�

Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ2.2 ext4 group ����

����ͼ���Կ�����

  1. Backup superblock��Group descriptors��Reserved GDT �Ƿֲ���1��3��5��7 �⼸��Group�У�2��4��6Group��û����Щ��Ϣ��
  2. Block bitmap��Inode bitmap��Inode table ��ЩԪ�ļ���ÿ��Group�е�λ�ò���һ�����������1��Block��

Ϊʲô��Ҫ������ƣ���������������ٽ���

(��) superblock������

�����桶1.1 ext4�ļ�ϵͳ��Ϣ�����п���֪��Primary superblock�ڵ�0��block��ÿ��block�Ĵ�СΪ4096Byte��

��hexdump ����鿴�����������

biao@ubuntu:~/test/ext4$ hexdump -s 0 -n 4096 -C ext4_image.img    
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  00 00 01 00 00 00 04 00  33 33 00 00 97 c7 03 00  |........33......|
00000410  ed ff 00 00 00 00 00 00  02 00 00 00 02 00 00 00  |................|
00000420  00 80 00 00 00 80 00 00  00 20 00 00 9c c1 5d 66  |......... ....]f|
00000430  00 d0 5f 66 02 00 ff ff  53 ef 01 00 01 00 00 00  |.._f....S.......|
00000440  81 5b 50 66 00 00 00 00  00 00 00 00 01 00 00 00  |.[Pf............|
00000450  00 00 00 00 0b 00 00 00  00 01 00 00 3c 00 00 00  |............<...|
00000460  c2 02 00 00 6b 04 00 00  01 69 49 8e f5 f7 4f b8  |....k....iI...O.|
00000470  9e 9e 53 20 88 e4 13 33  00 00 00 00 00 00 00 00  |..S ...3........|
00000480  00 00 00 00 00 00 00 00  2f 68 6f 6d 65 2f 62 69  |......../home/bi|
00000490  61 6f 2f 74 65 73 74 2f  65 78 74 34 2f 65 78 74  |ao/test/ext4/ext|
000004a0  34 5f 73 69 6d 75 6c 61  74 6f 72 00 00 00 00 00  |4_simulator.....|
000004b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000004c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 7f 00  |................|
000004d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000004e0  08 00 00 00 00 00 00 00  00 00 00 00 0f af 0e 8c  |................|
000004f0  f3 85 4e cd b3 a4 db 2a  33 29 e1 21 01 01 40 00  |..N....*3).!..@.|
00000500  0c 00 00 00 00 00 00 00  81 5b 50 66 0a f3 01 00  |.........[Pf....|
........
biao@ubuntu:~/test/ext4$ 

�Գ�����IJ������ݽ��н�����
Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

��3.1 superblock��������

���ϱ����Կ���superblock����Ҫ�����У�
�ļ�ϵͳ��Ϣ�����С�Ϳ�����Ϣ��Inode �����Ϣ���ļ�ϵͳ��С��ʹ���������־�����Ϣ��������Ϣ��У��ͺͱ�����Ϣ ��

��ʵʹ��dumpe2fs����鿴��ext4�ļ�ϵͳ��Ϣ���Ǵ�superblock�ϵ����ݽ���������

����Primary superblock�����ڲ�ͬ��group���б���superblock����������Primary superblockԭʼ������ͬ��Primary superblock�𻵵�ʱ����Դӱ������ָ�������

(��) Group descriptors������

�� ext4 �ļ�ϵͳ�У�Group Descriptor(����������)��һ���ؼ��Ľṹ�����������͹����ļ�ϵͳ�Ŀ���(Block Group)��ÿ����������ļ�ϵͳ�е�һ�������ݿ�� inode���������Լ���Ԫ������������Щ��Դ��Group Descriptor �ڳ�����֮�����������ļ�ϵͳ����֯�͹����ĺ��IJ���

�����桶1.1 ext4�ļ�ϵͳ��Ϣ�����п���֪��group0 �� Group descriptors �ڵ�1�����ݿ��У����СΪ1��block

group 0 �� Group descriptors ���������£�

biao@ubuntu:~/test/ext4$ hexdump -s 4096 -n 4096 -C ext4_image.img
00001000  81 00 00 00 89 00 00 00  91 00 00 00 65 6f f0 1f  |............eo..|
00001010  03 00 04 00 00 00 00 00  cf 34 d6 1e f0 1f 9b f1  |.........4......|
00001020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001030  00 00 00 00 00 00 00 00  fc 8e f9 49 00 00 00 00  |...........I....|
00001040  82 00 00 00 8a 00 00 00  91 02 00 00 b5 79 fd 1f  |.............y..|
00001050  03 00 04 00 00 00 00 00  c2 fd 0a 43 fd 1f c2 4a  |...........C...J|
00001060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001070  00 00 00 00 00 00 00 00  8e a7 8c 58 00 00 00 00  |...........X....|
.........
biao@ubuntu:~/test/ext4$ 

��Group descriptors �����ݽ��н��������Կ�����ϸ��ǰgroup����ϸ��Ϣ��
Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ4.1 Group_descriptors��������

һ��Group descriptors ռ��һ��block,����������¼�Լ�Group�ϵ���Ϣ��������������group��Group descriptors

(��) Block bitmap��λͼ

Block bitmap ��λͼ���ڹ�������(Block Group)�е����ݿ�,Block Bitmap ��¼�˿�����ÿ�����ʹ��״̬����ʶ��Щ������ʹ�õģ���Щ���ǿ��е�,���������ǰ�λ��ǣ�Ϊ1��ʾ�ÿ��Ѿ���ʹ�á�

�鿴Block bitmap�е�����

biao@ubuntu:~/test/ext4$ hexdump -s 528384 -n 4096 -C ext4_image.img
00081000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00081210  ff ff ff 07 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00081220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00082000
biao@ubuntu:~/test/ext4$ 

(��) Inode bitmap�����ڵ�λͼ

��Block bitmap����ԭ�����ƣ�Inode bitmap �����ڹ�������(Block Group)�е�inode��Inode Bitmap��¼�˿�����ÿ��inode��ʹ��״̬����ʶ��Щinode����ʹ�õģ���Щinode�ǿ��еġ�

biao@ubuntu:~/test/ext4$ hexdump -s 561152 -n 4096 -C ext4_image.img
00089000  ff ff 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00089010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00089400  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0008a000
biao@ubuntu:~/test/ext4$ 

(��) Inode table�����ڵ��

(1)�����ڵ����

�����ڵ������ԱȽϸ��ӵ�һ��Ԫ�ļ��������桶1.1 ext4�ļ�ϵͳ��Ϣ�������ǿ���֪����

Inode size:               256
Inode table at 145-656 (+145)
  • һ�������ڵ�Ĵ�СΪ256Byte
  • �� Group 0��Ϣ�п���֪��Group 0 �����������145-656 ����

�鿴�����ڵ���Ϣ��

biao@ubuntu:~/test/ext4$ hexdump -s 593920 -n 4096 -C ext4_image.img
00091000  00 00 00 00 00 00 00 00  81 5b 50 66 81 5b 50 66  |.........[Pf.[Pf|
00091010  81 5b 50 66 00 00 00 00  00 00 00 00 00 00 00 00  |.[Pf............|
00091020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00091070  00 00 00 00 00 00 00 00  00 00 00 00 6f 16 00 00  |............o...|
00091080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00091100  ed 41 00 00 00 10 00 00  78 15 61 66 e5 5d 50 66  |.A......x.af.]Pf|
00091110  e5 5d 50 66 00 00 00 00  00 00 07 00 08 00 00 00  |.]Pf............|
00091120  00 00 08 00 04 00 00 00  0a f3 01 00 04 00 00 00  |................|
00091130  00 00 00 00 00 00 00 00  01 00 00 00 91 10 00 00  |................|
00091140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00091170  00 00 00 00 00 00 00 00  00 00 00 00 fa d3 00 00  |................|
00091180  20 00 98 7a 60 ea ef 8e  60 ea ef 8e 78 f5 3f a0  | ..z`...`...x.?.|
00091190  81 5b 50 66 00 00 00 00  00 00 00 00 00 00 00 00  |.[Pf............|
000911a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00091270  00 00 00 00 00 00 00 00  00 00 00 00 8d 16 00 00  |................|
00091280  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

�Ե�2�������ڵ�IJ������н�����
Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ7.1 Inode table��������

��ext4�ļ�ϵͳ�У�0~11�����������ⶨ��������ڵ㣺
Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ7.2 ���������ڵ�

(2)inode.i_block����

�� ext4 �ļ�ϵͳ�У�inode ��һ�����ݽṹ�������ļ�ϵͳ�е�ÿ���ļ���Ŀ¼��ÿ�� inode �������й��ļ���Ԫ���ݣ������ļ���С��Ȩ�ޡ���������Ϣ�ȡ�inode.i_block �� inode �ṹ������ָ���ļ����ݿ���ֶΣ����ļ�ϵͳ����ҵ��������ļ����ݵĺ��IJ���.

inode.i_block �� ext4 �ļ�ϵͳ��ȷ���ļ����ݸ�Ч�洢�ͷ��ʵĹؼ����,i_block����������ͣ���Ҫ����i_flags�еIJ�����ȷ�ϣ����桶ͼ7.1 Inode table����������i_flags ��ֵ��0x080000��ͬʹ�õ��� Inode uses extents (EXT4_EXTENTS_FL)

Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

iblock�ij�����60�ֽڣ���������ͨ��iblock��IJ����ҵ���inode��Ӧ�ļ����ڵ�block��

(3)ͨ��inode��λ���ļ�block

�ļ�ϵͳ���ļ���Ϣ���£�

root@ubuntu:/home/biao/test/ext4/ext4_simulator# tree
.
������ lost+found
������ test1
��?? ������ 0000.media
������ test2
��?? ������ 0011.media
������ test3
��?? ������ 0022.media
������ test4
    ������ 0033.media

5 directories, 4 files
root@ubuntu:/home/biao/test/ext4/ext4_simulator# 

�������Ҫ�ҵ�0033.media�ļ�����block,������ͨ��stat �鿴0033.media ��inode�ڵ�

biao@ubuntu:~/test/ext4/ext4_simulator/test4$ stat 0033.media 
  File: 0033.media
  Size: 1662591         Blocks: 3248       IO Block: 4096   regular file
Device: 719h/1817d      Inode: 16          Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    biao)   Gid: ( 1000/    biao)
Access: 2024-06-05 10:39:09.000000000 +0800
Modify: 2024-05-14 01:01:26.000000000 +0800
Change: 2024-06-05 10:39:09.423416410 +0800
 Birth: -
biao@ubuntu:~/test/ext4/ext4_simulator/test4$ 

��λ���������ڵ�λ�ã�

145 * 4096 +��16-1��*256 = 593,920 + 3,840 = 597,760 = 0x91F00

�����ڵ�����

*
00091f00  a4 81 e8 03 7f 5e 19 00  cd cf 5f 66 cd cf 5f 66  |.....^...._f.._f|
00091f10  66 47 42 66 00 00 00 00  e8 03 01 00 b0 0c 00 00  |fGBf............|
00091f20  00 00 08 00 01 00 00 00  0a f3 01 00 04 00 00 00  |................|
00091f30  00 00 00 00 00 00 00 00  96 01 00 00 b5 84 00 00  |................|
00091f40  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

i_block ��ƫ������0x28,��i_block�����ݽ��н�����

Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ7.4 0033.media i_block

���߼���0��ʼ��0x196��blockӳ�䵽����0x84b5��ʼ��0x196����������
0x84b5 = 33973
33973 * 4096 = 139,153,408 = 0x84B 5000

�鿴�ļ�ϵͳ��0x84b5 block���ݣ���0033.media�ļ�����������ͬ��

�� 0x84b5 block

biao@ubuntu:~/test/ext4$ hexdump -s 139153408 -n 4096 -C ext4_image.img
084b5000  01 00 00 00 25 25 01 00  7a 34 9e 74 8f 01 00 00  |....%%..z4.t....|
084b5010  8c d1 0f f2 ff ff ff ff  00 00 00 01 40 01 0c 01  |............@...|
084b5020  ff ff 01 40 00 00 03 00  90 00 00 03 00 00 03 00  |...@............|
084b5030  96 bc 09 00 00 00 01 42  01 01 01 40 00 00 03 00  |.......B...@....|
084b5040  90 00 00 03 00 00 03 00  96 a0 01 20 20 05 11 67  |...........  ..g|
084b5050  be e4 4a 17 25 05 05 05  e1 00 00 03 00 01 00 00  |..J.%...........|
084b5060  03 00 14 2f 84 02 08 00  00 00 01 44 01 c0 73 c0  |.../.......D..s.|
084b5070  c6 d9 00 00 00 01 26 01  ac 39 80 1f cd 51 b5 b2  |......&..9...Q..|
084b5080  70 02 84 80 26 99 cd b5  f6 00 cf a3 06 b7 71 6b  |p...&.........qk|

0033.media

biao@ubuntu:~/test/ext4/ext4_simulator/test4$ hexdump -s 0 -n 4096 -C 0033.media 
00000000  01 00 00 00 25 25 01 00  7a 34 9e 74 8f 01 00 00  |....%%..z4.t....|
00000010  8c d1 0f f2 ff ff ff ff  00 00 00 01 40 01 0c 01  |............@...|
00000020  ff ff 01 40 00 00 03 00  90 00 00 03 00 00 03 00  |...@............|
00000030  96 bc 09 00 00 00 01 42  01 01 01 40 00 00 03 00  |.......B...@....|
00000040  90 00 00 03 00 00 03 00  96 a0 01 20 20 05 11 67  |...........  ..g|
00000050  be e4 4a 17 25 05 05 05  e1 00 00 03 00 01 00 00  |..J.%...........|
00000060  03 00 14 2f 84 02 08 00  00 00 01 44 01 c0 73 c0  |.../.......D..s.|
00000070  c6 d9 00 00 00 01 26 01  ac 39 80 1f cd 51 b5 b2  |......&..9...Q..|
00000080  70 02 84 80 26 99 cd b5  f6 00 cf a3 06 b7 71 6b  |p...&.........qk|

(��) Directory EntriesĿ¼��

(1)��Ŀ¼

ͨ�����桶ͼ7.2 ���������ڵ㡷����֪����Ŀ¼��inode��2���鿴��Ŀ¼�������ڵ�λ�ã�

��Ŀ¼ inode λ��

145 * 4096 +��2-1��*256 = 593,920 + 256 = 594,176 = 0x91100

��Ŀ¼ inode ����

*
00091100  ed 41 00 00 00 10 00 00  77 be 5f 66 e5 5d 50 66  |.A......w._f.]Pf|
00091110  e5 5d 50 66 00 00 00 00  00 00 07 00 08 00 00 00  |.]Pf............|
00091120  00 00 08 00 04 00 00 00  0a f3 01 00 04 00 00 00  |................|
00091130  00 00 00 00 00 00 00 00  01 00 00 00 91 10 00 00  |................|
00091140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ8.1 ��Ŀ¼inode
ͨ��inode ��i_block��Ϣ���ǿ���֪��,��Ŀ¼inode�ǽ��߼���0��ʼ��1��blockӳ�䵽�������0x1091��ʼ��1��block

0x1091 = 4,241
4,241 * 4096 = 17,371,136 = 0x109 1000

biao@ubuntu:~/test/ext4$ hexdump -s 17371136 -n 4096 -C ext4_image.img
01091000  02 00 00 00 0c 00 01 02  2e 00 00 00 02 00 00 00  |................|
01091010  0c 00 02 02 2e 2e 00 00  0b 00 00 00 14 00 0a 02  |................|
01091020  6c 6f 73 74 2b 66 6f 75  6e 64 00 00 0c 00 00 00  |lost+found......|
01091030  10 00 05 02 74 65 73 74  31 00 00 00 01 20 00 00  |....test1.... ..|
01091040  10 00 05 02 74 65 73 74  32 00 00 00 02 20 00 00  |....test2.... ..|
01091050  10 00 05 02 74 65 73 74  33 00 00 00 03 20 00 00  |....test3.... ..|
01091060  98 0f 05 02 74 65 73 74  34 00 00 00 00 00 00 00  |....test4.......|
01091070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
01091ff0  00 00 00 00 00 00 00 00  0c 00 00 de 67 85 5b 11  |............g.[.|
01092000
biao@ubuntu:~/test/ext4$ 

���Կ�����Ŀ¼�ϵ�������Ϣ�������ǶԸ�Ŀ¼��Ŀ¼����н���

Îļþϵͳ(Áù)£ºÒ»ÎÄ¿´¶®linux ext4Îļþϵͳ¹¤×÷Ô­Àí

ͼ8.2 ��Ŀ¼�����

ͬ���ķ��������Զ�λ������Ŀ¼�ϵ���Ϣ��

(��) ext4 ʵ��ԭ��

1. �ļ�ϵͳ��ʼ���͹���

  • �����ļ�ϵͳʱ���ں˶�ȡ�������Ի�ȡ�ļ�ϵͳ�Ļ�����Ϣ��
  • �ں˶�ȡ���������������˽�ÿ��������Ԫ���ݵIJ��֡�

2. �����ļ�

  • ���ҿ��� inode��ͨ����� inode λͼ�ҵ�һ�����е� inode������ inode λͼ�б��Ϊ��ʹ�á�
  • �������ݿ飺ͨ������λͼ�ҵ����е����ݿ飬���ڿ�λͼ�б��Ϊ��ʹ�á�
  • ���� inode�������ļ���Ԫ����д�� inode ���е���Ӧλ�á�
  • ����Ŀ¼���Ŀ��Ŀ¼�� inode ���ݿ�������һ���µ�Ŀ¼������ļ����Ͷ�Ӧ�� inode �š�

3. ��ȡ�ļ�

  • ���� inode�������ļ�����Ŀ¼���в��Ҷ�Ӧ�� inode �ţ�Ȼ���ȡ inode ���е���Ӧ inode��
  • ��ȡ���ݿ飺���� inode �еĿ�ָ�룬��ȡ�ļ����ݿ顣

4. ɾ���ļ�

  • �ͷ����ݿ飺���� inode �еĿ�ָ�룬���¿�λͼ�Ա����Щ��Ϊ���С�
  • �ͷ� inode���� inode λͼ�н��� inode ���Ϊ���С�
  • ����Ŀ¼���Ŀ¼�� inode ���ݿ���ɾ����Ӧ��Ŀ¼�

5. �ļ�ϵͳ�����޸�

  • fsck �������ó����顢��������������λͼ�� inode λͼ������ļ�ϵͳ��һ���ԡ�
  • �޸��𻵵Ľṹ�������޸���ʧ�Ŀ�� inode ��ǡ�

(ʮ) ��ȱ��

�ŵ�

  1. ���ܸĽ� ��
    • �ӳٷ��� �����ݿ�����ӳٵ�ʵ��д��ʱ���У��Ӷ��Ż��ļ���Ƭ�������д�����ܡ�
    • ������ ��ͬʱ�������飬��ߴ��ļ�д���ٶȣ�������Ƭ��
    • ���� fsck ���Ľ����ļ�ϵͳ��鹤�� fsck �ܹ�����ؽ���һ���Լ�飬����ϵͳ�ָ�ʱ�䡣
  2. ���ļ��ʹ��ļ�ϵͳ֧�� ��
    • ֧�ֵ����ļ���� 16 TB ���ļ�ϵͳ��� 1 EB �Ĵ洢�������ʺ��ִ����ģ�洢����
  3. ������ ��
    • Ext4 �ļ�ϵͳ���������� Ext3 �� Ext2�������û��������ʽ��������´���Щ�ļ�ϵͳ�޷�Ǩ�Ƶ� Ext4��
  4. ��־���� ��
    • ֧��Ԫ������־��������־������������ļ�ϵͳ�Ŀɿ��Ժͷ�ֹ�����𻵡�
  5. ������Ƭ���� ��
    • ֧��������Ƭ�������ߣ�������ϵͳ����ʱ�����ļ���Ƭ������ļ������ٶȡ�
  6. Extent ��
    • ʹ�� extent �����洫ͳ�Ŀ�ӳ�䷽ʽ������˴��ļ��Ĵ洢Ч�ʣ��������ļ���Ƭ��
  7. ��ֹ�ļ�ϵͳ���� ��
    • ʹ����־��������ȫ���ƣ�ȷ���ļ�ϵͳ�������ܿ��ٻָ���

ȱ��

  1. ��Ƭ����Ч�� ��
    • ����֧��������Ƭ����������һЩ�ִ��ļ�ϵͳ���� Btrfs��ZFS����ȣ�Ext4 ����Ƭ����Ч����Ȼ�ϵ͡�
  2. ���������� ��
    • ��Ȼ Ext4 ����������Ľ���������������������ڴ�ͳ�� Ext ϵ�мܹ�����������ijЩ�ִ��ļ�ϵͳ�������ԣ�����ա�����ȥ�ء����� RAID �ȣ�ʱ�ܵ����ơ�
  3. �ļ�ϵͳ��չ ��
    • ���� Ext4 ֧�ַdz�����ļ����ļ�ϵͳ����������չ�ļ�ϵͳ�IJ������ӶȽϸߣ�����������Ҫ��С�ļ�ϵͳʱ��
  4. Ԫ���ݻ��� ��
    • Ext4 �ڻ�������ϵ���Ƶ����ڸ߸��ػ����£�Ԫ���ݲ������紴����ɾ������С�ļ��������ܿ����ܵ�Ӱ�졣

��β

����ֻ�Ǽ򵥵Ľ�����ext4�ļ�ϵͳ�Ļ������ݣ�һЩ������ϸ�����ݣ�������־����Ƭ��������������Ӳ���ӵȵȶ���û�н��ܣ���ƪ�����ƣ���Щ�Ժ��ٽ��ܰɡ�

---------------------------End---------------------------
�����ȡ��������
���ע liwen01 ���ں�
С���Ƽ��Ķ�

�������������Ľ�Ϊ������Ϣ����������������ͬ���޹۵��֤ʵ��������

�����Ƶ����

����

ͬ������

����

ɨ��ά�����������ֻ��汾��

ɨ��ά����������΢�Ź��ںţ�

��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]

��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������