web-dev-qa-db-fra.com

Pourquoi la taille donnée par lsblk est différente de celle de lsblk -b

J'ai un disque qui apparaît avec 134G avec la commande lsblk mais un nombre plus élevé avec lsblk -b (environ 10G de plus)

Pourquoi ai-je une taille différente avec lsblk et 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 
[...]
4
user624703

En fait, la différence n’est pas si grande. Rappelez-vous que les gigaoctets, mégaoctets, etc., sont des multiples de 1024 et non de 1000. Ainsi, un mégaoctet est égal à 1024.2 et un gigaoctet est 10243.

Beaucoup de langages de programmation donnent pratique opérateurs de décalage , qui vous permettent de convertir entre méga, giga, kilo et autres-octets. En utilisant Perl, nous pouvons voir que vos deux valeurs ne sont en réalité pas si différentes:

## How many bytes is 134G?
$ Perl -le 'print 134<<30'
143881404416

## How many gigabytes is 147035272690 bytes?
$ Perl -le 'print 147035272690>>30'
136

Il y a toujours un écart de 2G entre les chiffres, mais il est loin d'être 10G. Je ne sais pas vraiment d'où vient cette différence. Je soupçonne qu’il ya des étapes d’arrondis (probablement une fonction sol ), mais je ne connais pas les détails.

2
terdon

Il n'y a pas beaucoup de différence que vous pensez.
1 Go = 1 073 741 824 octets
Convertissons maintenant vos 134 Go en octets.
134GB = (134) x (1 073 741 824) = 143881404416 octets

0
janasaiarun