NFS-root-client Mini-Howto

Ofer Maor, ofer@hadar.co.il
V3, 5 de dezembro de 1996
Traduzido por: Bruno H. Collovini - buick@microlink.com.br
Traduzido em: 7 de setembro de 1997.

Aviso: Esta tradução não está relacionada com o Projeto de Documentação do Linux LDP) que no Brasil é representada pela LDP-BR em <http://www.dca.fee.unicamp.br/~malheiro/linux/LDP-br.html>, este material é uma tradução técnica e básica somente para auxiliar os colegas com a leitura em português.

Outros documentos você pode obter em: <http://www.microlink.com.br/~buick/>

O propósito deste Mini-Howto é explicar como criar diretórios de um cliente de root em um servidor que está usando clientes de NFS Root montados. Você pode obter a versão mais recente deste Howto (HTML ou Texto) em URL: http://www.hadar.co.il/ofer/nfs-root-client/

1. Direito autorais

(c) 1996 Ofer Maor <ofer@hadar.co.il>

A menos que seja contrário, Os documentos HOWTO do Linux são registrados pelos proprios autores respectivos. Os documentos HOWTO do Linux podem ser reproduzidos e distribuído em todo ou em parte, em qualquer meio físico ou eletrônico, contanto que esta advertência de direitos autorais seja mantida em todas as cópias. A redistribuição comercial é permitido e é encorajada; porém, o autor iria gostar de ser notificado de qualquer forma de distribuição.

Todas as traduções, trabalhos derivados, ou trabalhos incorporando agregados a qualquer Linux devem ser informados nos documentos de HOWTO debaixo desta advertência de direito autorais.

Quer dizer, você pode não produzir um trabalho derivado de um HOWTO e pode impor restrições adicionais em sua distribuição. Exceções para estas regras pode ser concedido debaixo de certas condições; por favor contate o Coordenador de HOWTo para o Linux.

Em resumo, nós desejamos promover a disseminação desta informação por tantos canais quanto possível. Porém, nós desejamos reter os direito autorais nos documentos de HOWTO, e gostaria-mos de ser notificado de qualquer plano para redistribuição dos HOWTOs.

Se você tem qualquer pergunta, por favor contacte Ofer Maor <mailto:andreas@ag.or.at>, o autor deste mini-HOWTO, ou Greg Hankins, o coordenador de HOWTO Linux, <mailto:gregh@sunsite.unc.edu> por email, ou atráves de +1 404 853 9989.

Se você tem perguntas, por favor contacte (Ofer Maor <ofer@hadar.co.il>), o autor deste mini-HOWTO, ou Greg Hankins, o Linux o coordenador de HOWTO, a gregh@sunsite.unc.edu por email.

Se você tem qualquer coisa que possa ser adicionado a este Mini-Howto, Por favor remeta ao autor (Ofer Maor <ofer@hadar.co.il>), com qualquer informação pertinente sera apreciada.

1.1. Obrigado

Eu gostaria de expressar os meu agradecimentos ao autor de NFS-root Howto, Andreas Kostyrca (andreas@medman.ag.or.at). O Mini-Howto dele ajudou me com os primeiros passos criando um Root de NFS e montando o cliente. O Meu Mini-Howto não tenta, de qualquer forma, substituir o trabalho dele, mas para aumentar usando as minhas experiências neste processo.

Eu também gostaria de agradecer a Mark Kushinsky (mark026@ibm.net) por ter polido o inglês e soletrado este Howto, fazendo ele assim muito mais legível.

2. Prefacio

Este Mini-Howto foi escrito para ajudar as pessoas que querem usar o NFS Root para montar e criar os diretórios dos cliente. Por favor note que há muitos modos para realizar isto e depende de suas necessidades e intenções. Se os clientes são individuais, e cada cliente tem os seus próprios usuários e administrador, será necessário fazer significantes partes de dirs de cliente para não compartilhar com outros clientes. Do outro lado se o cliente está intencionado para usar usuários múltiplos, e é tudo administrado pela mesma pessoa (por exemplo, uma classe de computador), faça tantos arquivos quanto possível abertos para fazer a administração mais manejável. Este Howto enfocará o segundo assunto.

2.1. Avaliação geral

Quando construi um diretório de root de um cliente, e tentamos se limitar a ele, o tamanho mínimo do cliente, enfocamos principalmente em qual arquivos podemos compartilhar, ou montar no servidor. Neste Howto recomendarei a configuração de um cliente baseado em minha experiência. Mas antes de nós começarmos por favor note:

