Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
Aplica-se a SUSE Enterprise Storage 5

14 NFS Ganesha: Exportar dados do Ceph pelo NFS

NFS Ganesha é um servidor NFS (consulte Sharing File Systems with NFS (Compartilhando sistemas de arquivos com o NFS)) executado em um espaço de endereço de usuário, e não como parte do kernel do sistema operacional. Com o NFS Ganesha, você pode conectar seu próprio mecanismo de armazenamento, como Ceph, e acessá-lo de qualquer cliente NFS.

Os compartimentos de memória do S3 são exportados para o NFS por usuário. Por exemplo, usando o caminho NÓ_DO_GANESHA:/NOMEDEUSUÁRIO/NOMEDOCOMPARTIMENTODEMEMÓRIA.

Por padrão, um CephFS é exportado por meio do caminho NÓ_DO_GANESHA:/cephfs.

14.1 Instalação

Para obter instruções, consulte o Capítulo 12, Instalação do NFS Ganesha.

14.2 Configuração

Para obter uma lista de todos os parâmetros disponíveis no arquivo de configuração, consulte:

  • man ganesha-config

  • man ganesha-ceph-config para obter as opções da FSAL (File System Abstraction Layer – Camada de Abstração do Sistema de Arquivos) do CephFS.

  • man ganesha-rgw-config para obter as opções da FSAL do Object Gateway.

Esta seção inclui informações para ajudar você a configurar o servidor NFS Ganesha para exportar os dados de cluster acessíveis por meio do Object Gateway e do CephFS.

A configuração do NFS Ganesha é controlada por /etc/ganesha/ganesha.conf. Observe que as mudanças nesse arquivo serão sobregravadas quando a Fase 4 do DeepSea for executada. Para mudar as configurações permanentemente, edite o arquivo /srv/salt/ceph/ganesha/files/ganesha.conf.j2 localizado no master Salt.

14.2.1 Seção de exportação

Esta seção descreve como configurar as seções EXPORT no ganesha.conf.

EXPORT
{
  Export_Id = 1;
  Path = "/";
  Pseudo = "/";
  Access_Type = RW;
  Squash = No_Root_Squash;
  [...]
  FSAL {
    Name = CEPH;
  }
}

14.2.1.1 Seção de exportação principal

Export_Id

Cada exportação precisa ter um “Export_Id” exclusivo (obrigatório).

Caminho

Caminho de exportação no pool do CephFS relacionado (obrigatório). Isso permite que os subdiretórios sejam exportados do CephFS.

Pseudo

Caminho de exportação de destino do NFS (obrigatório para NFSv4). Ele define em qual caminho de exportação do NFS os dados exportados estarão disponíveis.

Exemplo: com o valor /cephfs/ e após a execução de

root # mount GANESHA_IP:/cephfs/ /mnt/

Os dados do CephFS estão disponíveis no diretório /mnt/cephfs/ no cliente.

Access_Type

“RO” para acesso apenas leitura. O padrão é “None”.

Squash

Opção “squash” do NFS.

FSAL

“Camada de Abstração do Sistema de Arquivos” de exportação. Consulte a Seção 14.2.1.2, “Subseção FSAL”.

14.2.1.2 Subseção FSAL

EXPORT
{
  [...]
  FSAL {
    Name = CEPH;
  }
}
Nome

Define o back end que o NFS Ganesha usa. Os valores permitidos são CEPH para CephFS ou RGW para Object Gateway. Dependendo da opção, uma role-mds ou role-rgw deve ser definida em policy.cfg.

14.2.2 Seção RGW

RGW {
  ceph_conf = "/etc/ceph/ceph.conf";
  name = "name";
  cluster = "ceph";
}
ceph_conf

Aponta para o arquivo ceph.conf. Durante a implantação com o DeepSea, não é necessário mudar esse valor.

name

O nome do usuário do cliente Ceph que o NFS Ganesha utiliza.

cluster

Nome do cluster do Ceph. Atualmente, o SUSE Enterprise Storage 5 suporta apenas um nome de cluster, que é ceph por padrão.

14.2.3 Mudando as portas padrão do NFS Ganesha

