Como compartilhar os sistemas de arquivos ZFS com NFS

Como compartilhar os sistemas de arquivos ZFS com NFS

Você pode compartilhar seus pools e sistemas de arquivos ZFS usando o protocolo de compartilhamento de arquivos NFS (Sistema de Arquivos de Rede) e acessá-los a partir de computadores remotos com muita facilidade.

Neste artigo, vou mostrar como compartilhar pools e sistemas de arquivos ZFS usando o serviço de compartilhamento de arquivos NFS e acessá -los a partir de computadores remotos. Então vamos começar.

Índice

  1. Diagrama de rede
  2. Instalando o servidor NFS
  3. Instalando o cliente NFS
  4. Criação de pools ZFS e sistemas de arquivos
  5. Compartilhando Pools de ZFS com NFS
  6. Compartilhando sistemas de arquivos ZFS com NFS
  7. Montagem NFS compartilhou pools e sistemas de arquivos
  8. Montando automaticamente os pools e sistemas de arquivos compartilhados de NFS e sistemas de arquivos
  9. Permitir gravações para os pools e sistemas de arquivos compartilhados da NFS
  10. Pools de ZFS e sistemas de arquivos em não estar
  11. Conclusão
  12. Referências

Diagrama de rede

Neste artigo, vou configurar um Ubuntu 20.04 LTS Computer (nome do host: Linuxhint, IP: 192.168.122.98) como um servidor NFS e configure um Ubuntu 20.04 LTS Computer (nome do host: NFS-Client, IP: 192.168.122.203) como um cliente NFS. Ambos os computadores estão na sub -rede 192.168.122.0/24. Vou configurar o servidor NFS de uma maneira que apenas computadores/servidores nesta sub -rede poderão acessar o servidor NFS.

Figura 1: Servidor NFS e cliente conectado à sub -rede 192 da rede.168.122.0/24

Instalando o servidor NFS

Você deve ter o pacote NFS Server instalado no computador de onde deseja compartilhar seus pools/sistemas de arquivos ZFS via NFS.

Se você está usando o Debian 10 ou Ubuntu 20.04 LTS, você pode instalar o pacote do servidor NFS no seu computador da seguinte forma:

$ sudo apt install nfs-kernel-server -y

Depois que o pacote do servidor NFS estiver instalado, o NFS-Server O serviço Systemd deve ser ativo.

$ sudo status Systemctl nfs-server.serviço

Se você estiver usando o CentOS 8/RHEL 8, leia o artigo como configurar o NFS Server no CentOS 8 para obter assistência na instalação do servidor NFS no seu computador.

Instalação Cliente NFS

Você deve ter o pacote cliente NFS instalado no computador de onde você estará acessando seus pools/sistemas de arquivos ZFS via NFS.

Se você está usando o Debian 10 ou Ubuntu 20.04 LTS, você pode executar o seguinte comando para instalar o pacote cliente NFS no seu computador:

$ sudo apt install nfs -common -y

Criação de pools ZFS e sistemas de arquivos

Nesta seção, vou criar um pool de ZFS Pool1 Usando os dispositivos de armazenamento vdb e VDC na configuração do espelho.

$ sudo lsblk -e7 -d

Para criar um novo pool ZFS Pool1 Usando os dispositivos de armazenamento vdb e VDC Na configuração do espelho, execute o seguinte comando:

$ sudo zpool create -f pool1 espelho vdb vdc

Uma nova piscina do ZFS Pool1 deve ser criado e o pool ZFS Pool1 deve ser montado automaticamente no /pool1 diretório.

Lista de $ sudo zfs

Crie um sistema de arquivos ZFS fs1 na piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs crie pool1/fs1

Um novo sistema de arquivos ZFS fs1 deve ser criado e montado automaticamente no /pool1/fs1 diretório.

Lista de $ sudo zfs

Compartilhando Pools de ZFS com NFS

Para compartilhar o pool ZFS Pool1 via NFS, você deve definir o sharenfs propriedade do seu pool de ZFS de acordo.

Para permitir que todos na rede leiam/grava acesso ao pool do ZFS Pool1, você pode definir o sharenfs propriedade da piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs set sharenfs = "rw" pool1

Ou,

$ sudo zfs set sharenfs = "rw =*" pool1

Para permitir todos os computador/servidor na sub -rede de rede 192.168.122.0/24 Leia/Escreva acesso ao pool ZFS Pool1 Só você pode definir o sharenfs propriedade da piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs set sharenfs = "rw [email protected]/24 "Pool1

Para permitir apenas o computador com o endereço IP 192.168.122.203 Leia/Escreva acesso ao pool ZFS Pool1, você pode definir o sharenfs propriedade da piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs set sharenfs = "rw = 192.168.122.203 "Pool1

Você pode usar o cólon (:) Símbolo para permitir o acesso ao pool ZFS Pool1 de várias sub -redes de rede ou endereços IP também.

Por exemplo, para permitir as sub -redes de rede 192.168.122.0/24 e 192.168.132.0/24 Leia/Escreva acesso ao pool ZFS Pool1, você pode definir o sharenfs propriedade da piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs set sharenfs = "rw [email protected]/24:@192.168.132.0/24 "Pool1

Da mesma maneira, para permitir apenas os computadores com os endereços IP 192.168.122.203 e 192.168.122.233 Leia/Escreva acesso ao pool ZFS Pool1, você pode definir o sharenfs propriedade da piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs set sharenfs = "rw = 192.168.122.203: 192.168.122.233 "Pool1

Você pode verificar se o sharenfs A propriedade está definida corretamente no pool ZFS Pool1 do seguinte modo:

$ sudo zfs get sharenfs pool1

Compartilhando sistemas de arquivos ZFS com NFS

Para compartilhar o sistema de arquivos ZFS fs1 via NFS, você deve definir o sharenfs propriedade do sistema de arquivos ZFS de acordo.

Para permitir que todos na rede leiam/grava acesso ao sistema de arquivos ZFS fs1, você pode definir o sharenfs Propriedade do sistema de arquivos ZFS fs1 do seguinte modo:

$ sudo zfs set sharenfs = "rw" pool1/fs1

Ou,

$ sudo zfs set sharenfs = "rw =*" pool1/fs1

Para permitir todos os computador/servidor na sub -rede de rede 192.168.122.0/24 Leia/escreva acesso ao sistema de arquivos ZFS Pool1/FS1, você pode definir o sharenfs Propriedade do sistema de arquivos ZFS Pool1/FS1 do seguinte modo:

$ sudo zfs set sharenfs = "rw [email protected]/24 "Pool1/FS1

Para permitir apenas o computador com o endereço IP 192.168.122.203 Leia/escreva acesso ao sistema de arquivos ZFS Pool1/FS1, você pode definir o sharenfs Propriedade do sistema de arquivos ZFS Pool1/FS1 do seguinte modo:

$ sudo zfs set sharenfs = "rw = 192.168.122.203 "Pool1/FS1

Você pode usar o cólon (:) Símbolo para permitir o acesso ao sistema de arquivos ZFS fs1 de várias sub -redes de rede ou endereços IP também.

Por exemplo, para permitir as sub -redes de rede 192.168.122.0/24 e 192.168.132.0/24 Leia/escreva acesso ao sistema de arquivos ZFS Pool1/FS1, você pode definir o sharenfs Propriedade do sistema de arquivos ZFS Pool1/FS1 do seguinte modo:

$ sudo zfs set sharenfs = "rw [email protected]/24:@192.168.132.0/24 "Pool1/FS1

Da mesma maneira, para permitir apenas os computadores com os endereços IP 192.168.122.203 e 192.168.122.233 Leia/escreva acesso ao sistema de arquivos ZFS Pool1/FS1, você pode definir o sharenfs Propriedade do sistema de arquivos ZFS Pool1/FS1 do seguinte modo:

