파일 시스템 이미지를 가능한 가장 작은 크기로 축소하려고 합니다. resize2fs가 예약된 파일 시스템 블록을 제자리에 유지한다는 점에 동의하지만 축소 작업 후에는 파일 시스템에 약 400Mb의 여유 공간이 남습니다.
제가 수행하는 단계는 다음과 같습니다.
aj@pop-os:~/disk_images$ sudo losetup -fP --show mcard.img
/dev/loop0
aj@pop-os:~/disk_images$ sudo zerofree -v /dev/loop0p1
112082/2671282/3665210
aj@pop-os:~/disk_images$ sudo e2fsck -f /dev/loop0p1
e2fsck 1.46.5 (30-Dec-2021)
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/loop0p1: 191007/917504 files (0.3% non-contiguous), 993928/3665210 blocks
aj@pop-os:~/disk_images$ sudo resize2fs -Mp /dev/loop0p1
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/loop0p1 to 1115084 (4k) blocks.
Begin pass 2 (max = 3444)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 112)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0p1 is now 1115084 (4k) blocks long.
모든 것이 잘 작동하는 것 같으며 파일 시스템이 16GB에서 4.1GB로 축소되었습니다. 그러나 파일 시스템에 여유 공간이 남습니다.
aj@pop-os:~/disk_images$ sudo mount /dev/loop0p1 xmnt/
aj@pop-os:~/disk_images$ df -h xmnt/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0p1 4.1G 3.5G 434M 90% /home/aj/disk_images/xmnt
aj@pop-os:~/disk_images$ sudo umount xmnt/
aj@pop-os:~/disk_images$ sudo dumpe2fs -h /dev/loop0p1
(Output shortened for readability)
Block count: 1115084
Reserved block count: 47712
Free blocks: 162785
Block size: 4096
보시다시피 파일 시스템을 축소한 후 df
유틸리티는 dumpe2fs
파일 시스템 이미지에 남은 여유 공간을 표시합니다.
왜 그런 겁니까? 예약된 블록 외에 여유 공간이 없도록 파일 시스템 크기를 실제로 줄이기 위해 resize2fs를 얻으려면 어떻게 해야 합니까?