* Este Mini-Howto não explica como fazer autalmente como montar o NFS de Root Referências no NFS-root Mini-Howto se você precisar demais informações sobre este assunto.

* Eu vou me baser na configuração de meu cliente montados e em vínculos simbólicos. Muito desses vínculos simbólicos podem ser substituídos através do hardlinks. Você deve escolher de acordo com a sua preferência pessoal. Ponha um hardlink em cima de um monte e o vínculo simbólico tem suas vantagens, mas pode causar confusão. Um arquivo não será apagado até que todos os seus hardlinks sejam removidos. Assim para prevenir em qual arquivo é o certo,você e o hardlinks ainda se referem a mais velha versão, você terá que ter muito cuidado e manter um rastro de tudo que você puser.

* Enquanto montando as informação no servidor, dois conceitos podem ser usado. O primeiro conceito (mais comum), é montar o servidor inteiro dentro de um diretório de root debaixo de um diretório local, e então só mudar o caminho ou unir os diretórios pertinentes lá. Eu repugno pessoalmente montar root dividio em um servidor de clientes. Assim, este Howto sugestiona um modo para montar os diretórios pertinentes no servidor para os lugares pertinentes ao sistema.

* Este Howto está baseado em minha experiência em construir diretórios de cliente em uma distribuição baseada no Slackware 3.1. Algumas coisas podem ser diferentes (especialmente os arquivos rc.*), para outros usuários, porém os conceitos ainda devem permanecer o mesmo.

3. Criando o diretório de root do cliente

3.1. Criando a árvore de diretório

Em primeiro lugar, você precisa criar a própria estrutura de diretório. Eu criei para todos os clientes debaixo de /clients/hostname e eu usarei em meus exemplos abaixo. Porém, isto pode ser mudado para qualquer outra coisa. A primeira fase, então, é criar os diretórios pertinentes no diretório de root. Você deve criar os seguintes diretórios:

bin, dev, etc, home, lib, mnt, proc, sbin, server, tmp, usr, var

e qualquer outro diretório que você esteja ou queira usar no seu sistema.

Os diretórios local, proc, e dev serão usados separadamente por cada máquina enquanto o resto dos diretórios serão livres ou completamente compartilhado com o resto dos clientes.

3.2. Criando o sistema de arquivo mínimo para dar o boot

3.2.1. Criando o dir de dev.

Embora o dir de dev possa ser compartilhados, é melhor criar separadamente para cada cliente. Você pode criar o diretório de dev de seu cliente com os script de MAKEDEV apropriados, porém na maioria dos casos é mais simples basta somente fazer uma copia do servidor:

    cp -a /dev /clients/hostname

Você deve se lembrar de que /dev/mouse, /dev/cdrom e /dev/modem são vínculos simbólicos para os dispositivos, e então você deve estar seguro que eles serão são unidos para ajustar o hardware do cliente corretamente.

3.2.2. Copiando os binários necessário.

Embora nós estamos montamos tudo no servidor, nos precisamos copiar um mínimo para cada cliente. Em primeiro lugar, nós precisamos do "init", o nosso sistema não poderá rodar qualquer coisa antes de inicializar o init (como o autor descubrio do modo mais díficil ;-). Então primeiro, você deve copiar /sbin/init para o dir de sbin do seu cliente e então fazer com que o rc.S rode, você deve copiar o /bin/sh para o diretório da máquina do cliente. Também para montar tudo o que você precisa precisa copiar o /sbin/mount para o diretório de sbin do cliente.

Isto é o mínimo e assumimos a primeira linha em seu rc.S seja mount -av.

Porém, eu recomendo copiar mais alguns arquivos: update, ls, rm, cp e umount, de forma que você tenha as ferramentas básicas no caso do cliente ter problemas de acessar. Se você escolheu deixar a linha de swap antes do mount, você também tem que copiar o binário swapon.

Desde que a maioria destes binários está dinâmicamente, você também precisa copiar uma parte justa do /lib:

    cp -a /lib/ld.* /lib/libc.* /lib/libcursses.* /client/hostname/lib

Hardlinking para os binários, em vez de copiar, deve ser considerados. Por favor leia os meus comentários em 2.1 neste Howto.

Por favor note, todo a informação sobre o kernel foi determinado nos parâmetros de network enquanto inicializa. Se você planeja use o rarp ou bootp, você precisará dos binários pertinentes provavelmente para eles.

