2 votes

Get Info affiche une taille de volume incorrecte pour le pool ZFS sur MacOS Catalina

J'utilise actuellement ZFS sur MacOS Catalina, version

zfs-1.9.4-0
zfs-kmod-1.9.4-0

Après avoir remplacé mes disques de 3TB par des disques de 6TB, ZFS considère que le dimensionnement actuel est le suivant

 SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
5.46T  2.59T  2.87T        -         -    15%    47%  1.00x  ONLINE  -

Cependant, Get Info sur le volume indique 4,71 To et 2,97 To de libre. Avez-vous une idée de la raison pour laquelle c'est le cas et dois-je m'inquiéter de la disparité de l'espace libre ? Cela pourrait-il causer des problèmes dans le futur où le système d'exploitation voit plus d'espace disponible qu'il n'en existe ?

2voto

ggrocca Points 61

Vous n'avez pas besoin de vous inquiéter, je pense.

Une explication courte et rapide

  • Le "Disponible" de Get Info est correct, mais la "Capacité" n'est pas ce que vous attendez intuitivement. C'est en fait l'espace utilisé + l'espace disponible de l'ensemble de données ZFS correspondant (pas le pool ! c'est l'ensemble de données dans le pool).
  • De plus, Get Info utilise des unités décimales, zfs utilise des unités binaires.

Une explication plus détaillée suit.

Il y a deux choses différentes qui se passent ici.

Unités décimales et unités binaires.

Tout d'abord, la fonction Get Info du Finder permet d'obtenir des kilo-octets, des giga-octets et des téra-octets dans le cadre d'un projet de recherche. base 10 (KB, GB et TB), tandis que les outils de ligne de commande tels que df , zfs y zpool les valeurs de rapport qui utilisent base 2 (KiB, Gib, TiB).

Cela signifie que 1GB = 1000^3 = 10^9 octets, et non pas le même nombre d'octets que celui de la 1GiB = 1024^3 = 2^30 . En effet, 1GB = ~0.931GiB . Google fournit un outil pratique convertisseur de tailles numériques pour jouer avec ces conversions.

Ceci est vrai pour tous les systèmes de fichiers que vous utilisez sur votre Mac. Sur mon système, j'ai une partition HFS+. Sa taille est indiquée comme telle :

  • 60GB par Get Info ;
  • 56G par df -h .

La capacité, telle que rapportée par les ensembles de données ZFS au système d'exploitation, n'est pas la taille sous-jacente du pool, mais quelque chose d'autre.

ZFS n'est pas seulement un système de fichiers, mais aussi un gestionnaire de volumes. Vous pouvez avoir n'importe quel ensemble de données ZFS dans votre pool, partageant le même espace disponible, chacun en consommant une partie. Vous commencez avec un jeu de données racine, mais vous pouvez en ajouter autant que vous voulez.

Que rapporte votre "Get Info" ? Ce n'est pas la taille de votre piscine, même si intuitivement, vous vous attendiez probablement à cela. A mon avis, il s'agit d'un nombre concernant votre jeu de données ZFS racine (qui n'est pas le même que votre pool !), et ce nombre devrait être le suivant USED bytes + AVAILABLE bytes .

Vérifions-le sur un système réel.

J'ai une piscine nommée Tank sur mon système. zpool list Le résultat est :

NAME   SIZE  ALLOC   FREE
Tank  1.81T  1.32T   509G

J'y ai trois ensembles de données : le Root, Tank et deux ensembles de données imbriqués, Tank/DataOne y Tank/DataTwo . zfs list Le résultat est :

NAME           USED   AVAIL   REFER
Tank          1.32T    451G    336K
Tank/DataOne  45.9G    451G   45.8G
Tank/DataTwo  1.27T    451G   1.21T

Notez que je ne conserve aucune donnée réelle dans l'ensemble de données Root. USED rapporte tout l'espace consommé par l'ensemble de données, ses instantanés, ses ensembles de données imbriqués et leurs instantanés. REFER rapporte l'espace utilisé par le système de fichiers lui-même à l'heure actuelle (pas d'instantanés, pas de choses imbriquées). Vous pouvez voir que la plupart des données sont dans DataTwo, avec 0.06TiB d'instantanés aussi. Il existe des options plus fines pour zfs list si vous le souhaitez : zfs list -o space ajoute également les colonnes USEDSNAP USEDDS USEDREFRESERV USEDCHILD ).

Continuons et voyons ce que disent les outils non-ZFS. df -h La sortie est :

Filesystem        Size  Used Avail
/dev/disk2s1      451G  336K  451G
Tank/DataOne      497G   46G  451G
Tank/DataTwo      1.7T  1.3T  451G

Get Info dit :

Name     Capacity  Available
Tank     483.81GB   483.81GB 
DataOne  533.02GB   483.81GB
DataTwo    1.82TB   483.81GB

Conclusions

Vous pouvez facilement voir que les valeurs de df SIZE " de Get Info et la " capacité " de Get Info sont le même nombre d'octets, avec des unités différentes. On arrondit les résultats : 483.8GB = 451GiB , 533GB = 497GiB et 1.82TB = 1.7TiB .

Plus important encore, voyons si la somme de zfs Les valeurs DISPONIBLE + REFER de 's sont égales à df et Get Info, ou non.

NAME    AVAIL  + REFER
Tank     451G  +  336K = 451GiB = 483GB
DataOne  451G  + 45.8G = 497GiB = 533GB
DataTwo  451G  + 1.21T = 1.65TiB = 1.81TB

La dernière valeur diffère légèrement, mais je pense que c'est dû à des arrondis ici et là qui faussent le résultat. En dehors de cela, tout se vérifie parfaitement.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X