Guide d'administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris

Chapitre 2 Projets et tâches (présentation)

Ce chapitre traite des utilitaires de projet et tâche propres à la gestion de ressources Solaris. Les projets et les tâches servent à identifier les charges de travail et à les distinguer les unes des autres.

Il comprend les sections suivantes :

Pour tirer parti des utilitaires de projet et de tâche, reportez-vous au Chapitre 3Administration des projets et des tâches.

Nouveautés dans les commandes de gestion des ressources et des bases de données de projet pour Solaris 10

La version Solaris 10 inclut les améliorations suivantes :

Outre les informations contenues dans ce chapitre et dans le Chapitre 6Contrôles des ressources (présentation), veuillez vous référer aux pages de manuel suivantes :

Parmi les améliorations de Solaris 10 5/08, figure également l'ajout d'une option -A à la commande projmod. Voir la section Commandes utilisées avec les projets et les tâches .

Vous trouverez une liste complète des nouvelles fonctionnalités de Solaris 10 et la description des différentes versions de Solaris dans le guide Nouveautés apportées à Oracle Solaris 10 9/10.

Utilitaires de projet et de tâche

Pour optimiser le traitement des charges de travail, il est important dans un premier temps d'identifier celles qui sont en cours d'exécution sur le système que vous analysez. Vous ne pouvez pas vous contenter pour cela d'utiliser une méthode entièrement orientée processus ou orientée utilisateur. Le système Solaris met à votre disposition deux utilitaires supplémentaires très pratiques pour distinguer et reconnaître les charges de travail : le projet et la tâche. Un projet fournit un identificateur administratif réseau pour tous les travaux associés. Une tâche réunit les processus sous forme d'une entité gérable représentant un composant charge de travail.

Les contrôles spécifiés dans la base de données de services de noms project s'appliquent au processus, à la tâche et au projet. Comme les contrôles de processus et de tâche sont hérités des appels système fork et settaskid, l'ensemble des processus et des tâches créés au sein du projet héritent de ces contrôles. Pour plus d'informations au sujet de ces appels système, reportez-vous aux pages de manuel fork(2) et settaskid(2).

En se basant sur le critère d'appartenance au projet ou à la tâche, il est possible de manipuler les processus en cours avec des commandes Solaris standard. L'utilitaire de comptabilisation étendue permet d'établir des rapports à la fois sur l'utilisation des processus et sur l'utilisation des tâches et d'attribuer à chaque enregistrement l'identificateur de projet maître. Cela permet de mettre en corrélation l'analyse des charges de travail hors ligne avec les méthodes de contrôle en ligne. L'identificateur de projet peut être partagé entre plusieurs machines via la base de données de services de noms project. Il est donc possible de procéder à une analyse globale de l'utilisation des ressources des charges de travail connexes s'exécutant (ou s'étendant) sur plusieurs machines.

Identificateurs de projet

