我有一个磁盘,使用命令显示有 134G lsblk
,但数字更高lsblk -b
(大约多 10G)
为什么 lsblk 和 lsblk -b 的大小不同?
#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 134G 0 disk
[...]
# lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 147035272690 0 disk
[...]
答案1
实际上,区别并不大。请记住,千兆字节、兆字节等是 1024 的倍数,而不是 1000 的倍数。因此,1 兆字节是 1024 2,而 1 千兆字节是 1024 3。
许多编程语言都提供了便利移位运算符,它允许您在兆、千兆、千字节和其他字节之间进行转换。在这里,使用 Perl,我们可以看到您的两个值实际上并没有太大的不同:
## How many bytes is 134G?
$ perl -le 'print 134<<30'
143881404416
## How many gigabytes is 147035272690 bytes?
$ perl -le 'print 147035272690>>30'
136
这两个数字之间仍然有 2G 的差异,但远不及 10G。我真的不知道这个差异从何而来。我怀疑其中涉及舍入步骤(可能使用地面函数),但我不知道细节。
答案2
和你想象的差别并不大。1
GB = 1,073,741,824 字节
现在让我们将 134 GB 转换为字节。134GB
= (134)x(1,073,741,824) = 143881404416 字节