Este capítulo trata das facilidades de projeto e tarefa do gerenciamento de recurso do Solaris. Projetos e tarefas são usados para rotular cargas de trabalho e separá-las umas das outras.
Os tópicos a seguir são tratados neste capítulo:
Para usar as facilidades de projeto e tarefas, consulte o Capítulo 3Administração de projetos e tarefas.
As melhorias do Solaris 10 incluem o seguinte:
Suporte a valor de escala e modificador de unidade para valores e comandos do controle de recursos
Validação aperfeiçoada e manipulação mais fácil do campo de atributos de projeto
Formato de saída revisada e novas opções para os comandos prctl e projects
Capacidade de definir projeto padrão de usuário através do comando useradd e de modificar informações usando os comandos usermod e passmgmt
Além das informações contidas neste capítulo e no Capítulo 6Controles de recursos (visão geral), consulte as seguintes páginas do manual:
As melhorias do Solaris 10 5/08 incluem a adição de uma opção -A ao comando projmod. Consulte Comandos usados com projetos e tarefas.
Para obter uma lista completa dos novos recursos do Solaris 10 e uma descrição das versões do Solaris, consulte Novidades no Oracle Solaris 10 9/10.
Para otimizar a resposta da carga de trabalho, é necessário primeiro poder identificar as cargas de trabalho que estão em execução no sistema que você está analisando. Pode ser difícil de obter esta informação usando um isoladamente um método puramente orientado a processo ou orientado a usuário. No sistema do Solaris, há duas facilidades adicionais que podem ser usadas para separar e identificar cargas de trabalho: o projeto e a tarefa. O projeto fornece um identificador administrativo da rede geral para trabalhos relacionados. A tarefa coleta um grupo de processos em uma entidade gerenciável que representa um componente de carga de trabalho.
Os controles especificados no banco de dados do serviço de nome do project são definidos no processo, na tarefa e no projeto. Uma vez que controles de processo e tarefa são herdados nas chamadas do sistema fork e settaskid, todos os processos e tarefas criados dentro do projeto herdam esses controles. Para obter informações sobre essas chamadas do sistema, consulte as páginas do manual fork(2) e settaskid(2).
Com base na associação ao projeto ou à tarefa, os processos em execução podem ser manipulados com comandos padrão do Solaris. A facilidade da contabilidade estendida pode relatar uso de processo e uso de tarefa, e etiquetar cada registro com o identificador de projeto em vigor. Esse processo permite que a análise de carga de trabalho off-line seja correlacionada com a monitoração on-line. O identificador de projeto pode ser compartilhado em várias máquinas através do banco de dados do serviço de nome do project. Assim, o consumo de recursos de cargas de trabalho relacionadas que são executados (ou abarcados) em várias máquinas pode, basicamente, ser analisado em todas as máquinas.
O identificador de projeto é um identificador administrativo usado para identificar trabalho relacionado. Pode-se dizer que o identificador de projeto é uma etiqueta de carga de trabalho equivalente aos identificadores de usuário e grupo. Um usuário ou grupo pertence a um ou mais projetos. Esses projetos podem ser usados para representar as cargas de trabalho nas quais o usuário (ou grupo de usuários) tem permissão para participar. Essa associação pode então ser a base do chargeback que é baseado, por exemplo, em uso ou alocações iniciais de recursos. Embora um usuário tenha de ser atribuído a um projeto padrão, os processos que o usuário inicia podem ser associados a qualquer projeto de qual o usuário seja um membro.
Para efetuar login no sistema, um usuário tem de ser atribuído a um projeto padrão. Um usuário é automaticamente um membro desse projeto padrão, mesmo que o usuário não esteja na lista de usuários ou de grupo especificada nesse projeto.
Uma vez que cada processo no sistema possui associação ao projeto, é necessário um algoritmo para atribuir um projeto padrão ao login ou outro processo inicial. O algoritmo é documentado na página do manual getprojent(3C). O sistema segue as etapas ordenadas para determinar o projeto padrão. Se nenhum projeto for localizado, o login de usuário, ou a solicitação para iniciar um processo, será negado.
O sistema segue seqüencialmente estas etapas para determinar o projeto padrão de um usuário:
Se o usuário tiver uma entrada com um atributo project definido no banco de dados de atributos de usuário estendido /etc/user_attr, o valor do atributo project será o projeto padrão. Consulte a página do manual user_attr(4).
Se um projeto com o nome user.user-id estiver presente no banco de dados de project, esse projeto será o projeto padrão. Consulte a página do manual project(4) para obter mais informações.
Se um projeto com o nome group. group-name estiver presente no banco de dados de project, onde group-name é o nome do grupo padrão para o usuário, como especificado no arquivo passwd, esse projeto será o projeto padrão. Para obter informações sobre o arquivo passwd, consulte a página do manual passwd(4).
Se o projeto especial default estiver presente no banco de dados de project, esse projeto será o projeto padrão.
Esta lógica é fornecida pela função de biblioteca getdefaultproj. () Para obter mais informações, consulte a página do manual getprojent(3PROJECT).
Você pode usar os seguintes comandos com a opção -K e um par key=value para definir atributos de usuário em arquivos locais:
Modificar informações de usuário
Definir projeto padrão para usuário
Modificar informações de usuário
Arquivos locais incluem o seguinte:
/etc/group
/etc/passwd
/etc/project
/etc/shadow
/etc/user_attr
Se um serviço de nomes de rede, como NIS, estiver sendo usado para suplementar o arquivo local com entradas adicionais, estes comandos não podem alterar informações fornecidas pelo serviço de nomes de rede. No entanto, os comandos verificam o seguinte em relação ao bando de dados de serviço de nomes externo:
Exclusividade do nome de usuário (ou função)
Exclusividade do ID de usuário
Existência de quaisquer nomes de grupo especificados
Para obter mais informações, consulte as páginas do manual passmgmt(1M), useradd(1M), usermod(1M) e user_attr(4).
Você pode armazenar dados de projeto em um arquivo local, em um mapa de projeto do Serviço de informação de rede (NIS), ou em um serviço de diretório de Protocolo de acesso a pastas leves (LDAP). O arquivo /etc/project ou o serviço de identificação é usado no login e por todas as solicitações para gerenciamento de conta pelo Módulo de autenticação plugável (PAM) para vincular um usuário a um projeto padrão.
Atualizações de entradas no banco de dados de projeto, seja para o arquivo /etc/project ou para a representação do banco de dados em um serviço de identificação de rede, não são aplicadas aos projetos atualmente ativos. As atualizações são aplicadas a novas tarefas que se unem ao projeto quando o comando login ou newtask é usado. Para obter mais informações, consulte as páginas do manual login(1) e newtask(1).
Operações que alteram ou definem identidade incluem login em um sistema, chamar um comando rcp ou rsh, usando ftp, ou usandosu. Quando uma operação envolve alterar ou definir uma identidade, um conjunto de módulos configuráveis é usado para fornecer autenticação, gerenciamento de conta, gerenciamento de credenciais e gerenciamento de sessão.
O módulo PAM de gerenciamento de conta para projetos é documentado na página do manual pam_projects(5) Para uma visão geral de PAM, consulte o Capítulo 17, Using PAM, no System Administration Guide: Security Services.
O gerenciamento de recursos oferece suporte a bancos de dados de project de serviço de identificação. O local em que o banco de dados de project é armazenado é definido no arquivo /etc/nsswitch.conf. Por padrão, files é listado primeiro, mas as fontes podem ser listadas em qualquer ordem.
project: files [nis] [ldap] |
Se mais de uma fonte para informações de projeto estiver listada, o arquivo nsswitch.conf direcionará a rotina para iniciar a procura de informações na primeira fonte listada e em seguida pesquisará fontes subseqüentes.
Para obter mais informações sobre o arquivo /etc/nsswitch.conf, consulte o Capítulo 2, The Name Service Switch (Overview), no System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) e em nsswitch.conf(4).
Se você selecionar files como fonte do banco de dados de project no arquivo nsswitch.conf, o processo de login procurará informações do projeto no arquivo /etc/project. Para obter mais informações, consulte as páginas do manual projects(1) e project(4).
O arquivo project contém uma entrada de uma linha da seguinte forma para cada projeto reconhecido pelo sistema:
projname:projid:comment:user-list:group-list:attributes |
Os campos são definidos como a seguir:
O nome do projeto. O nome deve ser uma seqüência formada por caracteres alfanuméricos, caractere sublinhado (_), hifens (-) e pontos (.). O ponto, que é reservado para projetos com significado especial para o sistema operacional, podem somente ser usados nos nomes de projetos padrão para usuários. projname não pode conter dois-pontos (: ) ou caracteres de mudança de linha.
O ID numérico exclusivo do projeto (PROJID) dentro do sistema. O valor máximo do campo projid é UID_MAX ( 2147483647).
Uma descrição do projeto.
Uma lista separada por vírgulas de usuários que têm permissão para o projeto.
Curingas podem ser usados neste campo. Um asterisco (*) permite que todos os usuários se unam ao projeto. Um ponto de exclamação seguido por um asterisco (!*) exclui todos os usuários do projeto. Um ponto de exclamação (!) seguido por um nome de usuário exclui do projeto o usuário especificado.
Uma lista separada por vírgulas de grupos de usuários que tem permissão para o projeto.
Curingas podem ser usados neste campo. Um asterisco (*) permite que todos os grupos se unam ao projeto. Um ponto de exclamação seguido por um asterisco (!*) exclui todos os grupos do projeto. Um ponto de exclamação (!) seguido por um nome de grupo exclui do projeto o grupo especificado.
Uma lista de pares de nome-valor separada por ponto-e-vírgula, como controles de recursos (consulte o Capítulo 6Controles de recursos (visão geral)). name é uma seqüência arbitrária que especifica o atributo relacionado a objeto, e value é o valor opcional para esse atributo.
name[=value] |
No par nome-valor, nomes são limitados a letras, dígitos, sublinhados e pontos. Um ponto é convencionalmente usado como um separador entre as categorias e subcategorias do controle de recursos (rctl). O primeiro caractere de um nome de atributo deve ser uma letra. O nome diferencia maiúsculas de minúsculas.
Valores podem ser estruturados pelo uso de vírgulas e parênteses para estabelecer precedência.
Um ponto-e-vírgula é usado para separar pares nome-valor. Um ponto-e vírgula não pode ser usado em uma definição de valor. Dois-pontos é usado para separar campos de projeto. Dois-pontos não pode ser usado em uma definição de valor.
Rotinas que lêem este arquivo são interrompidas quando encontram uma entrada incorreta. Não há atribuição para quaisquer projetos que sejam especificados após a entrada incorreta.
Este exemplo mostra o arquivo padrão /etc/project:
system:0:System::: user.root:1:Super-User::: noproject:2:No Project::: default:3:::: group.staff:10:::: |
Este exemplo mostra o arquivo padrão /etc/project com entradas de projeto adicionadas no fim:
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:: |
Você também pode adicionar controles de recursos e atributos ao arquivo /etc/project :
Para adicionar controles de recursos para um projeto, consulte Configuração de controles de recursos.
Para definir um limite de recursos da memória física para um projeto usando o resource capping daemon descrito em rcapd(1M), consulte Atributo para limitar o uso da memória física em projetos.
Para adicionar um atributo project.pool à entrada de um projeto, consulte Criação da configuração.
Se estiver usando NIS, você pode especificar no arquivo /etc/nsswitch.conf a procura de projetos nos mapas de projeto NIS:
project: nis files |
Os mapas NIS, project.byname ou project.bynumber , têm a mesma forma que o arquivo /etc/project:
projname:projid:comment:user-list:group-list:attributes |
Para obter mais informações, consulte o Capítulo 4, Network Information Service (NIS) (Overview), no System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) .
Se estiver usando LDAP, você pode especificar no arquivo /etc/nsswitch.conf que procure projetos no banco de dados de project de LDAP:
project: ldap files |
Para obter mais informações sobre LDAP, consulte o Capítulo 8, Introduction to LDAP Naming Services (Overview/Reference), no System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) . Para obter mais informações sobre o esquema para entradas de projeto em um banco de dados de LDAP, consulte Solaris Schemas no System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) .
Cada login bem-sucedido em um projeto cria uma nova tarefa que contém o processo de login. A tarefa é um processo coletivo que representa um conjunto de trabalhos ao longo do tempo. Uma tarefa também pode ser vista como um componente de carga de trabalho. A cada tarefa é automaticamente atribuído um ID de tarefa.
Cada processo é um membro de uma tarefa, e cada tarefa é associada a um projeto.
Todas as operações em grupos de processos, como entrega de sinal, também têm suporte em tarefas. Você também pode vincular uma tarefa a um conjunto de processadores e definir uma prioridade e uma classe de agendamento para uma tarefa, o que modifica todos os processos atuais e subseqüentes na tarefa.
Uma tarefa é criada sempre que um projeto é unido. As ações, os comandos e as funções seguintes criam tarefas:
login
cron
newtask
setproject
su
Você pode criar uma tarefa finalizada usando um dos métodos abaixo. Todas as outras tentativas de criar novas tarefas irão falhar.
Você pode usar o comando newtask com a opção - F.
Você pode definir o atributo task.final em um projeto no banco de dados do serviço de identificação de project. Todas as tarefas criadas nesse projeto por setproject têm o sinalizador TASK_FINAL.
Para obter mais informações, consulte as páginas do manual login(1), newtask(1), cron(1M), su(1M) e setproject(3PROJECT).
A facilidade de contabilidade estendida pode fornecer dados de contabilidade para processos. Os dados são agregados no nível da tarefa.
Os comandos mostrados na tabela abaixo fornecem a interface administrativa primária para as facilidades de projeto e tarefa.
Referência de página do manual |
Descrição |
---|---|
Exibe membros de projeto para usuários. Lista projetos do banco de dados de project . Imprime informações sobre um dado projeto. Se nenhum nome de projeto for fornecido, as informações serão exibidas para todos os projetos. Use o comando projects com a opção -l para imprimir saída em modo verboso. |
|
Executa o shell padrão do usuário ou o comando especificado, colocando o comando de execução em uma nova tarefa que pertence ao projeto especificado. newtask também pode ser usado para alterar a tarefa e a vinculação do projeto para um processo em execução. Use com a opção -F para criar uma tarefa finalizada. |
|
Atualiza informações nos arquivos de senha. Use com a opção -K key=value para adicionar a atributos de usuário ou substituir atributos de usuário em arquivos locais. |
|
Adiciona uma nova entrada de projeto ao arquivo /etc/project. O comando projadd cria uma entrada de projeto somente no sistema local. projadd não pode alterar informações que são fornecidas pelo serviço de identificação de rede. Pode ser usado para editar arquivos de projeto que não sejam o arquivo padrão, /etc/project . Fornece verificação de sintaxe para o arquivo project. Valida e edita atributos de projeto. Oferece suporte a valores em escala. |
|
Modifica informações para um projeto no sistema local. projmod não pode alterar informações que são fornecidas pelo serviço de identificação de rede. No entanto, o comando verifica a exclusividade do nome de projeto e do ID de projeto em relação ao serviço de identificação externo. Pode ser usado para editar arquivos de projeto que não sejam o arquivo padrão, /etc/project . Fornece verificação de sintaxe para o arquivo project. Valida e edita atributos de projeto. Pode ser usado para adicionar um novo atributo, adicionar valores a um atributo ou remover um atributo. Oferece suporte a valores em escala. Começando com o Solaris 10 versão 5/08, pode ser usado com a opção -A para aplicar os valores de controle de recursos encontrados no banco de dados do projeto ao projeto ativo. Os valores existentes que não correspondem aos valores definidos no arquivo project, tais como os valores definidos manualmente pelo comando prctl, são removidos. |
|
Exclui um projeto do sistema local. projdel não pode alterar informações que são fornecidas pelo serviço de identificação de rede. |
|
Adiciona definições de projeto padrão a arquivos locais. Use com a opção -K key=value para adicionar ou substituir atributos de usuário. |
|
Exclui uma conta de usuário do arquivo local. |
|
Modifica informações de um usuário no sistema. Use com a opção -K key=value para adicionar ou substituir atributos de usuário. |