ZFS no Debian Jessie (testing) - parte 1
Autor: Flávio Menezes dos Reis | Publicado: 2014-06-10T11:01:00-07:00


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.gitgit clone https://github.com/zfsonlinux/zfs.git 

Compilar e instalar o SPL

cd /root/zfsonlinux/spl./autogen.sh./configure --prefix=/usrmakesudo 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=/usrmakesudo 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/datazfs create mypool01/datazfs 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.