Mudanças entre as edições de "GER20706-2014-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 9: Linha 9:
 
== Plano de aula ==
 
== Plano de aula ==
 
{{collapse top| bg=lightblue | expandir=true | Cronograma}}
 
{{collapse top| bg=lightblue | expandir=true | Cronograma}}
 +
{{Cronograma-top}}
 +
{{Cl|1 |31/7 | 4 | Introdução. O processo de Boot e instalação de software. | Lab. Redes 1}}
 +
{{Cl|2 |7/8 | 4 | Instalação de aplicativos com APT-GET. RAID. | Lab. Redes 1}}
 +
{{Cl|3 |14/8 | 4 | Sistema de arquivos LVM. Contas de usuários e grupos. | Lab. Redes 1}}
 +
{{Cl|4 |21/8 | 4 | Cotas em disco. Agendamento de tarefas administrativas com o uso de crontab. | Lab. Redes 1}}
 +
{{Cl|5 |28/8 | 4 | Políticas de backups. Shell scripts para automatizar tarefas. | Lab. Redes 1}}
 +
{{Cl|6 |4/9 | 4 | Shell scripts para automatizar tarefas. | Lab. Redes 1}}
 +
{{Cl|7 |11/9 | 4 | 1a avaliação individual prática e teórica. Configuração da interface de rede. Apelidos de IP. | Lab. Redes 1}}
 +
{{Cl|8 |18/9 | 4 | Montagem de sub-redes e configuração dos roteadores + NAT. DNS. | Lab. Redes 1}}
 +
{{Cl|9 |25/9 | 4 | DNS. Servidor web. | Lab. Redes 1}}
 +
{{Cl|10 |2/10 | 4 | Servidor web. Servidor de e-mail. | Lab. Redes 1}}
 +
{{Cl|11 |9/10 | 4 | Webmail. Servidor SMB. Servidor NFS. | Lab. Redes 1}}
 +
{{Cl|12 |16/10 | 4 | Servidor DHCP. Servidor FTP. Servidor SSH. | Lab. Redes 1}}
 +
{{Cl|13 |23/10 | 4 | 2a avaliação individual prática e teórica. Servidor Proxy/Cache com Squid. | Lab. Redes 1}}
 +
{{Cl|14 |30/10 | 4 | Firewall. | Lab. Redes 1}}
 +
{{Cl|15 |6/11 | 4 | VPN. Protocolo SNMP – Simple Network Management Protocol. MRTG. | Lab. Redes 1}}
 +
{{Cl|16 |13/11 | 4 | Nagios, monitoramento de serviços. Cacti, monitoramento de redes. | Lab. Redes 1}}
 +
{{Cl|17 |20/11 | 4 | 3a avaliação individual prática e teórica. | Lab. Redes 1}}
 +
{{Cl|18 |27/11 | 4 | Recuperação de conteúdo | Lab. Redes 1}}
 +
{{Cl|19 |4/12 | 4 | Recuperação de conteúdo | Lab. Redes 1}}
 +
{{Cl|20 |11/12 | 4 | Reavaliação | Lab. Redes 1}}
 +
{{cronograma-botton |80}}
 
{{collapse bottom}}
 
{{collapse bottom}}
  

Edição das 13h13min de 12 de agosto de 2014

Informações da disciplina

Plano de aula

