terça-feira, 10 de junho de 2014

ZFS no Debian Jessie (testing) - parte 1

Finalmente depois de tanto querer, e com todo o incentivo do André Machado (Serpro), eis que me aventurei a brincar com o ZFS.

Os problema começaram desde cedo porque não pude seguir o artigo oficial em http://zfsonlinux.org/debian.html, pois a versão empacotada não compila com o kernel 3.14.

Então inicia a caçada a alguma coisa que ajude no processo de por o ZFS em pé. Entre, quem sabe, tantas outras, optei pela compilação com a ajuda do artigo http://www.graymatterboundaries.com/?p=49, configuração com a ajuda do artigo http://bernaerts.dyndns.org/linux/75-debian/279-debian-wheezy-zfs-raidz-pool e o "3.0 Frequent Mistakes" em https://github.com/zfsonlinux/pkg-zfs/wiki/Ubuntu-ZFS-mountall-FAQ-and-troubleshooting.

Na verdade eu vou relatar basicamente este artigo com um detalhe final que logo explico. Eis o passo a passo:

  • Instalar o kit para compilação do zfs
apt-get install build-essential git autoconf libtool zlib1g-dev uuid-dev linux-headers-$(uname -r)
  • Clonar os repositórios em /root
mkdir /root/zfsonlinux
cd /root/zfsonlinux
git clone https://github.com/zfsonlinux/spl.git
git clone https://github.com/zfsonlinux/zfs.git

  • Compilar e instalar o SPL
cd /root/zfsonlinux/spl
./autogen.sh
./configure --prefix=/usr
make
sudo make install


(gerando pacotes Debian)
./autogen.sh
./configure
make deb
dpkg -i *.deb
  • Compilar e instalar o ZFS
cd /root/zfsonlinux/zfs
./autogen.sh
./configure --with-spl=/root/zfsonlinux/spl --prefix=/usr
make
sudo make install


(gerando pacotes Debian)
./autogen.sh
./configure
make deb
dpkg -i *.deb

Em meu cenário simplificado utilizei 3 discos SATA de 2TB para criar uma raidz utilizando a notação /dev/sd{a,b,c}. Para produção a recomendação uma alternativa com nomeação de dispositivo independente da instalação do sistema operacional, como a obtida em /dev/disk/by-id/.
  • Criando e configurando um pool raidz
zpool create -f -m none -o ashift=12 mypool01 raidz /dev/sda /dev/sdb /dev/sdc
zfs set atime=off mypool01
zfs set dedup=off mypool01
  • Criando um sistema de arquivo em mypool01 e definindo o ponto de montagem
mkdir /pool/data
zfs create mypool01/data
zfs set mountpoint=/pool/data mypool01/data

Até aqui tudo bem, o problema foi que depois de reiniciar, simplesmente eu não conseguia mais acesso ao pool, simplesmente um "zpool list" não listava os pools. Do que pude entender, o que controla a existência do pool zfs é o arquivo zpool.cache e eu não tinha este arquivo em parte alguma do meu sistema.
  • Para criar este arquivo depois de criado o pool rodei:
mkdir /etc/zfs
zpool set cachefile=/etc/zfs/zpool.cache mypool01

Fiz alguns teste, renomeando o arquivo zpool.cache para zpool.cache.old, e realmente o zfs não encontra o pool sem este arquivo.
Uma solução de contorno pra quem criou o pool e reiniciou o sistema sem criar o arquivo zpool.cache é importar o pool e criar o arquivo zpool.cache. O importante é lembrar do nome do pool que foi criado, pois eu não descobri como obter o nome do pool com o zpool list.
  • Para importar o pool
zpool import mypool01

Acredito que com isto já seja possível começar a brincar com o ZFS sem muitas dores de cabeça.

Nenhum comentário: