如何计算 fdisk 值

如何计算 fdisk 值

我正在尝试继续了解自己分区上的交换。与上的情况相同较旧的问题

我想知道如何计算 fdisk 命令的正确数字,以准备精确的 2 GB 交换区域。我输入了正确的参数,但我不知道如何计算它。

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
First sector (2048-536870911, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-536870911, default 536870911): 4196366
Partition 1 of type Linux and of size 2 GiB is set

现在参数 4196366 的交换大小正好是 2 GB

>>free | grep -i swap | awk '{print "scale=2; "$2" / 1024 / 1024" }' | bc -l
2.00

问题是如何计算 4196366。我是这样想的:

4196366 = 2 * 2 * 1024^2 + 2 * 1024 + 14

因此 2*1024 可能跳过第一个扇区 但为什么我需要将 2GB 再次乘以 2,魔术常数 14 是什么?我通常如何计算应作为参数传递给 fdisk 的内容?

答案1

我不知道为什么这个答案被删除所以我将它粘贴回去:

输入以扇区为单位,大多数磁盘使用 512 字节或 4096 字节逻辑扇区。(512 是传统大小,许多 4K 磁盘仍模拟此大小。)Fdisk 将在启动时告诉您磁盘的逻辑扇区大小。

换句话说,您需要乘以 2,因为一个扇区是 512 字节,正好是半千字节。

因此,如果您想要 2 GB 的交换空间,加上 X KB 的交换头,最简单的方法是先将两者都转换为字节,然后将总和除以扇区大小(512 或 4096)以获得扇区数:

swap_bytes = 2 * 1024 * 1024 * 1024
hdr_bytes = X * 1024

sector_size = 512
part_sectors = (swap_bytes + hdr_bytes) / sector_size

(围捕。)

有用的工具:

$ echo 2G | numfmt --from=si
2000000000

$ echo 2G | numfmt --from=iec
2147483648

相关内容