J'ai réinstallé un serveur Linux de CentOS 6 à 7. Le serveur a 3 disques - un disque SSD système (il héberge tout sauf /home
) et deux disques durs 4 To qui hébergent /home
. Tout utilise LVM. Les deux disques de 4 To sont mis en miroir (en utilisant l'option raid dans LVM lui-même), et ils sont complètement remplis avec la partition / home.
Le problème est que bien que les disques de 4 To soient reconnus correctement et que LVM voit le volume sans problème, il ne l’active pas automatiquement. Tout le reste est activé automatiquement. Je peux l'activer manuellement et cela fonctionne.
J'ai une image de l'ancien lecteur système dans / home. Cela contient aussi des volumes LVM. Si je le monte avec kpartx
, et LVM les prend et les active. Mais je ne vois aucune différence entre ces volumes et les volumes inactifs.
Le système de fichiers racine est également LVM, et cela s'active très bien.
Je vois cependant une chose particulière: l'exécution lvchange -aay
me dit que je dois spécifier quels disques je veux activer. Il ne le fait pas automatiquement non plus. Si je précise lvchange -ay lv_home
- cela fonctionne.
Je ne trouve rien qui pourrait être responsable de ce comportement.
Ajouté: j'ai remarqué que l'ancien système (qui utilisait init) avait vgchange -aay --sysinit
dans ses scripts de démarrage. Le nouveau utilise systemd, et je ne vois pas l' vgchange
appel dans ses scripts. Mais je ne sais pas non plus où le mettre.
Ajouté 2: Commencer à comprendre systemd. J'ai trouvé où se trouvent les scripts et j'ai commencé à comprendre comment ils étaient appelés. J'ai également constaté que je pouvais voir les scripts exécutés avec systemctl -al
. Cela me montre qu'après le démarrage, lvmetad
il appelle pvscan
chaque périphérique de bloc udev connu. Cependant, à ce stade, il n'y a qu'un seul périphérique de bloc udev enregistré, et c'est l'un des volumes lvm reconnus. Les disques durs sont là aussi, mais sous des chemins différents et des noms beaucoup plus longs. Le périphérique de bloc reconnu est quelque chose comme 8:3
, tandis que les disques durs sont comme /device/something/
. Je ne suis plus sur le serveur, je ne peux donc pas l'écrire avec précision (corrigera cela plus tard).
Je pense que cela a quelque chose à voir avec udev et la détection / cartographie des périphériques. Je continuerai le soir et étudierai alors udev.
Si tout le reste échoue, j'ai trouvé le script qui appelle pvscan
et vérifié que je peux le modifier pour analyser tous les appareils tout le temps. Cela résout le problème, mais cela ressemble à un hack plutôt laid, donc j'essaierai de comprendre la véritable cause profonde.
Ajouté 3 : OK, je ne sais toujours pas pourquoi cela se produit, mais au moins j'ai fait une solution de contournement assez passable. J'ai fait un autre service systemd qui appelle pvscan
une fois, juste après le démarrage lvmetad
. L'autre appel pour le périphérique spécifique est toujours là, et je pense que c'est en fait udev
cela qui l'appelle (c'est le seul endroit où j'ai trouvé une référence). Pourquoi il ne l'appelle pas pour les autres disques durs - je n'en ai aucune idée.
lvmetad
, je n'en ai pas remarqué d'autres).