Geralmente, você precisará no mínimo dos arquivos para habilitar a configuração da network e rodar o rc.S até o ponto onde monta o resto do sistema de arquivo.

3.2.3. O diretório de var

O diretório de var, na maioria dos casos, deve estar separado para cada cliente. Porém, muito dos dados podem ser compartilhados. Crie debaixo do diretório do servidor um diretório chamado var. Nós montaremos o var do servidor dentro deste diretório. Crie um diretório local para o var, simplismente como:

    cp -a /var /clients/hostname/

Agora, você tem uma escolha de como você quer separar, e o que você quer compartilhar. Qualquer diretório/arquivoe que você quer compartilhar, simplesmente, remova do dir do var cliente, e coloque um link simbólico para o diretório /server/var/. Porém por favor note que você deve qualquer precisar de qualquer link simbólico para /server/var ou para ../server/var mas NÃO para /clients/hostname/server/var com isto não ira funcionar quanto as mudanças de root.

Geralmente, eu recomendaria separar /var/run, /var/lock, /var/spool, e /var/log.

3.2.4. O resto dos diretórios

* etc é explicado completamente na próxima seção.

* mnt e proc são para propósitos locais.

* usr e home são pontos montados somente.

* tmp é para você. Você pode criar um diretório de tmp diferente para cada cliente, ou cria alguns diretórios de /clients/tmp, e montar isto para cada cliente debaixo de /tmp. Eu recomendaria que você crie para cada cliente um diretório de tmp separado.

3.3. Construindo o diretório etc e configurando os clientes

Por favor Note - esta seção se refere a construção do diretório etc que é principalmente compartilhado entre os clientes. Se seus clientes de diskless têm administradores de sistemas separados, é melhor montar separadamente um diretório etc para cada cliente.

3.3.1. Construindo uns diretórios etc de clientes wide

Embora nós esparamos os diretórios etc dos clientes, nós ainda queremos compartilhar vários arquivos grandes. Geralmente, eu penso em compartilhar o arquivo etc com o /etc do servidor é uma idéia ruim, e então eu recomendo criar um diretório de /clients/etc que segurará a informação precisa para os clientes. Começe, simplesmente copiando o conteúdos do servidor etc para o diretório de /clients/etc.

Você deve adicionar a este diretório tudo que não for arquivo de configuração específico-da-máquina, por exemplo motd, issue, etc. e não o cliente específico. (i.e. inittab ou fstab)

As mudanças mais importantes estarão no seu diretório de rc.d. Primeiro, você deve mudar o rc.inet1 para ser satisfatórios para a sua configuração local. Eu passo tudos os meus parâmetros da network para o kernel pelo LILO/Loadlin, e então eu removo quase tudo do arquivo rc.inet1. A única coisa que eu mantenho é o ifconfig e a rota do localhost. Se você usa rarp ou bootp, você terá que configurar isto adequadamente.

Segundo, você deve editar o seu rc.S. Primeiro, remova todas as partes que são responsável pelo fsck confira como o fsck roda quando o servidor inicializa o boot. Então, você deve achar a linha que monta o seu fstab. Deve ser algo como:

    mount -avt nonfs

O nonfs -t está primeiro nestes clientes normais rodando o rc.S e só mais tarde use o rc.inet1 para configurar o Ethernet. Como isto causa a divisão no NFS para ser montado este linha deve ser apagada. Então, mude para mount -av. Se você precisa rodar o rarp/bootp configure a sua network, use no rc.S (ou chame o script apropriada do rc.S), antes do mount, e tem certeza que seu bin físico e diretórios de sbin tem os arquivos necessários disponível.

Depois que o mount -av é executado, você terá um sistema de arquivos funcionando.

Construa um fstab geral, de forma que você pode copiar depois para cada cliente. Seu fstab deve parecer-se como:

    server/nfs                                          default  1 1
    server:/bin                 /bin            nfs     default  1 1
    server:/usr                 /usr            nfs     default  1 1
    server:/sbin                /sbin           nfs     default  1 1
    server:/home                /home           nfs     default  1 1
    server:/lib                 /lib            nfs     default  1 1
    server:/clients/etc         /server/etc     nfs     default  1 1
    server:/clients/var         /server/var     nfs     default  1 1
    none                        /proc           proc    default  1 1

