Après avoir supprimé de nombreux fichiers volumineux, l'espace libre augmente avec un retard important

15

Hier, j'ai supprimé 71 Go de fichiers sur mon serveur domestique / multimédia.
Espace libre avant: 117 Go
Espace libre après: 126 Go

Donc, au lieu d'avoir 71 Go d'espace libre supplémentaire, je n'avais que 9 Go. J'ai revérifié qu'aucun fichier n'était ouvert et j'ai vraiment supprimé 71 Go et l'espace libre n'a augmenté que de 9 Go.

J'ai aussi essayé de synchroniser, mais sans effet.

Ce n'est pas la première fois que cela se produit. En effet, j'ai vu ce comportement depuis des années de temps en temps. D'abord sur ext3, maintenant sur ext4.
Lorsque cela se produit, je peux récupérer l'espace libre en démontant puis en remontant le système de fichiers. Dans ces cas, le démontage prend jusqu'à 2 minutes au lieu de presque pas de temps.

De nos jours, je ne peux pas facilement démonter et remonter le système de fichiers, car il est occupé en permanence par mon logiciel d'enregistrement vidéo, le serveur owncloud pour ma famille et quelques autres services que je n'avais pas jusqu'à présent. Et je ne veux pas me lever à 3 heures du soir juste pour démonter et remonter.

Non, l'utilitaire 'at' ne fonctionnera pas car l'un des services effectue des tâches de longue durée non résumables et a donc besoin d'une vérification d'état manuelle pour trouver un bon moment où il peut être arrêté, c'est-à-dire qu'une tâche vient de se terminer.

Mais ce matin, j'ai remarqué que l'espace avait été libéré du jour au lendemain. Il me semble qu'il y a eu une sorte de nettoyage, et cela peut être la même chose qui prend du temps supplémentaire lors du démontage.

Jusqu'à présent, je n'ai remarqué ce comportement que lors de la suppression d'une grande quantité de données. En revanche, je ne sais pas si cela se produit régulièrement et la différence est tout simplement trop petite pour être remarquée.

Le système de fichiers a été créé avec 0% réservé à root ( mkfs -m 0). Selon fsck -f(je fais toujours cela entre démonter et remonter), le système de fichiers n'est pas corrompu, et selon le test étendu des diagnostics SMART, le matériel est également OK.

[ÉDITER]

tune2fs 1.42 (29-Nov-2011)  
Filesystem volume name:   bigdata  
Last mounted on:          /bigdata  
Filesystem UUID:          6aebd17a-e064-41dc-9c68-c9a3acbe4f66  
Filesystem magic number:  0xEF53  
Filesystem revision #:    1 (dynamic)  
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize  
Filesystem flags:         signed_directory_hash   
Default mount options:    user_xattr acl  
Filesystem state:         clean  
Errors behavior:          Continue  
Filesystem OS type:       Linux  
Inode count:              121413632  
Block count:              485645568  
Reserved block count:     0  
Free blocks:              29081276  
Free inodes:              121382378  
First block:              0  
Block size:               4096  
Fragment size:            4096  
Reserved GDT blocks:      908  
Blocks per group:         32768  
Fragments per group:      32768  
Inodes per group:         8192  
Inode blocks per group:   512  
Flex block group size:    16  
Filesystem created:       Tue Dec 25 23:42:35 2012  
Last mount time:          Fri Jan  3 17:37:36 2014  
Last write time:          Fri Jan  3 17:37:36 2014  
Mount count:              37  
Maximum mount count:      -1  
Last checked:             Thu Apr 18 17:03:40 2013  
Check interval:           0 (<none>)  
Lifetime writes:          14 TB  
Reserved blocks uid:      0 (user root)  
Reserved blocks gid:      0 (group root)  
First inode:              11  
Inode size:           256  
Required extra isize:     28  
Desired extra isize:      28  
Journal inode:            8  
Default directory hash:   half_md4  
Directory Hash Seed:      be2b977e-5127-4843-9123-fe33b6d7b573  
Journal backup:           inode blocks  

[/ÉDITER]

