Un démontage paresseux crée une monture pour chat Schrödinger
- Vous ne pouvez pas savoir si l'appareil est réellement démonté ou non
- Le système de fichiers "non monté" reste accessible dans certaines circonstances
- Le système de fichiers "non monté" n'est pas accessible dans certaines circonstances
Il y a un faux sentiment de sécurité : il semble que le système de fichiers ait été démonté, mais en réalité il n'a été caché que dans l'espace de noms / hiérarchie des fichiers.
- Les processus peuvent toujours écrire via des descripteurs de fichiers ouverts
- Des fichiers nouveaux ou existants peuvent être ouverts pour l'écriture par des processus avec un répertoire de travail à l'intérieur du point de montage via des chemins d'accès relatifs
Cela signifie que si vous umount -l /media/hdd
ne pourrez plus accéder à /media/hdd/dir/file
(nom de chemin absolu) mais si vous avez un processus avec un répertoire de travail, /media/hdd
il pourra toujours créer de nouveaux processus pouvant lire / écrire ./dir/file
(nom de chemin relatif).
Si vous essayez de démonter l'appareil, vous obtiendrez un message déroutant:
# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted
Cela donne l'impression que l'appareil n'a pas été compté, mais il peut toujours y avoir des processus d'écriture sur le disque.
Puisqu'il existe diverses situations non évidentes qui peuvent entraîner le blocage de umount , le système de fichiers peut ne pas être démonté même s'il lsof +f -- /dev/device
n'affiche rien.
Vous ne saurez jamais si le système de fichiers se démonte réellement. Il n'y a aucun moyen de le savoir.
Périphériques amovibles
Si vous faites umount -l
un disque amovible, vous êtes dans les limbes: vous ne pouvez pas être sûr que toutes les données en attente ont été écrites sur le disque.
Le mieux que vous puissiez faire après un umount -l
est de vous assurer que toutes les écritures sont terminées et d'empêcher toute écriture future , mais vous ne pouvez toujours pas garantir qu'elle a été démontée.
Avec les appareils amovibles, si l'appareil n'est pas correctement démonté, un comportement étrange peut se produire la prochaine fois qu'il est branché:
Le périphérique recevra un nom de périphérique incrémenté, c'est-à-dire /dev/sdb
devient /dev/sdc
. Les messages du journal du noyau peuvent toujours faire référence /dev/sdb
même si ce périphérique n'existe plus en tant que fichier sous /dev
. (La seule façon que je connais pour résoudre ce problème est de redémarrer.)
la corruption de btrfs peut en résulter. btrfs s'attend à ce qu'un seul système de fichiers avec un UUID donné soit présent à la fois. Le noyau voit toujours le même UUID disponible sur le périphérique fantôme et le nouveau périphérique. (J'ai dû reconstruire mon disque dur de sauvegarde btrfs).
systemd
gotchas