Daniel Krason / Shutterstock

O sistema de arquivos ZFS oferece grandes capacidades, espelhamento RAID e mecanismos anticorrupção prontos para uso. Aprenda como instalar o Ubuntu com ZFS e como criar um pool espelhado.

O que é ZFS?

ZFS é um sistema de arquivos avançado originado na Sun Microsystems para uso com seus Sistema operacional Solaris. Após a aquisição da Sun pela Oracle em 2009, o ZFS agora é propriedade da Oracle Corporation.

Publicidade

No entanto, em um ato típico de altruísmo, de 2005 em diante, a Sun lançou uma versão de código aberto do ZFS. Inevitavelmente, isso foi portado para o Linux, onde ganhou maior exposição. A versão de código aberto do ZFS — openZFS — é gerenciada e mantida pelo Projeto OpenZFS.

ZFS é um sistema de arquivos de alta capacidade tolerante a falhas. ZFS significava originalmente Zettabyte File System. A arquitetura ZFS é baseada em 128 bits em vez dos 64 bits mais comuns de outro sistema de arquivos. A capacidade de trabalhar com valores numéricos maiores é um dos fatores que tornam o ZFS capaz de lidar com zetabytes de armazenamento. Para se ter uma ideia do que isso significa, um zetabyte é um bilhão de terabytes.

Hoje em dia, o ZFS oferece suporte ao armazenamento de arquivos de até 256 zebibytes. Um zebibyte (270 bytes) é maior do que um zetabyte (1021 bytes), mas não por uma ordem de magnitude. O ZFS é muito mais do que simples capacidade – por mais espantoso que seja. O ZFS funciona como seu próprio gerenciador de volume e controlador RAID. Ele possui funções integradas, como cópia fiel na gravação, que protegem seus dados contra corrupção. Ele combina recursos que fornecem pooling, clonagem e cópia do sistema de arquivos e sua funcionalidade semelhante a RAID, de forma nativa.

Publicidade

O Ubuntu oferece o ZFS há alguns anos, mas sempre com avisos e advertências. No Ubuntu 20.10, os avisos foram removidos. A Canonical oficialmente oferece suporte ao ZFS, mas apenas em configurações de disco completo. Para obter esse suporte, você precisará instalar o ZFS ao instalar o Ubuntu. As opções do ZFS ainda estão escondidas, mas estão lá e não mais apenas para os intrépidos ou temerários.

Com o Ubuntu 21.10 previsto para outubro de 2021, é um bom momento para ver como a oferta do ZFS no Ubuntu está amadurecendo.

RELACIONADO: Como instalar e usar o ZFS no Ubuntu (e por que você deseja)

Encontrando as opções do ZFS durante a instalação

Durante a instalação do Ubuntu, a tela “Tipo de instalação” permite que você escolha apagar o disco em que está instalando o Ubuntu ou fazer outra coisa. Clique no botão “Recursos avançados”.

Publicidade

Botão Recursos avançados na tela Tipo de instalação

Publicidade

A caixa de diálogo “Recursos avançados” é exibida.

Opções de ZFS na caixa de diálogo Recursos avançados

Selecione o botão de rádio “Apagar disco e usar ZFS” e clique no botão “OK”.

A tela “Tipo de instalação” exibirá “ZFS selecionado” para mostrar que você optou por usar o ZFS.

"ZFS selecionado" notificação no tipo de instalação scrren

Publicidade

Clique no botão “Continuar” e conclua a instalação normalmente.

Se você tiver vários discos rígidos instalados em seu computador, poderá escolher como deseja que sejam usados ​​pelo ZFS. O Ubuntu oferecerá uma configuração sugerida, mas você pode ajustar as coisas para se adequar a si mesmo.

Mas e se você adicionar alguns discos rígidos depois de instalar o Ubuntu? Como você configura o ZFS para usar o novo armazenamento? É isso que veremos a seguir.

Instalamos o Ubuntu com ZFS no único disco rígido da máquina de teste que usamos para pesquisar este artigo. Adicionamos mais dois discos rígidos, dando ao computador três discos rígidos no total. Um disco rígido tinha o Ubuntu instalado e os dois novos discos estavam vazios, não formatados e desmontados.

A primeira coisa que precisamos fazer é identificar como o Ubuntu está se referindo aos novos discos rígidos. o lsblk comando lista todos os dispositivos de bloco instalados em seu computador. Podemos ser específicos sobre quais colunas de saída queremos ver nos resultados.

Publicidade
lsblk -o name,size,fstype,type,mountpoint

Como instalar e configurar o ZFS no Ubuntu - CloudSavvy IT

