sexta-feira, 18 de dezembro de 2009

Considerações gerais sobre LVM

- Um file system desmontado pode ser incrementado em seu tamanho, utilizando uma porção ainda não usada do volume logico ou pode ser extendido para um novo volume fisico.

O comando "extendfs" possibilita aumentar o tamanho do file system, executando todos os procedimentos necessarios para atualização do superbloco (original e copia) e de dados de grupo de cilindros com o endereço dos novos cilindros adicionados.
- O LVM dispõe de comandos que permitem exportar e importar um grupo de volumes de um equipamento para outro.

- Quando por qualquer motivo for necessario recuperar o conteudo de um disco, os comandos tradicionais de backup, apenas retornam os dados do usuario para o volume logico. Porem é necessario também reconstituir a configuração do LVM. Para isso existem 2 comandos que permitem obter o "Backup" e "Restore" da configuração do LVM:
vgcfgbackup - backup da configuração do LVM de um grupo de volumes em arquivos binarios (um arquivo para cada grupo). Esses arquivos são guardados no diretorio "/etc/lvmconf".

vgcfgrestore - permite restaurar a configuracao de um grupo de volumes em volumes fisicos individuais.
- A administração de grupos de volumes, volumes fisicos, volumes logicos, swapping e file system pode ser feitas por comandos ou pelo gerenciador do sistema operacional.

- Os volumes fisicos no LVM são identificados pelo seu nome de device para a seção 2. Cada disco tem um arquivo especial bloco e um arquivo especial caractere. Algumas tarefas de administração do LVM utilizam os arquivos blocos e outros arquivos caractere:
  • Criação de Volume Fisico  - pvcreate - arquivo especial caractere;
  • Adicionando volume fisico em um grupo de volumes - vgextend - arquivo especial bloco;
  • Criar File System ou um volume logico - newfs - arquivo especial caractere;
  • Adicionar um disco a um volume logico ou aumentar o espaço de um volume logico - extendfs - arquivo especial caractere;
  • Montar e desmontar uma file system - mount/umount - arquivo especial bloco;

Gerencimento de Volumes Logicos - Parte 5.

Tabela de grupos de cilindros

O grupo de cilindros é uma coleção de um ou mais cilindros do disco. Um cilindro é a coleção das trilhas formadas pelo posicionamento dos cabeçotes nos multiplos pratos. Cada grupo de cilindro contem a copia do superbloco primario, uma tabela com informações da estrutura do grupo de cilindros, uma tabela de inode e blocos de dados. Todos as informações de acesso ao arquivo e seus dados são controlados pelo grupo de cilindros.
Informações contidas na tabela de grupo de cilindros:
- numero de inodes e de blocos de dados
- mapa dos inodes usados
- mapa dos blocos livres
- ponteiro do ultimo bloco usado
- ponteiro do ultimo fragmento usado
- ponteiro do inode
- numero de fragmentos disponiveis
Tabelas e inodes

Inode é uma tabela que contem informações sobre um arquivo. Um inode contem informações sobre:
- tamanho do arquivo
- dono
- grupo
- data e horario de criação
- ultimo aceso e ultima modificação
- permissões
- numeros de links
- tipo de arquivo
- endereço para os blocos de dados

Os inodes de cada grupo de cilindros são armazenados na tabela de inodes dentro do grupo de cilindros.
O inode contem 15 ponteiros que endereçam os blocos de dados. Quando o arquivo é criado, é feito uma entrada em um desses endereços, o mesmo acontece se o arquivo for aumentado. Se o arquivo for reduzido, os ponteiros são realocados, o endereço dos blocos de dados são retirados do inode e coloado na lista de blocos livres da file system.
O tamanho do inode é de 128 bytes. Cada ponteiro ocupa 4 bytes. Os blocos de dados podem ter 4 ou 8 Kbytes. Os primeiros 12 ponteiros que são conhecidos como blocos diretos apontam diretamento para os blocos de dados do arquivo, podendo o arquivo atingir um tamanho de 96 Kbytes (se os blocos de dados forem 8 Kbytes).
Se o arquivo for maior, o inode ocupara o 13º ponteiro, endereçando um bloco de 4 ou 8 Kbytes (blocos indiretos) ou qual contera 1024 ou 2048 endereços de blocos de dados. Asssim um arquivo podera atingir o tamanho de 16480 Mbytes.
Se o arquivo for mairo que 16480 Mbytes, o inode ocupara  o 14º ponteiro, endereçando um bloco de 4 ou 8 Kbytes o qual contera 1024 ou 2048 endereços ( blocos indiretos duplos ) que apontara um para um bloco 4 ou 8 Kbytes de blocos de dados. Assim um arquivo podera atingir o tamanho de aproximadamente 33 Gbytes. 
O 15º ponteiro esta reservado para uso futuro.
Blocos de dados

