Considerando que você só quer "brincar" com o ZFS, a opção mais fácil é provavelmente um pool com suporte a arquivos. Uma alternativa seria criar um ou mais volumes lógicos dentro do LVM e usá-los.
Uma das belezas do ZFS é que você pode fornecer praticamente qualquer coisa que possa armazenar dados em um formato aleatório compatível com E / S e "funcionará". Em ambientes de produção, você geralmente deseja dar ao ZFS um disco inteiro (ou vários discos inteiros) e deixá-lo manipular o particionamento etc., mas para testar e ter uma noção de como o ZFS funciona, um arquivo A piscina recuada é quase sempre perfeitamente adequada.
Na verdade, às vezes, recomendo ter um pool com backup de arquivos semelhante ao layout de armazenamento completo disponível, pois ele permite testar com segurança várias alterações e observar os resultados antes de se comprometer com eles. Erros na alteração dos pools do ZFS podem ser caros.
Para criar um pool com backup de arquivos, primeiro crie um conjunto de arquivos de tamanho apropriado. Eu vou criar um pool raidz1 de quatro dispositivos onde cada dispositivo (arquivo) tem 2 GB, então:
sudo mkdir /.zfs
sudo dd if=/dev/zero of=/.zfs/disk1 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk2 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk3 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk4 bs=1M count=2048
sudo chmod 0700 /.zfs
Isso nos dá quatro arquivos em /.zfs, denominados disk1 a disk4, respectivamente. Cada arquivo terá 2 GiB de tamanho, o que, ao considerar o overhead do raidz1, nos dá uma capacidade de armazenamento utilizável de pouco menos de 6 GiB (no raidz1, um dos dispositivos é usado para dados de paridade, portanto não disponível).
Em seguida, crie o pool ( tank
é o nome de exemplo habitual para um pool do ZFS):
sudo zpool create tank raidz /.zfs/disk1 /.zfs/disk2 /.zfs/disk3 /.zfs/disk4
O que isso significa é criar um pool chamado tank
usando padrões e configurar um vdev nesse pool com os quatro arquivos que acabamos de criar. O pool será importado automaticamente uma vez criado e seu sistema de arquivos raiz será montado em /tank
. Você pode observar o resultado usando sudo zpool status
, que deve imprimir algo muito semelhante a:
pool: tank
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
/.zfs/disk1 ONLINE 0 0 0
/.zfs/disk2 ONLINE 0 0 0
/.zfs/disk3 ONLINE 0 0 0
/.zfs/disk4 ONLINE 0 0 0
errors: No known data errors
Podemos confirmar o tamanho bruto do pool usando sudo zpool list
:
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 7,94G 120K 7,94G - 0% 0% 1.00x ONLINE -
e a capacidade de armazenamento usada e disponível usando sudo zfs list
:
NAME USED AVAIL REFER MOUNTPOINT
tank 74,8K 5,84G 25,4K /tank
Ambos os comandos têm inúmeras opções para controlar o que é impresso e como; veja a man page para zpool
e zfs
, respectivamente.
Agora você pode salvar arquivos no / tank e geralmente sujar as mãos com o ZFS. Para exportar o pool (recomendado antes do desligamento), sudo zpool export tank
(ou sudo zpool export -a
para exportar todos os pools importados atualmente). Para importar o pool novamente, sudo zpool import -d /.zfs -a
(ou substitua o -a
pelo nome do pool, tank
); o -d /.zfs
pode ser necessário porque o ZFS normalmente não procura nesse diretório para dispositivos. Você pode adicionar esses comandos aos scripts de inicialização / desligamento do sistema, se desejar.
Divirta-se!