o -o (saída) opção é seguida pelas colunas que queremos ver. Nós escolhemos:

  • nome: O nome que o Ubuntu usa para se referir ao disco rígido.
  • Tamanho: O tamanho do disco rígido. Se o disco rígido tiver mais de uma partição, todas elas serão listadas e o tamanho de cada partição será mostrado.
  • fstype: O sistema de arquivos que é um disco rígido ou partição.
  • modelo: Se a linha se refere a um disco, partição, unidade de CD-ROM ou pseudo-dispositivo de loopback.
  • ponto de montagem: O ponto de montagem do sistema de arquivos no disco rígido ou partição.

Tem um monte de squashfs dispositivos de loopback, numerados loop0 Através dosloop6. Cada vez que você instala um aplicativo snap, um desses pseudo-dispositivos é criado. É parte do encapsulamento e do sandboxing que envolve cada aplicativo de encaixe.

O primeiro disco rígido é listado como /dev/sda. É uma unidade de 32 GB com cinco partições, listadas como /dev/sda1 Através dos /dev/sda5. Eles são formatados de maneiras diferentes. Este é o drive que estava no computador quando instalamos o Ubuntu.

Nossos dois novos discos rígidos estão listados como /dev/sdb e /dev/sdc. Eles também são drives de 32 GB, mas não estão formatados e não estão montados.

Publicidade

Pools, RAID 0, RAID 1

Para utilizar os novos discos rígidos, nós os adicionamos a um piscina. Você pode adicionar quantas unidades quiser a um pool. Existem duas maneiras de fazer isso. Você pode configurar o pool para que possa usar todo o espaço de armazenamento de cada disco rígido em um Configuração RAID 0, ou você pode configurá-los para que o pool ofereça apenas a quantidade de espaço de armazenamento do menor disco rígido do pool, em uma configuração RAID 1.

A vantagem do RAID 0 é o espaço. Mas a configuração preferida – e altamente recomendada – é RAID 1. RAID 1 espelha os dados em todas as unidades do pool. Isso significa que você pode ter uma falha de disco rígido e o sistema de arquivos e seus dados ainda estão seguros e seu computador ainda está funcionando. Você pode substituir a unidade danificada e adicionar a nova unidade à sua piscina.

Em contraste, com o RAID 0, uma única falha de disco rígido torna o sistema inoperante até que você substitua a unidade danificada e execute uma restauração de seus backups.

Quanto mais drives você tiver em um pool RAID 1, mais robusto ele será. O mínimo necessário para RAID 1 são duas unidades. Uma falha em qualquer uma das unidades seria um inconveniente, mas não um desastre. Mas uma falha de ambos os discos rígidos ao mesmo tempo seria um problema maior, é claro. Portanto, a resposta parece ser agrupar tantos discos rígidos quanto você pode dispensar.

Mas é claro que, na prática, há um limite de quantas unidades você deseja – ou pode alocar – em um único pool. Se você tiver oito discos rígidos sobressalentes, configurar dois pools RAID 1 de quatro unidades é provavelmente um uso melhor do hardware do que um único pool de oito unidades. E lembre-se, um pool RAID 1 só pode oferecer o armazenamento do menor disco rígido do pool, portanto, sempre tente usar drives do mesmo tamanho em um único pool.

Publicidade

Criando um RAID 1 Pool

Identificamos nossos novos discos rígidos como /dev/sdb e /dev/sdc . Para criar um pool ZFS RAID 1, usamos este comando:

sudo zpool create cloudsavvyit mirror /dev/sdb /dev/sdc

Os componentes do comando são:

  • sudo: Estamos mudando a configuração do sistema, então precisamos usar sudo para obter privilégios de root.
  • zpool: Este é o comando de gerenciamento de pool ZFS.
  • Criar: Esta é a ação que queremos zpool para realizar para nós.
  • cloudsavvyit: Este é o nome do pool que desejamos criar.
  • espelho: Queremos que nossos dados sejam espelhados em todas as unidades, o que nos dá um pool RAID 1. A omissão da opção “espelho” cria um pool RAID 0.
  • / dev / sdb: O primeiro de nossos novos discos rígidos.
  • / dev / sdc: O segundo dos nossos novos discos rígidos.

Substitua “cloudsavvyit” pelo nome que você deseja chamar de piscina e substitua /dev/sdb e /dev/sdc com os identificadores de seus novos discos rígidos.

Adicionando os novos discos rígidos a um novo pool RAID 1

Criar uma piscina é um pouco anticlímax. Se tudo correr bem, você retornará sem cerimônia ao prompt de comando. Podemos usar o status ação com o zpool comando para ver o status de nosso novo pool.

Publicidade
sudo zpool status cloudsavvyit

Verificando o status do novo pool

Nosso novo pool foi criado, está online, nossos dois novos drives estão no pool e não há erros. Tudo isso parece ótimo. Mas onde fica a piscina? Vamos ver se lsblk vai nos mostrar onde ele foi montado.

