如何找到 ext4 文件系统使用的最后一个扇区?

sta*_*fry 5 ext4

我需要确定 ext4 文件系统使用的最后一个扇区,以便我可以将它移动到另一个设备。

文件系统已经缩小(使用resize2fs)并且小于包含它的分区,所以我不是在问如何找到分区中的最后一个扇区。

我已经完成tune2fs -l并确定了

Block count:              48934
First block:              0
Block size:               4096
Run Code Online (Sandbox Code Playgroud)

由此我假设文件系统使用 48934 * 4096 / 512 = 391472 个扇区,并且我可以dd从分区的第一个扇区开始移动那么多扇区(如 所报告的gdisk)。

我不确定该块计数是否包括任何 ext4 开销,或者是否需要考虑额外的大小。我读了这个问题,这意味着还有额外的空间需要考虑。

rud*_*ier 4

你是对的。应该没有什么问题。

为了避免一些计算,您可以使用该bs选项并使用设备的分区名称,而不是从偏移量开始。

dd count=48934 bs=4096 if=/dev/sdxN  of=... 
Run Code Online (Sandbox Code Playgroud)

为了100%确定尺寸,您可以先测试一下。“模拟”一个较小的分区:

umount /dev/XYZ
losetup --offset N-BYTES --sizelimit $(( 48934 * 4096 )) /dev/loop1 /dev/XYZ
Run Code Online (Sandbox Code Playgroud)

mount或者fsckof/dev/loop1应该告诉你你是否把它做得太小了。resize2fs会告诉分区是否仍然太大,但没有dry-run。你也可以尝试一下fsadm -v --dry-run check/resize ...我从未使用过的东西。如果偏执,你应该使用losetup --read-only. losetup --detach完成后不要忘记。