我添加了 500MB vdisk,但 fdisk -l 显示 524MB,为什么?

我添加了 500MB vdisk,但 fdisk -l 显示 524MB,为什么?

我通过 vSphere 5.5 向虚拟机添加了一个 500MB 的新硬盘,服务器将其视为 524MB。

知道为什么吗?

fdisk -l
>Disk /dev/sdg: 524 MB, 524288000 bytes
>64 heads, 32 sectors/track, 500 cylinders
>Units = cylinders of 2048 * 512 = 1048576 bytes
>Sector size (logical/physical): 512 bytes / 512 bytes
>I/O size (minimum/optimal): 512 bytes / 512 bytes
>Disk identifier: 0x00000000

答案1

公制前缀Mega- 在 IT 的不同领域有几种不同的含义,对于磁盘来说尤其令人困惑。传统上,公制前缀是 10 的幂,但在 IT 历史的早期,千、兆和千兆等前缀用于表示转换为十进制时 2 的幂的近似值。

磁盘制造商按字面意思理解前缀,将 KB 测量为 1000(10^3)字节,而在实际使用中,千字节的大小必须是 2 的幂(因为它由位组成),并且通常接受 1024 字节(2^10)。磁盘制造商认为 MB 是 1000000 字节,而其他人认为是 1048576(2^20),包括您的操作系统,因此当您存储 1KB 文件时,磁盘上会占用 1024 字节。但是,由于它与磁盘的紧密联系,因此有一个例外,即fdisk

在过去,数字非常小,我们可以忽略 KB 上的额外 24 个字节,但随着容量的扩大,更多的度量前缀和二进制前缀分歧,差异变得不可忽略。在 TB 规模下,我们在转换中损失了近 70GB。出于这个原因,许多人现在明确使用二进制前缀以避免混淆。VMWare 选择了这样做。

Kilo => 10^3
Mega => 10^6
Giga => 10^9
Tera => 10^12

Kibi => 2^10 (1,024)
Mebi => 2^20 (1,048,576)
Gibi => 2^30 (1,073,741,824)
Tibi => 2^40 (1,099,511,627,776)

因此,在这种情况下,VMWare 使用 MiB,而 FDisk 使用 MB,因此数字会不匹配。

从 VMWare 的角度来看,您请求 500MiB,它给了您,但从 Fdisks 的角度来看,它是一个 524MB 的卷。然而,这两个值完全相同。

因此,对于 500MiB 卷,大小计算如下:

500 * 1048576B = 524288000B => 500 MiB which equals 524MB

但是对于 500MB 的磁盘,计算如下:

500 * 1000000B = 500000000B => 500MB which equals 476MiB因此您无法在其中存储 500MB 的实际数据。

相关内容