Voici donc mes 2 questions:

  1. Que se passe-t-il ici? Pourquoi l'espace est-il libéré à umount ou avec un retard au lieu d'être immédiatement supprimé?
  2. Puis-je faire quelque chose pour déclencher la libération de l'espace dès maintenant sans démonter ni remonter?
Markus N.
la source
Cela me sent beaucoup comme si les fichiers étaient toujours ouverts par quelque chose. Comment confirmez-vous qu'aucun des fichiers n'est ouvert après la suppression? lsof | grep -i deletedest généralement le meilleur moyen de vérifier cela.
Garrett
2
Normalement, vous ne pouvez pas démonter un système de fichiers lorsque les fichiers sont ouverts. Donc, si umount réussit, il n'y a pas de fichiers ouverts. Sauf hier, j'ai toujours fait le cycle de démontage et de remontage quand je l'ai remarqué.
Markus N.
C'est en effet le cas. Quelles sont vos options de montage ext4?
Garrett
noatime, défauts
Markus N.
Avez-vous une sorte de système de sauvegarde en cours d'exécution qui peut conserver des copies des fichiers ou des liens physiques vers ces fichiers?
derobert

Réponses:

9

Il y a deux facteurs qui peuvent interagir.

  • Contrairement à Windows, vous pouvez supprimer les fichiers ouverts. Si vous supprimez un film en cours de diffusion, il sera supprimé du répertoire, mais existera toujours sous forme de fichier jusqu'à ce que le programme de diffusion en continu le ferme. Une fois le logiciel de streaming fermé, l'espace sera libéré. La fuser -mcommande peut être utilisée pour trouver l'ID de processus de tout processus avec des fichiers ouverts. Certains programmes peuvent ne pas fermer immédiatement les fichiers lorsqu'ils en ont fini avec eux.

  • Il s'agit de deux systèmes de fichiers journalisés. Les modifications sont écrites dans un journal puis validées. Cela peut prendre un certain temps avant que les modifications ne soient validées. Le système d'exploitation met souvent en cache les modifications du disque et ne valide les modifications sur le disque que périodiquement. L'exécution de la synccommande doit vider toutes les modifications en attente sur le disque. Le montage du disque avec l' syncoption améliorera la vitesse sur le disque, mais le travail sera plus difficile.

BillThor
la source
1
Oui, je sais que je peux supprimer des fichiers ouverts. Je connais les relations entre les entrées de répertoire et les inodes. Mais je suis sûr que les fichiers n'étaient pas ouverts, sinon je ne pourrais pas démonter le système de fichiers ... Mais votre deuxième élément semble intéressant. Peut-il vraiment falloir plus de 30 minutes pour que les fichiers supprimés soient validés? 30 minutes est le temps entre la suppression des fichiers et le coucher avant-hier, donc je ne peux pas dire combien de temps cela a vraiment pris.
Markus N.
1
@MarkusN. Certains systèmes d'exploitation mettent en cache de nombreuses données du système de fichiers. Si l'espace n'est pas nécessaire, ils peuvent écrire suffisamment de données du journal des transactions pour s'assurer que l'espace est libéré, mais prennent leur temps pour libérer l'espace. Si vous démontez une clé USB après avoir écrit de nombreuses données, le vidage des données peut prendre beaucoup de temps avant de pouvoir être retiré. Il s'agit d'un compromis entre l'écriture sécurisée sur le disque et le fait de ne pas retarder d'autres actions.
BillThor
Merci pour l'édition. Mais comme vous le voyez dans ma question d'origine, j'ai déjà essayé la synchronisation sans effet.
Markus N.
1
@MarkusN. Je ne pense pas que la synchronisation soit aussi efficace qu’autrefois. Cela garantit simplement que les données du journal sont écrites, pas nécessairement que toutes les modifications sont validées. Unmount / mount forcera l'application du journal. Je ne connais pas la priorité de planification pour les suppressions, mais je m'attendrais à ce qu'elle soit relativement faible. Explorer le code peut répondre à plus de vos questions.
BillThor
Cela me semble raisonnable.
Markus N.