Taille de la partition ext4 / écarts d'espace libre

14

Lors de la création d'une partition de sauvegarde de 250 Go pour mes données, j'ai remarqué de nombreuses différences entre la taille de partition signalée et l'espace libre dans Nautilus, gParted, df, tune2fs, etc.

Au début, je pensais que c'était une confusion GiB / GB. Ce n'était pas le cas .

Ensuite, j'ai pensé qu'il pourrait s'agir des blocs réservés d'ext4. Ce n'était pas le cas .

Je suis complètement perplexe. Voici quelques images. Voici les étapes:

  • Tout d'abord, NTFS. 524288000 secteurs x 512 octets / secteur = 268435456000 octets = 268,4 Go = 250 Gio.

entrez la description de l'image ici entrez la description de l'image ici

Nautilus dit " Capacité totale: 250,0 Go " (même si c'est en fait GiB, pas GB). En dehors de cette mauvaise étiquette mineure, jusqu'ici, tout va bien

  • Maintenant, même partition, formatée en ext4 avec gparted:

entrez la description de l'image ici

Les secteurs Premier, Dernier et Total sont identiques. Il s'agit de la même partition 250 Go. La taille utilisée est de 4,11 Go (des blocs réservés peut-être?)

entrez la description de l'image ici

Nan. Il semble que les blocs réservés soient de 12,7 Gio (~ 5%. Aïe! ). Mais ... pourquoi la capacité totale n'est plus que de 246,1 Gio ??? . Cette différence (en quelque sorte) correspond aux 4,11 Gio rapportés par gparted. Mais ... si ce n'est pas des blocs réservés, c'est quoi? Et pourquoi gparted n'a pas signalé que 12,7 Go d'espace utilisé?

$ df -h /dev/sda5
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             247G  188M  234G   1% /media/BACKUP

dfcorrespond à Nautilus dans l'espace libre signalé. Mais .. seulement 188M utilisé? Cela ne devrait-il pas être ~ 12 Go? Et la capacité totale est toujours erronée. J'ai donc couru tune2fspour trouver des indices. (la sortie non pertinente est omise)

$ sudo tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   BACKUP
Filesystem UUID:          613d592e-47f5-4206-96a7-210090d340ef
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Filesystem state:         clean
Filesystem OS type:       Linux
Block count:              65536000
Reserved block count:     3276800
Free blocks:              64459851
First block:              0
Block size:               4096

65536000 blocs au total * 4096 octets / bloc = 268435456000 octets = 268,4 Go = 250 Gio. Cela correspond à gparted.

3276800 blocs réservés = 13421772800 octets = 13,4 Go = 12,5 Gio. Cela correspond (encore une fois) à Nautilus.

64459851 blocs libres = 264027549696 octets = 264,0 Go = 245,9 Gio. Pourquoi? Ne devrait-il pas s'agir de 250-12,5 = 237,5 (ou 250- (12,5 + 4,11) = ~ 233)?

Suppression des blocs réservés:

$ sudo tune2fs -m 0 /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 0% (0 blocks)

$ sudo tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   BACKUP
Filesystem UUID:          613d592e-47f5-4206-96a7-210090d340ef
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Filesystem state:         clean
Filesystem OS type:       Linux
Block count:              65536000
Reserved block count:     0
Free blocks:              64459851
Block size:               4096

Comme prévu, même nombre de blocs, 0 bloc réservé, mais ... mêmes blocs libres ? Je viens de libérer 12,5 Gio?

$ df -h /dev/sda5
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             247G  188M  246G   1% /media/BACKUP

entrez la description de l'image ici

On dirait que je l'ai fait. L'espace disponible est passé de 233 à 245,9 Gio. gparted ne s'en souciait pas du tout, montrant exactement les mêmes informations! (inutile de poster une capture d'écran identique)

Quel énorme gâchis!

J'ai essayé de le documenter du mieux que je pouvais ... Alors, s'il vous plaît quelqu'un peut-il me donner une idée de ce qui se passe ici?

  • Que manquent ces mystérieux 4.11 Gio du formatage NTFS -> ext4?
  • Pourquoi y a-t-il tant de divergences entre gparted, Nautilus, tune2fs, df?
  • Quel est le problème avec mes mathématiques? (les questions en gras éparpillent ce post)

Toute aide est appréciée. Bien que je ne puisse pas comprendre ce qui se passe, j'envisage sereinement d'abandonner ext4 en faveur de NTFS pour tout sauf ma / partition.

Merci!

MestreLion
la source
@Uri Herrera: avez-vous réellement lu ma question, ou du moins les premières lignes? Ce n'est pas un problème GiB / GB. La partition est de 268,4 Go = 250,0 Go, et non 246,1
MestreLion
1
Une autre réponse que vous pouvez consulter: askubuntu.com/questions/5335/…
enzotib
1
Voir aussi ext4: Comment tenir compte de l'espace du système de fichiers?
Gilles 'SO- arrête d'être méchant'

Réponses:

13

