web-dev-qa-db-fra.com

Monter automatiquement un volume logique sur un lecteur de disque externe LVM partitionné

Problème

J'ai un disque dur externe avec un volume logique fonctionnant parfaitement qui peut être monté avec:
udisksctl mount -b /dev/mapper/wd0hdd-wd0
Il va créer un nouveau répertoire sous /media/username/wd Qui est le comportement attendu puisque wd est l'étiquette de mon disque wd0 Le nom de mon volume logique et username mon nom d'utilisateur.

Cependant, j'aimerais que ce volume logique puisse être monté automatiquement (sans taper cette commande) lorsque je branche le disque dur externe, tout comme udisks2 le fait généralement avec une partition linux standard (non lvm). [Problème1]

De plus, j'ai remarqué que /media/username/wd Appartient à root: root avec 755 droits ce qui est problématique car je ne peux pas créer de fichiers/répertoire à la racine de ma partition en tant qu'utilisateur normal. Pour la partition linux standard, le répertoire créé appartient à username ce qui est attendu [Problème2]

Enfin, Nautilus n'affiche pas le volume dans le volet gauche comme d'habitude pour la partition linux standard, mais plutôt dans Other Locations. Cependant, l'extension gnome Place Status Indicator Répertorie correctement le nouveau wd sous mes autres lecteurs. [Problème3]

Solution attendue

Trouvez un moyen de dire à udisks2 de considérer qu'un volume logique donné doit être monté automatiquement en tant que support amovible.

Reproduire

Configurez un lecteur externe avec une seule partition logique:

Sudo lvmdiskscan # Suppose sdc is the candidate
Sudo pvcreate /dev/sdc
Sudo vgcreate wd0hdd /dev/sdc1
Sudo lvcreate -l 100%FREE -n wd0 wd0hdd
Sudo mkfs.ext4 /dev/wd0hdd/wd0

[Facultatif] utilisez Gnome-Disk pour changer l'étiquette du disque en wd

Redémarrez Ubuntu et voyez ce qui se passe dans nautilus et dans /media/username Lorsque

  • disque branché pendant le démarrage
  • disque branché une fois le démarrage terminé

Diagnostique

Dites-moi ce qui pourrait être utile ici.

J'ai essayé de trouver quelque chose d'utile dans le journal pour aider à suivre le problème, il n'y a rien de pertinent affiché par journactl mais il peut y avoir des indices sur ce qui ne va pas grâce à udisksctl monitor Juste après avoir monté l'appareil avec udisksctl mount -b /dev/mapper/wd0hdd/wd0

17:49:54.019: Added /org/freedesktop/UDisks2/jobs/2
 org.freedesktop.UDisks2.Job:
   Bytes:              0
   Cancelable:         true
   ExpectedEndTime:    0
   Objects:            ['/org/freedesktop/UDisks2/block_devices/dm_2d5']
   Operation:          filesystem-mount
   Progress:           0.0
   ProgressValid:      false
   Rate:               0
   StartTime:          1553186994019094
   StartedByUID:       0
17:49:54.095: /org/freedesktop/UDisks2/jobs/2: org.freedesktop.UDisks2.Job::Completed (true, '')
17:49:54.095: Removed /org/freedesktop/UDisks2/jobs/2
17:49:54.140: /org/freedesktop/UDisks2/block_devices/dm_2d5: org.freedesktop.UDisks2.Filesystem: Properties Changed
 MountPoints:          /media/mil/wd1
17:49:54.141: /org/freedesktop/UDisks2/block_devices/dm_2d5: org.freedesktop.UDisks2.Block: Properties Changed
 UserspaceMountOptions:        uhelper=udisks2
17:49:54.141: /org/freedesktop/UDisks2/block_devices/sdd: org.freedesktop.UDisks2.PartitionTable: Properties Changed
 Partitions:           ['/org/freedesktop/UDisks2/block_devices/sdd1']

Je ne sais pas si ce UserspaceMountOptions: uhelper=udisks2 Pourrait m'aider si je parviens à modifier ces options de montage.


Tentatives ratées

La propriété HintAuto et udisks2

HintAuto est une propriété qui peut être remplacée grâce à UDISKS_AUTO Dans udisks2. J'ai repéré que la partition physique udisksctl info -b /dev/sdc1 | grep HintAuto -> HintAuto: true. Cependant, HintAuto est faux pour le périphérique logique udisksctl info -b /dev/mapper/wd0hdd-wd0 | grep HintAuto -> HintAuto: false

