Este é Teddy, meu cachorrinho. Ele é um poodle com menos de 2 meses. Parece uma ovelhinha e pula que nem um coelho, com as duas patas de trás. Ele adora brincar e correr atrás da gente quando estamos caminhando.
Ele só dorme do azulejo, deve ser porque é mais frio.
Esse é o primeira de uma série de posts que eu pretendo escrever ao mesmo tempo que eu estudo mais sobre OpenSolaris. A idéia é criar artigos simples mostrando funcionalidades bem específicas através de experimentos práticos que você pode replicar em seu computador.
Uma das funcionalidades mais interessantes do OpenSolaris é o sistema de arquivo de 128-bits ZFS. Para quem está começando a principal diferença é a abstração utilizadas para os volumes. Ao contrário dos sistemas de arquivos tradicionais, onde cada um reside em um único dispositivo e requerem um gerente de volumes para usar mais de um dispositivo, o sistema de arquivo ZFS é construído sob pools de armazenamento virtuais chamados zpools. Um zpool é construído de dispositivos virtuais (vdevs) quem são constituídos de volumes de bloco (arquivos, partições de um disco ou discos inteiros, o que é o recomendado).
Esse primeiro experimento vai ser construir zpool espelhado (RAID-1) e depois tentar corromper os dados dele e ver o que acontece. Em um pool espelhado, os dados são replicados para vários discos e isso elimina o ponto crítico, ou seja, se um disco parar de funcionar, os dados não são corrompidos. Você pode criar um espelho com dois ou mais discos e dentro de um mesmo pool você pode ter vários espelhos. Por exemplo, um pool de 100Gb formado por dois espelhos, cada um com 50GB e cada espelho formado por discos rígidos de 25Gb cada um. Você vai dimensionar seu pool de acordo com suas necessidades e capacidades.
Essa parte de corromper os dados faz experimento ser um pouco perigoso. Eu te aconselho a fazer uma dessas sugestões:
Instalar o OpenSolaris no seu disco e pelo menos outros dois discos rígidos para fazer um zpool espelhado. Eu não recomendo essa opção porque se você não souber muito bem o que está fazendo você pode corromper dados acidentalmente.
Instalar o OpenSolaris em uma máquina virtual e criar discos rígidos falsos para utilizar no experimento. Assim mesmo que você cometa algum erro nada de muito ruim vai acontecer. Essa é a opção que eu escolhi e aqui eu estou usando o VirtualBox com o OpenSolaris 2008.5. É uma máquina virtual livre, muito fácil de usar e o OpenSolaris se dá muito bem com ele.
Embora já exista uma interface gráfica para controle para ZFS, está não está incluída no OpenSolaris 2008.5. Além disso para quem quer estudar o ZFS um pouco mais a fundo, acho que conhecer seu controle via linha de comando é interessante.
Com o OpenSolaris já bootado, abra um terminal, logue-se como root e consulte os seus dispositivos com echo|format.
Se você esta bem familiarizado com Linux você deve estranhar a nomenclatura dos dispositivos no OpenSolaris, eu recomendo voce dar uma olhada nesse documento.
Parar criar um pool com os dispositivos c4d1 (80G) e o c5d1 (60GB) basta simplesmente um zpool create ourpool mirror c4d1 c5d1.
Explicando esse comando palavra a palavra:
zpool: para usar o ZFS você só precisa estar familiarizado com dois comandos: zpool e zfs. O comando zpool é quem configura os storages pools ZFS.
create: a acao a ser tomada, no caso, criacao.
ourpool: o nome que eu escolhi para o pool.
mirror: diz que vamos fazer espelhamento, logo as próximas palavras serão dois ou mais dispositivos.
Se o comando funcionou, ele agira silenciosamente e nao retornar nada. Para checar o estatus do pool fazemos um zpool status ourpool.
Essa saída nos diz que o pool chamado ourpool está com o status ONLINE e que o pool é composto de um único mirror que por sua vez é composto dos dispositivos c4d1 e c5d1.
Podemos listar todos pools com zpool list.
O ourpool tem aproximadamente 60GB de tamanho dos quais 900kb já foram usados para guardar metadados. Como nós usamos um espelho de discos de 60GB e de 80GB, o tamanho do pool foi determinado pelo tamanho do menor disco. O outro pool, rpool é o pool que o OpenSolaris cria por default para abrigar o sistema inteiro.
Agora vamos povoar o pool com dados. Estes dados poderiam ser dados reais importantes como os arquivos de um banco de dados, sua coleção de fotos ou seu arquivo de documentos. Para efeitos ilustrativos eu vou usar aqui um arquivo vazio de 100Mb chamado data. mkfile 100m data.
Durante a criação do arquivo eu dei um zpool iostat -v ourpool para ver o tráfego na entrada/saída do pool. Note que há tráfego em ambos os discos já que eles formam um espelho.
Vamos criar e guardar um checksum md5 do arquivo data para podermos checar sua integridade mais tarde, md5sum data > data.md5. Para checarmos se esse checksum bate com o checksum do arquivo fazemos um md5sum –check data.md5.
Agora vem a parte crítica dessa simulação. Vamos simular um defeito físico no disco. Dispositivos de armazenamento vão falhar em algum momento, só não sabemos quando, e quando acontecer ele poderá corromper seus dados ou parar aplicações importantes.
Vamos pegar 20 Mb de lixo retirado do /dev/urandom e joga-los no disco c4d1, dd if=/dev/urandom of=/dev/dsk/c4d1 bs=1024 count=20480. Existem formas mais divertidas (e caras) de provocar defeitos físicos, dê uma olhada nesse vídeo onde eles usam ZFS e martelos.
Pronto, o estrago foi feito. Olhamos o status do pool, zpool status ourpool.
Não vemos nenhum erro até porque o ZFS é baseado em cache na memória. Vamos forçar ele a limpar esse cache derrubando e subindo o pool. Primeiro cd / para termos certeza que não estamos dentro do pool, depois um zpool export ourpool seguido de um zpool import ourpool.
Olhamos o status novamente, zpool status ourpool.
O pool continua ONLINE mas o ZFS sabe que alguma coisa está errada.
Vamos checar a integridade dos dados checando nosso checksum md5, md5sum –check data.md5.
Os dados estão intactos.
Essa é uma das características de self-healing do ZFS. A corrupção de dados que ocorreu em um dos volumes espelhados foi reparada silenciosamente. Em um gerenciador de volumes tradicional você não só teria perdido seus dados como nem sequer saberia que houve corrupção.
Mas nesse ponto o administrador do sistema deve ser avisado para tomar alguma atitude em relação ao disco defeituoso. Estas são algumas sugestões:
Descobrir o disco defeituoso: se o disco já deu problema é provável que ele vá dar problema novamente e pode até levar a falhas em outros discos. O ZFS possui um mecanismo chamado scrubbing (esfregagem) que varre os blocos a procura de erros de checksum e os corrige usando os dados saudáveis. Um zpool scrub ourpool vai forçar o processo de scrubbing, que vai rodar em background. Verificando o status do pool com zpool status ourpool você pode descobrir o disco defeituoso.
Examinar o histórico do pool: você pode examinar todo o histórico do pool para entender o que aconteceu com ele antes de você chegar. Um zpool history ourpool vai mostrar que comandos de pool foram dados desde a criação do pool.
Restaurar o espelho: um zpool clean ourpool vai restaurar o espelho, mas isso mantém o disco defeituoso, o que pode ser perigoso.
Desligar o disco defeituoso: você pode desliga-lo usando zpool offline ourpool c4d1 sem precisar alterar a estrutura do pool.
Desespelhar o pool: com um zpool detach ourpool c4d1 você retira o dispositivo do pool, mas como o espelho era formado de dois dispositivos, ele passa a não ser mais um espelho.
Trocar o disco defeituoso: se você tem um outro disco, por exemplo c6d1, você pode coloca-lo no lugar do disco defeituoso e ele vai assumir seu lugar no espelho. Para isso use um zpool replace c4d1 c6d1. A partir desse momento ira começar em background um processo chamado de resilvering (re-espelhamento), mas isso já é tema para um outro post.
Eu já havia postando anteriormente como fazer funcionar câmeras Microdia usando um driver proprietário e cheio de restrições. Boas novas. Agora desenvolvedores se uniram para construir um driver livre para essa série de câmeras e o driver livre já está bem melhor que o proprietário!
Antes de mais nada, nesse post eu estou usando o Ubuntu 8.04, seguindo de perto os passos do blog de Indra Gunawan, um notebook Amazon PC FL 31, a minha câmera é essa da foto acima e ela é lista em um lsusb como:
Bus 005 Device 002: ID 0c45:624f Microdia
Os números 0c45: já indicam que essa é uma câmera Microdia. No momento em que eu escrevo, o driver livre suporta as câmeras Microdias 6242, 624e, 624f, 6270, 627b, 62bb, 145f:013d e 045e:00f4. Para uma lista mais atualizada dê uma olhada no site oficial do driver livre.
Então o primeiro passo é você abrir um terminal e dar um lsusb e observar a saída. Outra coisa importante para você saber é a versão do seu Kernel. Dê um uname -a no terminal e observe a saída. Essa é a minha:
2.6.24-16-generic
Se essa não é sua versão do Kernel, não há alarde, é possível que também funcione com você, mesmo se com outra versão do Kernel ou mesmo outro sabor de Linux.
Vamos precisar de alguns pacotes adicionais, use o seu gerenciador de pacotes (no meu caso o APT) para instalar alguns pacotes que vamos precisar. A partir daqui você precisará estar logado como root.
Se você também quiser compilar a documentação do driver, adicione o doxygen à lista. Agora baixamos a última versão do driver usando o git. De preferencia execute esse comando no seu diretório home, pois ele vai criar um diretório microdia que você pode querer preservar.
git clone http://repo.or.cz/r/microdia.git
Se você não recebeu nenhuam mensagem de erro e todo o código-fonte foi baixado, entre no diretório microdia e simplesmente digite:
make
Se tudo deu certo o código-fonte será compilado e você encontrará entre outras coisas um arquivo microdia.ko. Se você teve algum erro, provavelmente foi por algum pacote que você não tinha, baixe esse pacote tente compilar novamente.
Vamos carregar o módulo, como root:
modprobe videodev
insmod microdia.ko
Depois disso, dê um dmesg |grep Microdia -i.
[ 39.799824] microdia: Microdia USB2.0 webcam driver startup
[ 39.799873] microdia: Microdia USB2.0 Webcam - Product ID 624F.
[ 39.799876] microdia: Release: 0100
[ 39.799878] microdia: Number of interfaces : 1
[ 39.801100] microdia: Microdia USB2.0 Camera is now controlling video device /dev/video0
[ 39.801133] usbcore: registered new interface driver usb_microdia_driver
[ 39.801138] microdia: v0.0.0 : Microdia USB Video Camera
Se você teve uma saída assim, então as coisas vão indo bem. Você já pode testar sua câmera. Você pode usar um software específico para isso como o Camorama ou usar o próprio Mplayer:
Eu sugiro testar primeiro o Camorama porque esses parâmetros do Mplayer funcionam comigo e eu não posso garantir que vão funcionar também com a sua câmera. Principalmente, por conta da resolução que eu usei.
Mas não vá embora agora, quando você reiniciar o computador tudo isso vai pelo espaço. Vamos fazer para que esse módulo seja carregado sempre que você ligar o computador. Vamos cópiar o arquivo .ko para o diretório de módulos do kernel.
Se você executou a algusn passos atrás o insmod, então limpe o driver da memória com um rmmod microdia. Agora rode depmod -a para gerar um novo modules.dep e mapear os arquivos no diretório de módulos.
Para terminar, adicione o módulo ao kernel com um
modprobe microdia
Agora o módulo vai ser carregado sempre que você iniciar o computador.
Agora alguns outros e brincadeiras úteis para você fazer com sua webcam.
Espelho: muito útil no dia-a-dia, vale a pena criar um atalho na barra de tarefas ou no seu Desktop. Para usar o Mplayer como um espelho:
Effectv: O effectv é o melhor brinquedo para quem tem uma webcam. E agora ele já está disponível nos repositórios do Ubuntu:
apt-get install effectv
Para usa-lo, aqui eu chamo assim:
effectv -device /dev/video0 -size 640×480
Use as teclas para baixo ou para cima para mudar os efeitos. A tecla espaço reseta o efeito. As teclas numéricas acionam variações. Tab inverte horizontalmente, como em um espelho. Aqui alguns efeitos legais.
Como era previsto, o dia hoje começou cheio de novidades.
Os portais OpenSolaris.org e OpenSolaris.com ganharam novas roupagens mais voltadas para o público final. A distância entre entrar no site, conhecer um pouco sobre o OpenSolaris e baixar uma isso diminuiu consideravelmente. Finalmente podemos chegamos ao ponto que o Ian Murdock tocou no seu clássico post “Where do I download OpenSolaris?”. Agora nós podemos simplesmente dizer, clique aqui!
E não é só o site do OpenSolaris que mudou. Também acaba de ser lançado o OpenSolaris 2008.5 ou para os mais íntimos, Projeto Indiana. A intenção do projeto era exatamente essa, criar uma distribuição mais amigável e voltada para os usuários finais. Assim mesmo um usuário de estações de trabalho poderá ter os benefícios de um sistema de arquivo como o ZFS ou uma ferramenta de tracing como o Dtrace. Além disso de ter todos os benefícios da userland GNU.
A partir de agora quando nos referirmos a OpenSolaris, estaremos nos referindo também a distribuição OpenSolaris e não somente ao kernel OpenSolaris.
Novo tema do gerenciador de boot grub que vem com o OpenSolaris
A instalação também ficou muito mais fácil graças ao Projeto Caiman que proveu um dos melhores instaladores que eu já vi. Em uma única ferramenta em estilo next-next você tem todas as ferramentas para instalar o OpenSolaris, inclusive um particionador embutido.
OpenSolaris Package Manager
O Image Packaging System também está disponível e agora integrado com o Package Manager inclusive com suporte a repositórios. Você ainda pode usar as linhas de comando comandos pkg install <pacote> e pkg unistall <pacote>. A esse screencast mostrando como usar o Package Manager e se você é familiarizado com o apt-get há essa tabela comparativa entre o pkg e o apt-get. Uma coisa interessante é que há uma integração entre o IPS e o sistema de arquivos ZFS possibilitando voltar para um estado anterior do sistema antes de instalar um pacote.
O repositório padrão no momento é o pkg.opensolaris.org que nesse momento tem poucos pacotes, menos de 5 mil. Você pode instalar adicionalmente outros repositórios como o sunfreeware.com, abra um terminal como root:
Para mais informações dê uma olhada no documento Getting Started with OpenSolaris 2008.5. No Brasil e no muno estarão ocorrendo nos próximos dias installfests, eventos, palestras e demostrações sobre essa nova distribuição. Informe-se onde ocorrerá o evento na sua cidade.
The views and opinions expressed here are those from me, Silveira Neto. The personal contents in this blog do not necessarily reflect the opinions, ideas, thoughts, points of view, and any other potential attribution of my current, past, or future employers.