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).Réponses:
Je l'ai fait! Je l'ai fait! Je l'ai réparé correctement (je pense).
Voici l'histoire:
Après un certain temps, le serveur s'est révélé défectueux et a dû être mis au rebut. J'ai gardé des disques et obtenu tout le reste nouveau. Ensuite, j'ai réinstallé CentOS à nouveau sur le SSD, puis j'ai attaché les disques durs. LVM a bien fonctionné, les disques ont été reconnus, la configuration a été conservée. Mais le même problème est revenu - après un redémarrage, le volume était inactif.
Cependant, cette fois, j'ai remarqué autre chose - le chargeur de démarrage transmet les paramètres suivants au noyau:
Hmm, attendez une minute, ceux qui ont l'air FAMILIER !
Requête Google rapide, et nous y sommes :
Bien maintenant. Ceci explique cela!
Ainsi, la résolution était (recueillie à partir de plusieurs autres requêtes Google):
/etc/defaults/grub
pour inclure le volume supplémentaire dans les paramètres:crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap
rd.lvm.lv=vg_home/lv_home
rhgb quiet
grub2-mkconfig -o /boot/grub2/grub.cfg
mkinitrd -f -v /boot/initramfs-3.10.0-327.18.2.el7.x86_64.img 3.10.0-327.18.2.el7.x86_64
. Remarque: vos valeurs peuvent varier. Utilisezuname -r
pour obtenir cette version du noyau. Ou lisez simplementmkinitrd
. (Franchement, je ne sais pas pourquoi cette étape est nécessaire, mais apparemment c'est le cas - j'ai essayé sans et cela n'a pas fonctionné)grub2-install /dev/sda
TA-DA! Le volume est actif au redémarrage. Ajoutez-le
fstab
et profitez-en! :)la source
Mise à jour mineure (pour RHEL 7 sur une machine EFI (non BIOS) ):
J'ai du succès en utilisant ces étapes:
/etc/defaults/grub
pour inclure le volume supplémentaire dans les paramètres:rd.lvm.lv=rhel/home
(en plus derhel/root
etrhel/swap
)Reconfigurez grub avec
( note: un autre chemin!)
Reconfigurez initramfs avec
grub2-install /dev/sda
(car j'ai un répertoire vide/usr/lib/grub/
)la source
_netdev
drapeaufstab
, activerchkconfig netfs on
et même arrêteruse_lvmetad = 0
lelvmetad
en/etc/lvm/lvm.conf
tout dans l' espoir que les périphériques re-sondé et repris ...J'ai aussi eu ce problème. Dans mon cas, c'était une combinaison de iscsi, multipath et lvm et de l'ordre de création de session, etc. J'ai résolu le problème en ajoutant un appel
/sbin/vgchange -a y
à/etc/rc.local
.la source
J'ai donc essayé le paramètre rd.lvm.lv = dans / etc / default / grub et cela n'a pas fonctionné
J'avais besoin que les deux volumes logiques du groupe de volumes ssd_vg soient actifs au démarrage. Ainsi que le volume logique home_lv sur le kubuntu-vg pour être actif
Ce qui a fonctionné, c'était d'éditer /etc/lvm/lvm.conf Dans la section de la liste des volumes, mettez ceci dans volume_list = ["ssd_vg", "kubuntu-vg / home_lv"]
résultat après le redémarrage
$ sudo lvscan inactif Original '/ dev / kubuntu-vg / root' [50.00 Gio] hérite
la source
Pour ma part, j'ai commenté cette ligne dans /etc/lvm/lvm.conf
Parce que s'il est actif, seuls les volumes vg00 et vg01 sont actifs au démarrage.
La documentation de lvm.conf:
la source