如何根据包含的 ext3 文件系统的块数计算分区备份所需的大小

如何根据包含的 ext3 文件系统的块数计算分区备份所需的大小

我需要生成一个包含 MBR 和一个主分区的磁盘映像。该分区包含一个 ext3 文件系统,已使用 将其调整为最小大小resize2fs -M /dev/sdc1。我得到的输出是文件系统现在有 N 个块大,每个块为 4K。现在我猜我需要分区的前 N*4K 字节。但是该分区之前还有多少字节(我猜 MBR 和分区表本身确实有一定的大小)也是需要的?

布局仅仅是从磁盘开始处开始的一个主分区。

所以问题是如何从 N 块计数得出实际所需的字节数?

答案1

膜生物反应器就在磁盘块设备的开头(“第零扇区”)。您可以使用它fdisk来找出分区的偏移量(即文件系统的第一个块相对于磁盘的开头的位置)。请注意,我使用将u单位切换为扇区,如输出所示,此磁盘的扇区为 512 字节。

# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): p

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bbac4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         1026048   167772159    83373056   8e  Linux LVM

Command (m for help): q
#

Blocks(为了避免混淆,我应该澄清,列中的块fdisk是 1k 块,而不是文件系统或块设备可能使用的任何大小的块。)

在此 VM 示例中/dev/sda1,这是我的/boot分区,从扇区 2048 开始,即第 256 个 4k 块(2048 个扇区 * 512 字节/4096 字节 = 256 个 4k 块)。

如果我知道我刚刚将文件系统大小调整/dev/sda1为 100000 个 4k 块,我可以将前 256 + 100000 = 100256 个 4k 块复制到/dev/sda图像中以获取 MBR 和整个/boot分区。

例如

dd if=/dev/sda of=my_backup.img bs=4096 count=100256

相关内容