Também, tenha certeza que o /etc/exports do seu servidor esteja assim:

    /clients/hostname   hostname.domainname(rw,no_root_squash)
    /clients/etc        hostname.domainname(ro,no_root_squash)
    /clients/var        hostname.domainname(ro,no_root_squash)
    /usr                hostname.domainname(ro,no_root_squash)
    /sbin               hostname.domainname(ro,no_root_squash)
    /bin                hostname.domainname(ro,no_root_squash)
    /lib                hostname.domainname(ro,no_root_squash)
    /home               hostname.domainname(rw,no_root_squash)

Diferente da primeira linha que deve estar separado para cada host o resto das linhas pode ser substituído com um hostmask para ajustar todos os seus hosts (como pc*.domain). Eu sugiro que você faça a maioria dos diretórios somente para leitura, mas isto eu já fiz por você. O no_root_squash farão que os usuários de root seguros nos clientes estejam usando permissões de root atuais o nfsd. Confirme no man exports(5). Se você quer que os usuários tenha passwd rodando nos clientes também, tenha certeza que o /etc esteja com rw e não permissões de ro. Porém, isto não é aconselhável.

Por favor note outra coisa relativo ao arquivo de rc.S. No Slackware, através do default, cria um novo /etc/issue novo e um /etc/motd toda vez que é rodado. Esta função deve ser incapacitada se estes arquivos são montados ro no servidor, e eu recomendo que eles sejam incapacitados em todo caso.

Ultimamente, se você quer esta usando a mesma userbase no servidor como no cliente, você deve escolher entre 1) usar NIS (Páginas Amarelas - cheque o yp-howto), e então cada cliente terá um /etc/passwd separado e um /etc/group para receber do servidor de NIS. 2) na maioria dos casos, um vínculo simbólico simples bastará. E então, você precisará de qualquer hardlink /clients/etc/passwd para /etc/passwd, ou se você prefirir um link simbólico /etc/passwd para /clients/etc/passwd (e não o outro modo, desde que os clientes não monte no servidor e no diretório etc). Faça o mesmo para /etc/group.

3.3.2. Criando um diretório etc cliente

Geralmente, a maioria dos arquivos do etc cliente deve ser links simbólicos para o diretório do /server/etc. Porém, alguns arquivos são diferentes para cada máquina, e alguns justamento tem que estar lá quando carregado o kernel. O que você precisa de mínimo no dir etc é o seguinte:

    resolv.conf
    hosts
    inittab
    rc.d/rc.S
    fstab

Considerando que estes 5 arquivos podem ser idênticos em todos os clientes, você simplesmente pode usar um hardlink neles ou copiar novamente. Porém, com o arquivo rc.S e o fstab é aconselhado manter uma cópia separada para cada cliente. Você precisar também de um etc/HOSTNAME separado para cada cliente. Eu pessoalmente recomendo ter tudos os arquivos do rc.d separados para cada cliente, como o hardware de configuração pode variar de um para outro.

Para cada cliente, adicione ao fstab a linha de swap formal:

    /dev/swap_prttn                     swap    swap    default  1 1

O resto do arquivo /etc do cliente, você pode fazer qualquer hardlink para os arquivos /clients/etc/* , ou um link simbólico para eles /server/etc (que é no ponto de mount do /clients/etc/).

Tenha certeza que sua máquina pode solucionar corretamente, ou por um named no etc/hosts. Não é uma idéia ruim para deter o IP do servidor no etc/hosts, em vez de pedir para solucionar. Se você só conta para o named solucinar, um problema de nome preveni que seus clientes de começar.

3.4. Inicializando

Agora, tudo o que você tem que fazer é inicializar a sua máquina, cruzar os seus dedos e esperar que tudo funcione como deve :-).

4. Criando mais clientes

Se você seguiu as minhas instruções por completo isto deve ser simples - cd para /clients/ e use:

    cp -a hostname1 hostname2

e então tenha certeza de conferir estes pontos:

arquivos de inicialização rc.d/* do hardware e quais as configurações de software se o etc/HOSTNAME está correto, se a linha de swap no fstab está correta, se o vínculos simbólico no dev/mouse, dev/modem e dev/cdrom são certos.

Boa Sorte....
[Help OnLine] [Distribuições] [Novidades] [Eventos] [Usuários] [Aplicativos] [Hardware] [Projetos] [Vendedores] [Serviços]
[Linux Brasil]
WebSite Design: Buick
Copyright © 1997-1998 - Buick. All Rights Reserved.
[Linux-Org]