Cronograma
Aula Data Horas Conteúdo Recursos
1 31/7 4 Introdução. O processo de Boot e instalação de software. Lab. Redes 1
2 7/8 4 Instalação de aplicativos com APT-GET. RAID. Lab. Redes 1
3 14/8 4 Sistema de arquivos LVM. Contas de usuários e grupos. Lab. Redes 1
4 21/8 4 Cotas em disco. Agendamento de tarefas administrativas com o uso de crontab. Lab. Redes 1
5 28/8 4 Políticas de backups. Shell scripts para automatizar tarefas. Lab. Redes 1
6 4/9 4 Shell scripts para automatizar tarefas. Lab. Redes 1
7 11/9 4 1a avaliação individual prática e teórica. Configuração da interface de rede. Apelidos de IP. Lab. Redes 1
8 18/9 4 Montagem de sub-redes e configuração dos roteadores + NAT. DNS. Lab. Redes 1
9 25/9 4 DNS. Servidor web. Lab. Redes 1
10 2/10 4 Servidor web. Servidor de e-mail. Lab. Redes 1
11 9/10 4 Webmail. Servidor SMB. Servidor NFS. Lab. Redes 1
12 16/10 4 Servidor DHCP. Servidor FTP. Servidor SSH. Lab. Redes 1
13 23/10 4 2a avaliação individual prática e teórica. Servidor Proxy/Cache com Squid. Lab. Redes 1
14 30/10 4 Firewall. Lab. Redes 1
15 6/11 4 VPN. Protocolo SNMP – Simple Network Management Protocol. MRTG. Lab. Redes 1
16 13/11 4 Nagios, monitoramento de serviços. Cacti, monitoramento de redes. Lab. Redes 1
17 20/11 4 3a avaliação individual prática e teórica. Lab. Redes 1
18 27/11 4 Recuperação de conteúdo Lab. Redes 1
19 4/12 4 Recuperação de conteúdo Lab. Redes 1
20 11/12 4 Reavaliação Lab. Redes 1
TOTAL 80

Material auxiliar

Aulas

Aula 01 (07/08): Apresentação da Disciplina, Processo de Boot, Instalação de Software e RAID

Apresentação da Disciplina

Roteiro
  1. Auto apresentação
  2. Apresentação da Wiki
  3. Apresentação do modelo de aulas a ser adotado -- laboratório
  4. Visão geral de Gerência de Redes
    1. Ementa e referências bibliográficas
    2. Explanar os três blocos da disciplina: servidor, serviços, segurança e monitoramento de redes
  5. Avaliação
    1. Teórica
    2. Prática
    3. Recuperação de conteúdo e reavaliações
  6. Curso_Superior_de_Tecnologia_em_Sistemas_de_Telecomunicações_(páginas_das_disciplinas)
  7. Conceituação das máquinas virtuais e seu uso
    1. Motivo de uso no laboratório

O boot

Roteiro

O processo de inicialização do sistema operacional, chamado de boot. Tradicionalmente no Unix System V isto se faz com a definição de níveis de execução (runlevels) e uma tabela que descreve que processos ou serviços devem existir em cada nível. Os níveis de execução são:

  1. Monousuário (single-user), ou administrativo: usado para manutenção do sistema, admite somente o login do superusuário. Não inicia serviços de rede.
  2. Multiusuário com rede (parcial): admite logins de usuários, mas não ativa acesso a recursos de rede (como sistemas de arquivo remotos)
  3. Multiusuário com rede plena
  4. Não usado
  5. Multiusuário com rede plena e ambiente gráfico: ativa também o ambiente gráfico X11
  6. Reinício do sistema (reboot)

As distribuições Linux em geral adotam a inicialização no estilo Unix System V. No entanto, o Ubuntu usa um outro processo chamado de upstart. Esse serviço de inicialização confere maior flexibilidade e mesmo simplicidade à definição de que serviços devem ser executados. O upstart não usa o conceito de níveis de execução, mas devido à sua flexibilidade ele pode emular esse estilo de inicialização. Para o upstart, um serviço deve ser iniciado ou parado dependendo de uma combinação de eventos, sendo que um evento indica a ocorrência de uma etapa da inicialização.

O upstart é implementado pelo processo init (programa /sbin/init), que é o primeiro processo criado pelo sistema operacional. Quer dizer, logo após terminar a carga e inicialização do kernel, este cria um processo que executa o programa /sbin/init. O upstart lista o subdiretório /etc/init e procura arquivos com extensão .conf. Cada arquivo desses descreve um serviço a ser controlado pelo upstart. Por exemplo, o serviço tty2 é escrito no arquivo tty2.conf:

# tty2 - getty
#
# This service maintains a getty on tty2 from the point the system is
# started until it is shut down again.

start on runlevel [23]
start on runlevel [!23]

respawn
exec /sbin/getty -8 38400 tty2

Abaixo segue o significado de cada linha:

  • start on runlevel [23]: o serviço deve ser iniciado quando ocorrerem os eventos "runlevel 2" ou "runlevel 3"
  • stop on runlevel [!23]: o serviço deve ser parado quando ocorrer qualquer evento "runlevel X", sendo X diferente de 2 e 3
  • respawn: o serviço deve ser reiniciado automaticamente caso termine de forma anormal
  • exec /sbin/getty -8 38400 tty2: a ativação do serviço implica executar o /sbin/getty -8 38400 tty2