lsblk -o name,size,fstype,type,mountpoint

Status dos novos discos rígidos no pool ZFS

Podemos ver que nossos novos discos rígidos /dev/sdb e /dev/sdc foram particionados com duas partições cada, mas nenhum ponto de montagem está listado para eles. Os pools não são montados como discos rígidos normais. Por exemplo, não há entrada no /etc/fstab arquivo para pools ZFS. Por padrão, um ponto de montagem é criado no diretório raiz. Tem o mesmo nome da piscina.

ls /

O ponto de montagem do pool ZFS no diretório raiz

Publicidade

Se você quiser que o ponto de montagem seja criado em outro lugar, use o -m (ponto de montagem) ao criar o pool e fornecer o caminho para onde deseja que o ponto de montagem seja criado. Você também pode dar ao ponto de montagem um nome diferente.

sudo zpool create -m /path/to/mount-point-name cloudsavvyit mirror /dev/sdb /dev/sdc

Dando aos usuários acesso ao pool

O pool existe, mas apenas o usuário root pode armazenar dados nele. Não é disso que precisamos, é claro. Queremos que outros usuários possam acessar o pool.

Para conseguir isso, iremos:

  • Crie um diretório no pool.
  • Crie um novo grupo.
  • Defina o novo grupo como o proprietário do grupo do diretório.
  • Adicione usuários que precisam acessar o armazenamento de dados ao novo grupo.

Este esquema oferece grande flexibilidade. Podemos criar quantos diretórios de armazenamento de dados precisarmos, com diferentes grupos sendo proprietários deles. Dar aos usuários acesso às diferentes áreas de armazenamento é tão simples quanto adicioná-los aos grupos apropriados.

Vamos usar groupadd para criar um grupo de usuários. Nosso grupo é chamado de “csavvy1”. Vamos então usar o usermod comando para adicionar um usuário chamado “dave” ao novo grupo. o -a A opção (anexar) adiciona o novo grupo à lista de grupos existentes em que o usuário está. Sem essa opção, o usuário é removido de todos os grupos existentes e adicionado ao novo. Isso causará problemas, então certifique-se de usar o -a opção.

Publicidade
sudo groupadd csavvy1
sudo usermod -a -G csavvy1 dave

Criar um grupo de usuários e adicionar um usuário a ele

Para que sua nova associação ao grupo se torne efetiva, o usuário deve efetuar logout e login novamente.

Agora vamos criar um diretório no pool, chamado “data1”.

sudo mkdir /cloudsavvyit/data1

o chgrp comando permite definir o proprietário do grupo do diretório.

sudo chgrp csavvy1 /cloudsavvyit/data1

Finalmente, vamos definir as permissões do grupo usando chmod . O “s” é o bit especial SGID. Isso significa que os arquivos e diretórios criados no diretório “data1” herdarão o proprietário do grupo deste diretório.

Publicidade
sudo chmod g+rwsx /cloudsavvyit/data1/

Criar um diretório e definir a propriedade e as permissões do grupo

Nosso usuário fez logout e login novamente. Vamos tentar criar um arquivo no novo diretório de armazenamento de dados em nosso novo pool RAID 1 ZFS.

touch /cloudsavvyit/data1/new-file.txt

E vamos ver se foi criado.

ls /cloudsavvyit/data1 -lh

Criação de um novo arquivo no diretório de armazenamento de dados do pool ZFS

Sucesso. E se tentarmos criar outro arquivo fora de nossa área de armazenamento data1?

Publicidade
touch /cloudsavvyit/new-file2.txt

O usuário não pode criar arquivos fora de sua área de armazenamento de dados alocada

Isso falha conforme o esperado. Nossas permissões estão funcionando. Nosso usuário só pode manipular arquivos no diretório de armazenamento de dados para os quais ele recebeu permissão de acesso.

RELACIONADO: Como usar SUID, SGID e Sticky Bits no Linux

Destrua uma piscina

Cuidado com este comando. Certifique-se de ter backups antes de continuar. Se você tem certeza de que realmente deseja e verificou que possui outras cópias dos dados no pool, pode destruir um pool com este comando:

sudo zpool destroy cloudsavvyit

Substitua “cloudsavvyit” pelo nome da piscina que você vai destruir.

Publicidade

Você só tem um disco rígido?

Se você tiver apenas um disco rígido ou se o computador tiver vários discos rígidos, mas seus tamanhos variam muito para formar um conjunto útil, você ainda pode usar o ZFS. Você não terá o espelhamento RAID, mas os mecanismos integrados de proteção de dados e anticorrupção ainda valem a pena e são recursos persuasivos.

Mas lembre-se, nenhum sistema de arquivos – com ou sem espelhamento RAID – significa que você pode ignorar os backups.

RELACIONADO: Backups x redundância: qual é a diferença?