서버/Linux II 2016. 2. 4. 15:37

Linux II - 04. 파일 시스템 구조

 

 

 

 

1. Boot Block

 

파일 시스템 구조

 

Boot Block

 

Block Group 0

Block Group 1 

Block Group2 

.......

Block Group n

 

Boot Block

운영체제를 부팅하기 위한 코드를 저장하고 있으며, 하드웨어가 부팅에 필요한 코드를 여기서 찾는다. 또한 대부분의 파일 시스템들은 부트블록에 의해서 시작된다.

 

 

[root@CentOS2 /root]# fdisk -l /dev/sda

Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ec9f6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1634    13118464   83  Linux
/dev/sda2            1634        1895     2097152   82  Linux swap / Solaris
/dev/sda3            1895        1959      512000   83  Linux

 

[root@CentOS2 /root]# dumpe2fs /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   /test1
Last mounted on:          <not available>
Filesystem UUID:          7accb373-dcc1-4292-b12b-ea9915a9b6da
~중간 생략~

 

Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0x0ca7, unused inodes 1861
  Primary superblock at 1, Group descriptors at 2-2
  Reserved GDT blocks at 3-205
  Block bitmap at 206 (+205), Inode bitmap at 222 (+221)
  Inode table at 238-471 (+237)
  6321 free blocks, 1861 free inodes, 2 directories, 1861 unused inodes
  Free blocks: 233-237, 1877-8192
  Free inodes: 12-1872

Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0xcd9e, unused inodes 1872
  Backup superblock at 8193, Group descriptors at 8194-8194
  Reserved GDT blocks at 8195-8397
  Block bitmap at 207 (+4294959310), Inode bitmap at 223 (+4294959326)
  Inode table at 472-705 (+4294959575)
  7987 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 8398-16384
  Free inodes: 1873-3744

Group 2: (Blocks 16385-24576) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0xf3d1, unused inodes 1872
  Block bitmap at 208 (+4294951119), Inode bitmap at 224 (+4294951135)
  Inode table at 706-939 (+4294951617)
  4096 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 20481-24576
  Free inodes: 3745-5616

Group 3: (Blocks 24577-32768) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0x7afa, unused inodes 1872
  Backup superblock at 24577, Group descriptors at 24578-24578
  Reserved GDT blocks at 24579-24781
  Block bitmap at 209 (+4294942928), Inode bitmap at 225 (+4294942944)
  Inode table at 940-1173 (+4294943659)
  7987 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 24782-32768
  Free inodes: 5617-7488

Group 4: (Blocks 32769-40960) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
  Checksum 0x66bb, unused inodes 1872
  Block bitmap at 210 (+4294934737), Inode bitmap at 226 (+4294934753)
  Inode table at 1174-1407 (+4294935701)
  8192 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 32769-40960
  Free inodes: 7489-9360

Group 5: (Blocks 40961-49152) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0xa283, unused inodes 1872
  Backup superblock at 40961, Group descriptors at 40962-40962
  Reserved GDT blocks at 40963-41165
  Block bitmap at 211 (+4294926546), Inode bitmap at 227 (+4294926562)
  Inode table at 1408-1641 (+4294927743)
  7987 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 41166-49152
  Free inodes: 9361-11232

Group 6: (Blocks 49153-52207) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0xfe2a, unused inodes 1872
  Block bitmap at 212 (+4294918355), Inode bitmap at 228 (+4294918371)
  Inode table at 1642-1875 (+4294919785)
  3055 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 49153-52207
  Free inodes: 11233-13104

 

 

 

 

2. Block Group

 

 Block Group

 

Super Block

 

Group Descriptor

GDT

Block Bitmap

Inode Bitmap

Inode Table

Date Blocks

 

 

 

Super Block

블럭 그룹 가장 앞에 위치하며, 파일시스템과 관련된 정보(파일 시스템 전체 크기, 마운트 정보)를 갖고 있다.

리눅스에서는 슈퍼블록 정보를 사용하여 파일 시스템을 관리한다. 또한, Group0의 Super Block은 Group 1,3,5에 백업본이 존재한다.

 

 

[root@CentOS2 /root]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
13104 inodes, 52208 blocks
2610 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=53477376
7 block groups
8192 blocks per group, 8192 fragments per group
1872 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

 

[root@CentOS2 /root]# dumpe2fs /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   /test1
Last mounted on:          <not available>
Filesystem UUID:          7accb373-dcc1-4292-b12b-ea9915a9b6da
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              13104
Block count:              52208
Reserved block count:     2610
Free blocks:              45625
Free inodes:              13093
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      203
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         1872
Inode blocks per group:   234
Flex block group size:    16
Filesystem created:       Wed Feb  3 15:24:08 2016
Last mount time:          Wed Feb  3 18:27:59 2016
Last write time:          Wed Feb  3 18:32:58 2016
Mount count:              13
Maximum mount count:      22
Last checked:             Wed Feb  3 15:24:08 2016
Check interval:           15552000 (6 months)
~중간 생략~

 

Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0x0ca7, unused inodes 1861
  Primary superblock at 1, Group descriptors at 2-2
  Reserved GDT blocks at 3-205
  Block bitmap at 206 (+205), Inode bitmap at 222 (+221)
  Inode table at 238-471 (+237)
  6321 free blocks, 1861 free inodes, 2 directories, 1861 unused inodes
  Free blocks: 233-237, 1877-8192
  Free inodes: 12-1872

 
Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0xcd9e, unused inodes 1872
  Backup superblock at 8193, Group descriptors at 8194-8194
  Reserved GDT blocks at 8195-8397
  Block bitmap at 207 (+4294959310), Inode bitmap at 223 (+4294959326)
  Inode table at 472-705 (+4294959575)
  7987 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 8398-16384
  Free inodes: 1873-3744


Group 2: (Blocks 16385-24576) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0xf3d1, unused inodes 1872
  Block bitmap at 208 (+4294951119), Inode bitmap at 224 (+4294951135)
  Inode table at 706-939 (+4294951617)
  4096 free blocks, 1872 free inodes, 0 directories, 1872 unused inodes
  Free blocks: 20481-24576
  Free inodes: 3745-5616

~중간 생략~

 

 

Group Descriptor

해당 파일시스템 내의 모든 블럭 그룹에 대한 정보를 기록한다.

 

GDT(Group Descriptor Table)

첫 번째 Inode Table Block 블럭 번호, 그룹내 Free Block & inode 갯수, 디렉토리 갯수를 기록한다.

또한, Group0의 GDT은 Group 1,3,5에 백업본이 존재한다

 

Block Bitmap

블럭 그룹에서 블럭 할당 상태를 표기하는 맵이며, 블럭 할당 및 해지할때 사용한다.

 

Inode Bitmap

Inode 할당 상태를 표기하는 맵이며, Inode 할당 및 해지할때 사용한다.

 

Inode Table

파일 속정 정보(접근 권한, 소유주, 파일 크기, Inode 번호)가 저장되어 있다. 파일 하나당 하나의 Inode가 사용되며, 파일 유형과 관계없이 Inode 블럭을 갖게된다.

 

Data Block

실제 데이터 내용이 저장되는 디스크 영역이다.

 

 

 

 

 

 

 

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q