Em linhas gerais, a descrição do serviço informa quando ele deve ser ativado (start), quando deve ser parado (stop), o tipo de execução (respawn para reinício automático, ou task para uma única execução), e que ação deve ser executada para ativar o serviço (exec para executar um programa, ou script .. end script para executar uma sequência de comandos de shell). Maiores detalhes podem ser lidos na página de manual do init.

Um exemplo de criação de serviço no upstart

Atividade

  1. Analisar alguns serviços no /etc/init/ e verificar o conteúdo dos upstarts. Tentar replicar a ideia para o faxineiro.
  2. Criar um serviço chamado faxineiro, para remover dos diretórios temporários (/var/tmp) todos os arquivos.
  3. Configurar esse novo serviço para executar no boot, logo após o serviço mountall.
  4. Reiniciar o sistema para testá-lo (executar reboot)

Resposta

Foi proposta a criação de um serviço chamado faxineiro, para remover dos diretórios temporários (/tmp e /var/tmp).

  1. Criar o arquivo /etc/init/faxineiro.conf
  2. Adicionar o seguinte conteúdo a esse arquivo:
    start on startup
    script
    rm -rf /tmp/*
    rm -rf /var/tmp/*
    end script
    
  3. Reiniciar o sistema para testá-lo (executar reboot)

Instalação de software

Roteiro

A instalação de software pode ser feita de diversas formas, dentre as quais serão destacadas três:

  • Com utilitário apt-get: busca o software de um repositório de rede e o instala; dependências (outros softwares necessários) são automaticamente instaladas. Esses softwares buscados da rede estão no formato dpkg (Debian Package).

Exemplo de uso do apt-get:

    • Instalar o navegador de texto lynx
    • Testar o navegador lynx
lynx http://www.ifsc.edu.br/
    • Remover o lynx
  • Diretamente com utilitário dpkg: instala um software que está contido em um arquivo no formato dpkg.

Exemplo de uso:

    • Obter os pacotes Debian para o lynx
wget ftp://ftp.cn.debian.org/ubuntu-old-releases/ubuntu/pool/main/l/lynx-cur/lynx_2.8.7pre6-1_all.deb
wget ftp://mirror.linux.org.au/ubuntu/pool/main/l/lynx-cur/lynx-cur_2.8.7pre6-1_i386.deb
    • Instalar os pacotes
    • Testar o lynx
lynx ...
    • Remover os pacotes instalados


  • A partir do código fonte: busca-se manualmente na rede o código fonte do software desejado, que deve então ser compilado e instalado. Esta opção se aplica quando não existe o software no formato dpkg, ou a versão disponível em formato dpkg foi compilada de uma forma que não atende os requisitos para seu uso em seu servidor.

RAID

Roteiro

RAID (Redundant Array of Independent Disks) se destina a combinar discos de forma a incrementar o desempenho de entrada e saída e, principalmente, segurança dos dados contra defeitos em discos. RAID pode ser provido via software ou hardware (melhor este último). O Linux possui implementação por software em seu kernel, e neste HOWTO há uma descrição resumida.

Há vários níveis RAID, que correspondem a diferentes combinações de discos e partições. São eles:

  • LINEAR: concatena discos ou partições, mas não provê acréscimos de desempenho, nem de segurança dos dados (pelo contrário ! se um disco falhar, perdem-se todos os dados ...).
  • RAID 0 (ou striping): combina discos ou partições de forma alternada, para distribuir os acessos entre eles (aumentar desempenho). Porém, se um disco falhar perdem-se todos os dados. Requer um mínimo de dois discos.
    RAID 0.png
  • RAID 1 (ou mirroring): combina discos ou partições para espelhar dados (segurança). Requer o dobro de discos necessários para guardar os dados (ex: se há dois discos com dados, são necessários outros dois para espelhamento). Se todos os discos falharem, é possível continuar a operar usando os discos espelhados. Requer no mínimo dois discos.
    RAID 1.png
  • RAID 4 e 5: combina discos ou partições para ter redundância de dados (segurança), usando um esquema baseado em paridade. Se um disco falhar, é capaz de continuar operando (porém com desempenho reduzido até que esse disco seja reposto). RAID 4 na prática não se usa, pois apresenta um gargalo no disco onde residem os blocos de paridades. Requer no mínimo três discos.
    RAID 4.png RAID 5.png
  • RAID 6: combina discos ou partições para ter redundância de dados (segurança), usando um esquema baseado em paridade de forma duplicada. Isto garante que os dados se preservam mesmo que dois discos se danifiquem. Requer no mínimo quatro discos (pois há dois discos adicionais para paridades).
    RAID 6.png
  • RAID 10: combina RAID 1 e RAID 0, criando um volume com espelhamento (RAID 1), e depois fazendo o striping (RAID 0). Requer no mínimo quatro discos.
    RAID 10.png
  • RAID 01: combina RAID 0 e RAID 1, criando um volume com striping (RAID 0), e depois fazendo o espelhamento (RAID 1). Requer no mínimo quatro discos.
    RAID 01.png

Criação de um volume RAID no Linux:

  1. Usar o comando mdadm --create --verbose /dev/md0 --level=NIVEL_RAID --raid-devices=NUM_PARTICOES PARTICAO_1 PARTICAO_2 ...
    • NIVEL_RAID pode ser linear, 0, 1, 4, 5, 6, 10, mp, faulty (mais comuns são 0, 1 e 5).
    • NUM_PARTICOES é a quantidade de partições usadas no volume.
    • As partições são identificadas com o caminho (pathname) do dispositivo correspondente no Linux. Ex: a primeira partição do primeiro disco SCSI ou SATA é /dev/sda1, a segunda partição desse disco é /dev/sda2, a primeira partição do segundo disco SCSI ou SATA é /dev/sdb1, e assim por diante.
    • /dev/md0 é o caminho do dispositivo que corresponde ao volume RAID a ser criado. O primeiro volume RAID é /dev/md0, o segundo é /dev/md1, e assim por diante.
  2. Formatar o volume RAID: mkfs.ext4 -j /dev/md0
  3. Uma vez testado o volume RAID, sua configuração pode ser salva para posterior uso: mdadm --detail --scan >> /etc/mdadm/mdadm.conf
    • Isto é importante para que o volume possa ser ativado automaticamente no próximo boot.

Para ativar um volume já criado, basta executar mdadm --assemble caminho_do_volume. Ex: mdadm --assemble /dev/md0, mdadm --assemble /dev/md1.

Atividade:

  1. Dica: crie uma cópia de sua máquina virtual (snapshot - ferramenta do VirtualBox) antes de executar o roteiro, caso dê problemas a recuperação é muito simples.
  2. Crie duas partições de mesmo tamanho no disco /dev/sdb usando o cfdisk. Marque-as como sendo do tipo Linux RAID (fdisk t = "fd").
  3. Crie um volume RAID nível 1 com essas partições. Formate-o e monte-o em /mnt. Qual o tamanho total dele ?
  4. Desmonte e Pare o volume existente, com mdadm -S /dev/md0
  5. Crie um volume RAID nível 0 com essas partições. Formate-o e monte-o em /mnt. Qual o tamanho total dele ?
  6. Desmonte e Pare o volume existente, com mdadm -S /dev/md0
  7. Crie um volume RAID nível 5 com essas partições. Formate-o e monte-o em /mnt. Qual o tamanho total dele ?
  8. Desmonte e Pare o volume existente, com mdadm -S /dev/md0

Desafio

  1. Crie dois novos discos (virtuais) no VirtualBox, no diretório do aluno (vai ser apagado no reboot da máquina) e associe a sua máquina virtual. Isto deverá ser feito com a máquina virtual desligada.
  2. Crie uma partição em cada disco virtual, ocupando o tamanho total.
  3. Crie duas partições de mesmo tamanho no disco /dev/sd? usando o cfdisk. Marque-as como sendo do tipo Linux RAID (fdisk t = "fd").
  4. Crie um volume RAID nível 1 com essas partições. Formate-o e monte-o em /mnt.
  5. Copie, crie uma série de arquivos ou diretórios nesta partição.
  6. Desligue a máquina virtual e desassocie um dos discos.
  7. Religue a máquina e verifique se os dados estão intactos.