Comment nettoyer une liste d'inode orphelin non traitée?

17

J'ai essayé de monter un système de fichiers monté en lecture seule auparavant accessible en écriture :

mount -o remount,rw /mountpoint

Malheureusement, cela n'a pas fonctionné:

mount: /mountpoint not mounted already, or bad option

dmesg rapports:

[2570543.520449] EXT4-fs (dm-0): Couldn't remount RDWR because of unprocessed orphan inode list.  Please umount/remount instead

A umountne fonctionne pas non plus:

umount /mountpoint
umount: /mountpoint: device is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

Malheureusement, aucun lsofdes deux fuserne montre aucun processus accédant à quelque chose situé sous le point de montage.

Alors - comment puis-je nettoyer cette liste d'orphelins non traités pour pouvoir remonter le système de fichiers sans redémarrer l'ordinateur?

bmk
la source
1
Avez-vous déjà essayé fuser -km /mountpoint? Attention cependant, l'indicateur -k va tuer tous les processus accédant à ce répertoire.
Richard Keller
Pouvez-vous nous donner un peu plus d'informations sur la composition de dm-0?
Thinice
J'ai l'impression de savoir ce qui se passe, mais pouvez-vous me dire si le système de fichiers était à l'origine rw, remonté (en raison d'une erreur ata ou autre) ro, et maintenant vous essayez de rw à nouveau?
Matthew Ife
@Mlfe: Le système de fichiers était auparavant remonté ropar objectif. Il s'agit d'un système de fichiers sur un LVM contenant un instantané de sauvegarde quotidien qui sera défini rwpendant l'opération de sauvegarde et roaprès avoir terminé la sauvegarde.
bmk

Réponses:

6

Vous nettoyez la liste des inœuds orphelins non traités en démontant et en remontant le système de fichiers.

Une discussion approfondie de la liste de diffusion linux-ext4 contient plus d'informations sur ce qu'est ce message et pourquoi il peut apparaître. En bref, l'une des deux choses s'est produite: soit vous avez rencontré un bogue du noyau, soit beaucoup plus probablement, une corruption du système de fichiers s'est produite une des fois précédentes où vous avez remonté le système de fichiers en lecture seule. C'est probablement pourquoi le système pense que quelque chose utilise toujours le système de fichiers alors qu'il n'y en a pas.

Si cela fait un an et que vous n'avez toujours pas redémarré la machine, abandonnez et planifiez une fenêtre de maintenance.

Michael Hampton
la source
Pendant ce temps, j'ai planifié une fenêtre de maintenance et redémarré la machine. Cela a résolu le problème (je ne m'attendais à rien d'autre ...). J'accepterai votre réponse. Vous avez probablement raison qu'il y a eu une corruption du système de fichiers - bien que je ne puisse pas le prouver.
bmk
25

Si vous utilisez ext2 / ext3 / ext4, vous devriez pouvoir utiliser e2fsckpour nettoyer les inodes orphelins:

e2fsck -f

Pour reiserfs, vous pouvez utiliser reiserfsckqui nettoiera également les inodes orphelins.

Richard Keller
la source
Vous ne savez pas pourquoi cela a été rejeté, peut-être fournir une raison pour le vote négatif? L'exécution d'e2fsck nettoie les inodes orphelins, que vous verrez dans la sortie de la console comme clearing orphaned inode XXXXoù XXXX est un numéro d'inode. Vous pouvez facilement exécuter e2fsck sans redémarrer le système. Après avoir exécuté e2fsck, vous devriez pouvoir remonter la partition.
Richard Keller
2
Merci beaucoup. Je passe des heures à trouver l'erreur. Faire 'e2fsck -f / dev / sda1' a corrigé les nœuds orphelins pour moi avec quelques autres correctifs. Je viens de dire oui à tous et fonctionne très bien maintenant :)
whitehat
1
Merci beaucoup!!. Vos commandes ont corrigé le disque VM VirtualBox en lecture seule après l'installation de la nouvelle version de VirtualBox infructueuse: sudo e2fsck -f / dev / sda1
nine9five
2
Parfait, a fonctionné pour moi sur la partition racine. La réponse acceptée (redémarrage) n'a pas fonctionné seule. J'ai dû redémarrer après e2fsck, il semble donc que vous ayez toujours besoin d'une fenêtre de maintenance.
AdamS
1
Meilleure réponse que celle acceptée. Cela a parfaitement fonctionné pour mon VPS. Trouvé beaucoup d'erreurs et corrigé, que redémarrer et tout fonctionne à nouveau. J'ai sauvé ma journée.
Brain Foo Long
6

e2fsck -f <mount point> ne fonctionnera pas.

Découvrez d'abord les points de montage avec

sudo mount -l

Fsck ensuite le lecteur directement.

Par exemple pour moi

sudo e2fsck -f /dev/xvda2
Ganesh Krishnan
la source
Lorsque vous recherchez un problème sur Google et arrivez à votre propre solution sur stackoverflow. Ma vie est maintenant terminée.
Ganesh Krishnan
1

Je recommanderais de démonter d'abord la partition avec force, c'est-à-dire en utilisant l'option -f, et en exécutant une vérification du système de fichiers en utilisant fsck.

Wolfgangsz
la source
1
Malheureusement, cela umount -fn'a pas réussi non plus. Le message d'erreur est le même qu'avec une plaine umount.
bmk
1

Vous devriez probablement essayer un démontage paresseux, c'est-à-dire:

umount -l

la source