L'identificateur de projet est un élément administratif prévu pour identifier les charges de travail. Il peut être comparé à une balise de charge de travail à l'échelle des utilisateurs et des groupes. Un utilisateur ou un groupe peut appartenir à un ou plusieurs projets. L'intérêt de ces projets est de représenter les charges de travail auxquelles l'utilisateur (ou le groupe d'utilisateurs) est autorisé à participer. Il est possible de se baser sur ce critère d'appartenance pour imputer les ressources en fonction de leur utilisation ou des allocations initiales. Bien qu'il soit nécessaire d'assigner l'utilisateur à un projet par défaut, les processus lancés par l'utilisateur peuvent être associés à tout projet dont l'utilisateur est membre.

Détermination du projet par défaut des utilisateurs

Pour se connecter au système, l'utilisateur doit être affecté à un projet par défaut. L'utilisateur fait automatiquement partie de ce projet par défaut, même s'il ne figure pas dans la liste d'utilisateurs ou de groupes spécifiée dans ce projet.

Comme chaque processus du système a une appartenance au projet, il est nécessaire de prévoir un algorithme pour attribuer un projet par défaut au processus de connexion ou autre processus initial. Cet algorithme est décrit à la page de manuel getprojent(3C). Le système suit des étapes dans un ordre précis pour déterminer le projet par défaut. Si aucun projet par défaut n'est trouvé, la connexion utilisateur ou la demande de démarrrage d'un processus est refusée.

Le système procède dans l'ordre suivant pour déterminer le projet par défaut d'un utilisateur :

  1. Si l'utilisateur possède une entrée pour laquelle l'attribut project a été défini dans la base de données étendue des attributs utilisateur /etc/user_attr, la valeur de l'attribut project correspond au projet par défaut. Voir la page de manuel user_attr(4).

  2. Si un projet répondant au nom de user.id-utilisateur est présent dans la base de données project, ce projet est considéré comme le projet par défaut. Pour plus d'informations, reportez-vous à la page de manuel project(4).

  3. Si un projet intitulé group.nom-du-groupe est présent dans la base de données project, où nom-du-groupe représente le nom du groupe par défaut pour l'utilisateur, comme indiqué dans le fichier passwd, ce projet est considéré comme le projet par défaut. Pour plus d'informations sur le fichier passwd, reportez-vous à la page de manuel passwd(4).

  4. Si le projet spécial default est présent dans la base de données project, ce projet est considéré comme le projet par défaut.

Cette logique est fournie par la fonction de bibliothèque getdefaultproj. () Pour plus d'informations, voir la page de manuel getprojent(3PROJECT).

Définition des attributs utilisateur à l'aide des commandes useradd , usermod et passmgmt

Vous pouvez exécuter les commandes suivantes avec l'option -K et une paire clé=valeur pour définir les attributs utilisateur dans les fichiers locaux :

passmgmt

Modifier les informations utilisateur

useradd

Définir le projet par défaut pour l'utilisateur

usermod

Modifier les informations utilisateur

Les fichiers locaux peuvent correspondre aux fichiers suivants :

En cas d'utilisation d'un service d'attribution de noms de réseau tel que NIS pour compléter le fichier local, ces commandes ne permettent pas de changer les informations fournies par ce service. Elles se chargent, en revanche, d'effectuer les vérifications suivantes par rapport à la base de données du service d'attribution de noms externe :

Pour plus d'informations, reportez-vous aux pages de manuel passmgmt(1M), useradd(1M), usermod(1M) et user_attr(4).

Base de données project

Vous pouvez stocker les données de projet dans un fichier local, dans une correspondance de projets NIS (Network Information Service) ou un service d'annuaire LDAP (Lightweight Directory Access Protocol). Le fichier /etc/project ou le service d'attribution de noms est utilisé au moment de la connexion et par toutes les requêtes de gestion de compte émises par le module d'authentification enfichable (PAM) pour lier un utilisateur à un projet par défaut.


Remarque –

Les mises à jour des entrées dans la base de données project, apportées au fichier /etc/project ou à une représentation de la base de données dans un service d'attribution de noms du réseau, ne sont pas appliquées aux projets actuellement actifs. Elles concernent les nouvelles tâches rejoignant le projet lorsque vous exécutez la commande login ou newtask. Pour plus d'informations, reportez-vous aux pages de manuel login(1) et newtask(1).


Sous-système PAM

Les opérations permettant de se connecter au système, faisant appel à la commande rcp ou rsh et utilisant la commande ftp ou su ont toutes pour effet de changer ou de définir l'identité. Pour ce type d'opération, il est nécessaire d'utiliser un ensemble de modules configurables pour assurer l'authentification, la gestion de compte, la gestion des informations d'identification et la gestion de session.

Le module PAM de gestion de compte relatif aux projets est décrit dans la page de manuel pam_projects(5) Pour une présentation des modules d'authentification enfichables (PAM), reportez-vous au Chapitre 17, Using PAM du System Administration Guide: Security Services.

Configuration des services d'attribution de noms

La gestion des ressources prend en charge les bases de données project de services d'attribution de noms. L'emplacement de la base de données project est défini dans le fichier /etc/nsswitch.conf. Par défaut, files figure en premier dans la liste, mais les sources peuvent être répertoriées dans n'importe quel ordre.


project: files [nis] [ldap]

Si la liste contient plusieurs sources d'informations de projet, le fichier nsswitch.conf s'assure que la routine commence par rechercher les informations dans la première source avant de s'intéresser aux sources suivantes.

Pour plus d'informations au sujet du fichier /etc/nsswitch.conf, reportez-vous au Chapitre 2, The Name Service Switch (Overview) du System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) et à la page de manuel nsswitch.conf(4).

Format de fichier /etc/project local

Si vous sélectionnez files en guise de source de base de données project dans le fichier nsswitch.conf, le processus de connexion recherche les informations de projet dans le fichier /etc/project. Pour plus d'informations, reportez-vous aux pages de manuel projects(1) et project(4).

Le fichier project contient une entrée d'une seule ligne sous la forme suivante pour chaque projet reconnu par le système :


projname:projid:comment:user-list:group-list:attributes

Voici à quoi correspond chacun de ces champs :

nomproj

Nom du projet. Le nom doit être une chaîne composée de caractères alphanumériques, de caractères de soulignement (_), de tirets (-) et de points (.). Le point, qui est réservé aux projets ayant une signification particulière pour le système d'exploitation, peut être utilisé uniquement dans les noms de projets par défaut des utilisateurs. nomproj ne doit pas contenir de deux-points (: ) ni de caractères de saut de ligne.

idproj

Identificateur numérique unique du projet (IDPROJ) au sein du système. La valeur maximum du champ idproj est UID_MAX (2147483647).

commentaire

Description du projet.

liste-utilisateurs

Liste des utilisateurs (noms séparés par des virgules) ayant le droit de participer au projet.

Ce champ peut contenir des caractères génériques. L'astérisque (*) signifie que tous les utilisateurs rejoignent le projet. Un point d'exclamation suivi d'un astérisque (!*) a pour effet d'exclure tous les utilisateurs du projet. Le point d'exclamation (!) suivi d'un nom d'utilisateur permet d'exclure l'utilisateur spécifié du projet.

liste-groupes

Liste des groupes d'utilisateurs (noms séparés par des virgules) ayant le droit de participer au projet.

Ce champ peut contenir des caractères génériques. L'astérisque (*) signifie que tous les groupes rejoignent le projet. Un point d'exclamation suivi d'un astérisque (!*) a pour effet d'exclure tous les groupes du projet. Le point d'exclamation (!) suivi d'un nom de groupe permet d'exclure le groupe spécifié du projet.

attributs

Liste de paires nom-valeur séparées par un point-virgule, les contrôles de ressources par exemple (voir le Chapitre 6Contrôles des ressources (présentation)). nom représente une chaîne arbitraire qui définit l'attribut ayant trait à l'objet et valeur représente la valeur facultative de cet attribut.


name[=value]

Dans la paire nom-valeur, les noms peuvent être composés de lettres, de chiffres, de traits de soulignement et de points. Par convention, le point sert de séparateur entre les catégories et les sous-catégories du contrôle de ressource (rctl). Un nom d'attribut doit impérativement commencer par une lettre. Il fait également la distinction entre les minuscules et les majuscules.

Vous pouvez structurer les valeurs en utilisant des virgules et des parenthèses pour définir l'ordre de priorité.

Le point-virgule sert de caractère de séparation pour les paires nom-valeur. Vous ne pouvez pas utiliser ce symbole dans une définition de valeur. Le signe deux-points sert de caractère de séparation pour les champs du projet. Il est interdit de l'utiliser dans une définition de valeur.


Remarque –

Les routines de lecture de ce fichier s'interrompent chaque fois qu'elles rencontrent une entrée mal formée. Les projets spécifiés après l'entrée incorrecte ne sont pas assignés.


L'exemple suivant montre à quoi ressemble le fichier /etc/project par défaut :


system:0:System:::
user.root:1:Super-User:::
noproject:2:No Project:::
default:3::::
group.staff:10::::

L'exemple suivant présente le contenu du fichier /etc/project par défaut avec des entrées de projet ajoutées à la fin :


system:0:System:::
user.root:1:Super-User:::
noproject:2:No Project:::
default:3::::
group.staff:10::::
user.ml:2424:Lyle Personal:::
booksite:4113:Book Auction Project:ml,mp,jtd,kjh::

Vous êtes libre également d'ajouter des contrôles de ressources et des attributs au fichier /etc/project  :

Configuration de projet pour le système d'information réseau NIS

Si vous avez recours au système d'information réseau NIS, vous pouvez configurer le fichier /etc/nsswitch.conf dans le but de rechercher les correspondances de projets NIS pour les projets :


project: nis files 

Les correspondances NIS, project.byname ou project.bynumber , se présentent sous la même forme que le fichier /etc/project :


projname:projid:comment:user-list:group-list:attributes

Pour plus d'informations, reportez-vous au Chapitre 4, Network Information Service (NIS) (Overview) du System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).

Configuration de projet pour le service d'annuaire LDAP

Si vous avez recours au service d'annuaire LDAP, vous pouvez configurer le fichier /etc/nsswitch.conf dans le but d'effectuer des recherches dans la base de données project pour les projets :


project: ldap files

Pour plus d'informations sur le service d'annuaire LDAP, reportez-vous au Chapitre 8, Introduction to LDAP Naming Services (Overview/Reference) du System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP). Pour plus d'informations sur le schéma pour les entrées de projet dans une base de données LDAP, reportez-vous à la section Solaris Schemas du System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).

