Jetzt mal ehrlich, jeder sagt dir das der Umstieg von Linux nach Opernsolaris leicht und locker ist. Mag ja auch im Großen und Ganzen stimmen…
Was mir allerdings immer wieder passiert ist die verzweifelte Suche in /etc/init.d nach einem RC-Script um Serverdienste zu starten, stoppen und Co.
Bei unserem Freund Opernsolaris (und auch Solaris) kommt das Service Management Facility (SMF) zum Einsatz. Hier handelt es sich um eine, nennen wir es mal, “globale Dienstverwaltung”.
SMF kann man getrost als die Ablöse der oben schon angesprochenen RC-Scripte betrachten.
Ein Service kann den folgenden Status inne haben:
- online — Service ist aktiv und gestartet
- offline — Service ist aktiviert, aber nicht gestartet
- degraded — Service ist aktiviert, aber mit eingeschränkten Ressourcen gestartet
- maintenance — Service ist aktiviert, beim Start trat allerdings ein Fehler auf
- uninitialized — Status vor eingelesener Konfiguration
- legacy run — über normales RC-Script aufgerufen
- disabled — nicht aktiviert und nicht gestartet
SMF kann allerdings noch wesentlich mehr: Es dient auch zur Verwaltung von Geräten, Runlevels und Milestones.
Der Fault Management Resource Identifier (FMRI) identifiziert die Dienste im System und ist gleichzeitig Service und Instanzbezeichnung.
Ein typischer Aufbau ist
- svc:/network/login:rlogin
- svc:/Service:Instanz
Services werden wie folgt einkategorisiert
- application
- milestone
- platform
- device
- network
- site
- system
Benutzt diese Einteilung einfach weiter, da es im erstem Moment zwar sicherlich logischer erscheinende Gruppen gibt, aber auf Dauer werdet ihr mit diesen o.g. locker auskommen und auch schnell und logisch eure Dienste finden.
==> Es gibt die Möglichkeit in Opernsolaris wie gewohnt RC-Scripte anzulegen, hier wird aus /etc/init.d ein symlink Richtung /etc/rc.RUNLEVEL.d gebaut… Hierauf möchte ich aber nicht näher eingehen, da wir uns ja mit SMF beschäftigen wollen ;)
Was macht nun SMF genau?
SMF nutzt eine Sqlite-Datenbank für seine Verwaltung und gibt dem Admin die Möglichkeit mittels einer Hand voll Befehlen diese Datenbank für sich zu nutzen.
- svcadm — Starten, Stoppen, bearbeiten von Serviceinstanzen
- svcs — Statusabfragen von Services
- svccfg — Konfiguration von Services
- svcprop — Abfragen f. Shellscripte
- inetadm — Verwaltung von inetd kontrollierten Services
- vp-services — GUI mit bunt das svcadm und svcs bunt macht
AUF AUF in die PRAXIS
Wir schnappen uns ein Opfer: svc:/system/zones:default
Man verzeihe mir die Screenshots aus der gebooteten LiveCD ;)

Wer auf ein plauderndes OS steht, oder sich einfach nicht sicher ist was da gerade passiert, möge die -v Option verwenden.

Die Prozesse der FMRIs findet man mit dem -p Schalter

Locker leichte Auflistung der kompletten Services und fixe Suche mit unserem alten Freund “grep”
Wichtig, weil Tagwerk:
Services aktivieren und deaktivieren mittels
- svcadm enable (o. Disable) svc:/Service:Instanz
Wenn mal was schief läuft:
Sollte beim Aktivieren mal etwas schief laufen gibt es ein einfaches Vorgehen:
Das FMRI wechselt dank des fehlerhaften Starts in den maintenance Modus und kann mit svcadm -xv Service gefunden werden.
Hat man das Problem beseitigt (bei mir meist eine verspielte apache.conf) setzt man ein svcadm clear ab um die maintenances zu bereinigen und kann den Dienst wieder starten.
Der Aufruf von svcadm -xv Service liefert auch erweiterte Informationen über den Dienst und den momentanen Zustand.
Mittels svcadm mark Service lässt sich ein Service auch von Hand in maintenance setzen und somit beim Reboot nicht mitstarten. Ist sehr nett wenn man in Umstrukturierungen oder im Testbetrieb steckt.
Mein Fazit:
SMF macht uns das Leben leichter, wenn man sich dran gewöhnt hat.
Ich habe SMF am Anfang wirklich verflucht, weil /etc/init.d/ tab tab tab “HAB DICH!” doch wesentlich einfacher erscheint…
Wenn man aber erst mal bei SMF einigerma√üen durchgestiegen ist macht die Arbeit damit richtig Spaß und man hat ein bessere Feeling für sein System.
######
Update:
Was Milestones und Runlevel in SMF angeht wird vom Opensolarishandbuch zwar abgeraten, aber trotz allem ein paar Zeilen hierzu:
Der Standard-Runlevel ist 3 — der passende FMRI hierzu: milestone:/multi-user-server:default
Es gibt (afaik) drei milestones:
- milestone:/single-user:default Runlevel s/5 Einbenutzermodus
- milestone:/multi-user:default Runlevel 2 Mehrbenutzermodus ohne NFS
- milestone:/multi-user-server:default Runlevel 3 Mehrbenutzermodus mit NFS
Die weiteren UNIX Runlevel sind in Opensolaris logischerweise ebenfalls vorhanden, benötigen nur keinen milestone ;)