내가 달성하고 싶은 것은 ext2 파일 시스템을 안전하게 축소하고 기본 물리적 파티션을 (파일 시스템 블록을 자르지 않고) 안전한 최소 수준으로 잘라내거나 축소할 수 있는지 확인하는 것입니다. 나는 많은 HowTo-s를 확인했지만 dumpe2fs가 보고한 실제 ext2 사용법을 결정할 때 뭔가 빠졌는지 묻고 싶습니다. 내 테스트 사례는 다음과 같습니다.
root@buster:/tmp# dd if=/dev/zero of=/tmp/del.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.429782 s, 2.4 GB/s
root@buster:/tmp# losetup -f --show /tmp/del.img
/dev/loop0
root@buster:/tmp# mkfs.ext2 /dev/loop0
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done
Creating filesystem with 256000 4k blocks and 64000 inodes
Filesystem UUID: 217a401a-a001-46e8-8ca2-9602e927e2aa
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
root@buster:/tmp# mount /dev/loop0 /mnt/EXT2/
root@buster:/tmp# dumpe2fs /dev/loop0 | grep -E '(Block count|Block size)'
dumpe2fs 1.44.5 (15-Dec-2018)
Block count: 256000
Block size: 4096
제가 아는 한 파일 시스템은 1048576000바이트(256000*4096)를 사용합니다.
root@buster:/tmp# cp -pr /opt/Scripts/ /mnt/EXT2/
root@buster:/tmp# umount /mnt/EXT2
root@buster:/tmp# e2fsck -f /dev/loop0
e2fsck 1.44.5 (15-Dec-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop0: 457/64000 files (6.6% non-contiguous), 67098/256000 blocks
root@buster:/tmp# resize2fs -M /dev/loop0
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/loop0 to 63894 (4k) blocks.
The filesystem on /dev/loop0 is now 63894 (4k) blocks long.
root@buster:/tmp# dumpe2fs /dev/loop0 | grep -E '(Block count|Block size)'
dumpe2fs 1.44.5 (15-Dec-2018)
Block count: 63894
Block size: 4096
축소 후 파일 시스템이 261709824바이트(63894*4096)를 사용하는 것 같습니다. 100% 경우 기본 물리적 파티션을 이 261709824바이트로 안전하게 잘라내거나 축소할 수 있다고 가정할 수 있습니까? 일부 파일 시스템 블록이 261709824바이트 이후에도 여전히 물리적으로 위치합니까?