Linux ext4 파일 시스템을 테스트하는 동안 일반 데이터 파일에 대해 inode와 여러 데이터 블록을 할당한다는 사실을 발견했습니다. 그러나 inode는 블록 그룹 0에 있고 데이터 블록은 블록 그룹에 있습니다.
데이터 파일은 다음 명령으로 생성됩니다.
sudo dd if=/dev/zero of=output_file bs=1M count=10
ext4 파일 시스템의 블록 크기는 4k이고 inode 크기는 256B입니다.
블록 그룹 변경 사항은 다음과 같습니다.
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
...
24285 free blocks, 8182 free inodes, 1 directories, 8177 unused inodes
Free blocks: 8482-8485, 8487-32767
Free inodes: 11-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT, ITABLE_ZEROED]
...
32511 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
Free blocks: 33025-65535
Free inodes: 8193-16384
데이터 파일을 생성한 후 블록 그룹을 다음과 같이 변경합니다.
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
...
24285 free blocks, 8181 free inodes, 1 directories, 8177 unused inodes
Free blocks: 8482-8485, 8487-32767
Free inodes: 12-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT, ITABLE_ZEROED]
...
29951 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
Free blocks: 33025-34815, 37376-65535
Free inodes: 8193-16384
답변1
실제로 질문을 지정하지는 않았습니다. "이게 정상인가요?"와 같은 질문을 하고 싶었던 것 같습니다.
조금만 생각해보면 데이터 블록의 할당을 곧 발견할 수 있습니다.~ 해야 하다inode 위치와 무관합니다.
먼저, 몇 개의 큰 파일만 배치되어 있는 새로 생성된 파일 시스템을 고려해 보십시오. 첫 번째 대용량 파일도 첫 번째 블록 그룹의 사용 가능한 블록을 모두 사용할 수 있으므로 파일이 여러 블록 그룹에 걸쳐 있도록 하는 방법이 있어야 합니다.
둘째, inode를 파일(또는 파일의 첫 번째 블록)과 동일한 블록 그룹에 배치해야 하는 경우 이는 2개 블록 그룹보다 큰 모든 파일이 최소한 하나의 블록 그룹에 있는 모든 inode를 효과적으로 소비한다는 것을 의미합니다. 모든 것이 완벽하다면 2개. 이것은 터무니없이 비효율적인 것 같습니다.
따라서 ext4 파일 시스템의 내부 작동에 대한 추가 정보가 없더라도 다음을 권장합니다.예, 이는 정상입니다.