O resto do espaço da file system é ocupado por blocos de dados também chamados por blocos de armazenamento. Esses blocos podem ser de 4 ou 8  kb de tamanho e constituem a minima porção que pode ser lida ou gravada em uma file system.
Em arquivos comuns, os blocos de dados contem os dados do arquivo.
Em diretorios, os blocos de dados contem as entradas dos arquivos.
Os arquivos especiais não tem  blocos de dados.

FRAGMENTAÇÃO
Um bloco de dados é dividido em fragmentos de 1, 2, 4 ou 8 Kbytes. O  fragmento é a minima porção que pode  ser acessada em um file system. Os fragmentos são utilizados quando um arquivo não ocupa um bloco em sua totalidade. Um fragmento é alocado sometne no final do arquivo. Um arquivo usara fragmento contido em um unico bloco. Um bloco pode conter fragmento de mais de um arquivo. Multiplos fragmentos podem ser usados por um unico arquivo e serao continuos dentro do bloco.

Supondo os arquivos
A com 512, B com 1 K e C com 3 K:

A - 512 bytes   _
B - 1 K __
C - 3 K ______

Se tivermos usando um disco cujos blocos sejam de 8 Kb e os fragmentos também de 8 Kb, teriamos:

_|______________ -> arquivo A = 8 Kb
__|_____________ -> arquivo B = 8 Kb
______|_________ -> arquivo C = 8 Kb

O total de blocos usados por esses 3 arquivos seria de 24 Kb.

Se tivermos utilizando um disco cujos blocos sejam de 8 Kb e os fragmentos de 1 Kb, teriamos

A|_B|_____C|_____ -> O total de blocos utilizados por esses 3 arquivos seria de 5 Kb.

abraços e até a proxima.

quinta-feira, 17 de dezembro de 2009

Gerencimento de Volumes Logicos - Parte 4.

File System

O HP-UX aloca blocos de 512 bytes e faz a ocupação sequencial dos blocos dentro da file system. Cada vez que um bloco é liberado, fica a disposição do sistema para reaproveitamento, tornando dinamica a alocação de disco. Para agilizar o acesso ao disco, o HP-UX utiliza-se de buffer de I/O, de 1024 bytes, para transferencia de dados em memoria, mantendo-os por um determinado periodo de tempo, antes de grava-lo em disco.
COMPONENTES DO FILE SYSTEM

Um sistema de arquivos consistem em:
- Bloco de boot ( somente em discos de boot)
- superbloco primario
- superbloco redundante
- tabela do grupo de cilindros
- tabela de inodes
- blocos de dados ( arquivos e diretorios )

Bloco de boot

O bloco de boot é utilizado pelo sistema como bloco de boot; ele ativa um programa para carregar o nucleo do sistema operacional. Este bloco não é utilizado pelo gerenciador do sistema de arquivos.

Superbloco primario

O superbloco primario é uma area de 8 Kbytes no disco. Pelo fato de ser extremamente importante para o sistema, uma copia é mantido em memoria.
Ele é atualizado em disco sempre que o comando sync é executado. O HP-UX mantem uma copia do superbloco em cada grupo de cilindro que é denominado superbloco redundante, possibilitando a reconstituição em caso de perda.

O superbloco possui informações para o gerenciamento da filesystem. É conhecido como cabeçalho da filesystem e é sempre o bloco 1 de um volume logico do HP-UX. 

As informações contidas no superbloco são:
- flag de modificação do superbloco (informações de atualização da file system)
- informações estaticas:
  • tamanho da file system
  • numeros de inodes
  • mapa de localização de espaços livres
  • numero de grupos de cilindros
  • localização do superbloco, grupo de cilindros, inodes e blocos de dados
  • tamanho dos discos e numero total de blocos
  • tamanho de fragmentos e numero total de fragmentos
- informações dinamicas:
  • numero total de blocos livres
  • numero total de inodes livres
  • flag do file system ( 0 = montado, 1 = desmontado)
Obs: A cópia do superbloco primario (redundante) contem somente as informações estaticas se for necessario a reconstituição das informações dinamicas, sera feito atraves do comando "fsck". O arquivo "/etc/sbtab" contem um lista de localização dos superblocos reduntantes em cada grupo de cilindros. Este arquivo deve ser listado e guardado para referencias futuras.

ate mais,....


Gerencimento de Volumes Logicos - Parte 3.

Area e Swap (swap space)