$ sudo zfs set sharenfs = "rw = 192.168.122.203: 192.168.122.233 "Pool1/FS1

Você pode verificar se o sharenfs A propriedade está definida corretamente no sistema de arquivos ZFS Pool1/FS1 do seguinte modo:

$ sudo zfs get sharenfs pool1/fs1

Montagem NFS compartilhou pools e sistemas de arquivos

Para montar os pools do ZFS e os sistemas de arquivos que você compartilhou via NFS no seu computador (cliente NFS), você precisa saber o endereço IP do seu servidor NFS.

Você pode executar o 'hostname -i ' Comando no seu servidor NFS para encontrar o endereço IP do seu servidor NFS. No meu caso, o endereço IP é 192.168.122.98.

$ hostname -i

Depois de conhecer o endereço IP do servidor NFS, você pode listar todas as ações da NFS disponíveis do seu computador da seguinte forma:

$ showmount -e 192.168.122.98

Como você pode ver, a piscina do ZFS Pool1 e o sistema de arquivos ZFS fs1 estão listados como ações da NFS /pool1 e /pool1/fs1 respectivamente.

Crie um diretório /mnt/pool1 Para montar o compartilhamento do NFS /pool1 (Pool ZFS Pool1) do seguinte modo:

$ sudo mkdir -v /mnt /pool1

Você pode montar o compartilhamento de NFS /pool1 (Pool ZFS Pool1) do servidor NFS 192.168.122.98 no /mnt/pool1 Diretório do seu computador (cliente NFS) da seguinte forma:

$ sudo monte -t ​​nfs 192.168.122.98:/pool1/mnt/pool1

O NFS compartilha /pool1 deve ser montado no /mnt/pool1 Diretório do seu computador (cliente NFS).

$ df -h /mnt /pool1

Da mesma maneira, crie um novo diretório /mnt/fs1 Para montar o compartilhamento do NFS /pool1/fs1 (ZFS FileSystem fs1) do seguinte modo:

$ sudo mkdir -v /mnt /fs1

Mount the NFS Compartilhe /pool1/fs1 (ZFS FileSystem fs1) do servidor NFS 192.168.122.98 no /mnt/fs1 Diretório do seu computador (cliente NFS) da seguinte forma:

$ sudo monte -t ​​nfs 192.168.122.98:/pool1/fs1/mnt/fs1

O NFS compartilhou /pool1/fs1 (ZFS FileSystem fs1) deve ser montado no /mnt/fs1 Diretório do seu computador (cliente NFS).

$ df -h /mnt /fs1

Montando automaticamente os pools e sistemas de arquivos compartilhados de NFS e sistemas de arquivos

Você pode montar as ações da NFS /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) no seu computador (cliente NFS) automaticamente no tempo de inicialização.

Para fazer isso, abra o /etc/fstab arquivo com o Nano Editor de texto da seguinte forma:

$ sudo nano /etc /fstab

Adicione as seguintes linhas no final do /etc/fstab arquivo.

# Mount NFS compartilha
192.168.122.98:/pool1/mnt/pool1 nfs padrões 0 0
192.168.122.98:/pool1/fs1/mnt/fs1 NFS Padrões 0 0 0

Depois de terminar, pressione + X seguido pela Y e Para salvar o /etc/fstab arquivo.

Para que as alterações entrem em vigor, reinicie seu computador (cliente NFS) da seguinte forma:

$ sudo reiniciar

Na próxima vez que as botas do seu computador (cliente NFS), o NFS compartilha /pool1 (Pool ZFS Pool1)e /pool1/fs1 (ZFS FileSystem fs1) deve ser montado no /mnt/pool1 e /mnt/fs1 diretórios respectivamente.

$ df -h -t nfs4

Permitir gravações para os pools e sistemas de arquivos compartilhados da NFS

Se você tentar escrever para as ações da NFS /pool1 (Pool ZFS Pool1) ou /pool1/fs1 (ZFS FileSystem fs1) do seu computador (cliente NFS) agora, você receberá o Permissão negada mensagem como mostrado na captura de tela abaixo.