Il se passe quelques choses ici. gparted indique l'espace réel utilisé / libre. Le noyau réduit le nombre disponible par l'espace réservé. Après avoir supprimé l'espace réservé, le nombre gratuit n'a pas changé car les blocs réservés étaient déjà libres; c'est juste que les utilisateurs non root ne sont pas autorisés à envahir cet espace pour les empêcher de causer des problèmes en remplissant le disque. Les numéros de gnome sont un peu floconneux à cause d'un bug . Au lieu de rapporter l'espace utilisé signalé par le noyau (et affiché par df), il le calcule en soustrayant l'espace libre du total. Cela lui fait afficher l'espace réservé comme utilisé.

Le 4 Go manquant est en fait utilisé est la surcharge fs pour ext4. NTFS n'alloue initialement qu'une petite quantité d'espace pour le MFT et l'agrandit au besoin. Cependant, la série ext de systèmes de fichiers alloue de l'espace pour la table inode (équivalent approximatif du MFT) au moment du formatage et elle ne peut pas augmenter. L'espace manquant dans l'espace total signalé est la table d'inode. Le reste de l'espace utilisé provient du journal (généralement 128 Mo) et redimensionne les inodes.

psusi
la source
Merci, +1 pour avoir résolu certains des mystères! Mais, si les ~ 4 Go sont des frais généraux de système de fichiers, pourquoi une partie (3,9 Go) est déduite de l'espace total, alors que 188 Mo sont réellement utilisés? Quel est (ou les deux) les frais généraux? Et pourquoi géré différemment? En outre, dfmême avec sudo, affiche la capacité totale (247 Go) et l'espace utilisé (188 Mo) comme Nautilus. Donc, si c'est un bug, ce n'est pas seulement des gnomes.
MestreLion
Je pensais que les 188 Mo étaient les frais généraux (par rapport aux 72 Mo de NTFS). Mais, si les frais généraux NTFS augmentent après un certain temps, cela signifie-t-il que Nautilus rapportera plus tard que sa capacité totale diminue ?
MestreLion
Correction: df affiche toujours l'espace disponible, peu importe qui l'exécute. Pour voir l'espace libre (== espace disponible + espace réservé), utilisez stat -f /media/BACKUP.
Marius Gedminas
Réponse modifiée pour clarifier. Et je crois que NTFS ne fera que rapporter plus d'espace utilisé, pas réduire le total à mesure que le MFT grandit. @Marius, ce n'est pas correct non plus. statfs () et donc df et stat -f montrent tous les deux l'espace disponible sans compter les blocs réservés. J'aurais pu jurer qu'il a également ajusté le quota et varié sa réponse en fonction de l'utilisateur appelant, mais vous avez raison à ce sujet; il ne compte pas le quota et ne se soucie pas du nom de l'utilisateur.
psusi
@psusi: j'ai donc ~ 3,9 Go de table inode et ~ 188 Mo de journal + quelque chose? Et Nautilus soustrait la table des inodes de la taille totale, alors que le journal des rapports est l'espace utilisé? Et gparted les rapporte comme un seul 4.11GiB d'espace utilisé? Est-ce exact? Si c'est le cas, je souhaitais juste que Nautilus gère les deux frais généraux de la même manière.
MestreLion
7

Tout d'abord, les blocs réservés ne sont pas des blocs utilisés pour la gestion interne du système de fichiers.

Les blocs réservés sont simplement réservés pour rootgarantir que les services utilisant des fichiers sur cette partition ne peuvent pas être exclus de l'espace par un utilisateur non administrateur remplissant tout l'espace.

Même sans blocs réservés ( -m 0), il y a toujours une partie de l'espace utilisé pour la gestion interne du système de fichiers, je ne peux pas dire combien, je n'ai pas une connaissance aussi approfondie.

De plus, Gparted est exécuté en tant que root, il voit donc les blocs réservés comme libres. Nautilus , exécuté en tant qu'utilisateur, les considère comme non libres.

Ok, la réponse @psusi est très claire, je n'ai rien à ajouter.

enzotib
la source
Humm, très instructif, +1. Au moins, cela résout certains des problèmes que j'ai trouvés. Voir les blocs réservés comme une "limite limite" pour les non-root au lieu de "blocs utilisés" rend les lectures gparted, df et tune2fs d'accord (et logique). Mais certaines questions demeurent, en particulier les 4 Go d'espace utilisé / capacité totale.
MestreLion
1
De plus, j'ai lu quelque part (un de ces vieux HOWTO "pourquoi vous n'avez pas besoin de défragmenter votre partition Linux chaque mois" peut-être?) Que réserver 5% d'espace pour root donne un peu de répit aux algorithmes d'allocation extN et évite donc fragmentation.
Marius Gedminas
1

Essayez de réduire la taille de la partition de quelques mégaoctets à l'aide de gparted, puis augmentez-la à sa taille d'origine. Cela peut amener d'autres applications à lire correctement les tailles. J'ai récemment corrigé une erreur de 50 Go de cette façon!

Jim Birch
la source