Ich habe einen Linux-Server von CentOS 6 auf 7 neu installiert. Der Server verfügt über 3 Laufwerke - ein System-SSD-Laufwerk (es hostet alles außer /home
) und zwei 4-TB-Festplattenlaufwerke, auf denen gehostet wird /home
. Alles benutzt LVM. Die beiden 4-TB-Laufwerke werden gespiegelt (mithilfe der RAID-Option in LVM selbst) und sind vollständig mit der Partition / home gefüllt.
Das Problem ist, dass die 4-TB-Festplatten zwar gut erkannt werden und LVM das Volume problemlos erkennt, es jedoch nicht automatisch aktiviert. Alles andere wird automatisch aktiviert. Ich kann es manuell aktivieren und es funktioniert.
Ich habe ein Image des alten Systemlaufwerks in / home. Das enthält auch LVM-Volumes. Wenn ich es mit montiere kpartx
und LVM diese aufnimmt und aktiviert. Aber ich kann keinen Unterschied zwischen diesen und den inaktiven Volumes erkennen.
Das Root-Dateisystem ist ebenfalls LVM, und das wird einwandfrei aktiviert.
Ich sehe jedoch eine Besonderheit: Beim Ausführen muss lvchange -aay
ich angeben, welche Laufwerke ich aktivieren möchte. Es macht es auch nicht automatisch. Wenn ich spezifiziere lvchange -ay lv_home
- das funktioniert.
Ich kann nichts finden, was für dieses Verhalten verantwortlich sein könnte.
Hinzugefügt: Ich habe festgestellt, dass das alte System (das init verwendet hat) vgchange -aay --sysinit
in seinen Startskripten enthalten ist. Der neue verwendet systemd, und ich sehe den vgchange
Aufruf nicht in seinen Skripten. Aber ich weiß auch nicht, wo ich es hinstellen soll.
Hinzugefügt 2: Beginnen, systemd herauszufinden. Ich fand heraus, wo sich die Skripte befinden, und begann zu verstehen, wie sie aufgerufen werden. Fand auch, dass ich die ausgeführten Skripte mit sehen konnte systemctl -al
. Das zeigt mir , dass nach dem Start lvmetad
ruft es pvscan
für jedes bekanntes udev Blockgerät. Zu diesem Zeitpunkt gibt es jedoch nur ein registriertes udev-Blockgerät, und das ist eines der erkannten lvm-Volumes. Die Festplatten sind auch da, aber unter verschiedenen Pfaden und viel längeren Namen. Das erkannte Blockgerät ist so etwas wie 8:3
, während die Festplatten so sind /device/something/
. Ich bin nicht mehr am Server, daher kann ich es nicht genau schreiben (wird später behoben).
Ich denke, dass es etwas mit udev und Geräteerkennung / -zuordnung zu tun hat. Ich werde abends weitermachen und dann udev lernen.
Wenn alles andere fehlschlägt, habe ich das aufrufende Skript gefunden pvscan
und überprüft, ob ich es so ändern kann, dass alle Geräte ständig gescannt werden. Das behebt das Problem, aber es sieht nach einem ziemlich hässlichen Hack aus, also werde ich versuchen, die wahre Grundursache herauszufinden.
Hinzugefügt 3 : OK, ich weiß immer noch nicht, warum dies passiert, aber zumindest habe ich eine ziemlich passable Problemumgehung gemacht. Ich habe einen anderen systemd-Dienst erstellt, der den pvscan
einmaligen Aufruf direkt nach dem Start aufruft lvmetad
. Der andere Anruf für das bestimmte Gerät ist immer noch da, und ich denke, es ist tatsächlich der Anruf udev
(das ist der einzige Ort, an dem ich einen Hinweis darauf gefunden habe). Warum es nicht für die anderen Festplatten heißt - ich habe keine Ahnung.
lvmetad
- ich habe keine anderen bemerkt).