Para resolver esse problema, você pode fazer um dos seguintes:

  1. Definir 0777 permissão no /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) Diretório do servidor NFS para que todos possam escrever no pool do ZFS Pool1 e FileSystem fs1. Este método tem grandes riscos de segurança. Então, eu não recomendo, a menos que você esteja usando para fins de teste.
  2. Crie um grupo NFS-Users (digamos) no servidor NFS e nos computadores clientes da NFS a partir dos quais você deseja escrever para seus compartilhamentos de NFS. Então, mude o grupo do /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) diretórios do servidor NFS para NFS-Users. Além disso, defina as permissões de gravação em grupo (0775) para os diretórios /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) Diretórios do servidor NFS. Dessa forma, você pode criar novos usuários nos computadores clientes da NFS, SET NFS-Users Como seu grupo principal, e eles devem ser capazes de escrever para os compartilhamentos da NFS sem problemas.

OBSERVAÇÃO: NFS mapeia o UID (ID do usuário) e o GID (ID do grupo) dos computadores clientes da NFS com o UID e o GID do servidor NFS. Portanto, se um usuário/grupo puder gravar em um compartilhamento de NFS no servidor NFS, o mesmo usuário/grupo com o mesmo UID/GID também poderá ser capaz de escrever para que o NFS compartilhe no computador cliente NFS.

Nesta seção, vou mostrar como configurar os usuários e grupos necessários no servidor NFS e nos computadores clientes para poder escrever nos compartilhamentos da NFS.

No servidor NFS, crie um novo grupo NFS-Users e defina o GID (ID do grupo) do NFS-Users grupo para 2000 do seguinte modo:

$ sudo grupo

Nos computadores clientes da NFS, crie um novo grupo NFS-Users e defina o GID (ID do grupo) do NFS-Users grupo para 2000 também.

$ sudo grupo

No servidor NFS, altere o grupo do /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) diretórios para NFS-Users do seguinte modo:

$ sudo chgrp -rfv nfs -users /pool1

Permitir que o grupo leia e escreva permissões para o /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) Diretórios da seguinte forma:

$ sudo chmod -rfv 0775 /pool1

O grupo do /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) Os diretórios devem ser alterados para NFS-Users e as permissões de leitura/gravação em grupo também devem ser definidas.

$ ls -lhd /pool1
$ ls -lhd /pool1 /fs1

Para que as alterações entrem em vigor, reinicie o servidor NFS da seguinte forma:

$ sudo reiniciar

Agora, você deve criar as contas de usuário necessárias nos computadores clientes da NFS para poder escrever para os compartilhamentos da NFS.

Crie um novo usuário Alex (digamos) com o UID 5001 (para que eles não interfiram nos usuários já disponíveis no servidor NFS) e defina o grupo principal do usuário como NFS-Users do seguinte modo:

$ sudo userAdd -m -s /bin /bash -u 5001 -g NFS -Users Alex

Um novo usuário Alex com o UID 5001 e grupo primário NFS-Users (Gid 2000) deve ser criado no computador cliente NFS.

$ id alex

Agora, reinicie o computador cliente da NFS para que as alterações tenham efeito.

$ sudo reiniciar

Uma vez que as botas de computador do cliente NFS, o NFS compartilha /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) deve ser montado.

$ df -h -t nfs4

Os compartilhamentos da NFS /pool1 (Pool ZFS Pool1) e /pool1/fs1 (ZFS FileSystem fs1) também deve ter as permissões de diretório corretas.

$ ls -lhd /mnt /pool1
$ ls -lhd /mnt /fs1

Agora, faça login como usuário Alex no computador cliente da NFS da seguinte maneira:

$ sudo su - Alex

O usuário Alex deve ser capaz de criar arquivos no compartilhamento da NFS /pool1 (Pool ZFS Pool1) e acessá -los como você pode ver na captura de tela abaixo.

