Skip to content

Tag: Opensolaris

Event Review: Comsolid

This week I did another presentation outside my city. This time it was at Maracanau in the Comsolid, a open source and digital inclusion event.

IMG_0080

My first presentation was about ZFS filesystem and how you can take benefits from it like pooling storage and self healing. I used as base for examples my last post on it, Trying to corrupt data in a ZFS mirror.

Eu

IMG_0112
Eu
IMG_0114

My next talk was about OpenSolaris. We had a lot of questions and interesting about this. We burned some cds with OpenSolaris 2008.5 and also distributed others versions of OpenSolaris like Solaris 10.

IMG_0120

And my last presentation was a quick talk about high performance computing, a short version on that I already did before.

Was a interesting event mainly because the public was composed primarily by young students with few background on TI. It was a challenge to present some new concepts like pooling storage for those who aren’t familiar with filesystems management. I tried to keep my talk as simpler as I could and focus on daily problems and showing that you can avoid them with some open source technologies.

The full album is available at http://flickr.com/photos/silveiraneto/sets/72157605632001295/.

Trying to corrupt data in a ZFS mirror


Ilustrative image 😛

This is the first of a serie of posts I’d like to write while I’m studying more about OpenSolaris. The idea is to create simple posts showing a specific feature through practical examples that you can reproduce in your computer.

One of the most interesting feature on OpenSolaris is the 128-bit filesystem ZFS.
For those who are starting with ZFS, the main diference is the abstraction used for volumes. Unlike traditional file systems, which reside on single devices and thus require a volume manager to use more than one device, ZFS filesystems are built on top of virtual storage pools called zpools. One zpool is constructed of virtual devices (vdevs), which are themselves constructed of block devices: files, hard drive partitions, or entire drives (the recommended usage).

In this first experiment we will construct a mirrored zpool (RAID-1) and so try to corrupt its data and see what happens. In a mirrored pool the data is replicated into many disks and that eliminates the critical point, ie if one disks stops the data is not corrupted. You’ll can create a mirror with two or more disks and inside a pool you can have many mirrors. By example, one pool of 100Gb made by two mirrors, each one with 50Gb and each mirror made by volumes of 25Gb. You’ll scale your pool according your needs and capabilities.

This part of corrupt data make this experiment a little dangerous. You have these options:

  • Install OpenSolaris in your disk and have at least two more disks to make a mirrored zpool. I don’t recommend this option because if you don’t know exactly what you are doing you can lose important data if you use the wrong volumes.
  • Install OpenSolaris in a virtual machine and create fake volumes for this experiment. If you make some mistake nothing too bad will happen. That’s the option I’m using. Here I’m using VirtualBox with OpenSolaris 2008.5. VirtualBox is a free virtual machine, easy to use and works well with OpenSolaris.

Although there is already a graphical tool for manage ZFS, this is not available at OpenSolaris 2008.5. Also for who are studying ZFS a little bit deeper, know how to manage it by command line tools is interesting.

With your OpenSolaris booted, open a terminal and log yourself as root. Consult your available devices with echo|format.

If you are familiar with Linux, OpenSolaris nomenclature for devices may sound strange. I recommend you to take a look at this document.

To create a pool with the devices c4d1 (80G) and c5d1 (60GB) just type zpool create ourpool mirror c4d1 c5d1.

Explaining this command word by word:

  • zpool: for manage ZFS you need to be familiar with only two commands: zpool and zfs. Zpool command is for configure and manage ZFS pools.
  • create: the action, in this case, creation.
  • ourpool: name I chose for the pool.
  • mirror: we want a mirror in ourpool, so the next words will be more devices.
  • c4d1 c5d1: devices we want to use.


Diagram of ourpool. Icons from Everaldo Coelho.

If your command works, it’ll works silently e will returns nothing. For check pool’s status do a zpool status ourpool.

This output shows that a pool called ourpool is ONLINE and is made of one only mirror, that is made of two devices c4d1 e c5d1.

We can list all pools with zpool list.

