web-dev-qa-db-fra.com

Espace réservé pour root sur un système de fichiers - pourquoi?

Je comprends que par défaut, les systèmes de fichiers nouvellement créés seront créés avec 5% de l'espace alloué à la racine. Je sais également que vous pouvez modifier l'espace défini avec:

tune2fs -m 1 /dev/sdXY

Ce qui m'intéresse cependant, c'est quel est le but réel de cet espace réservé. A-t-il une utilité pratique qui mériterait plus de 5% d'espace dans certaines circonstances?

La raison pour laquelle je suis tombé sur cette question est que nous avons récemment construit un magasin de fichiers de 1 To et que nous ne pouvions pas vraiment comprendre pourquoi un df -h nous laissait manquer 5% de notre capacité.

108
suitedupgeek

L'économie d'espace pour les processus racine importants (et les actions de sauvetage possibles) est une des raisons.

Mais il y en a un autre. Ext3 est assez bon pour éviter la fragmentation du système de fichiers, mais une fois que vous avez atteint environ 95%, ce comportement tombe de la falaise et, soudain, les performances du système de fichiers deviennent un gâchis. Donc, laisser 5% réservés vous donne un tampon contre cela.

Ext4 devrait être meilleur dans ce domaine, car expliqué par le développeur/gourou du système de fichiers Linux Theodore Ts'o :

Si vous définissez le nombre de blocs réservés sur zéro, cela n'affectera pas beaucoup les performances, sauf si vous exécutez pendant de longues périodes (avec beaucoup de créations et de suppressions de fichiers) alors que le système de fichiers est presque plein (c'est-à-dire supérieur à 95%), à ce moment, vous serez soumis à des problèmes de fragmentation. L'allocateur multi-blocs d'Ext4 est beaucoup plus résistant à la fragmentation, car il essaie beaucoup plus difficile de trouver des blocs contigus, donc même si vous n'activez pas les autres fonctionnalités ext4, vous verrez de meilleurs résultats en montant simplement un système de fichiers ext3 en utilisant ext4 avant le système de fichiers devient complètement plein.

Si vous utilisez simplement le système de fichiers pour des archives à long terme, où les fichiers ne changent pas très souvent (c'est-à-dire un énorme magasin de mp3 ou de vidéos), cela n'aura évidemment pas d'importance.

106
mattdm

Si vous autorisez d'autres personnes à se connecter à votre système, via ssh, par exemple, la réservation de ces blocs de 5% garantit que les utilisateurs externes ne peuvent pas remplir le disque. Même si vous n'autorisez pas les autres à se connecter à votre système, les blocs réservés empêchent les programmes qui ne s'exécutent pas en tant que root de remplir votre disque.

45
LawrenceC

Avec les blocs réservés, vos utilisateurs et les services qui s'exécutent en tant qu'utilisateurs spécifiques plutôt que de s'exécuter en tant que root, ne peuvent pas remplir un système de fichiers et potentiellement casser d'autres choses qui doivent être écrites sur ledit système de fichiers - bien que les services s'exécutant en tant que root puissent toujours le faire complètement plein bien sûr.

Cela vous donne également de l'espace pour travailler lorsque les utilisateurs se plaignent que le disque est plein ou que les services commencent à échouer parce que le système de fichiers est plein. Par exemple, vous pouvez archiver certains fichiers dans des archives Zip/gz/7Zip avant de les supprimer (bien que si le système de fichiers était complètement plein, vous avez probablement un autre système de fichiers disponible dans lequel vous pouvez créer le fichier d'archive à la place).

5% a été la valeur par défaut pendant un temps long, depuis l'époque où les disques étaient beaucoup plus petits (des dizaines de mégaoctets plutôt que des centaines de gigaoctets), donc 5% n'était pas tant que ça. Heureusement, il peut facilement être réduit à un pourcentage plus petit comme vous le dites, ou défini sur un nombre spécifique de blocs si vous utilisez tune2fs's -r option au lieu de -m. Dans les deux cas, vous pouvez donner un paramètre de 0 pour désactiver complètement la réservation - je ne le ferais pas pour /, /tmp, /var et ainsi de suite, mais vous souhaiterez peut-être un système de fichiers qui n'agit que comme stockage utilisateur (par exemple, un partage de fichiers global) ou qui ne contient que des fichiers de taille fixe (comme des machines virtuelles de taille fixe) qui ne se développeront que lorsque vous créerez un nouveau.

22
David Spillett

La valeur par défaut de 5% est destinée aux partitions système. Par exemple, si votre espace disque se remplit, les journaux système (/var/log) et la boîte aux lettres racine (/var/mail/root) peut toujours recevoir des informations importantes. Pour un /home ou une partition de stockage de données générale, il n'est pas nécessaire de laisser de l'espace pour root. Pour des besoins spéciaux, vous pouvez changer l'utilisateur qui obtient l'espace d'urgence (tune2fs -u 1234).

Il y a une autre raison pour ne pas permettre à un système de fichiers ext [234] de se remplir, ce qui est fragmentation .