web-dev-qa-db-fra.com

Comment monter automatiquement les lecteurs après le démarrage?

Dans https://askubuntu.com/a/119818/5032 qbi dit:

ajoutez noauto à votre fstab:

...

Le système de fichiers ne sera donc pas automatiquement monté au démarrage. De plus, vous écrivez un script qui monte votre mhddfs et l'ajoutez à un moment ultérieur du processus de démarrage.

Mais comment faites-vous cela? Mes fusions ne montent jamais tous leurs disques au démarrage, probablement parce qu'ils ne sont pas montés avant? C'est la dernière entrée de fstab, comme ceci (mais avec plus de lecteurs):

/mnt/EXT4_drive/drivepool:/mnt/NTFS_drive/drivepool:/mnt/anotherdrive/drivepool /mnt/drivepool Fuse.mergerfs defaults,allow_other,minfreespace=100M 0 0

Lorsque j'exécute df après l'amorçage, le nom du lecteur ne montre que certains des points de montage sont inclus et une fraction de l'espace qu'il devrait avoir avec chacun d'entre eux. Ils ne sont donc pas inclus s'ils ne sont pas prêts. ? Je dois exécuter manuellement Sudo umount /mnt/drivepool ; Sudo mount /mnt/drivepool après l’amorçage pour résoudre le problème et les afficher tous.

De plus, l'ordinateur a plus d'une fois démarré en "Bienvenue en mode d'urgence!" lorsqu’un des lecteurs était automatiquement en mode fsck alors qu’il essayait de monter /mnt/drivepool. Cela n’est pas arrivé récemment, peut-être à cause d’un changement dans mergerfs qui lui permet d’ignorer les lecteurs non-prêts au lieu de s’arrêter à cause d’eux?

Comment monter automatiquement /mnt/drivepool _ ASAP après tout le reste de fstab a été monté et fscké avec succès?

2
endolith

Ok donc après beaucoup de lecture:

Depuis Ubuntu 15.04, les entrées fstab sont converties en systemd unités (_*.mount_ fichiers trouvés sous _/run/systemd/generator_) par _systemd-fstab-generator_ et sont ensuite montés sans ordre particulier. C'est pourquoi le mien échouait.

Cependant, systemd prend en charge les dépendances, qui peuvent être spécifiées à l'aide de l'option fstab x-systemd.requires .

x-systemd.requires =
Configure une dépendance requiert = et une dépendance après = entre l'unité de montage créée et une autre unité systemd, telle qu'un périphérique ou une unité de montage. L'argument doit être un nom d'unité ou un chemin absolu vers un nœud de périphérique ou un point de montage. Cette option peut être spécifiée plusieurs fois. Cette option est particulièrement utile pour les déclarations de point de montage nécessitant la présence d'un périphérique supplémentaire (tel qu'un périphérique de journal externe pour les systèmes de fichiers de journalisation) ou d'un montage supplémentaire à placer (), tel qu'un fichier de superposition. système qui fusionne plusieurs points de montage ). Voir After = et requiert = dans systemd.unit (5) pour plus de détails.

Ainsi, pour chaque montage prérequis, vous ajoutez une entrée distincte au montage fstab, qui comprend les noms de chemin:

_x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,...
_

Lors de ma première tentative, j'ai omis un _/mnt/_ et mon ordinateur a refusé de démarrer et est devenu en lecture seule. ಠ_ಠ Pour éviter cela, vous devez également ajouter nofail. Cela fait du point de montage un "besoin" pour _local-fs.target_ au lieu d'un "requiert", de sorte que l'ordinateur continuera à démarrer en cas d'échec.

Ensuite, lorsque vous faites _mount -a_, il se plaindra de

_Fuse: unknown option `nofail'
_

mais ça fonctionne quand même. ಠ_ಠ

Voici ma ligne complète de fstab, qui a fonctionné à chaque fois depuis que je l'ai changée:

_/mnt/EXT4_backup/drivepool:/mnt/WIN7_BACKUP/drivepool:/mnt/XP/drivepool:/mnt/NTFS_3TB/drivepool /mnt/drivepool Fuse.mergerfs nofail,defaults,allow_other,minfreespace=100M,x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,x-systemd.requires=/mnt/EXT4_backup,x-systemd.requires=/mnt/WIN7_BACKUP 0 0
_
6
endolith