Iaí pessoal! Outro post da série de outros de outros que serão publicados sobre LPIC-2. Hoje o assunto é Hardware e os objetivos desse tópico são:
- Configurar um RAID software
- Adicionar um novo hardware
- Configuração dos softwares e kernel para o hardware
- Configurar dispositivos PCMCIA
Objetivo 1: Configurar um RAID Software
Realmente escrever esse tópico é um pouco perigoso para mim, pois não sou envolvido em um ambiente com uma grande possibilidade de treino desse tipo de tecnologia. Sendo assim, a maior parte dos exemplos demonstrados não foram realmente testados e foram adquiridos de fontes teóricas. Caso alguém perceba que cometi algum engano, por favor, se manifeste!
Conceito de RAID
RAID é o acrônimo de Reduntant Array of Independent Disks ou Reduntant Array of Inexpensive Disks, ou seja, Conjunto Redundante de Discos Independentes ou também Conjunto Redundante de Discos Econômicos. Essa ferramenta tem o objetivo de prover uma maior confiabilidade ou performance para acesso aos discos rígidos, fazendo com que eles trabalhem como se fosse uma só unidade. É uma tecnologia que pode ser implementada tanto via software como via hardware, através de placas controladores específicas.
A tecnologia RAID funciona de várias maneiras, ou seja, dizemos que funciona em vários “níveis RAID”. Existe hoje 6 níveis de funcionamento. Irei descrever apenas os níveis que possuem importância para a prova LPIC-2.
- RAID nível 0 – Nesse nível, os discos funcionam como se fossem um único disco. Ou seja, o tamanho total da área de armazenamento do disco virtual é igual a soma de todos os outros discos da matriz. Nível também chamado de Striping.
- RAID nível 1 – Nesse nível, cada disco existente na matriz deverá possuir um outro que receberá todos os dados gravados no primeiro. Ou seja, haverá um disco espelhado para cada disco utilizado. O tamanho total da área de armazenamento do disco virtual será igual à metade de todo o espaço de todos os discos. Nível também chamado de Mirroring.
- RAID nível 5 – Nesse nível, ao serem gravados os dados em um disco, haverá uma área especial onde serão gravados dados de paridade, de maneira que esses dados possam realizar a identificação de erros que possam ocorrer em algum dos discos.
- RAID LINEAR – Nível parecido com o zero, pois ambos têm o objetivo de criar um grande disco virtual sem redundância. Porém, o que difere esse nível do anterior, é que o acesso aos dados é seqüencial, ou seja, não existe paralelismo como ocorre no nível zero.
Uma descrição mais detalhada sobre cada um dos níveis pode ser obtida aqui ou aqui.
Ferramentas para uso de RAID
Na LPIC-2 é cobrada a configuração de um RAID via software. RAIDs via hardware irão depender da BIOS da placa controladora RAID, que por sua vez, irá depender do fabricante, o que vai além do escopo desse exame.
RAID software pode ser criado utilizando as ferramentas mkraid, raidstart, raidstop e raidhotadd. As descrições de cada uma das ferramentas serão vistas abaixo.
mkraid
Sintaxe:
mkraid [opções] dispositivo-raid
Ferramenta utilizada para a criação de uma matriz de dispositivos. Utiliza, por padrão, o arquivo de configuração /etc/raidtab (descrito abaixo) para definição dos componentes do RAID. mkraid pode criar RAIDs 0, 1, 4, 5 e LINEAR.
Exemplos de uso:
# mkraid /dev/md0
# mkraid -c /etc/raid/raid.conf /dev/md0
O primeiro comando acima irá criar o RAID /dev/md0 de acordo com a configuração estabelecida em /etc/raidtab.
raidstart
Sintaxe:
raidstart [opções] dispositivo-raid
Comando utilizado para a inicialização de uma matriz já existente.
Exemplos de uso:
# raidstart /dev/md0
# raidstart -c /etc/raid/raid.conf /dev/md0
A primeira linha de comando irá ativar o RAID /dev/md0. A segunda linha, irá realizar o mesmo, porém, obtendo informações sobre a matriz em /etc/raid/raid.conf.
raidstop
Sintaxe:
raidstop [opções] dispositivo-raid
Comando utilizado para a paralisação de uma matriz.
Exemplos de uso:
# raidstop /dev/md0
# raidstop -a -c /etc/raid/raid.conf
O primeiro comando irá desativar a matriz /dev/md0 configurada em /etc/raidtab, bem como também irá desconfigura-la. O segundo comando irá realizar o mesmo para todas as matrizes contidas em /etc/raid/raid.conf.
raidhotadd
Sintaxe:
raidhotadd dispositivo-raid dispositivo-novo [dispositivo-novo …]
Ferramenta útil para realizar a inserção de novos discos ou partições a um RAID software sem a necessidade de recriar toda a matriz.
Exemplos de uso:
# raidhotadd /dev/md0 /dev/sdb1
# raidhotadd /dev/md0 /dev/sdb1 /dev/sdb2
O primeiro comando irá adicionar o dispositivo /dev/sdb1 a matriz /dev/md0. O segundo comando irá fazer o mesmo para dois dispositivos simultaneamente (/dev/sdb1 e /dev/sdb2).
/etc/raidtab
O arquivo /etc/raidtab é o padrão utilizado pelas ferramentas acima citadas para a configuração dos RAIDs via software do sistema. Esse arquivo de configuração é dividido em diversas seções, uma para cada conjunto de matriz RAID. Cada seção é iniciada com a palavra-chave raiddev. Segue abaixo um exemplo do arquivo /etc/raidtab.
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 0
chunk-size 8
device /dev/hda1
raid-disk 0
device /dev/hdb1
raid-disk 1
raiddev /dev/md1
raid-level 5
nr-raid-disks 3
nr-spare-disks 1
persistent-superblock 1
device /dev/sda1
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
raid-disk 2
device /dev/sdd1
spare-disk 0
Abaixo uma descrição sobre cada uma das opções presentes no arquivo.
- raiddev – indica qual o dispositivo que será associado a matriz RAID.
- raid-level – qual o nível RAID que será utilizado.
- nr-raid-disks – número de discos que farão parte do RAID. Discos Spare não deverão ser incluídos.
- persistent-superblock – se serão gravadas, em cada dispositivo da matriz, informações sobre matriz RAID. É necessário caso queira que a RAID seja montada na inicialização do sistema.
- chunk-size – ao ser gravado um dado qualquer no disco, ele é dividido em várias partes, de acordo com o número de discos, para gravar um pedaço em casa um deles. chunk-size especifica o tamanho para gravação por vez em cada disco. O valor é especificado em kilobytes. No exemplo acima, 4 indica que em cada disco os dados serão gravados em grupos 4KB. Se fôssemos gravar 16KB de dados em 2 discos, os dados serão agrupados em grupos de 4KB sendo que o primeiro e o terceiro grupo de 4KB serão gravados no primeiro disco e o segundo e o quarto grupo de 4KB serão no segundo disco.
- device – dispositivo que será parte da matriz.
- raid-disk – número de identificação do disco no conjunto RAID.
- spare-disk – número de identificação do disco spare do conjunto RAID.
Objetivo 2: Adicionando Novo Hardware
Na LPIC-1 foram vistas algumas ferramentas simples para informações sobre o hardware, como lspci e isapnp. Na LPIC-2 não existe uma grande diferença com relação a este tópico, cabendo apenas melhor identificar o momento apropriado para a aplicação de cada um desses comandos.
Descobrindo o Hardware
Antes de realizar a adição de qualquer hardware, é importante poder identificar o que já existe no sistema e como o mesmo está configurado. Para tanto, as ferramentas a seguir poderão nos informar sobre o que for preciso.
lsmod
Sintaxe:
lsmod [opções]
O comando lsmod nos informa sobre todos os módulos que estão atualmente carregados no sistema. Obter informações sobre os módulos nos permite identificar problemas, como conflitos de drivers.
Exemplo de uso:
# lsmod
O comando exibe todos os módulos carregados, assim como o tamanho em memória de cada um deles e possíveis dependências entre os módulos.
lsdev
Sintaxe:
lsdev
O comando lsdev não aceita argumentos nem opções. Seu objetivo é fornecer informações sobre o hardware instalado. Ele basicamente formata os dados dos arquivos /proc/ioports, /proc/interrupts e /proc/dma em uma única saída.
Exemplo de uso:
# lsdev
Informa sobre os dispositivo quais canais DMA, IRQ e endereço de I/O cada dispositivo está utilizando.
lspci
Sintaxe:
lspci [opções]
Ferramenta utilizada para listar todos os barramentos PCI e os dispositivos conectados a eles no computador.
Exemplos de uso:
# lspci
# lspci -vvv
O primeiro e segundo comando fazem basicamente o mesmo, porém, o segundo nos informa sua saída com muito mais detalhes que a segunda linha de comando.
Objetivo 3: Configuração de Kernel e Software
Na LPIC-2 é cobrada a configuração de características especiais de alguns hardwares, bem como alguns softwares, como o uso de LVM (Logical Volume Manager), que será logo abaixo melhor explanado. Vamos primeiramente descrever o uso da ferramenta hdparm para configuração de discos rígidos.
hdparm
Sintaxe:
hdparm [flags] [dispositivo] …
Ferramenta para a manipulação de parâmetros do disco rígido. Pode ser utilizada para definir valores ou apenas obtê-los. As informações fornecidas pelo hdparm podem o auxiliá-lo na resolução de problemas ou melhoria de performance do disco.
Exemplos de uso:
# hdparm -a /dev/sda
# hdparm -d 1 /dev/sda
# hdparm -c 0 /dev/sda
# hdparm -z /dev/sda
O primeiro exemplo irá obter o número de setores que irão ser utilizados na técnica de read-ahead, onde os dados são recuperados do disco rígido antes mesmo de serem lidos. O segundo exemplo indica que o disco irá utilizar o barramento DMA para transferências de dados. O terceiro exemplo desabilita o suporte 32 bits IDE no disco rígido. O último exemplo força o kernel a realizar uma nova leitura da tabela de partições do dispositivo.
LVM
LVM é o acrônimo de Logical Volume Manager. É uma poderosa ferramenta disponível no Linux que permite que os volumes sejam criados sob uma estrutura virtual independente da estrutura física. LVM trabalha como uma camada de abstração entre o disco e o sistema de arquivos, permitindo o administrador, por exemplo, redimensionar facilmente uma partição, sem se preocupar onde fisicamente ela está armazenada. Porém, LVM não implementa nenhum mecanismo de recuperação de falhas. Ou seja, se um disco falhar, você poderá perder uma grande quantidade de dados.
Abaixo as etapas básicas para a criação de um volume LVM.
- Indicar ao software LVM quais discos físicos farão parte do volume virtual. Esses dispositivos estarão sob o controle do LVM.
- Se houver mais de um volume físico, será necessário criar um grupo de volumes que agrupe todos os dispositivos.
- Dentro do grupo de volumes deverão ser criados os volumes lógicos. Esses volumes lógicos poderão ser utilizados por sistemas de arquivos.
Iremos agora utilizar as ferramentas necessárias para a criação de toda a estrutura LVM.
Inicializando um Disco ou Partição
pvcreate
Sintaxe:
pvcreate [opções] dispositivo [dispositivo …]
Podemos indicar para participação do controle LVM partições específicas de dispositivos ou discos inteiros. Para tanto, é necessário utilizar o comando pvcreate. O dispositivos participantes de um controle LVM também são chamados Phisical Volume.
Exemplos de uso:
# pvcreate /dev/sda
# pvcreate /dev/sda1 /dev/sdb
O primeiro exemplo inicializa o dispositivo /dev/sda para estar apto a participar de um LVM. O mesmo realiza o segundo comando, em uma partição (/dev/sda1) e disco rígido (/dev/sdb). Importante notar que para que as partições sejam inicializadas, é necessário que na tabela de partições elas sejam identificadas como sendo volumes LVM. Para tanto, utilize o fdisk e modifique o tipo das partições para “8e”.
Criando um Grupo de Volume
Um grupo de volumes ocupa um ou mais dispositivos, sejam eles partições ou discos completos. Um grupo de volumes é composto por volumes lógicos. Cada volume lógico pode ser composto de vários discos físicos, porém a possibilidade de falha é substancialmente maior. Vamos utilizar a ferramenta vgcreate para a criação do grupo de volumes.
vgcreate
Sintaxe:
vgcreate [opções] nome-do-volume dispositivo [dispositivo …]
O grupo de volumes (ou Volume Group) pode ser formado por quaisquer dispositivos em quaisquer discos, desde que a partição associada esteja identificada como sendo do tipo “Linux LVM”.
Exemplos de uso:
# vgcreate Volume01 /dev/sda1 /dev/sdb
Cria o grupo de volumes chamado “Volume01” composto pelos dispositivos /dev/sda1 e /dev/sdb.
Criando um Volume Lógico
lvcreate
Sintaxe:
lvcreate {-l tamanho-do-logical-extents | -L tamanho-do-volume-lógico } nome-do-volume
O lvcreate é utilizado para a criação dos volumes lógicos (também chamados Logical Volume) que poderão finalmente ser utilizados como volumes virtuais. Esses volumes podem ser particionados de acordo com a necessidade e neles poderão haver qualquer sistema de arquivos.
Exemplos de uso:
# lvcreate -L300M Volume01
# lvcreate -l 1000 Volume01
# lvcreate -l %60 -n part1 Volume01
O primeiro lvcreate irá realizar a criação de um volume lógico dentro do grupo de volumes “Volume01”. Esse volume lógico terá 300MB de tamanho. Os volumes lógicos poderão ser utilizados para a instalação de sistemas de arquivos. O segundo comando irá realizar também a criação de um volume lógico, porém, em vez de especificar o tamanho que terá o volume, será fornecido o número de PE (Phisical Extends) que irão compor o volume. Cada PE possui um tamanho como 4MB (pode ser modificado esse valor na criação do PV). O último comando faz o mesmo, com o diferencial de informar qual a porcentagem do grupo de volume que será envolvida pelo volume lógico, além de indicar qual será o nome dado ao volume lógico.
Exibindo Informações
Após realizados os passos anteriores já é possível a instalação de um sistema de arquivos em cada um dos volumes lógicos. Para obter informações sobre cada uma das unidades discutidas (PE, PV, VG e LV) são utilizadas diversas ferramentas que possuem nomes já intuitivos. Segue abaixo a lista das ferramentas utilizadas.
- pvdisplay – informações sobre um PV, como o tamanho do PE, tamanho do disco, uso e estado para uso.
- vgdisplay – informações sobre um VG, como modo de acesso, tamanho do volume e uso de PEs.
- lvdisplay – praticamente as mesmas informações que a ferramenta vgdisplay e algumas estatísticas interessantes de E/S.
- pvscan – procura pelo sistema discos PV e exibe estatísticas gerais sobre os mesmos.
Um bom sítio web de referência sobre LVM pode ser encontrado aqui. Não irei entrar em maiores detalhes sobre redimensionamento de partições LVM bem como sobre outras operações mais específicas, pois elas estão além de minhas experiências. Até onde pesquisei pela Internet, operações mais avançadas com LVM do que as especificadas aqui não serão cobradas na prova LPIC-2.
Objetivo 4: Configurando dispositivos PCMCIA
Ao contrário do que encontramos com WinModens ou alguns outros Hardwares específicos, os dispositivos PCMCIA são historicamente bem amigáveis com Linux. Vamos primeiramente entender quais processos são envolvidos no uso desse tipo de hardware.
O Hardware PCMCIA é detectado durante o processo de inicialização do sistema operacional. Em ambientes RedHat, com kernel 2.4, o módulo do kernel correspondente para suporte PCMCIA chama-se kernel-pcmcia-cs. No Debian, no kernel 2.4, é utilizado para suporte a placas PCMCIA o módulo pcmcia-cs. No kernel 2.6, tanto o Debian como o RedHat utilizam o pacote de utilitários pcmciautils para o subsistema PCMCIA no sistema operacional.
Alguns utilitários podem variar de um sistema para outro. Por exemplo, podemos utilizar o pacote hotplug para realizar a detecção “a quente” das placas PCMCIA. Outras distros, com kernel 2.4, utilizam sistemas de detecção de hardware diferentes, como o cardmgr, que é o principal foco das provas LPIC-2. Porém, o propósito de ambos os sistemas é permitir carregar o módulo específico para o tratamento da placa que foi plugada. O cardmgr também tem a capacidade de realizar o mesmo para a desconexão de placas. Todos esses eventos são registrados no arquivo /var/lib/pcmcia/stab.
Arquivos de Configuração
Diversos arquivos determinam o funcionamento do cardmgr. Quando uma placa PCMCIA é plugada ao sistema, uma classe é associada e assim é definido qual será a configuração e gerenciamento adotado para o dispositivo. As classes são associadas aos drivers dos dispositivos em /etc/pcmcia/config. As classes disponíveis para dispositivos são: network, isdn, cdrom, ftl, serial, parport, ide, iccc e teles. A cada uma dessas classes poderá ter associado um arquivo de configuração principal, chamado /etc/pcmcia/network, por exemplo, e outro arquivo contendo scripts opcionais (/etc/pcmcia/network.opts). Os arquivos das classes respectivas são invocados pelo cardmgr no momento em que as placas são conectadas ao sistema e no momento em que são desligadas.
Comandos PCMCIA
Existem 2 comandos principais para a manipulação das placas pelo cardmgr. Uma descrição mais detalhada de ambas as ferramentas além do próprio arquivo de configuração do cardmgr pode ser obtida aqui.
cardmgr
Sintaxe:
cardmgr [opções]
É o processo encarregado de configurar em tempo de execução os dispositivos PCMCIA conectados e desconectados do sistema. Seu comportamento é definido de acordo com o arquivo /etc/pcmcia/config.
Exemplos de uso:
# cardmgr -q
O exemplo acima executa o cardmgr de modo a não tocar um “beep” durante a conexão/desconexão de um dispositivo PCMCIA no slot correspondente.
cardctl
Sintaxe:
cardctl comando [socket]
cardctl scheme [nome]
O comando cardctl pode ser utilizado para checar e configurar o status de um socket PCMCIA. O uso dessa ferramenta na prova é muito pouco cobrado. Apenas funcionalidades básicas podem vir a ser cobradas, é por isso que detalhes são omitidos.
Exemplos de uso:
# cardctl scheme work
# cardctl ident 1
# cardctl -s /var/lib/pcmcia.log
O primeiro comando irá modificar o scheme para “work”. Podem ser associados diversos schemes diferentes, como configurações prévias para funcionamento dos dispositivos. O segundo comando irá checar a identificação do cartão PCMCIA no slot número 1. O último comando irá ler informações sobre os sockets contidas no arquivo /var/lib/pcmcia.log ao invés do padrão /var/lib/pcmcia/stab.
Finalizando
Mais um post sobre LPIC-2 finalmente terminado! Realmente demorei para postar esse post porque estava meio sem tempo durante essas semanas. Resolvendo algumas coisas sobre uma viagem que irei realizar. Enfim, espero que gostem do conteúdo de hoje e lembrando: qualquer dúvida, crítica, sugestão de melhoria, é só enviar como comentário aqui para o blog! O comentário dos leitores é importante para ter um retorno de como anda o conteúdo.
Até a próxima, galera! 🙂
O texto ainda contem alguns erros.
“RAID LINEAR – Nível parecido com o >>>>, pois ambos tem o objetivo de criar um grande disco virtual sem redundância. Porém, o que difere esse nível do anterior, é que o acesso aos dados é seqüencial, ou seja, não existe paralelismo como ocorre no nível >>>>>”.
Afinal, o raid lineae eh parecido com o nivel zero ou o nivel um?
“Se fôssemos gravar 16KB de dados em 2 discos, os dados serão agrupados em (QUATRO) grupos de 4KB sendo que o >>> e o >>>> grupo de 4KB serão gravados no primeiro disco e o >>>> e o |||||||||||||||||||||terceiro||||||||||||||||||||| grupo de 4KB serão no segundo disco.”
primeiro, terceiro, segundo e QUARTO, nao?
HOHohoOHHO, Valeu Marília! Foi corrigido já os trechos que você falou! A gente escreve tanto que vai ficando com os miolos confusos! 😛