J'ai réussi à remplacer la valeur de HintAuto pour le volume logique grâce à des règles udev comme expliqué dans Automount LVM volume logique avec une règle udev et udisks2 mais cela n'a pas résolu mon problème depuis udisks2 ne monte toujours pas automatiquement la partition.

Solution insatisfaisante

Utilisez /etc/fstab Soit en éditant directement, soit en utilisant gnome-disk-utility, cela résout simplement le problème de montage automatique au démarrage mais pas si je branche le dernier disque. En outre, cela ne résout pas le problème 2 ni le problème 3 (je pensais que x-gvfs-show résoudrait mais non) et pour autant que je sache /etc/fstab Est pour le lecteur statique et udisks2 est pour toutes sortes de lecteurs amovibles, donc je préfère une solution udisks2.

Utilisez un script Shell génial démarré par un démon détectant le moment où le disque est branché. Huum bien peut-être si je n'ai pas d'autre choix mais je n'ai trouvé aucun script résolvant les trois problèmes mentionnés ci-dessus. Je pense également que le travail pourrait être effectué par udisks2.

Dites à udisks2 de monter automatiquement tout le volume logique. Ce ne serait pas souhaitable car une partie de mon volume logique est un autre système Linux. De toute façon, je n'ai trouvé aucun moyen de le faire.


Motivation

Les gens pourraient demander:
- Pourquoi une seule partition LVM sur tout le disque au lieu d'une seule partition standard? KISS!
- Oui, tu as raison ! Cependant, ce que j'essaie de réaliser ici n'est qu'un scénario plus simple de ce que je veux réaliser à la fin. J'ai un autre disque sur lequel j'ai installé une petite partition ESP pour le démarrage multiple en mode EFI et un autre volume physique LVM contenant deux volumes logiques avec deux linux différents et un troisième énorme volume logique pour les données multimédias La plupart du temps, ce disque est simplement branché sur mon ordinateur personnel, donc j'utilise uniquement la partition de stockage des données multimédias pour la sauvegarde et la musique, mais parfois je vais à d'autres endroits sans mon ordinateur et n'apporte que mon disque, donc je peux démarrer avec mon propre linux, emacs et lecteur de musique configuré comme j'aime et commencer à travailler dans un environnement agréable.Dans ce contexte, LVM est vraiment utile pour cette configuration pour redimensionner et gérer facilement le cryptage.

4
Émilien

Enfin, après tant d'essais, la meilleure et la seule solution de travail que j'ai trouvée pour monter automatiquement un volume logique est d'utiliser SystemD. Crée ton <path-to-mount-folder>.mount et <path-to-mount-folder>.automount fichier sous /etc/systemd/system/

media-username-wd.mount

[Unit]
Description=Western Digital external drive mount in media

[Mount]
What=/dev/wdhdd0/wd0
Where=/media/username/wd
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target

media-username-wd.automount

[Unit]
Description=Western Digital external drive automount in media

[Automount]
Where=/media/username/wd

[Install]
WantedBy=multi-user.target

Installez ces nouveaux services

systemctl daemon-reload
systemctl disable media-mil-wd.mount
systemctl enable media-mil-wd.automount

Le service .mount est désactivé et seul le .automount est activé exprès. Le premier est utilisé dans l'esprit de fstab pour monter la partition au démarrage et le second pour monter automatiquement la partition lorsqu'il est détecté (le lecteur externe est branché). Bien que l'existence d'un .mount un fichier est requis pour chaque .automount fichier créé, il n'est pas obligatoire d'activer le service.

Vérifier l'état

systemctl start media-mil-wd.automount
systemctl status media-mil-wd.automount

Je voudrais remercier Tomáš Tomeček pour son inestimable article Automount avec SystemD qui aurait pu me faire gagner des heures de lecture manuelle udev si seulement je l'avais découvert plus tôt.

Enfin cette solution est maintenant assez bonne pour moi elle résout mon problème principal [Problème1] et aussi [Problème2] qui est Nice. Cependant cela ne résout pas [Problem3] mais je peux vivre avec ça pour l'instant.

Je suis toujours ouvert à toutes suggestions surtout si elles sont soit plus simples, soit permettent de résoudre le [Problème3] qu'est l'intégration parfaite dans Nautilus.

3
Émilien