Mudanças entre as edições de "GAR12503-2014-2"
Linha 737: | Linha 737: | ||
{{Collapse bottom | Roteiro}} | {{Collapse bottom | Roteiro}} | ||
− | === Aula 04 ( | + | === Aula 04 (20/08) - Processo de Boot e RAID === |
Conteúdo: | Conteúdo: | ||
* Processo de Boot | * Processo de Boot | ||
− | *upstart | + | * upstart |
+ | * Esquema RAID | ||
{{Collapse top | Roteiro}} | {{Collapse top | Roteiro}} | ||
+ | Boot: | ||
+ | |||
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: | 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: | ||
Linha 776: | Linha 779: | ||
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 [http://manpages.ubuntu.com/manpages/karmic/en/man5/init.5.html página de manual do init]. | 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 [http://manpages.ubuntu.com/manpages/karmic/en/man5/init.5.html página de manual do init]. | ||
+ | |||
+ | RAID: | ||
+ | |||
+ | [http://en.wikipedia.org/wiki/RAID 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 [http://tldp.org/HOWTO/Software-RAID-HOWTO.html 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. <br>[[Imagem:RAID_0.png|100px]] | ||
+ | * '''''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. <br> [[Imagem:RAID_1.png|100px]] | ||
+ | * '''''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. <br>[[Imagem:RAID_4.png|200px]] [[Imagem:RAID_5.png|200px]] | ||
+ | * '''''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).<br>[[Imagem:RAID_6.png|200px]] | ||
+ | * '''''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. <br> [[Imagem:RAID_10.png|200px]] | ||
+ | * '''''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. <br> [[Imagem:RAID_01.png|200px]] | ||
+ | |||
+ | Criação de um volume RAID no Linux: | ||
+ | |||
+ | # 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. | ||
+ | # Formatar o volume RAID: ''mkfs.ext4 -j /dev/md0'' | ||
+ | # 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''. | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
Linha 799: | Linha 828: | ||
# Reiniciar o sistema para testá-lo (executar ''reboot'') | # Reiniciar o sistema para testá-lo (executar ''reboot'') | ||
--> | --> | ||
+ | |||
+ | '''''Atividade RAID:''''' | ||
+ | |||
+ | # 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. | ||
+ | # 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"). | ||
+ | # Crie um volume RAID nível 1 com essas partições. Formate-o e monte-o em /mnt. Qual o tamanho total dele ? | ||
+ | # Desmonte e Pare o volume existente, com ''mdadm -S /dev/md0'' | ||
+ | # Crie um volume RAID nível 0 com essas partições. Formate-o e monte-o em /mnt. Qual o tamanho total dele ? | ||
+ | # Desmonte e Pare o volume existente, com ''mdadm -S /dev/md0'' | ||
+ | # Crie um volume RAID nível 5 com essas partições. Formate-o e monte-o em /mnt. Qual o tamanho total dele ? | ||
+ | # Desmonte e Pare o volume existente, com ''mdadm -S /dev/md0'' | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
Edição das 17h34min de 20 de agosto de 2014
Informações da disciplina
- Professor: Tomas Grimm
- Turma: 1250331
- Encontros: terças e quintas das 18:30 às 20:20 e quartas das 18:30 às 22:30
- Atendimento paralelo:
- terças das 13:30 às 15:20
Plano de aula
Cronograma | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Material auxiliar
- Apostila de Gerência de Redes do Prof. Odilson Tadeu Valle
- Guia rápido de comandos básicos
- Guia rápido de manipulação de diretórios
- Comandos essenciais do VI
- Lista completa de comandos do VI
Aulas
Aula 01 (06/08) - Introdução. SO Linux. Shell e comandos básicos
Conteúdo:
- Apresentação da disciplina
- Introdução a Gerência de Redes de Computadores (slides)
- Sistema Operacional Linux e Redes (slides)
- Shell
- Comandos básicos de Linux
- Editor VI
Comandos básicos Linux |
---|
# Comandos de navegação e interação com arquivos:
ls # listar arquivos
cd # mudar diretório
rm # remover arquivos
cp # copiar arquivos
mv # mover arquivos ou renomeá-los
cat # mostra o conteúdo de um arquivo ou concatena com outro arquivo
more # exibe o conteúdo de um artigo de forma paginada
pwd # mostra o caminho para o diretório atual
rmdir # deleção de diretório
mkdir # criação de diretório
clear # limpa a tela
# Comandos relacionados aos usuários:
who # mostra as sessões abertas na máquina
whoami # mostra o nome do usuário atual
finger # mostra informações de usuário
# Comandos relacionados ao status da memória e do disco:
df # informações de espaço em disco
du # utilização do disco
free # informações de memória
top # mostra processos
|
Atividades:
Respostas do exercício de comandos básicos |
---|
|
Aula 02 (07/08) - Instalação de aplicativos e Sistemas de arquivos
Conteúdo:
- Gerenciador de pacotes apt
- Sistemas de arquivos
Instalação de aplicativos |
---|
A instalação de software pode ser feita de diversas formas, dentre as quais serão destacadas três:
Exemplo de uso do apt-get:
lynx http://www.ifsc.edu.br/
Exemplo de uso:
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
lynx ...
|
Atividades:
Exercícios de instalação de pacotes |
---|
Respostas
|
Exercícios sobre sistemas de arquivos |
---|
Respostas
|
Aula 03 (12/08) - Gerenciamento de usuários e grupos e Cotas de disco
Conteúdo:
- Gerenciamento de usuários e grupos.
- Permissionamento.
- Cotas de usuário.
Roteiro |
---|
Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. Apostila, páginas 61 a 65. Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:
As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de bases de dados de usuários). Dentre elas, a mais simples é composta pelo arquivo /etc/passwd: root:x:0:0:root:/root:/bin/bash sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash Acima um exemplo de arquivo /etc/passwd Cada linha desse arquivo define uma conta de usuário no seguinte formato: nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell O campo senha em /etc/passwd pode assumir os valores:
O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:
Um exemplo do arquivo /etc/shadow segue abaixo: root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922:::::: suse-ncc:!:13922:0:99999:7::: uucp:*:13922:::::: wwwrun:*:13922:::::: roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7::: Exercício: quando a senha do usuário roberto irá expirar ? Um grupo é um conjunto de usuários definido da seguinte forma:
Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo /etc/group a mais simples delas: root:x:0: trusted:x:42: tty:x:5: utmp:x:22: uucp:x:14: video:x:33:roberto www:x:8:roberto users:x:100: radiusd:!:108: vboxusers:!:1000: Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em /etc/passwd), ou que aparecem listados em /etc/group. Gerenciamento de usuários e gruposPara gerenciar usuários e grupos podem-se editar diretamente os arquivos /etc/passwd, /etc/shadow e /etc/group, porém existem utilitários que facilitam essa tarefa:
Esses utilitários usam os arquivos /etc/login.defs e /etc/default/useradd para obter seus parâmetros padrão. O /etc/adduser.conf tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando adduser. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é: MAIL_DIR dir # Diretório de e-mail PASS_MAX_DAYS 99999 #Número de dias até que a senha expire PASS_MIN_DAYS 0 #Número mínimo de dias entre duas trocas senha PASS_MIN_LEN 5 #Número mínimo de caracteres para composição da senha PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha UID_MIN 500 #Número mínimo para UID UID_MAX 60000 #Número máximo para UID GID_MIN 500 #Número mínimo para GID GID_MAX 60000 #Número máximo para GID CREATE_HOME yes #Criar ou não o diretório home Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é: GROUP=100 #GID primário para os usuários criados HOME=/home #Diretório a partir do qual serão criados os “homes” INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada EXPIRE=AAAA/MM/DD #Dia da expiração da conta SHEL=/bin/bash #Shell atribuído ao usuário. SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. GROUPS=video,dialout CREATE_MAIL_SPOOL=no O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser: DSHELL=/bin/bash #Shell atribuído ao usuário. DHOME=/home #Diretório a partir do qual serão criados os “homes” SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. FIRST_UID=1000 #Número mínimo para UID LAST_UID=29999 #Número máximo para UID FIRST_GID=1000 #Número mínimo para GID LAST_GID=29999 #Número máximo para GID QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado. PermissõesHá uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa. Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos. O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes. Quando se executa ls -l em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte: > ls -l total 403196 drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/ -rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2 -rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2 -rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe -rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe > As colunas que aparecem na listagem são:
O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10). Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes:
A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório. A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:
Há também o utilitário umask, que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos:
|
Atividades:
Roteiro |
---|
Permissionamento de arquivos e grupos de usuários
|
Aula 04 (20/08) - Processo de Boot e RAID
Conteúdo:
- Processo de Boot
- upstart
- Esquema RAID
Roteiro |
---|
Boot: 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:
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:
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. RAID: 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:
Criação de um volume RAID no Linux:
Para ativar um volume já criado, basta executar mdadm --assemble caminho_do_volume. Ex: mdadm --assemble /dev/md0, mdadm --assemble /dev/md1. |
Atividades:
Roteiro |
---|
Um exemplo de criação de serviço no upstart
Atividade RAID:
|