Identificateurs des tâches

Chaque connexion réussie à un projet génère une nouvelle tâche dans laquelle s'inscrit le processus de connexion. La tâche correspond à un regroupement de processus représentant un ensemble d'opérations dans le temps. La tâche peut également être considérée comme un composant charge de travail. Un ID de tâche est attribué automatiquement à chacune des tâches.

Chaque processus est membre d'une tâche et chaque tâche est associée à un projet.

Figure 2–1 Vue du projet et des tâches sous forme d'arborescence

L'organigramme présente un projet qui se ramifie en trois tâches composées elles-mêmes de deux à quatre processus.

Toutes les opérations s'appliquant aux groupes de processus, telles que la distribution du signal, sont également prises en charge au niveau des tâches. Il est possible, en outre, de lier une tâche à un jeu de processeurs et de définir un ordre de priorité et une classe pour la tâche, ce qui aura pour effet de modifier tous les processus actuels et suivants dans la tâche.

Le programme crée une tâche chaque fois qu'un utilisateur rejoint un projet. Voici l'ensemble des actions, commandes et fonctions ayant pour effet de générer des tâches :

Vous pouvez créer une tâche finalisée à l'aide de l'une des méthodes suivantes. Toute autre tentative échouera.

Pour plus d'informations, reportez-vous aux pages de manuel login(1), newtask(1), cron(1M), su(1M) et setproject(3PROJECT).