Por padrão, o NFS Ganesha usa a porta 2049 para NFS e 875 para suporte a rquota. Para mudar os números de porta padrão, use as opções NFS_Port e RQUOTA_Port na seção NFS_CORE_PARAM. Por exemplo:

NFS_CORE_PARAM
{
 NFS_Port = 2060;
 RQUOTA_Port = 876;
}

14.3 Funções personalizadas do NFS Ganesha

É possível definir funções personalizadas do NFS Ganesha para nós de cluster. Na sequência, essas funções são atribuídas aos nós em policy.cfg. As funções permitem o seguinte:

  • Nós separados do NFS Ganesha para acessar o Object Gateway e o CephFS.

  • Atribuição de usuários diferentes do Object Gateway a nós do NFS Ganesha.

A existência de usuários diferentes do Object Gateway permite que os nós do NFS Ganesha acessem compartimentos de memória diferentes do S3. É possível usar os compartimentos de memória do S3 para controle de acesso. Nota: Os compartimentos de memória do S3 não devem ser confundidos com os do Ceph usados no Mapa CRUSH.

14.3.1 Usuários diferentes do Object Gateway para NFS Ganesha

O seguinte procedimento de exemplo para o master Salt mostra como criar duas funções do NFS Ganesha com usuários diferentes do Object Gateway. Neste exemplo, as funções gold e silver são usadas, e o DeepSea já fornece arquivos de configuração de exemplo para elas.

  1. Abra o arquivo /srv/pillar/ceph/stack/global.yml com o editor de sua preferência. Crie o arquivo se ele não existir.

  2. O arquivo precisa incluir as seguintes linhas:

    rgw_configurations:
      - rgw
      - silver
      - gold
    ganesha_configurations:
      - silver
      - gold

    Mais tarde, essas funções poderão ser atribuídas em policy.cfg.

  3. Crie um arquivo /srv/salt/ceph/rgw/users/users.d/gold.yml e adicione o seguinte conteúdo:

    - { uid: "gold1", name: "gold1", email: "gold1@demo.nil" }

    Crie um arquivo /srv/salt/ceph/rgw/users/users.d/silver.yml e adicione o seguinte conteúdo:

    - { uid: "silver1", name: "silver1", email: "silver1@demo.nil" }
  4. Agora, os gabaritos para o ganesha.conf precisam ser criados para cada função. O gabarito original do DeepSea é um bom ponto de partida. Crie duas cópias:

    root # cd /srv/salt/ceph/ganesha/files/
    root # cp ganesha.conf.j2 silver.conf.j2
    root # cp ganesha.conf.j2 gold.conf.j2
  5. As novas funções exigem chaveiros para acessar o cluster. Para conceder acesso, copie o ganesha.j2:

    root # cp ganesha.j2 silver.j2
    root # cp ganesha.j2 gold.j2
  6. Copie o chaveiro para o Object Gateway:

    root # cd /srv/salt/ceph/rgw/files/
    root # cp rgw.j2 silver.j2
    root # cp rgw.j2 gold.j2
  7. O Object Gateway também precisa da configuração para as diferentes funções:

    root # cd /srv/salt/ceph/configuration/files/
    root # cp ceph.conf.rgw silver.conf
    root # cp ceph.conf.rgw gold.conf
  8. Atribua as funções recém-criadas aos nós de cluster em /srv/pillar/ceph/proposals/policy.cfg:

    role-silver/cluster/NODE1.sls
    role-gold/cluster/NODE2.sls

    Substitua NODE1 e NODE2 pelos nomes dos nós aos quais você deseja atribuir as funções.

  9. Execute as Fases de 0 a 4 do DeepSea.

14.3.2 Separando a FSAL do CephFS e do Object Gateway