Ourpool has approximately 60Gb size which 900kb is already used for store metadata. As we did a mirror using volume of 60Gb and 80Gb, the mirror size is determined by the smaller volume. The another pool, rpool is a pool that OpenSolaris creates by defaul to place the system.

Now we’ll populate the pool with data. These data could be real important data like data base files, your photo collection or personal documents. For illustrative effect I’m using a 100Mb empty file called data. mkfile 100m data.

While the file creation I did a zpool iostat -v ourpool too see the IO traffic in the pool. Note that there’s traffic on both disks as they form a mirror.

We will create and save a file of md5 checksum of date to be able to check its integrity later, md5sum data > data.md5. Too see if a checksum matches we do a md5sum –check data.md5.

Now comes the critical part of this simulation. We will simulate a physical defect on the disc. Storage devices will fail at some point, but we don’t know when. When it happens it can corrupt your data or stop important applications.

Let’s get 20Mb of garbage from /dev/urandom e throw them in the disk c4d1, dd if=/dev/urandom of=/dev/dsk/c4d1 bs=1024 count=20480. There’s more fun (and expensive) ways to case physical defects in a disk, take a look into this video where they use ZFS and hammers. 🙂

Ready, the damage was done. Let’s look the pool status, zpool status ourpool.

We see no error but the ZFS uses strongly memory cache. Let’s force clean this cache by disabling and enabling the pool. First cd / to assure we are not into the pool, so zpool export ourpool followed by zpool import ourpool.

Checking it’s status again, zpool status ourpool.

Pool remains ONLINE but ZFS noticed that something is wrong.

Let see the data integrity, md5sum –check data.md5.

Data are intact.

This is one of the characteristic of self healing in ZFS. The corruption that occurred in one volume was silently repaired. In a traditional volume manager you would not only lost our data but not event know that a corruption has occurred.

In this point the system administrator should be warmed to take some action on the defective disk. Here some advices:

  • Find out the defective disk: if the disk fails once so is probably that it’ll fail again or even take others disks to fail. ZFS have a mechanism called scrubbing that scan blocks finding out checksum erros and trying to correct them using the safe data. A zpool scrub ourpool will force the scrubbing process, that will run in background. After that If you look at the pool status zpool status ourpool you can see which disk is the defective one.
  • Look the pool history: you can examine all pool history and understand all that happening before you came. A zpool history ourpool will show all commands that was used since its creation.
  • Repair de mirror: a zpool clean ourpool will repair the mirror, but keeps the defective disk, what can be dangerous.
  • Turn off the defective disk: you can turn off it using a zpool offline ourpool c4d1 without alter the pool structure.
  • Unmirror the pool: with a zpool detach ourpool c4d1 you can remove the device from the pool, but as the mirror was composed of two devices, it’s no longer a mirror.
  • Change the defective disk: if you have another disk, like c6d1, you put it in the place of the defective disk and it’ll assume it role in the mirror. For that use a zpool replace c4d1 c6d1. This will start in background a process called resilvering, but that is subject for another post. 🙂

I also did a screencast the resumes the entire process:


Video download: opensolaris_zpool_mirror.mpeg.

Additional Documentation:

This post is a english translation for this post.

Tentando corromper dados em um mirror ZFS


Imagem meramente ilustrativa 😛

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.
  • c4d1 c5d1: os dispositivos usados.


Diagrama do pool que criamos. Ícones do Everaldo Coelho.

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. 🙂

Pra resumir tudo, eu fiz esse screencast:


Download do vídeo: opensolaris_zpool_mirror.mpeg.

Documentação complementar:

Há uma tradução para inglês desse post.

OpenSolaris at InfoBrasil 2008

Me and people talking about OpenSolaris

InfoBrasil is a tradicional IT business event in my city. This year we got a space for Open Source and Free Software where I did a presentation about OpenSolaris. I posted our grid yesterday.

That was my first presentation about OpenSolaris so I focused to showing that OpenSolaris 2008.5 is a  GNU/OpenSolaris distribution but you can access features like ZFS, DTrace and Zones. I used those slides that Tirthankar Das, Solaris Cluster Engineering at Sun Microsystems, did for FISL 2008. Most of the audience was composed from students and they showed very impressed with ZFS. In my next OpenSolaris presentation I’ll try to focus more on ZFS demos. 😉 Someone in the audience did a random number generator code live. We used it to prize some OpenSolaris gifts like tshirts and sticks. 😀