L'utilitaire de comptabilisation étendue peut fournir des données comptables aux processus. L'agrégation des données est effectuée au niveau de la tâche.

Commandes utilisées avec les projets et les tâches

Les commandes présentées dans le tableau suivant assurent l'interface d'administration principale avec les utilitaires de gestion des projets et des tâches.

Référence aux pages de manuel 

Description 

projects(1)

Affiche les appartenances au projet pour les utilisateurs. Répertorie les projets de la base de données project . Présente des informations au sujet de projets donnés. Si aucun nom de projet n'est fourni, les informations concernent l'ensemble des projets. Exécutez la commande projects avec l'option -l pour obtenir une sortie détaillée.

newtask(1)

Exécute le shell par défaut de l'utilisateur ou la commande indiquée, en plaçant la commande d'exécution dans une nouvelle tâche appartenant à l'objet spécifié. newtask peut également servir à changer la liaison de la tâche et du projet pour un processus en cours. Associez-la à l'option -F pour créer une tâche finalisée.

passmgmt(1M)

Met à jour les informations dans les fichiers de mots de passe. Exécutez-la avec l'option -K clé=valeur pour compléter les attributs utilisateur ou remplacer les attributs utilisateur dans les fichiers locaux.

projadd(1M)

Ajoute une nouvelle entrée de projet au fichier /etc/project. La commande projadd crée une entrée de projet uniquement sur le système local. projadd ne permet pas de modifier les informations fournies par le service d'attribution de noms du réseau.

Elle peut servir à modifier des fichiers de projet autres que le fichier par défaut, /etc/project . Elle assure la vérification de la syntaxe pour le fichier project. Elle permet de valider et de modifier les attributs de projet. Elle accepte les valeurs scalaires.

projmod(1M)

Modifie les informations relatives à un projet sur le système local. projmod ne permet pas de modifier les informations fournies par le service d'attribution de noms du réseau. En revanche, la commande se charge de vérifier si le nom du projet et l'ID du projet sont uniques par comparaison avec le service d'attribution de noms externe.

Elle peut servir à modifier des fichiers de projet autres que le fichier par défaut, /etc/project . Elle assure la vérification de la syntaxe pour le fichier project. Elle permet de valider et de modifier les attributs de projet. Elle est pratique pour ajouter un nouvel attribut, ajouter des valeurs à un attribut ou supprimer un attribut. Elle accepte les valeurs scalaires.

À partir de Solaris 10 5/08, vous pouvez l'associer à l'option -A afin d'appliquer au projet actif les valeurs de contrôle de ressource figurant dans la base de données du projet. Les valeurs existantes qui ne correspondent pas à celles définies dans le fichier project (telles que les valeurs définies manuellement par la commande prctl) sont supprimées.

projdel(1M)

Supprime un projet du système local. projdel ne permet pas de modifier les informations fournies par le service d'attribution de noms du réseau.

useradd(1M)

Ajoute des définitions de projet par défaut aux fichiers locaux. Exécutez-la avec l'option -K clé=valeur pour ajouter ou remplacer les attributs utilisateur.

userdel(1M)

Supprime un compte de l'utilisateur du fichier local. 

usermod(1M)

Modifie les informations de connexion d'un utilisateur sur le système. Exécutez-la avec l'option -K clé=valeur pour ajouter ou remplacer les attributs utilisateur.