SMF sous Solaris 10 (part 1)
Les entrailles de SMF
2.1 Service SMF
L'élément central de l'infrastructure SMF est l'instance de service. C'est le même concept qu'en programmation orientée objet (POO). Chaque service peut être lancé plusieurs fois en même temps avec une configuration différente pour chaque instance. On peut aussi lancer un même service plusieurs fois avec une seule configuration. Un serveur FTP, par exemple, est un service. Le serveur FTP spécifique (ftpd par exemple) lancé et configuré pour écouter sur le port 21 est une instance. Toutes les instances d'un seul service sont gérées comme des enfants de l'objet service.
Un service n'est pas juste un daemon comme dhcpd ou httpd, un service peut aussi représenter une application telle que Oracle. En plus, un service possède des attributs comme une configuration IP, une configuration du noyau et milestone (représentation du runlevel).
Pour résumer, un service est une liste d'attributs à appliquer au lancement d'un daemon ou d'une application.
2.2 Service Configuration Repository
La configuration des services est à la fois stockée dans des fichiers et en mémoire, ce qui facilite le partage entre les instances.
La partie physique est un fichier XML appelé manifest. Ces manifests sont stockés dans le dossier /var/svc/manifest.
Il ne faut pas modifier ces fichiers directement, il faut passer par les outils de configuration fournis par SMF.
2.3 Service Identifiers
Toute instance est nommée par un FMRI (Fault Management Resource Identifier). Un FMRI est composé du nom du service et du nom de l'instance. Par exemple le FMRI de rlogin est : svc:/network/login:rlogin, où network/login définit le service et rlogin définit l'instance.
D'autres formats existent :
svc://localhost/network/sshd:default
svc:/network/sshd:default
network/sshd:default
Les scripts dans le dossier init.d sont aussi représentés par un FMRI qui commence par lrc au lieu de svc, par exemple : lrc:/etc/rcS_d/S35cacheos_sh. Les services d'init.d peuvent uniquement être surveillés par SMF, ils ne peuvent pas être administrés.
Lors du premier démarrage de SMF, les services gérés par inetd sont automatiquement convertis. Tous les services présents dans le fichier /etc/inetd.conf sont représentés de la façon suivante : network/<nom-du-service>/<protocole> par exemple /network/tftpd/udp6
De même, pour les services utilisant le protocole RPC, la syntaxe après conversion est : network/rpc-<nom-du-service>/rpc_<protocole>
2.4 États du service
Grâce à SMF, l'administrateur peut consulter l'état d'un service à un instant T. Voici les différents états que peut avoir un service :
online : une instance a été lancée et elle a démarré sans problème
offline : une instance a été lancée, mais le service n'est pas disponible
disabled : aucune instance est lancée, donc le service est indisponible
legacy_run : le service de type init.d est lancé
degrated : une instance a été lancée, mais le service est limité
maintenance : l'instance nécessite une action de l'administrateur pour résoudre une erreur
uninitialized : état initial de tous services avant que la configuration soit lue
2.5 Profiles SMF
Un profile est un fichier XML où sont listées les instances à lancer au démarrage de la machine. Les profiles sont stockés dans le répertoire /var/svc/profile/. Il existe des profiles par défaut :
generic_open.xml : ce profile lance les services réseau les plus communs. C'est le profile par défaut.
generic_limited_net.xml : ce profil ne lance que quelques services dont sshd et nfsd.