OpenSolaris in action

I hope that for now on that we can use better this space and for establish a good dialog between communities, governments and enterprises.

All photos ares avaliable at my personal album for that event.

Eventos de Software Livre ainda essa semana

Essa semana está cheia de eventos relacionados a Software Livre e quem está em Fortaleza não pode perder essas oportunidades. Para citar alguns:

Esse ano estão havendo várias palestras sobre Software Livre e Cultura Livre dentro da InfoBrasil e a prefeitura de Fortaleza cedeu um bom espaço para a comunidade montar um estande sobre o tema. Aproveitando o espaço nós montamos uma mini-grade de mini-palestras 🙂

14 de maio (Quarta-feira)

Tarde/Noite

16:00 – 17:00

Título: Metodologia de teste de segurança OSSTMM
Palestrante: Fernando Chucre

17:00 – 18:00

Título: Conhecimento Livre e Software Livre…
Entendendo como funciona e o que é.
Palestrante: Roberto Parente é Bacharelando de Ciência da Computação da Universidade Federal do Ceará, faz parte do grupo de pesquisa “Paralelismo, Grafos e Otimização” (ParGO) e membro do Grupo de Estudo de Linux e Software Livre (GELSoL).

15 de maio (Quinta-feira)

Tarde/Noite

16:00 – 18:00

Título: Trabalhando na internet com E-groupware e WordPress MU
Palestrante: Fernando Chucre

16 de maio (Sexta-feira)

Manhã

9:00 – 12:00

Título: Novidades do BrOffice.org 3.0 com sorteio de brindes
Palestrante: Marcus de Vasconcelos Diogo da Silva (ONG BrOffice.org)

Tarde/Noite

15:00 – 16:30

Título: Sistema Operacional OpenSolaris: palestra sobre as novidades e inovações do sistema operacional OpenSolaris e sobre o  lançamento da distribuição OpenSolaris 2008.5.
Palestrante: Silveira Neto, é bacharelando em Computação na Universidade Federal do Ceará, Embaixador de Campus da Sun Microsystems e pesquisador no tema de Computação de Alto Desempenho no grupo de pesquisa ParGO.

* Ao final da palestra haverá sorteio de brindes do OpenSolaris.

16:30 – 18:00

Título: Postgree SQL porque migrar?
Palestrante: Coutinho Nabucodonossor é participante da Comunidade Postgree.

As palestras são gratúitas e o acesso é livre. Maiores informações no site da InforBrasil. Também há a grade do congresso que também conta com mais palestras sobre o tema, mas estas são pagas. Você confere elas também no site da InforBrasil.

E para fechar com chave de ouro a semana, o CEJUG promove o já tradicional evento mensal Café com Tapioca, esse sábado.

O evento acontece na Faculdade Lourenço Filho e a grade é essa:

Horário Palestrante Tema
09:00 as 09:50 Rafael Ponte Entendendo Domain Driven Design
09:55 as 10:50 Vando Batista Desmistificando o JavaME
10:50 as 11:10 coffee-break
11:10 as 11:50 Luthiano Vasconcelos Integração Contínua com Cruise Control

Não percam, maiores informações no site do evento.

Terminal with colors in OpenSolaris

As the earlies versions of OpenSolaris, my terminal is without colors. That’s a little annoying. As the default user uses Bash you can configure your Bash options in the file ~/.bashrc. Insert in the last lines of your .bashrc file:

alias ls=’ls –color=auto’

Save, close and open your terminal (or just type source ~/.bashrc).

OpenSolaris 2008.5

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!


Nova cara do OpenSolaris.org


e a nova cara do OpenSolaris.com

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:

pkg set-authority -O http://pkg.sunfreeware.com:9000 sunfreeware.com

Você pode ver seus repositórios com o comando:

pkg authority

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.

E é claro, baixe e experimente.

Ou se você preferir, também via bittorrent.