Swap é uma area de armazenamento em disco para uso da memoria virtual, para executar swapping ou paging de processos.
A memoria fisica é um recurso limitado, isso significa que somente alguns processos podem estar presente na memoria em um periodo de tempo, enquanto outros processos estão aguardando. Em função dessa situação foi introduzido o conceito de swap; quando a solicitação de memoria fisica for alta os processos inteiros ou parte deles são colocados em area de swap, e quando essa solicitação diminui os processos inteiros ou parte deles são trazidos de votla para a memoria.

Existe um daemon chamado "Vhand", que monitora cada pagina de memoria tentando encontrar paginas ( uma pagina é igual a 4 Kbytes) que não estejam sendo acessadas atualmente. Se existir uma alta solicitação de memoria, as paginas que não estão sendo acessadas atualmente são levadas para a area de swap (swap out) atraves do "Vhand". Um outro daemon "statdaemon" retem informações de quando o Vhand esta ocupado. Quando o statdaemon percebe que o Vhand não esta conseguindo manter a memoria livre tão rapido quanto são as solicitações, ele ativa o "swapper".
  • Vhand - leva/retorna paginas de processos para/da area de swap. (paging out e paging in)
  • Swapper - leva/retorna processos inteiros para/da area de swap
Com relação a memoria fisica deve se distinguir 3 conceitos:
  • real memory - é a quantidade de memoria fisica instalada no sistema
  • lockable memory - é a  quantidade de memoria reservada por um subsistema ou por um processo. Não pode ser feito swap do conteudo dessa area.
  • availabe memory - é a memoria disponivel para ser utilizada como memoria virtual.
Essas informações podem ser obtidas pelo comando "dmesg".

Todo o gerenciamento de memoria é efetuado pelo MMU (Memory Management Unit) que intarage entre os endereços dos espaços fisicos e endereços dos espaços logicos.
TERMOS UTILIZADOS:
  • device swap - Uma partição (seção ou LVM) ou um disco inteiro, utilizado exclusivametne para swap. O device swap não utiliza o espaço de um file system. Exceto para o swap primario, os demais podem ser configurados dinamicamente.
  • primary swap - é um tipo especial de device swap que esta localizado no mesmo disco do file system root e é ativado durante o boot.
  • secondary swap - é um tipo especial de device swap adicional que pode estar localizado em qualquer outro disco.
  • File System Swap - é uma area de swap adicional reservada dentro de uma file system. É configurada dinamicamente e utilizada quando o espaço do device swap não for suficiente.
  • Pseudo Swap - permite utilizar uma parte da memoria real como area de swap. Desta forma a memoria real tera uma area disponivel para execução de processos e uma area disponivel para utilização de swap. É indicado para quando se tem muita memoria real. O pseudo swap é configurado no Kernel atraves do parametro "swappseudo-on" (1 = habilitado e 0 = desabilitado, o default é 1)
Observações

- Algumas aplicações necessitam de uma quantidade minima de area de swap para serem executadas adequadamente. A quantidade necessaria normalmente esta escrita na documentação da aplicação.
- A mensagem de erro "sorry pid xxxxxx was killed due to no swap space" aparece quando não ha espaço de swap disponivel para execução do processo. Verifique o espaço de disco disponivel para aumentar ou criar area de swap.

- O tamanho da area de swap necessaria equivale a 2 vezes a memoria real, esse assunto é discutivel, hoje em muitos sistemam, 1 vez o tamanho é suficiente as vezes ate menos.
- Coloque uma unica partição de swap por disco do contrario podera resultar num excessivo movimento de cabeça de disco.

- As areas dos devices swap devem ter tamanhos semelhantes.

- Areas de swap em discos diferentes são tratados intercalando a utilização de espaços de um disco e de outro disco.

- Quando se define uma area de swap, deve-se atribuir a prioridade de uso da area (0-melhor a 10-pior). O sistema utiliza primeiramente as areas de prioridade 0 e depois as de prioridade 10.

- Areas de swap criadas em dispositivos mais rapidos devem ter melhor prioridade.

- Area de swap em file system devem ter prioridade pior, ou seja mais proximo de 10.

- A area total de swap disponivel no sistema consiste de todas as areas de swap disponiveis (device swap e file system swap). O gerenciador de swap reserva o espaço de swap no momento da criação do processo, mas somente aloca o espaço no momento de fazer o swap.

- "swapinfo" é o comando que exibe informações sobre as areas de swap. Na listagem exibida podera ser identificado 3 tipos de swap; "dev" (device swap), "fs" (file system swap) e "hold" (montante de area reservada na criação do processo, porem ainda não alocada). Algumas das opções do comando swapinfo são:
-t inclui uma linha de totais.
-a exibe todas as areas de swap, inclusive as que não estão em uso.
-d exibe informações das devices swap somente.
-q imprime somente os totais.