O seguinte procedimento de exemplo para o master Salt mostra como criar duas novas funções diferentes que usam o CephFS e o Object Gateway:

  1. Abra o arquivo /srv/pillar/ceph/rgw.sls com o editor de sua preferência. Crie o arquivo se ele não existir.

  2. O arquivo precisa incluir as seguintes linhas:

    rgw_configurations:
      ganesha_cfs:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
      ganesha_rgw:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
    
    ganesha_configurations:
      - ganesha_cfs
      - ganesha_rgw

    Mais tarde, essas funções poderão ser atribuídas em policy.cfg.

  3. Agora, os gabaritos para o ganesha.conf precisam ser criados para cada função. O gabarito original do DeepSea é um bom ponto de partida. Crie duas cópias:

    root # cd /srv/salt/ceph/ganesha/files/
    root # cp ganesha.conf.j2 ganesha_rgw.conf.j2
    root # cp ganesha.conf.j2 ganesha_cfs.conf.j2
  4. Edite o ganesha_rgw.conf.j2 e remova a seção:

    {% if salt.saltutil.runner('select.minions', cluster='ceph', roles='mds') != [] %}
            [...]
    {% endif %}
  5. Edite o ganesha_cfs.conf.j2 e remova a seção:

    {% if salt.saltutil.runner('select.minions', cluster='ceph', roles=role) != [] %}
            [...]
    {% endif %}
  6. As novas funções exigem chaveiros para acessar o cluster. Para conceder acesso, copie o ganesha.j2:

    root # cp ganesha.j2 ganesha_rgw.j2
    root # cp ganesha.j2 ganesha_cfs.j2

    A linha caps mds = "allow *" pode ser removida do ganesha_rgw.j2.

  7. Copie o chaveiro para o Object Gateway:

    root # cp /srv/salt/ceph/rgw/files/rgw.j2 \
    /srv/salt/ceph/rgw/files/ganesha_rgw.j2
  8. O Object Gateway precisa da configuração para a nova função:

    root # cp /srv/salt/ceph/configuration/files/ceph.conf.rgw \
    /srv/salt/ceph/configuration/files/ceph.conf.ganesha_rgw
  9. Atribua as funções recém-criadas aos nós de cluster em /srv/pillar/ceph/proposals/policy.cfg:

    role-ganesha_rgw/cluster/NODE1.sls
    role-ganesha_cfs/cluster/NODE1.sls

    Substitua NODE1 e NODE2 pelos nomes dos nós aos quais você deseja atribuir as funções.

  10. Execute as Fases de 0 a 4 do DeepSea.

14.4 Iniciando ou reiniciando o NFS Ganesha

Para habilitar e iniciar o serviço NFS Ganesha, execute:

root # systemctl enable nfs-ganesha
root # systemctl start nfs-ganesha

Reinicie o NFS Ganesha com:

root # systemctl restart nfs-ganesha

Quando o NFS Ganesha é iniciado ou reiniciado, ele tem um tempo de espera extra de 90 segundos para o NFS v4. Durante o período extra, as novas solicitações dos clientes são ativamente rejeitadas. Portanto, os clientes podem enfrentar lentidão nas solicitações durante o período extra do NFS.

14.5 Definindo o nível de registro

Mude o nível de depuração padrão NIV_EVENT editando o arquivo /etc/sysconfig/nfs-ganesha. Substitua NIV_EVENT por NIV_DEBUG ou NIV_FULL_DEBUG. O aumento do nível de detalhes do registro pode gerar grandes quantidades de dados nos arquivos de registro.

OPTIONS="-L /var/log/ganesha/ganesha.log -f /etc/ganesha/ganesha.conf -N NIV_EVENT"

É necessário reiniciar o serviço ao mudar o nível de registro.

14.6 Verificando o compartilhamento NFS exportado

Ao usar o NFS v3, você pode verificar se os compartilhamentos NFS foram exportados no nó do servidor NFS Ganesha:

root # showmount -e
/ (everything)

14.7 Montando o compartilhamento NFS exportado

Para montar o compartilhamento NFS exportado (conforme configurado na Seção 14.2, “Configuração”) em um host de cliente, execute:

root # mount -t nfs -o rw,noatime,sync \
 nfs_ganesha_server_hostname:/ /path/to/local/mountpoint

14.8 Recursos adicionais

A documentação original do NFS Ganesha pode ser encontrada em https://github.com/nfs-ganesha/nfs-ganesha/wiki/Docs.

Imprimir esta página