为什么 lsblk 给出的大小与 lsblk -b 给出的大小不同

为什么 lsblk 给出的大小与 lsblk -b 给出的大小不同

我有一个磁盘,使用命令显示有 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 字节

相关内容