Gerencimento de Volumes Logicos - Parte 2.

Como prometido estou voltando ao assunto de Volumes Logicos, hoje estarei escrevendo sobre root disk, grupo de volumes root, area de swap, File System, etc

Disco de root (root disk)
Um disco deve, normalmente, ter 3 areas; area de boot, area de swap e area das file systems.
A area de boot é gerada no processo de instalação e contem o codigo de ativação do sistema. Essa area so é utilizada durante o boot do sistema.
Em discos particionados pelo metodo de seção, a area de boot deve residir na "seção 6". Em sistemas gerenciados pelo metodo "LVM", a area de boot esta contida na BDRA (Boot Data Reserved Area). O BDRA é criado quando o volume logico do root é criado. Quando se utiliza LVM a seção utilizada é sempre 2 (disco inteiro).

Area de boot é uma file system de formato proprio denominado LIF (Logical Interchange Format) de estrutura simples que pode ser coloado em areas pequenas, como por exemplo 2 Mbytes . O LIF contem o codigo de ativação que sera carregado no Kernel do HP-UX (/hp-ux). O cabeçalho da LIF contem os arquivos ISL, HP-UX, AUTO, RDB e IOMAP.

O ISL utiliza o arquivo AUTO para localizar o Kernel do HP-UX durante o boot do sistema.
A area de swap é uma area continua do disco usada pela memoria virtual. A primeira area de swap especificada é referenciada como "primary swap" e esta localizada no disco de root. Em sistemas que utilizam particionamento por seção, a primeira area de swap ocupa sua propria seção, separado da area de boot e da area das file systems. Em sistemas que utilizam LVM, a primeira area de swap reside em um volume logico do grupo de volume root (vg00).

A estrutura de dados do disco de root é diferente da estrutura de um disco que nao tenha area de boot. O disco de root contem setores reservados para o BDRA e o LIF (contendo o programa de boot). A alocação de espaços é mais restrita do que em outros discos, pois o espaço alocado para a file system root, para a area de swap, e para a area de dump devem ser continuos.
Um disco de boot contem as seguintes informações:
  • O cabeçalho LIF - Essa area estara presente tambem em volumes fisicos que contenham area de dump e area de swap.
  • PVRA - Physical Volume Reserverd Areas. Contem informacoes especificas do volume fisico para o LVM.
  • LIF Directory Area - Contem o boot do sistema HP-UX, arquivos LABEL e outros arquivos LIF.
  • VGRA - Volume Group Reserved Area. Contem informações especificas do grupo de volume para o LVM. Uma copia exata do VGRA é gravada em cada volume fisico do grupo. Dentro da VGRA esta o VGSA (Volume Group Status Area) e o VGDA (Volume Group Descriptor Area). O VGDA contem informações que descrevem todos os volumes fisicos necessarios para configurar o grupo de volumes no LVM. O VGSA contem informacoes de quorum do grupo de volumes; quais particoes estao estragadas e quais volumes fisicos nao estao disponiveis ou não ativos.
  • Bad Block Relocation Area - Contem informações especificas sobre o mecanismos de recuperação de blocos ruins.
  • User Area - Onde serão criados os volumes logicos para as respectivas file system. O primeiro volume logico deve ser para o file system do root.
Um disco que não tenha area de boot contem as seguintes informações:
  • PVRA - identico ao disco de boot.
  • VGRA - identico ao disco de boot.
  • Bad Block Relocation Area - identico ao disco de boot.
  • User Area - onde serão criados os volumes logicos para as respectivas file systems.
Durante o processo de ativação do grupo de volumes o LVM le os dados de controle do volume fisico definido no grupo. Esses dados de controle, os quais incluem o VGDA e VGSA estão armazenados em todos os volumes fisicos do grupo de volumes.

Grupo de volumes root
O grupo de volumes root é um grupo especial. Ele contem a area de boot, a file system root, a area primaria de swap, e pode tambem conter a area de dump do sistema e a area de outras file system.
O volume logico do file system root contem algumas restrições:
  • Deve ter localização especifica no disco de boot
  • Deve ser criado com alocação continua de partições
  • Não pode suportar realocações de bad block
  • Deve ser identificado no BDRA
  • Não pode ser aumentado ou diminuido
  • Deve conter a file system que contenha o /usr e o /tmp
O volume logico de swap primario deve ter alocação de partições fisica continuas e deve ser identiicado pelo BDRA.
Se for utilizado área de dump, seu volume logico deve ser criado no grupo de volume root, podendo-se ter mais que um volume logico para dump. Sua area deve ter alocação de partição fisica continuas e identificadas pelo BDRA. 

Depois retorno falando sobre a area de swap (swap space) 

Abraços.