
Bei einem meiner Kunden hat der Mitarbeiter vor Ort den lokalen Solaris 10 x86-Server heruntergefahren, die Stromzufuhr unterbrochen, ihn verschoben und jetzt startet er nicht mehr richtig. Er bootet und zeigt dann eine Eingabeaufforderung an, mit der Sie sich anmelden können. Dies scheint ein Meilenstein für Einzelbenutzer (oder etwas Entsprechendes) zu sein.
Wenn ich mich damit auseinandersetze, denke ich, dass SMF dem System nicht erlaubt, auf mehrere Benutzer umzuschalten. SMF hat eine Menge Fehler bei Autofs generiert, nach einigem Herumprobieren habe ich es dazu gebracht, stattdessen Fehler bei Inetd und NFS/Client zu generieren. Das alles sagt mir, dass das Problem in einer SMF-Statusdatei oder Datenbank liegt, die repariert/gelöscht/neu erstellt oder so etwas werden muss, aber ich weiß nicht, was das eigentliche Problem ist.
Mit „Fehler generieren“ meine ich, dass ich jede Sekunde eine Meldung auf der Konsole erhalte, die besagt: „Zeitüberschreitung beim Beenden der Methode oder des Dienstes. Vertrag <#> wird beendet.“ Dies erschwert die Interaktion mit dem Computer.
Beim Ausführen von svcs –xv wird der Dienst als „aktiviert“ angezeigt, im Status „deaktiviert“, Grund „Startmethode wird ausgeführt“. Das Herumspielen mit svcadm am Dienst bewirkt nichts, außer dass bestätigt wird, dass sich der Dienst nicht im Wartungsstatus befindet.
Protokolle in /lib/svc/log/$SERVICE sagen Ihnen nur, dass diese Schleife einmal pro Sekunde aufgetreten ist. Protokolle in /etc/svc/volatile/$SERVICE bestätigen, dass beim Booten versucht wurde, den Dienst zu starten und sofort gestoppt wurde, keine weiteren Einträge. Beachten Sie, dass das Systemprotokoll nicht gestartet wird, da das Systemprotokoll von autofs abhängt, sodass ich kein Syslog oder dmesg habe.
Wenn ich all diese Begriffe google, erfahre ich, wie ich entweder autofs oder nfs/client oder inetd oder rpc/gss debuggen/reparieren kann (dies war die Abhängigkeit, die SMF als Vorwand benutzte, um den „Start“ von nfs/client zu verhindern. Es wurde behauptet, dass rpc/gss „undefiniert“ sei, was falsch ist, da dies alles früher funktioniert hat. Ich habe es mit inetadm wieder aktiviert, aber inetd startet immer noch nicht richtig). Aber ich denke, dass das Problem bei SMF im Allgemeinen liegt, nicht bei den einzelnen Diensten.
Das Ausführen eines restore_repository für „manifest_import“ verbessert die Situation nicht und ändert sie auch nicht merklich. Ich habe kein Boot-Backup verwendet, da die letzten Bootvorgänge nicht nützlich waren.
Ich habe dem Kunden gesagt, dass wir Solaris 10 einfach auf der /-Partition neu installieren könnten, da sich die wertvollen Datenverzeichnisse auf einem separaten Dateisystem befinden (das laut fsck sauber und somit intakt ist). Aber das scheint eine sehr Windows-ähnliche Lösung für dieses Problem zu sein.
Also. Irgendwelche Ideen, welches Teil kaputt ist und wie ich es reparieren kann?
Aktualisierung 1: Ich sollte wahrscheinlich erwähnen, dass dieses System zwei Dateisysteme hat, / und /export. Beide werden per fsck sauber gemacht und ordnungsgemäß gemountet.
Antwort1
Eine häufige Ursache für ein solches Problem ist ein Problem beim Mounten von Dateisystemen aufgrund einer Beschädigung des Dateisystems. Dies kommt immer seltener vor, insbesondere bei lokalen Systemen, aber Ihr Kunde hat das Risiko nicht auf seine Seite gezogen, indem er sowohl die UFS-Protokollierung deaktiviert hat (wodurch die meisten Beschädigungen des Dateisystems durch ein abruptes Ausschalten vermieden werden) als auch ZFS nicht verwendet hat (das von vornherein nicht beschädigt werden kann).
Sie können den ausführlichen SMF-Start aktivieren, indem Sie /boot/grub/menu.lst bearbeiten. Die genaue Vorgehensweise hängt von Ihrer Solaris-Version und Ihrem Update ab, aber normalerweise geschieht dies durch Ersetzen console=graphics
von durch console=text -v -m verbose
in der Zeile, in der der Kernel geladen wird.
Wenn Sie im Einzelbenutzermodus starten möchten, verwenden Sie console=text -v -m verbose,milestone=single-user
.
Um den SMF-Debugmodus zu aktivieren, verwenden Sieconsole=text -v -m debug
Beachten Sie, dass Sie den Grub-Bearbeitungsmodus verwenden können, um diese Optionen vorübergehend festzulegen.