sexta-feira, 16 de fevereiro de 2007

TUTORIAL SOBRE BeOs

Informações Gerais

O BeOS é um sistema operacional comercial inspirado em UNIX e com interface semelhante ao OS/2, desenvolvido pela Be Inc., que teve sua propriedade intelectual comprada pela Palm. Além da versão comercial, mais completa em termos de software e suporte a hardware, existe uma versão gratuita, o BeOS PE (BeOS Personal Edition). Essa versão tem uma peculiaridade, ela deve ser instalada em outro sistema operacional, sendo suportados Linux e Windows. O Boot deve ser dado a partir de um desses sistemas que é então reiniciado e dá boot no BeOS PE. A Palm decidiu por não mais desenvolver esse sistema, porém ele continua tendo atualizações, pois surgiram dois novos projetos relativos aBeOS, oOpenBeOS (http://open-beos.souceforge.net/) e o BlueEyedOS (http://www.blueeyedos.com/). O primeiro reproduz o BeOS com código aberto e o segundo pretende usar o Kernel do Linux e implementar compatibilidade para programas Linux com os programas do BeOS.
Vários aplicativos famosos, como por exemplo, o Apache e o Shell Bash, foram portados para o BeOS. Iniciativas como essas de ressucitar o BeOS (agora como software livre), dão esperança aos seus usuários de que esse sistema continue a ser melhorado. Afinal, ele não obteve o sucesso merecido e desejado provavelmente por não possuir uma característica simples, porém fundamental: ser um sistema livre. Hoje o projeto OpenBeos possui mais desenvolvedores do que a própria Be Inc. teve durante o auge de sua carreira, tornando assim correções de bugs muito mais freqüentes e dando muito mais confiabilidade a esse sistema.

O que é o BeOS?

O BeOS é um sistema operacional (SO) desenvolvido pela Be Inc. e foi criado com foco em multimídia. Ao contrário dos SOs mais antigos, o BeOS foi escrito desde o principio com a desempenho em mente e com tecnologias realmente inovadoras. Entre essas tecnologias podemos citar SMP (uso de mais de um processador quando disponível), multithreading, sistema de arquivos de 64 bits e jornalado e arquitetura cliente-servidor. Há algum tempo o BeOS era chamado de "Silicon Graphics dos pobres", hoje ele é conhecido como "Silicon Graphics para o resto de nós". A diferença básica entre um PC/Mac rodando o BeOS e uma Silicon Graphics reside, principalmente, no preço. O BeOS consegue extrair performances inacreditáveis de computadores comuns como os PCs e PowerPCs (Mac), permitindo uma grande economia no investimento em equipamentos. Essa diferença começa a ser notada desde o boot do sistema, já que todo o processo de boot do BeOS demora algo em torno de 12 segundos.

Principais características do BeOS

Multitarefa Preemptiva - Multitarefa é a capacidade que um sistema operacional tem de rodar diversos programas ao mesmo tempo. O BeOS é um sistema operacional que foi projetado para dividir a aplicação em vários threads mesmo que o programador não tenha projetado assim. Isso aumenta a eficiência e a desempenho das aplicações. Na multitarefa preemptiva, o compartilhamento da CPU é gerenciado por um componente do sistema operacional chamado scheduler, que atribui tempo de CPU para as várias tarefas baseadas em um conjunto de heurísticas. Desse modo, nem o programador nem o usuário necessitam conhecer os detalhes.
Multiprocessamento simétrico - O caminho mais eficiente para tirar vantagem de múltiplos processadores é permitir que os threads sejam direcionados para um ou outro processador, dependendo da ocupação de cada um - multiprocessamento simétrico (SMP).
Design Orientado a Objeto - A API do BeOS é orientada a objetos, ao contrário das APIs procedurais de outros sistemas operacionais. Com isso, os desenvolvedores ganham tempo no desenvolvimento de novas aplicações e na revisão de aplicações já existentes. A orientação a objetos é um paradigma de programação que habilita o programador a tratar blocos de código como objetos recicláveis contendo propriedades e características que podem ser passadas ou herdadas de outros objetos.
Projetado para mídias em tempo-real - A arquitetura do BeOS é otimizada para trabalhar com tempo-real, áudio e vídeo. O tempo de resposta do kernel é de cerca de 1 microssegundo e de 5 microssegundos para a mídia.
Sistema de arquivo jornalado - Para evitar sobrecarga no sistema, sistemas operacionais não atualizam pequenas transações para o disco imediatamente. Ao invés disso, mudanças são armazenadas em memória por um tempo, sendo enviadas para o HD usualmente quando o sistema está livre. BeOS usa uma sistema de jornal para manter todas as transações registradas. Uma vez que o jornal é atualizado em tempo real, se o sistema for desligado incorretamente ou travar, todos os dados são recuperados do jornal, resultando em um boot tão; rápido quanto um boot normal. Ao contrário da FAT32, o sistema de arquivo usado no Windows 98, que não pode armazenar arquivos maiores que 4 GB, O BeOS usa um esquema de endereçamento de 64-bit no Be Filesystem (BFS), assim o tamanho máximo de um arquivo atinge aproximadamente 18.000 petabytes.
Multithread Generalizado - No BeOS o processador não se torna mais rápido que em outros sistemas operacionais, mas as aplicações ficam mais sensíveis, uma vez que elas recebem mais atenção do processador todo o tempo. O conjunto de instruções não é executado sequencialmente como outros sistemas fazem, e sim em paralelo. Os threads trabalham em conjunto chamados "teams", e podem se comunicar compartilhando dados via sistema de mensagens. O termo "pervasive multithread" é devido à ocorrência de multithread em todos os níveis.
Arquitetura Cliente/Servidor - O termo "Cliente/Servidor" pode ser definido de várias formas dependendo do contexto. Em uma rede local você pode encontrar um computador que armazena todos os arquivos que podem ser compartilhados, que executa o sistema de e-mail e que matém os arquivos de log atualizados. Este computador é chamado de servidor. Cada funcionário possui um computador conectado na rede, enviando e recebendo informações. Esses computadores são chamados de clientes. Quando aplicamos esse termo no contexto de software, estamos nos referindo a um programa "servidor" que disponibiliza um serviço usado por vários programas "clientes". Como o BeOS usa esse sistema, programas clientes não ocupam ciclos de CPU e memória com trabalhos redundantes. Sem nos preocupar com os detalhes, no BeOS existem várias serviços como rede, aplicações, mídia, armazenamento, entre outros. Cada serviço tem seu próprio servidor que é responsável por passar todas as funcionalidades para os programas clientes. A modularidade é um detalhe que não pode deixar de ser mencionado. Como os servidores existem como arquivos separados, outros servidores podem ser adicionados ao sistema no futuro.
Troca de dados - Sistemas operacionais modernos possuem aplicações que são capazes de comunicar uma com as outras. Essa comunicação não serve apenas para compartilhar dados, mas também para alterar o comportamento uma da outra, para operarem juntas e trocar informações. Como exemplo podemos citar três programas: Desktop, StyleEdit e roColour. Nem o StyleEdit, nem o Desktop foram programados para aceitar BMessages do roColour; eles simplesmente sabem o que fazer quando recebem informações de cores de outro programa. BeOS também oferece uma arquitetura de scripting. Com esse recurso você pode usar qualquer linguagem de script com qualquer aplicação Be.
Acesso direto - O BeOS, ao contrário de outros sistemas, envia informações de vídeo diretamente para a placa gráfica e então para o monitor. Assim deixa de existir sobrecarga no sistema e a taxa de quadros aumenta usando o mesmo hardware. O processo de enviar dados diretamente para o coração da placa de vídeo é chamado DMA, Direct Memory Access.
Carga dinâmica de drivers - Em muitos sistemas ainda é necessário reiniciar a máquina toda vez que você faz uma alteração na configuração atual. Isso pode ser confirmado no Windows sempre que você fizer uma alteração na configuração de rede. Já no BeOS isso não acontece, pois o sistema pode ler novos drives em tempo de execução sem necessidade de reboot.
Memória protegida - Um dos aspectos mais críticos para a estabilidade de um sistema operacional é a proteção de memória. Esse recurso controla o espaço de memória evitando as colisões. Como resultado, aplicações podem travar que o sistema e as outras aplicações continuam rodando perfeitamente.
RAID

Conceito

RAID é acrônimo para Redundant Array of Inexpensive Disks (Arranjo redundante de discos). Este arranjo é usado como um meio para criar um subsistema de unidade de disco, rápido e confiável, através de vários discos individuais. Apesar do RAID ter sido feito para melhorar a confiabilidade do sistema, através da adição de redundância, pode também levar a uma falsa sensação de segurança e confiança quando usado incorretamente. Esta falsa confiança pode acarretar em grandes desastres. Particularmente, o RAID é feito para proteger falhas no disco, não para proteger falhas de energia ou erros do operador. Falhas de energia, bugs no desenvolvimento do kernel ou erros de administradores e de operadores podem danificar os dados de uma forma irrecuperável. RAID não é um substituto apropriado para executar um backup do seu sistema. Saiba o que você está fazendo, faça testes, seja conhecedor e ciente de todos os detalhes que envolvem a implementação de RAID.
RAID permite que o computador ganhe desempenho nas operações de acesso a disco, e da mesma forma, rápida recuperação em caso de perda de algum disco. O tipo mais comum de arranjo de unidades é um sistema ou uma controladora que possibilita o uso de múltiplas unidades de disco rígido, configuradas para que o sistema operacional se comporte como se existisse apenas um disco instalado no computador.

RAID Via Hardware e Via Software

RAID pode ser implementado por hardware, na forma de controladoras especiais de disco, ou por software, como um módulo do kernel que fica dividido entre a controladora de disco de baixo nível e o sistema de arquivos acima dele.
RAID Via Hardware
RAID por hardware é sempre uma controladora de disco, isto é, um dispositivo que pode através de um cabo conectar os discos. Geralmente ele vem na forma de uma placa adaptadora que pode ser "plugada" em um slot ISA/EISA/PCI/S-Bus/MicroChannel. Entretanto, algumas controladoras RAID vêm na forma de uma caixa que é conectada através de um cabo entre o sistema controlador de disco e os dispositivos de disco. RAIDs pequenos podem ser ajustados nos espaços para disco do próprio computador; outros maiores podem ser colocados em um gabinete de armazenamento com seu próprio espaço para disco e suprimento de energia. A maioria das controladoras RAID vem com processadores especializados na placa e memória cache, que pode eliminar uma quantidade de processamento considerável da CPU. As controladoras RAID também podem fornecer altas taxas de transferência através do cache da controladora.
Um hardware de RAID antigo pode atuar como um desacelerador, quando usado com uma CPU mais nova: DSP (Digital Signal Processor) e caches antigos podem atuar como um gargalo, e este desempenho pode ser freqüentemente superado por um RAID de software puro.
RAID por hardware geralmente não é compatível entre diferentes tipos, fabricantes e modelos: se uma controladora RAID falhar, é melhor que ela seja trocada por outra controladora do mesmo tipo.

Controladoras Suportadas

Uma controladora de RAID via hardware e bem suportada é aquela fabricada pela DPT Entretanto, existem diversas outras controladoras que funcionam no Conectiva Linux. Isto inclui algumas controladoras fabricadas pela Syred , ICP-Vortex e BusLogic . Entre as controladoras DPT, essencialmente todas as controladoras SmartRAID IV são suportadas.

Controladoras ICP Vortex

A ICP Vortex tem uma linha completa de controladoras de arranjos de discos com suporte ao Linux. Todas as distribuições principais do Linux têm suporte às controladoras ICP, como controladoras para boot e instalação. O sistema RAID pode ser facilmente configurado com seu próprio ROMSETUP, ou seja, você não precisa utilizar outros sistemas operacionais para fazer a configuração.
Com o utilitário de monitoramento GDTMON é possível gerenciar por completo o sistema RAID ICP durante a operação. É possível também verificar taxas de transferência, configurar os parâmetros da controladora e dos discos rígidos, substituir discos defeituosos, etc. Atualmente estão disponíveis vários modelos para os mais diversos níveis de RAID que você venha a utilizar.

Tipos de Hardware

Tipo Controladora

Tendo várias opções de controladoras, é necessário pensar cuidadosamente sobre o que você quer fazer. Dependendo do que quer fazer e do nível de RAID que irá usar, algumas controladoras podem ser melhores que outras. Adaptadores SCSI a SCSI (Que usam unidades externas de múltiplos discos SCSI.) podem não ser tão bons quanto adaptadores baseados em host, por exemplo.

Tipo Encapsulado

O tipo encapsulado é ligado diretamente à habilidade de troca "a quente" da unidade e aos sistemas de advertência, ou seja, exibe indicação de falhas da unidade e que tipo de tratamento sua unidade receberá. Um exemplo para isto pode ser refrigeração redundante e fornecimento de energia. Os encapsulamentos fornecidos pela DPT, HP®, IBM® e Compaq® trabalham extremamente bem, mas têm um custo alto também.

RAID Via Software

RAID via software é uma configuração de módulos do kernel, juntamente com utilitários de administração que implementam RAID puramente por software, e não requer um hardware especializado. Pode ser utilizado o sistema de arquivos ext2, ext3, DOS-FAT ou outro.
Este tipo de RAID é implementado através dos módulos MDdo kernel do Linux e das ferramentas relacionadas.
RAID por software, por ter sua natureza no software, tende a ser muito mais flexível que uma solução por hardware. O lado negativo é que ele em geral requer mais ciclos e capacidade de CPU para funcionar bem, quando comparado a um sistema de hardware. Ele oferece uma importante e distinta característica: opera sobre qualquer dispositivo do bloco podendo ser um disco inteiro (por exemplo, /dev/sda), uma partição qualquer (por exemplo, /dev/hdb1), um dispositivo de loopback (por exemplo, /dev/loop0) ou qualquer outro dispositivo de bloco compatível, para criar um único dispositivo RAID. Isso diverge da maioria das soluções de RAID via hardware, onde cada grupo junta unidades de disco inteiras em um arranjo.
Comparando as duas soluções, o RAID via hardware é transparente para o sistema operacional, e isto tende a simplificar o gerenciamento. Via software, há de longe mais opções e escolhas de configurações, fazendo com que o assunto se torne mais complexo.

O Controlador de Múltiplos Dispositivos (MD)

O controlador MD é usado para agrupar uma coleção de dispositivos de bloco, em um único e grande dispositivo de bloco. Normalmente, um conjunto de dispositivos SCSI e IDE são configurados em um único dispositivo MD.
As extensões do controlador MD implementam modo linear, RAID-0 (stripping), RAID-1 (espelhamento), RAID-4 e RAID-5 por software. Isto quer dizer que, com MD, não é necessário hardware especial ou controladoras de disco para obter a maioria dos benefícios de RAID.

Níveis de RAID

As diferentes maneiras de combinar os discos em um só, chamados de níveis de RAID, podem fornecer tanto grande eficiência de armazenamento como simples espelhamento, ou podem alterar o desempenho de latência (tempo de acesso). Podem também fornecer desempenho da taxa de transferência de dados para leitura e para escrita, enquanto continuam mantendo a redundância. Novamente, isto é ideal para prevenir falhas.
Os diferentes níveis de RAID apresentam diferentes desempenho, redundância, capacidade de armazenamento, confiabilidade e características de custo. A maioria, mas nem todos os níveis de RAID, oferece redundância à falha de disco. Dos que oferecem redundância, RAID-1 e RAID-5 são os mais populares. RAID-1 oferece melhor desempenho, enquanto que RAID-5 fornece um uso mais eficiente do espaço disponível para o armazenamento dos dados.
De qualquer modo, o ajuste de desempenho é um assunto bastante diferente, dependente de uma grande variedade de fatores, como o tipo da aplicação, os tamanhos dos discos, blocos e arquivos.
Existe uma variedade de tipos diferentes e implementações de RAID, cada uma com suas vantagens e desvantagens. A seguir serão descritos os diferentes níveis de RAID, no contexto de implementação de RAID por software no Linux.

RAID-linear

É uma simples concatenação de partições para criar uma grande partição virtual. Isto é possível se você tem várias unidades pequenas, e quer criar uma única e grande partição. Esta concatenação não oferece redundância, e de fato diminui a confiabilidade total: se qualquer um dos discos falhar, a partição combinada irá falhar.

RAID-0

A grande maioria dos níveis de RAID envolve uma técnica de armazenamento chamada de segmentação de dados (data stripping). A implementação mais básica dessa técnica é conhecida como RAID-0 e é suportada por muitos fabricantes. Contudo, pelo fato de este nível de arranjo não ser tolerante a falhas, RAID-0 não é verdadeiramente RAID, ao menos que seja usado em conjunção com outros níveis de RAID.
Segmentação (stripping) é um método de mapeamento de dados sobre o meio físico de um arranjo, que serve para criar um grande dispositivo de armazenamento. Os dados são subdivididos em segmentos consecutivos ou stripes que são escritos seqüencialmente através de cada um dos discos de um arranjo. Cada segmento tem um tamanho definido em blocos.
Um arranjo desse tipo pode oferecer um melhor desempenho, quando comparada a um disco individual, se o tamanho de cada segmento for ajustado de acordo com a aplicação que utilizará o arranjo:
• Em um ambiente com uso intensivo de E/S ou em um ambiente de banco de dados onde múltiplas requisições concorrentes são feitas para pequenos registros de dados, um segmento de tamanho grande é preferencial.
• Em um ambiente onde grandes registros de dados são armazenados, segmentos de pequeno tamanho são mais apropriados.
Arranjos RAID-0 podem oferecer alto desempenho de escrita, se comparados a verdadeiros níveis de RAID, por não apresentarem carga adicional (Overhead) associada com cálculos de paridade ou com técnicas de recuperação de dados. Esta mesma falta de previsão para reconstrução de dados perdidos indica que esse arranjo deve ser restrito ao armazenamento de dados não críticos e combinado com eficientes programas de backup.

RAID-1

A forma mais simples de arranjo tolerante a falhas é o RAID-1. Baseado no conceito de espelhamento (mirroring), este arranjo consiste de vários grupos de dados armazenados em dois ou mais dispositivos. Apesar de muitas implementações de RAID-1 envolverem dois grupos de dados (daí o termo espelho ou mirror), três ou mais grupos podem ser criados se a alta confiabilidade for desejada. Ocorre-se uma falha em um disco de um arranjo RAID-1, leituras e gravações subseqüentes são direcionadas para o(s) disco(s) ainda em operação. Os dados então são reconstruídos em um disco de reposição (spare disk) usando dados do(s) disco(s) sobrevivente(s). O processo de reconstrução do espelho tem algum impacto sobre o desempenho de E/S do arranjo, pois todos os dados terão de ser lidos e copiados do(s) disco(s) intacto(s) para o disco de reposição. RAID-1 oferece alta disponibilidade de dados, porque no mínimo dois grupos completos são armazenados. Conectando os discos primários e os discos espelhados em controladoras separadas, pode-se aumentar a tolerância à falhas pela eliminação da controladora como ponto único de falha.
Entre os não-híbridos, este nível tem o maior custo de armazenamento por requerer capacidade suficiente para armazenar no mínimo dois grupos de dados. Este nível é mais bem adaptado para servir pequenas base de dados ou sistemas de pequena escala que necessitem confiabilidade.

RAID-2 e RAID-3

Raramente são usados, e tornaram-se obsoletos pelas novas tecnologias de disco. RAID-2 é similar ao RAID-4, mas armazena informação ECC (error correcting code), que é a informação de controle de erros, no lugar da paridade. Este fato possibilitou uma pequena proteção adicional, visto que todas as unidades de disco mais novas incorporaram ECC internamente. RAID-2 pode oferecer maior consistência dos dados se houver queda de energia durante a escrita. Baterias de segurança e um desligamento correto, porém, podem oferecer os mesmos benefícios. RAID-3 é similar ao RAID-4, exceto pelo fato de que ele usa o menor tamanho possível para a stripe. Como resultado, qualquer pedido de leitura invocará todos os discos, tornando as requisições de sobreposição de E/S difíceis ou impossíveis.
A fim de evitar o atraso em razão da latência rotacional, o RAID-3 exige que todos os eixos das unidades de disco estejam sincronizados. A maioria das unidades de disco mais recentes não possuem a habilidade de sincronização do eixo, ou se são capazes disto, faltam os conectores necessários, cabos e documentação do fabricante. Nem RAID-2 e nem RAID-3 são suportados pelos drivers de RAID por software no Linux.

RAID-4

Este é um tipo de arranjo segmentado, mas incorpora um método de proteção de dados mais prático. Ele usa informações sobre paridade para a recuperação de dados e as armazena em disco dedicado. Os discos restantes, usados para dados, são configurados para usarem grandes (tamanho medido em blocos) segmentos de dados, suficientemente grandes para acomodar um registro inteiro. Isto permite leituras independentes da informação armazenada, fazendo de RAID-4 um arranjo perfeitamente ajustado para ambientes transacionais que requerem muitas leituras pequenas e simultâneas.
Arranjos RAID-4 e outros arranjos que utilizam paridade fazem uso de um processo de recuperação de dados mais dinâmico que arranjos espelhados, como RAID-1.
Sempre que os dados são escritos no arranjo, informações sobre paridade normalmente são lidas do disco de paridade e uma nova informação sobre paridade deve sempre ser escrita para o disco de paridade antes da próxima requisição de escrita ser realizada. Por causa dessas duas operações de E/S, o disco de paridade é o fator limitante do desempenho total do arranjo. Pelo fato do disco de paridade requerer somente um disco adicional para proteção de dados, arranjos RAID-4 são mais baratos que arranjos RAID-1.

RAID-5

Este tipo de RAID largamente usado funciona similarmente ao RAID 4, mas supera alguns dos problemas mais comuns sofridos por esse tipo. As informações sobre paridade para os dados do arranjo são distribuídas ao longo de todos os discos do arranjo, em vez de serem armazenadas em um disco dedicado.
Essa idéia de paridade distribuída reduz o gargalo de escrita (write bottleneck), que era o único disco de um RAID-4, porque agora as escritas concorrentes nem sempre requerem acesso às informações sobre paridade em um disco dedicado. Contudo, o desempenho de escrita geral ainda sofre por causa do processamento adicional causado pela leitura, re-cálculo e atualização da informação sobre paridade.
Para aumentar o desempenho de leitura de um arranjo RAID-5, o tamanho de cada segmento em que os dados são divididos pode ser otimizado para a aplicação que estiver usando o arranjo. O desempenho geral de um arranjo RAID-5 é equivalente ao de um RAID-4, exceto no caso de leituras seqüenciais, que reduzem a eficiência dos algoritmos de leitura por causa da distribuição das informações sobre paridade.
Como em outros arranjos baseados em paridade, a recuperação de dados em um arranjo RAID-5 é feita calculando a função XOR das informações dos discos restantes do arranjo. Pelo fato de a informação sobre paridade ser distribuída ao longo de todos os discos, a perda de qualquer disco reduz a disponibilidade de ambos os dados e da informação sobre paridade, até a recuperação do disco que falhou. Isto pode causar degradação do desempenho de leitura e de escrita.

Tipos Híbridos

Para suprir as deficiências de um nível ou outro de RAID é possível usar um nível de RAID sobre outro, aproveitando, por exemplo, o excelente desempenho de um determinado nível e a confiabilidade de outro. Isso tudo, é claro, pagando o preço de uma maior quantidade de material.
Um exemplo é o RAID-10. Como o seu nome implica, é a combinação de discos espelhados (RAID-1) com a segmentação de dados (data stripping) (RAID-0).
O método de criação de um arranjo RAID-10 é diversificado. Em uma implementação RAID-0+1, os dados são segmentados através de grupos de discos espelhados, isto é, os dados são primeiro segmentados e para cada segmento é feito um espelho. Já em um RAID-1+0 os dados são primeiramente espelhados, e para cada espelho há a segmentação sobre vários discos.

RAID-10

Oferece as vantagens da transferência de dados rápida de um arranjo espelhado, e as características de acessibilidade dos arranjos espelhados. O desempenho do sistema durante a reconstrução de um disco é também melhor que nos arranjos baseados em paridade, pois os dados são somente copiados do dispositivo sobrevivente.

RAID-50

É um arranjo híbrido que usa as técnicas de RAID com paridade em conjunção com a segmentação de dados. Um arranjo RAID-50 é essencialmente um arranjo com as informações segmentadas através de dois ou mais arranjos RAID-5.
Dependendo do tamanho de cada segmento estabelecido durante a configuração do arranjo, estes arranjos híbridos podem oferecer os benefícios de acesso paralelo dos arranjos com paridade (alta velocidade na transferência de dados) ou de acesso independente dos arranjos com paridade (grande quantidade). Como em outros arranjos RAID com paridade, a reconstrução de um disco falho gera um impacto no desempenho do programa usando o arranjo.

Implementação

Pré-requisitos

Para implementar a solução RAID, você precisa de:
• Uma controladora de disco, caso o seu RAID seja via hardware;
• É interessante utilizar um no-break para garantir a integridade do equipamento.

Instalação

Execute o Synaptic e instale os seguintes pacotes:
• raidtools
• util-linux
ou utilize o comando apt-get:
# apt-get install raidtools util-linux
Configuração

Primeiramente, observe conteúdo do arquivo /proc/mdstat.
Você sempre irá editar este arquivo para verificar as configurações de RAID. Observe que nenhum dispositivo de RAID está atualmente ativo.
Crie as partições que você desejar incluir em sua configuração de RAID;
O próximo passo dependerá do nível de RAID que você escolheu usar; a seguir cada uma destas configurações serão vistas.

Modo Linear

Se você tem duas ou mais partições que não são necessariamente do mesmo tamanho, você poderá concatenar uma com a outra. Crie o arquivo /etc/raidtab para descrever sua configuração. Um arquivo raidtab em modo linear terá uma aparência semelhante a esta
Nos exemplos serão utilizadas duas partições de aproximadamente 1GB, sendo elas hda6 e hda7. Discos sobressalentes não são suportados aqui. Se um disco falhar, o arranjo irá falhar juntamente com ele. Não existem informações que possam ser colocadas em um disco sobressalente. Para criar o arranjo execute o comando # mkraid /dev/md0
Isto irá inicializar o arranjo, escrever os blocos persistentes e deixar pronto para uso. Verificando o arquivo /proc/mdstat você poderá ver que o arranjo está funcionando
# cat /proc/mdstat
Agora você já pode criar um sistema de arquivos, como se fosse a um dispositivo normal.
Como está sendo usado o sistema de arquivos ext3 no exemplo, é interessante configurar o número de verificações que serão feitas no sistemas de arquivos do dispositivo.
Neste exemplo, a cada 20 inicializações será feita uma verificação. Em seguida, crie um ponto de montagem e montar o dispositivo:
Observe que o tamanho total é de aproximadamente 2GB, pelo fato de ter sido feita uma concatenação de duas unidades, cada uma com aproximadamente 1GB.
RAID-0

Tendo dois ou mais dispositivos aproximadamente do mesmo tamanho, é possível combinar suas capacidades de armazenamento, bem como seus desempenhos, através do acesso em paralelo.
Modifique ou crie o arquivo /etc/raidtab para descrever a sua configuração.
Crie o dispositivo de RAID através dos comandos: # raidstop /dev/md0
# mkraid --force /dev/md0
Isto irá inicializar os superblocos e iniciar o dispositivo RAID. Observando o arquivo /proc/mdstat
Agora o dispositivo /dev/md0 já está pronto. Pode ser criado um sistema de arquivos e ser montado para uso.

RAID-1

Com dois dispositivos aproximadamente do mesmo tamanho, é possível fazer com que um seja espelho do outro. Se você tiver mais dispositivos, poderá usá-los como um sistema de discos sobressalentes; isto será feito automaticamente por uma parte do espelho se um dos dispositivos operantes falhar.
Para isto, configure o arquivo /etc/raidtab.
Nota: A configuração acima trata apenas de um exemplo. Você pode utilizar os dispositivos conforme a sua necessidade.
Se você usar discos sobressalentes, adicione no final da especificação do dispositivo o seguinte: device /dev/hdb1.
Onde /dev/hdb1 é um disco sobressalente. Configure o número de entrada dos discos sobressalentes, sempre de uma forma proporcional.
Tendo tudo pronto para começar a inicialização do RAID, o espelho poderá ser construído, e os índices (não no caso de dispositivos sem formatação) dos dois dispositivos serão sincronizados. Execute:
# mkraid /dev/md0
Neste momento veja este comando que irá fazer a inicialização do espelho. Observe agora o arquivo /proc/mdstat; ele irá mostrar que o dispositivo /dev/md0 foi inicializado, que o espelho começou a ser reconstruído, e quanto falta para a reconstrução ser completada:
O processo de reconstrução é transparente: você poderá usar os dispositivos normalmente durante a execução deste processo. É possível até formatar o dispositivo enquanto a reconstrução está sendo executada. Você também pode montar e desmontar as unidades neste período (somente se um disco falhar esta ação será prejudicada).
Agora já é possível criar o sistema de arquivos, montar e visualizar o tamanho do dispositivo final.
Observe que o tamanho do dispositivo corresponde ao tamanho de um único dispositivo, por se tratar de um espelhamento de discos.

RAID-4

Com três ou mais dispositivos aproximadamente do mesmo tamanho, sendo um dispositivo significativamente mais rápido que os outros dispositivos, é possível combiná-los em um único dispositivo grande, mantendo ainda informação de redundância. Eventualmente você pode colocar alguns dispositivos para serem usados como discos sobressalentes.
Um exemplo de configuração para o arquivo /etc/raidtab
Se houver discos sobressalentes, será necessário configurar da mesma forma, seguindo as especificações do disco RAID. Veja o exemplo: device /dev/hdb1
spare-disk 0
O disco sobressalente é criado de forma similar em todos os níveis de RAID. Inicialize o RAID-4 com o comando: # mkraid /dev/md0
Você poderá acompanhar o andamento da construção do RAID através do arquivo /proc/mdstat:
Para formatar o RAID-4, utilize as seguintes opções especiais do mke2fs
Basta montar o RAID para uso. O tamanho total será de N-1, ou seja, o tamanho total de todos os dispositivos menos um, reservado para a paridade: # df
Note que o RAID-4 carrega o MD do RAID-5, porque são de níveis similares de RAID.

RAID-5

Similar ao RAID-4, porém é implementado através de três ou mais dispositivos de tamanho aproximado, combinados em um dispositivo maior. Ainda mantém um grau de redundância para proteger os dados. Podem ser usados discos sobressalentes, tomando parte de outros discos automaticamente, caso eles venham a falhar.
Se você está usando N dispositivos onde o menor tem um tamanho S, o tamanho total do arranjo será (N-1) *S. Esta perda de espaço é utilizada para a paridade (redundância) das informações. Assim, se algum disco falhar, todos os dados continuarão intactos. Porém, se dois discos falharem, todos os dados serão perdidos.
Configure o arquivo /etc/raidtab.
Se existir algum disco sobressalente, ele pode ser inserido de uma maneira similar, seguindo as especificações de disco RAID.
Um tamanho do pedaço (chunk size) de 32 KB é um bom padrão para sistemas de arquivos com uma finalidade genérica deste tamanho. O arranjo no qual o arquivo raidtab anterior é usado é de (n-1) *s = (3-1) *2 = 4 GB de dispositivo. Isto prevê um sistema de arquivos ext3 com um bloco de 4 KB de tamanho. Você poderia aumentar, juntamente com o arranjo, o tamanho do pedaço e o tamanho do bloco do sistema de arquivos.
Execute o comando mkraid para o dispositivo /dev/md0. Isto fará com que se inicie a reconstrução do seu arranjo. Observe o arquivo /proc/mdstat para poder fazer um acompanhamento do processo.
Se o dispositivo for criado com sucesso, a reconstrução será iniciada. O arranjo não estará consistente até a fase de reconstrução ter sido completada. Entretanto, o arranjo é totalmente funcional (exceto para troca de dispositivos que falharam no processo); você pode formatar e usar o arranjo enquanto ele estiver sendo reconstruído.
Formate o arranjo com o comando: # mke2fs -b 4096 -R stride=8 /dev/md0
Quando você tiver um dispositivo RAID executando, você pode sempre parar ou reiniciar usando os comandos: raidstop /dev/md0 ou raidstart /dev/md0.

Windows Internet Name Service (WINS)

Todos os computadores e uma rede da plataforma Windows tem um nome de no máximo quinze caracteres exclusivo de que é o nome NetBios (Netbios Name). Esse nome é utilizado no acesso aos diversos serviços que esse computador provê na rede, como, por exemplo o serviço de servidor que atesta que esse computador possui recursos disponibilizados à rede.
Quando um computador é inicializado, estes anuncia na rede, propagando seu nome e seus serviços. Se um outro computador já estiver utilizando o mesmo nome na rede, o anúncio não é aceito e o computador não pode ser utilizado na rede.
O anúncio e o acesso aos computadores pelo nome são feitos por meio de broadcasts, gerando tráfico de rede. Em “horários de pico”, por exemplo ,quando os usuários chegam ao escritório pela manhã, a desempenho pode ser degradada.
O serviço de WINS mantém um banco de dados no qual são registrados todos os anúncios dos clientes WINS. Quando um computador-cliente WINS faz acesso a outro computador da rede pelo nome, em vez de enviar um broadcast para toda a rede, este faz uma pesquisa no serviço de WINS. Como resultado dessa pesquisa, é retornado o endereço IP do computador de destino, que é acessado diretamente.
Em uma rede com pontos remotos, é possível configurar a replicação de dados dos servidores de WINS, evitando assim que um cliente tenha de atravessar um link lento de WAN para se registrar ou pesquisar a base de dados do serviço.
O WINS apresenta as seguintes características:

• Um banco de dados dinâmico de nome para endereço que mantém o suporte para resolução e registro do nome NetBios de computador. O serviço WINS é instalado em um ou mais servidores da rede. O número IP do servidor WINS deve ser informado nos clientes, quer seja configurando manualmente as propriedades do protocolo TCP/IP do cliente, quer seja através do uso do DHCP para efetuar estas configurações.
• Gerenciamento centralizado do banco de dados de nome para endereço, minorando a necessidade de gerenciamento de arquivos Lmhosts. O arquivo Lmhosts é um arquivo de texto, na qual podem ser criadas entradas para resolução de nomes NetBios.
• O uso do WINS fornece Redução de tráfego de broadcast, gerado para a resolução de nome NetBios. Se os clientes dependentes do WINS, não estiverem configurados com o número IP de pelo menos um servidor WINS, eles irão gerar tráfego de Broadcast na rede local, para tentar resolver nomes. Por padrão os roteadores bloqueiam tráfego de broadcast. Através do mecanismo de replicação, é possível manter vários servidores WINS, em diferentes redes, com o mesmo banco de dados, com informações de todos os computadores da rede, mediante o uso de replicação.
• É possível integrar o WINS com o DNS, para que o WINS possa responder consultas às quais o DNS não conseguiu responder.

Clientes suportados pelo WINS:
O WINS é suportado por uma grande variedade de clientes, conforme descrito na lista a seguir:
• Windows Server 2003
• Windows 2000
• Windows NT 3.5 ou superior
• Windows 95/98/Me
• Windows for Workgroups 3.11
• MS-DOS com Cliente de Rede Microsoft versão 3
• MS-DOS com LAN Manager versão 2.2c
• Clientes Linux e UNIX, rodando o serviço Samba.

Implementação

Os servidores WINS mantém uma base de dados com nomes dos clientes configurados para utilizar o WINS e os respectivos endereços IP. Quando uma estação de trabalho configurada para utilizar o WINS é inicializada, ela registra o seu nome NetBios e o seu endereço IP no banco de dados do servidor WINS. A estação de trabalho utiliza o servidor WINS, cujo endereço IP está configurado como WINS Primário, nas propriedades do protocolo TCP/IP (quer estas configurações tenham sido feitas manualmente ou via DHCP). Quando o cliente é desligado, o registro do nome e do endereço IP é liberado no servidor WINS. Com isso a base de dados do WINS é criada e mantida, dinamicamente. Os nomes NetBios podem ter no máximo 15 caracteres. Um 16º caractere é registrado pelo serviço WINS. Este caractere adicional é utilizado para indicar um determinado tipo de serviço. Por exemplo, um servidor pode ter o seu nome registrado no WINS várias vezes. O que diferencia um registro do outro é o 16º caractere, o qual indica diferentes serviços. O 16º caractere está no formato de número Hexadecimal.
A seguir, a título de exemplo, alguns dos valores possíveis para o 16º caractere e o respectivo significado:
• nome_de_domínio [1Bh]: Registrado por cada controlador de domínio do Windows NT Server 4.0 que esteja executando como PDC (Primary Domain Controller) do respectivo domínio. Esse registro de nome é usado para permitir a procura remota de domínios. Quando um servidor WINS é consultado para obtenção desse nome, ele retorna o endereço IP do computador que registrou o nome.
• nome_de_computador[1Fh]: Registrado pelo serviço Network Dynamic Data Exchange (NetDDE, intercâmbio dinâmico de dados de rede). Ele aparecerá somente se os serviços NetDDE forem iniciados no computador.
Você pode exibir a lista de nomes (na verdade o mesmo nome, apenas diferenciando o 16º caractere) registrados para um determinado computador, utilizando o seguinte comando:
nbtstat - a nome_do_computador
Por exemplo, o comando a seguir retorna a lista de nomes registrados no WINS, pelo computador chamado servidor:
nbtstat -a servidor
Este comando retorna o resultado indicado a seguir:
C:\>nbtstat -a servidor

Local Area Connection:
Node IpAddress: [10.10.20.50] Scope Id: []

NetBIOS Remote Machine Name Table

Name Type Status
-------------------------------------------
SERVIDOR <00> UNIQUE Registered
SERVIDOR <20> UNIQUE Registered
GROZA <00> GROUP Registered
GROZA <1c> GROUP Registered
GROZA <1b> UNIQUE Registered
GROZA <1e> GROUP Registered
SERVIDOR <03> UNIQUE Registered
GROZA <1d> UNIQUE Registered
..__MSBROWSE__. <01> GROUP Registered
INet~Services <1c> GROUP Registered
IS~SERVIDOR.... <00> UNIQUE Registered
ADMINISTRADOR <03> UNIQUE Registered

MAC Address = 00-00-21-CE-01-11
Para que as estações de trabalho da rede possam utilizar o servidor WINS, basta informar o número IP do servidor WINS nas propriedades avançadas do protocolo TCP/IP. Uma vez configurado com o número IP do servidor WINS, o cliente, durante a inicialização, registra o seu nome NetBios, automaticamente com o servidor WINS.
O cliente WINS utiliza diferentes métodos para a resolução de nomes NetBios. Estes diferentes métodos são identificados como: b-node, p-node, m-node e h-node. A seguir descrevo a diferença entre estes métodos:
• b-node: Um cliente configurado com este método de resolução utiliza somente broadcast para a resolução de nomes NetBios. Se não houver um servidor WINS na rede ou o servidor WINS não estiver configurado nas propriedades avançadas do TCP/IP, este é o método padrão utilizado.
• p-node: Utiliza somente o servidor WINS. Se o WINS falhar em resolver o nome, o cliente não tentará outro método.
• m-node: Utiliza primeiro broadcast, se não conseguir resolver o nome usando broadcast, então utiliza o servidor WINS.
• h-node: Primeiro utiliza o servidor WINS, somente se o WINS falhar é que será tentado o broadcast. Este método reduz o tráfego de broadcast na rede. É o método padrão para clientes configurados para utilizar um servidor WINS.

Sistema Zeta é opção ao Windows e ao Linux

Windows, Linux e Mac OS não são os únicos sistemas operacionais compatíveis com o PC. Há também o BeOS, um programa tão desconhecido quanto influente. No final dos anos 90, a Apple procurava um sistema para substituir seu sistema operacional, que na época estava perdendo espaço para o Windows. A empresa cogitou comprar o BeOS, mas fechou negócio com Steve Jobs, que trouxe seu software, o NeXT OS, usado como base do Mac OS X.
Na época do Windows 95/98, os usuários domésticos de PC não dispunham de um sistema operacional que combinasse estabilidade, velocidade e facilidade de instalação. Por isso, o BeOS chegou a ser baixado por 1 milhão de usuários, mas a Microsoft impediu que os fabricantes de micros oferecessem o programa. Em 2003, a empresa de Bill Gates fez um acordo judicial e pagou US$ 23 milhões aos criadores do BeOS, mas era tarde: a Be Software já havia quebrado.
O BeOS está de volta. Agora, ele se chama Zeta e é desenvolvido pela pequena empresa alemã Yellow Tab (www.yellowtab.com), com 42 funcionários.
O sistema continua rápido: numa máquina antiga, com chip Athlon de 950 MHz e apenas 128 Mbytes de RAM, o Zeta se mostrou bem mais ágil do que o Fedora Linux e o Windows XP (que mau roda nesse PC). O reconhecimento do hardware da máquina, um Compaq Presario, foi perfeito. Ainda bem, pois o gerenciador de periféricos é difícil de usar, inferior ao do Windows. Outra falha é a ausência de um mecanismo de atualização do sistema via internet.
O pacote de escritório Gobe Productive 2.0, que é a única opção real na plataforma BeOS (e vem incluso no Zeta), lembra o antigo e limitado AppleWorks. Apesar disso, ele tem compatibilidade com arquivos do Microsoft Office e dá conta de pequenos trabalhos. O navegador é o Firefox 1.0.3, e a renderização das páginas é boa: as fontes não ficam distorcidas (como às vezes ocorre em navegadores para Linux).
O Zeta vem com tocador de áudio e atalhos para algumas rádios on-line, mas não toca vídeos DivX sem um programa específico --considerando que o Windows também não suporta DivX nativamente, isso é aceitável.
A interface gráfica é bem parecida com a do antigo BeOS 5, mas resistiu bem à passagem do tempo: os ícones ainda são atraentes, e a área de trabalho minimalista é um diferencial em relação ao Windows.
Na Europa, o Zeta custa 99 euros. Ele ainda não foi oficialmente lançado no Brasil.
Outra opção é baixar e experimentar gratuitamente o BeOS 5 Personal Edition for Windows, antecessor do Zeta. Essa versão, que está em www.bebits.com/app/2680

Referências
• http://www.bug-br.org.br/ : Grupo Brasileiro de Usuários do BeOS.
• http://open-beos.sourceforge.net/: Página do Projeto OBOS (Open BeOS).
• http://www.boadica.com.br/
• http://www.revistadolinux.com.br/
• http://www.baixaki.com.br/
• http://www.linhadecodigo.com.br/artigos.asp
• http://www.conectiva.com/doc/livros/online/9.0/servidor/raid.html

Nenhum comentário: