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
.
Para obter instruções, consulte o Capítulo 12, Instalação do NFS Ganesha.
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.
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; } }
Cada exportação precisa ter um “Export_Id” exclusivo (obrigatório).
Caminho de exportação no pool do CephFS relacionado (obrigatório). Isso permite que os subdiretórios sejam exportados do CephFS.
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.
“RO” para acesso apenas leitura. O padrão é “None”.
Opção “squash” do NFS.
“Camada de Abstração do Sistema de Arquivos” de exportação. Consulte a Seção 14.2.1.2, “Subseção FSAL”.
EXPORT { [...] FSAL { Name = CEPH; } }
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
.
RGW { ceph_conf = "/etc/ceph/ceph.conf"; name = "name"; cluster = "ceph"; }
Aponta para o arquivo ceph.conf
. Durante a implantação com o DeepSea, não é necessário mudar esse valor.
O nome do usuário do cliente Ceph que o NFS Ganesha utiliza.
Nome do cluster do Ceph. Atualmente, o SUSE Enterprise Storage 5 suporta apenas um nome de cluster, que é ceph
por padrão.
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; }
É 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.
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.
Abra o arquivo /srv/pillar/ceph/stack/global.yml
com o editor de sua preferência. Crie o arquivo se ele não existir.
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
.
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" }
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.j2root #
cp
ganesha.conf.j2 gold.conf.j2
As novas funções exigem chaveiros para acessar o cluster. Para conceder acesso, copie o ganesha.j2
:
root #
cp
ganesha.j2 silver.j2root #
cp
ganesha.j2 gold.j2
Copie o chaveiro para o Object Gateway:
root #
cd
/srv/salt/ceph/rgw/files/root #
cp
rgw.j2 silver.j2root #
cp
rgw.j2 gold.j2
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.confroot #
cp
ceph.conf.rgw gold.conf
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.
Execute as Fases de 0 a 4 do DeepSea.
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:
Abra o arquivo /srv/pillar/ceph/rgw.sls
com o editor de sua preferência. Crie o arquivo se ele não existir.
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
.
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.j2root #
cp
ganesha.conf.j2 ganesha_cfs.conf.j2
Edite o ganesha_rgw.conf.j2
e remova a seção:
{% if salt.saltutil.runner('select.minions', cluster='ceph', roles='mds') != [] %} [...] {% endif %}
Edite o ganesha_cfs.conf.j2
e remova a seção:
{% if salt.saltutil.runner('select.minions', cluster='ceph', roles=role) != [] %} [...] {% endif %}
As novas funções exigem chaveiros para acessar o cluster. Para conceder acesso, copie o ganesha.j2
:
root #
cp
ganesha.j2 ganesha_rgw.j2root #
cp
ganesha.j2 ganesha_cfs.j2
A linha caps mds = "allow *"
pode ser removida do ganesha_rgw.j2
.
Copie o chaveiro para o Object Gateway:
root #
cp
/srv/salt/ceph/rgw/files/rgw.j2 \ /srv/salt/ceph/rgw/files/ganesha_rgw.j2
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
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.
Execute as Fases de 0 a 4 do DeepSea.
Para habilitar e iniciar o serviço NFS Ganesha, execute:
root #
systemctl
enable nfs-ganesharoot #
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.
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.
Ao usar o NFS v3, você pode verificar se os compartilhamentos NFS foram exportados no nó do servidor NFS Ganesha:
root #
showmount
-e / (everything)
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
A documentação original do NFS Ganesha pode ser encontrada em https://github.com/nfs-ganesha/nfs-ganesha/wiki/Docs.