$ echo '[pool1] Olá mundo'>/mnt/pool1/olá.TXT
$ ls -lh /mnt /pool1
$ cat/mnt/pool1/olá.TXT

O usuário Alex Também deve ser capaz de criar arquivos no compartilhamento da NFS /pool1/fs1 (ZFS FileSystem fs1) e acessá -los como você pode ver na captura de tela abaixo.

$ echo '[fs1] Olá mundo'>/mnt/fs1/hello.TXT
$ ls -lh /mnt /fs1
$ cat/mnt/fs1/olá.TXT

No servidor NFS, o UID (ID do usuário) dos arquivos que o usuário Alex criado a partir do computador cliente NFS deve ser 5001 e o grupo deve ser NFS-Users Como você pode ver na captura de tela abaixo.

$ ls -lh /pool1
$ ls -lh /pool1 /fs1

Se você deseja resolver os uids em nomes de usuário do seu servidor NFS, você deve criar o mesmo usuário com o mesmo UID (como você criou no computador cliente NFS) no servidor NFS.

Para um pequeno número de usuários, você pode executar o mesmo UserAdd Comando no servidor NFS e nos computadores clientes para resolver este problema. Se você precisar gerenciar um grande número de usuários, será muito trabalho fazer isso manualmente. Em vez disso, você deve usar o NIS (Network Information Server) ou LDAP (Lightweight Directory Access Protocol) para sincronizar automaticamente os usuários entre o servidor NFS e os computadores clientes da NFS.

Para obter assistência na configuração do NIS em seus computadores de servidor e cliente NFS, consulte os seguintes artigos:

  • Instalando o NIS Server no Ubuntu 18.04 LTS
  • Como instalar e configurar o NIS Server no Debian 10

Para obter assistência na configuração do LDAP em seus computadores de servidor e cliente NFS, consulte os seguintes artigos:

  • Como configurar o cliente LDAP no Debian 10

Pools de ZFS e sistemas de arquivos em não estar

Se você quiser parar de compartilhar o pool do ZFS Pool1 você terá que definir o sharenfs propriedade da piscina do ZFS Pool1 para desligado do seguinte modo:

$ sudo zfs set sharenfs = off pool1

O compartilhamento de NFS deve ser desativado para o pool ZFS Pool1 Como você pode ver na captura de tela abaixo.

$ sudo zfs get sharenfs pool1

Da mesma maneira, você pode parar de compartilhar o sistema de arquivos ZFS fs1 Definindo o sharenfs Propriedade do sistema de arquivos ZFS fs1 para desligado do seguinte modo:

$ sudo zfs set sharenfs = off pool1/fs1

O compartilhamento de NFS deve ser desativado para o sistema de arquivos ZFS fs1 Como você pode ver na captura de tela abaixo.

$ sudo zfs get sharenfs pool1/fs1

Conclusão

Neste artigo, mostrei como compartilhar pools e sistemas de arquivos ZFS e acessá-los remotamente usando o protocolo de compartilhamento de arquivos NFS. Eu também mostrei como montar automaticamente os pools/sistemas de arquivos ZFS que você compartilhou com o NFS nos computadores clientes da NFS no tempo de inicialização. Eu mostrei como gerenciar permissões de acesso para os compartilhamentos da NFS e permitir que você também tenha acesso às ações da NFS dos computadores clientes da NFS.

Referências

[1] Ubuntu Manpage: ZFS - Configura os sistemas de arquivos ZFS
[2] Compartilhamento e Netimento de Arquivos ZFS Sistemas - Administração Oracle Solaris: Sistemas de Arquivos ZFS
[3] Sinopse - Páginas Man Seção 1M: Comandos de Administração do Sistema
[4] NFSSEC MANPAGE SEÇÃO 5 - Documentação do Oracle Solaris
[5] CENTOS - NFS Padrão para 777 - Falha no servidor
[6] Capítulo 4. Exportação da NFS compartilha Red Hat Enterprise Linux 8 | Portal do cliente Red Hat