收缩分区以精确适应底层文件系统的大小

最近我把ext4文件系统大小缩小到了500GB

df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 493G 64G 404G 14% / 

现在我想缩小分区大小以适应文件系统大小。

我试图使用parted和resizepart命令。 问题是分手时要求新的尺寸。 如果我select500GB,结果分区从500GB变小,因此底层文件系统不能适应这个分区。 任何提示如何做正确的大小计算?

df报告的大小将是不正确的,因为它们仅占用文件系统内部使用的数据块和缺失块以及保留块。

简单的方法是将文件系统缩小至less10%。 调整分区大小,然后使用resize2fs增大文件系统的大小。

如果你想手工计算,你必须知道文件系统在内部有多大。 用tune2fs -l /dev/sda2检查这个数据,然后将块数乘以块大小。 在分区调整分区的大小时,将单元切换到单元的扇区,并print表格以获得起始扇区和逻辑扇区大小。 用上面的字节总数除以扇区大小。 取整到2048的最接近的倍数,并调整到这个数量的部门(最终部门=部门规模+起始部门 – 1)。

等式(可在python中运行,只需填写前4个值):

 block_count = N block_size = N sector_size = N start_sector = N fs_size = block_count * block_size fs_sectors = fs_size/sector_size part_sectors = ((fs_sectors-1)/2048+1)*2048 end_sector = start_sector + part_sectors - 1 print "Partition start: %d end: %d size: %d"%(start_sector,end_sector,part_sectors) print "Resize in parted with: \nresizepart <number> %ds"%(end_sector)