O zfs / zpool pode ser configurado em um disco formatado em LVM?

3

Eu tenho a configuração do Ubuntu 14.04 com o LVM em um disco de 500 GB no meu laptop. Eu quero configurar / playaround com zfs / zpool. Qual é a melhor abordagem para isso sem perder meus dados?

    
por Shenal Silva 29.02.2016 / 06:58

1 resposta

2

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!

    
por 04.03.2016 / 12:03

Tags