我通过 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
Run Code Online (Sandbox Code Playgroud)
在国际单位制词头兆在IT的不同区域几个不同的影响,并与磁盘它特别混乱。传统上,公制前缀是 10 的幂,但在 IT 历史的早期,当转换为十进制时,像kilo、Mega 和 Giga 这样的前缀被用来表示 2 的幂的近似值。
磁盘制造商按字面意思来衡量一个KB为1000(10^3)个字节,而在实际使用中,千字节的大小必须是2的幂(因为它是由Bits组成的),通常被接受为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)
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,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 的实际数据。