Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Global File System 2
Red Hat Global File System 2
Edição 7
Resumo
Introdução
1. Público Alvo
- Os procedimentos da administração de sistema do Linux, incluindo a configuração do kernel
- Instalação e configuração de rede de armazenamento compartilhada, tal como Fibre Channel SANs.
2. Documentação Relacionada
- Guia de Instalação — Fornece informações sobre a instalação do Red Hat Enterprise Linux 6.
- Guia de Implementação — Fornece informação sobre a implementação, configuração e administração do Red Hat Enterprise Linux 6.
- Guia de Instalação — Fornece informações sobre a instalação do Red Hat Enterprise Linux 6.
- Visão Geral do High Availability Add-On Overview — Fornece uma visão geral de alto nível de Adição de Alta Disponibilidade.
- Administração de Cluster (Cluster Administration) — Fornece informações sobre a instalação, configuração e gerenciamento do Complemento de Alta Disponibilidade.
- Administrador do Gerenciador de Volume Lógico — Fornece uma descrição do Gerenciador de Volume Lógico (LVM), incluindo informações sobre como executar o LVM em um ambiente de cluster.
- DM Multipath — Fornece informações sobre como usar o resurso Device-Mapper Multipath (Dispositivo Mapeador Multipath) do Red Hat Enterprise Linux.
- Linux Virtual Server Administration — Fornece informações sobre configuração de sistemas de alto desempenho e serviços com a Adição de Balanceador de Carga (Load Balancer Add-On), um conjunto de componentes de software integrado que fornece Linux Virtual Servers (LVS) para balanceamento de carga de IP através um conjunto de servidores reais.
- Notas de Lançamento — Fornece informações sobre lançamento atual dos produtos da Red Hat.
3. Precisamos de seu Feedback
rh-gfs2(EN)-6 (2014-10-8T15:15)
Capítulo 1. Visão Geral do GFS2
Nota
Nota
fsck.gfs2
em um sistema de arquivos muito grande pode levar um longo tempo e consumir uma grande quantidade de memória. Adicionalmente, no evento de falha de um disco ou subsistema de disco, o tempo de recuperação é limitado pela velocidade de sua mídia de backup. Para informações sobre a quantidade de memória que o comando fsck.gfs2
requer, veja a Seção 4.11, “Reparando um Sistema de Arquivo”.
clvmd
, que gerencia os volumes lógicos LVM em um cluster. O daemon faz isso possível para usar o LVM2 para gerenciar volumes lógicos. Para informações sobre o gerenciador de volume LVM, veja Administração do Gerenciador de Volume Lógico (Logical Volume Manager Administration).
gfs2.ko
implementa o sistema de arquivos GFS2 e é carregado em nós do cluster GFS2.
Nota
1.1. Recursos Novos e Alterados
1.1.1. Recursos Novos e Alterados para o Red Hat Enterprise Linux 6.0
- Para o lançamento do Red Hat Enterprise Linux 6, a Red Hat não dá suporte para o uso do GFS2 como um sistema de arquivos de nó único.
- Para o lançamento do Red Hat Enterprise Linux 6, o comando
gfs2_convert
que faz a atualização do GFS para um sistema de arquivos GFS2 foi melhorado. Para informações sobre este comando, veja o Apêndice B, Convertendo um Sistema de Arquivo utilizando os GFS e GFS2. - O lançamento do Red Hat Enterprise Linux 6 suporta as opções de montagem
discard
,nodiscard
,barrier
,nobarrier
,quota_quantum
,statfs_quantum
, estatfs_percent
. Para informações sobre montar um sistema de arquivos GFS2, veja a Seção 4.2, “Montagem de Sistema de Arquivo”. - A versão Red Hat Enterprise Linux 6 deste documento contém uma nova seção, a Seção 2.9, “Bloqueio de Nó GFS2”. Esta seção descreve alguns dos sistemas de arquivos internos GFS2.
1.1.2. Recursos Novos e Modificados para o Red Hat Enterprise Linux 6.1
- A partir do lançamento do Red Hat Enterprise Linux 6.1, o GFS2 suporta as facilidades de quotas básicas do Linux. O gerenciamento de quotas GFS2 está documentado na Seção 4.5, “Gerenciamento de Cota do GFS2”.Para lançamentos anteriores do Red Hat Enterprise Linux, o GFS2 requer o comando
gfs2_quota
para gerenciar quotas. A documentação para ogfs2_quota
é agora fornecida no Apêndice A, Gerenciamento de Quota do GFS2 com o comandogfs2_quota
. - Este documento agora contém um novo capítulo, o Capítulo 5, Diagnosticando e Corrigindo Problemas com os Sistemas de Arquivos GFS2.
- Pequenas correções técnicas e clarificações que foram feitas através do documento.
1.1.3. Recursos Novos e Modificados para o Red Hat Enterprise Linux 6.2.
- Desde o lançamento do Red Hat Enterprise Linux 6.2, o GFS2 suporta o comando
tunegfs2
que substitui alguns recursos do comandogfs2_tool
. Para mais informações, consulte o man page detunegfs2
.As seções a seguir foram atualizadas para fornecer procedimentos administrativos que não requerem o uso do comandogfs2_tool
:- Seção 4.5.4, “Sincronizando Quotas com o Comando
quotasync
”. and Seção A.3, “Sincronizando Quotas com o Comandogfs2_quota
.” agora descreve como mudar o parâmetroquota_quantum
de seu valor padrão de 60 segundos utilizando a opção de montagemquota_quantum=
. - Seção 4.10, “Suspendendo a Atividade em um Sistema de Arquivo” agora descreve como suspender a edição da atividade de um sistema de arquivo utilizando o comando
dmsetup
.suspend
- Este documento inclui um novo apêndice, Apêndice C, Os tracepoints e o Arquivo debugfs glocks. Este apêndice descreve a interface do glock
debugfs
e os pontos de rastreagem do GFS2. É destinado aos usuários mais avançados que possuam conhecimento do sistema de arquivo internos e que queiram saber mais sobre a criação do GFS2 e como depurar problemas específicos do GFS2.
1.1.4. Recursos Novos e Alterados para o Red Hat Enterprise Linux 6.3
1.1.5. Recursos Novos e Modificados para o Red Hat Enterprise Linux 6.4
1.1.6. Recursos Novos e Modificados para o Red Hat Enterprise Linux 6.6
1.2. Antes de Configurar o GFS2
- Nós de GFS2
- Determina quais nós no cluster irão montar os sistemas de arquivos GFS2.
- Número de sistemas de arquivo
- Determine quantos sistemas de arquivos do GFS2 serão criados inicialmente. (Você poderá adicionar mais sistemas de arquivos mais tarde).
- Nome do Sistema de Arquivo
- Determina um nome único para cada sistema de arquivo. O nome deve ser único para todos os sistemas de arquivos
lock_dlm
no cluster. Cada nome do sistema de arquivos é requerido na forma de uma variável de parâmetro. Por exemplo, este livro usa nomes de arquivos de sistemasmydata1
emydata2
em alguns exemplos de procedimentos. - Diários
- Determina o número de diários (journals) para seus sistemas de arquivos GFS2. Um diário é requerido para cada nó que monta o sistema de arquivo GFS2. O GFS2 permite que você adicione diários dinâmicamente mais tarde conforme servidores adicionais montam um sistema de arquivos. Para informações sobre adicionar diários a um sistema de arquivos GFS2, veja a Seção 4.7, “Adicionando Diários ao Sistema de Arquivo”.
- Dispositivos de armazenamento e partições
- Determine os dispositivos de armazenamento e partições a serem usadas para a criação de volumes lógicos (via CLVM) nos sistemas de arquivo.
Nota
1.3. Instalando o GFS2
gfs2-utils
para GFS2 e para o pacote lvm2-cluster
para o Clustered Logical Volume Manager (CLVM). Os pacotes lvm2-cluster
e gfs2-utils
são parte do canal ResilientStorage, que deve ser habilitado antes de instalar os pacotes.
yum install
para instalar os pacotes de software do High Availability Add-On:
# yum install rgmanager lvm2-cluster gfs2-utils
1.4. Diferenças entre o GFS e GFS2
gfs2_convert
. Para informações sobre o utilitário gfs2_convert
, veja o Apêndice B, Convertendo um Sistema de Arquivo utilizando os GFS e GFS2.
1.4.1. Nomes de Comando do GFS2
Tabela 1.1. Comandos do GFS e GFS2
Comando do GFS | Comando do GFS2 | Descrição | ||||
---|---|---|---|---|---|---|
mount | mount | Montar um sistema de arquivos. O sistema pode determinar se o sistema de arquivos é um sistema de arquivos to tipo GFS ou GFS2. Para informações sobre as opções de montagem do GFS2 veja a página man gfs2_mount(8). | ||||
umount | umount | Desmonte um sistema de arquivo | ||||
|
| Verifique e repare um sistema de arquivo desmontado. | ||||
gfs_grow | gfs2_grow | Aumente um sistema de arquivo montado. | ||||
gfs_jadd | gfs2_jadd | Adicione um diário ao sistema de arquivo montado | ||||
|
| Crie um sistema de arquivo em um dispositivo de armazenamento. | ||||
gfs_quota | gfs2_quota | Gerencie cotas em um sistema de arquivo montdo. A partir do lançamento do Red Hat Enterprise Linux 6.1, o GFS2 suporta as facilidades de quotas básicas do Linux. O gerenciamento de quotas GFS2 está documentado na Seção 4.5, “Gerenciamento de Cota do GFS2”. | ||||
gfs_tool | tunegfs2
montar parâmetros
dmsetup suspend
| Configure, ajuste ou obtenha informações sobre um sistema de arquivo. O comando tunegfs2 é suportado desde o lançamento do Red Hat Enterprise Linux 6.2. Também existe o comando gfs2_tool . | ||||
gfs_edit | gfs2_edit | Exiba, imprima ou edite estruturas internas de sistema de arquivo. O comando gfs2_edit pode ser usado para sistemas de arquivo do GFS, assim como para o sistema de arquivo GFS2. | ||||
gfs_tool setflag jdata/inherit_jdata | chattr +j (preferido) | Ativar os diários em um arquivo ou diretório. | ||||
setfacl/getfacl | setfacl/getfacl | Defina ou obtenha a lista de controle de acesso ao arquivo para um arquivo ou diretório. | ||||
setfattr/getfattr | setfattr/getfattr | Defina ou obtenha os atributos extendidos de um arquivo. |
1.4.2. Diferenças Adicionais Entre GFS e GFS2
1.4.2.1. Nomes de Caminhos Dependentes de Contexto
bind
do comando mount
. Para informações sobre bind de montagens e nomes de caminhos de contexto dependentes no GFS2, veja a Seção 4.12, “Montagens Bind e Nomes de Caminho de Contexto Dependente.”.
1.4.2.2. Módulo gfs2.ko
gfs.ko
. O módulo do kernel que implementa o sistema de arquivos GFS2 é gfs2.ko
.
1.4.2.3. Ativando Imposição de Cota no GFS2
1.4.2.4. Diário de Dados
chattr
para definir e limpar o sinalizador j
em um arquivo ou diretório. Definindo o sinalizador +j
em um arquivo habilita o diário de dados nesse arquivo. Definindo sinalizador +j
em um diretório significa "herdar jdata", que indica que todos os arquivos e diretórios subsequentemente criados nesse diretório obtenham diários. Usando o comando chattr
é a maneira preferida para ativar e desativar o diários de dados em um arquivo.
1.4.2.5. Adicionando Diários de forma Dinâmica
1.4.2.6. Removido parâmetro atime_quantum
atime_quantum
, que pode ser usado pelo sistema de arquivos GFS para especificar com qual frequencia as atualizações do atime
ocorrem. No seu lugar o GFS2 suporta as opções de montagem relatime
e noatime
. A opção de montagem relatime
é recomendada para alcançar comportamento similar para configurar o parâmetro atime_quantum
no GFS.
1.4.2.7. A opção 'data=' do comando mount
data=ordered
ou data=writeback
do mount
. Quando o data=ordered
é configurado, os dados do usuários modificados por uma transação são liberados para o disco antes da transação ser enviada ao disco. Isto deve previnir o usuário de ver blocos não inicializados em um arquivo depois de um travamento. Quando o data=writeback
é definido, os dados do usuário são escritos no disco em qualquer momento após que ele é alterado. Isto não promove a mesma garantia de consistência como no modo ordered
, mas deve ser um pouco mais rápido para algumas cargas de trabalho. O padrão é o modo ordered
(ordenado).
1.4.2.8. O comando gfs2_tool
gfs2_tool
suporta um conjunto diferente de opções para o GFS2 do que o comando gfs_tool
suporta para o GFS:
- O comando
gfs2_tool
suporta o parâmetrojournals
(diários) que mostra informações sobre os diários configurados atualmente, incluindo quantos diários o sistema de arquivos contém. - O comando
gfs2_tool
não suporta o sinalizadorcounters
, que o comandogfs_tool
usa para mostrar estatisticas GFS. - O comando
gfs2_tool
não suporta o sinalizadorinherit_jdata
. Para sinalizar um diretório como "inherit jdata" (herdar jdata), você pode definir o sinalizadorjdata
no diretório ou você pode usar o comandochattr
para definir o sinalizador+j
no diretório, Usando o comandochattr
é a maneira preferida para ativar e desativas o diário de dados em um arquivo.
Nota
tunegfs2
que substitui alguns recursos do comando gfs2_tool
. Para mais informações, consulte o man page de tunegfs2
. As funções settune
e gettune
do comando gfs2_tool
foram substituídas pelas opções da linha de comando do comando mount
o qual permite que sejam definidos por meio do arquivo fstab
quando necessário.
1.4.2.9. O comando gfs2_edit
gfs2_edit
suporta um conjunto diferente de opções para o GFS2 do que o comando gfs_edit
suporta para o GFS. Para informações sobre opções especificas de cada versão que o comando suporta, veja as páginas man do gfs2_edit
e gfs_edit
.
1.4.3. Aprimoramentos de Desempenho do GFS2
- Melhor desempenho para uso pesado em um único diretório.
- Sincronia de operações de E/S mais rápida.
- Leitura em cache mais rápida (sem cabeçalho de bloqueio)
- E/S direta mais rápida com arquivos pré-alocados (considerando que o tamanho da E/S seja razoavelmente grande, como blocos de 4M)
- Operações de E/S em geral mais rápidas
- Execução mais rápida do comando
df
, por causa das chamadas mais rápidas dostatfs
. - O modo
atime
foi melhorado para reduzir o número de edições de operações de E/S geradas peloatime
quando comparadas com o GFS.
- GFS2 é parte do kernel superior (integrado ao 2.6.19).
- GFS2 suporta os seguintes recursos.
- atributos de arquivo estendido (
xattr
) - as configurações dos atributos
lsattr
() echattr
() via chamadas padrãoioctl
(). - carimbo de data e hora do nanosecond
- GFS2 usa menos memória de kernel
- O GFS2 não requer número de geração de metadados.A alocação dos metadados do GFS2 não requer leitura. As cópias dos blocos de metadados em diversos diários são gerenciadas por blocos de anulação de diários antes do lançamento do bloqueio.
- O GFS2 inclui um gerenciador de log mais simples que não sabe nada sobre inodes sem vínculo ou mudanças de cotas.
- Os comandos
gfs2_grow
egfs2_jadd
usam bloqueios para evitar que instâncias múltiplas sejam executadas ao mesmo tempo. - O código ACL foi simplificado para chamadas como
creat
() emkdir
(). - Inodes sem vínculos, mudanças de cotas e mudanças de
statfs
são recuperadas sem remontar o diário.
Capítulo 2. Configuração do GFS2 e Considerações Operacionais
Importante
2.1. Formatando Considerações
2.1.1. Tamanho do Sistema de Arquivo: Quanto Menor Melhor
- É necessário menos tempo para fazer o back up de cada sistema de arquivo.
- É necessário menos tempo caso você precise verificar o sistema de arquivo com o comando
fsck.gfs2
. - É necessário menos memória caso você precise verificar o sistema de arquivo com o comando
fsck.gfs2
.
2.1.2. Tamanho do Bloco: Prefere-se (4K) Blocos Padrão
mkfs.gfs2
tenta estimular um tamanho de bloco mais adequado baseado na topologia do dispositivo. Em geral, prefere-se blocos com 4K, pois é o tamanho da página padrão (memória) para Linux. Ao contrário de alguns sistemas de arquivo, o GFS2 faz a maioria de suas operações utilizando os buffers do kernel de 4K. Se o tamanho do seu bloco é de 4K, o kernel dispenderá de menos trabalho para manipular os buffers.
2.1.3. Números de Diários: Um para cada Nó que Monta
gfs2_jadd
. Com o GFS2 você poderá adicionar diários imediatamente.
2.1.4. Tamanho do Diário: Padrão (128 MB) É Geralmente o mais adequado
mkfs.gfs2
para criar um sistema de arquivo GFS2, você pode especificar o tamanho dos diários. Se você não especificar um tamanho, ele terá 128MB como padrão, o qual deve ser mais adequado para a maioria dos aplicativos.
2.1.5. Tamanho e Número de Grupos de Recursos.
mkfs.gfs2
, ele divide o armazenamento em faixas uniformes conhecidas como grupos de recursos. Ele tenta estimar o tamanho do grupo de recurso mais adequado (variando entre 32MB até 2GB). Você pode sobrescrever o padrão como a opção -r
do comando mkfs.gfs2
.
- Primeiro, quando um grupo de recurso estiver completamente cheio, ele se lembra disto e tenta evitar verificá-lo em alocações no futuro (até que um bloco seja liberado dele). Se você nunca remover arquivos, a contenção será menos severa. No entanto, se seu aplicativo remover constantemente blocos e alocar novos blocos em um sistema de arquivo que esteja quase cheio, a contenção será muito alta e terá um impacto no desempenho bastante severo.
- Em segundo lugar, quando novos blocos são adicionados a um arquivo existente (por exemplo, acrescentando) o GFS2 tentará agrupar os novos blocos no mesmo grupo de recursos como o arquivo. Isto é feito para aumentar o desempenho: em um disco rotativo, procura por menos tempo quando estão fisicamente juntos.
2.2. Fragmentação de Sistema de Arquivo
2.3. Problemas de Alocação de Blocos
2.3.1. Deixe Espaço Livre no Sistema de Arquivo.
2.3.2. Aloque Cada Nó a Seus Próprios Arquivos, Se Possível
2.3.3. Pré-aloque, Se possível
fallocate
(1), a qual você pode utilizar para pré-alocar blocos de dados.
2.4. Considerações de Cluster
2.5. Considerações de Uso
2.5.1. Opções de Montagem: noatime e nodiratime
noatime
e nodiratime
. Isto permite que o GFS2 gaste menos tempo atualizando inodes de disco para cada acesso.
2.5.2. Opções de Ajuste do DLM: Aumentar Tamanhos da Tabela do DLM
echo 1024 > /sys/kernel/config/dlm/cluster/lkbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/rsbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/dirtbl_size
2.5.3. Opções de Ajuste do VFS: Pesquisa e Experimentos
sysctl
(8) . Por exemplo, os valores para dirty_background_ratio
e vfs_cache_pressure
podem ser ajustados dependendo da sua situação. Para buscar os valores atuais, use os comandos a seguir:
sysctl -n vm.dirty_background_ratio sysctl -n vm.vfs_cache_pressure
sysctl -w vm.dirty_background_ratio=20 sysctl -w vm.vfs_cache_pressure=500
/etc/sysctl.conf
.
2.5.4. SELinux: Evite SELinux no GFS2
2.5.5. Configurando o NFS sob o GFS2.
Atenção
localflocks
. O efeito pretendido deste, é forçar os bloqueios POSIX de cada servidor a serem locais: ou seja, que não estejam em cluster, independentes. (Existem vários problemas se o GFS2 tentar implementar os bloqueios POSIX a partir do NFS nos nós de um cluster). Para aplicativos que são executados em clientes NFS, os bloqueios POSIX localizados significam que dois clientes podem obter o mesmo bloqueio ao mesmo tempo se os dois clientes estiverem montando a partir de servidores diferentes. Se todos os clientes montarem NFS a partir de um só servidor, então o problema de servidores separados obtendo os mesmos bloqueios independentemente desaparece. Se você não estiver certo se deve montar seu sistema de arquivo com a opção localflocks
, você não deve utilizar a opção; é sempre mais seguro que os bloqueios funcionem em uma base de cluster.
- A Red Hat suporta somente as configurações do Red Hat High Availability Add-On utilizando o NFSv3 com bloqueio em uma configuração ativa/passiva com as seguintes características:
- O sistema de arquivo backend é um sistema de arquivo GFS2 executado em um cluster de 2 à 16 nós.
- Um servidor do NFSv3 é definido como um serviço exportando todo o sistema de arquivo GFS2 de um único nó de cluster por vez.
- O servidor de NFS pode falhar de um nó de cluster para outro (configuração ativa/passiva)
- Nenhum acesso ao sistema de arquivo GFS2 é permitido exceto através do servidor NFS. Isto também inclui ambos acessos de sistema de arquivo GFS2 locais como o acesso através do Samba ou Samba em Cluster.
- Não existe suporte de cota de NFS no sistema.
Esta configuração provê HA para o sistema de arquivo e reduz o tempo de baixa do sistema pois um nó falho não resulta no requerimento da execução do comandofsck
ao falhar o servidor NFS de um nó para outro. - A opção NFS
fsid=
é obrigatória para exportações de NFS do GFS2. - Caso surja o problema com seu cluster (por exemplo, o cluster não possui quórum e fencing não é bem sucedido), os volumes lógicos em cluster e o sistema de arquivo GFS2 serão congelados e não será possível obter nenhum acesso até que o cluster tenha quórum. Você deve considerar a possibilidade ao determinar se uma solução de failover simples, tal como a definida neste procedimento, é a mais apropriada para seu sistema.
2.5.6. Serviço de Arquivo do Samba (SMB ou Windows) sob GFS2
2.6. Backups do Sistema de Arquivo
echo -n 3 > /proc/sys/vm/drop_caches
rsync
em diretórios de nó específico.
-o lockproto=lock_nolock
, pois ele não estará em um cluster.
2.7. Considerações do Hardware
- Utilizar Opções de Armazenamento com Maior QualidadeO GFS2 pode operar em opções de armazenamento compartilhado mais baratas, tais como iSCSI ou Canal de Fibra sob Ethernet (FCoE), mas você obterá um melhor desempenho se você comprar armazenamento de maior qualidade com maior capacidade de cache. A Red Hat realiza a maioria dos testes de qualidade, sanidade e desempenho em armazenamento de SAN com a interconexão do Fibre Channel. Como via de regra, é sempre melhor implementar algo que tenha sido testado primeiro.
- Equipamento de Rede de Teste Antes da ImplementaçãoO equipamento de rede mais rápido com maior qualidade faz com que a comunicação de cluster e GFS2 funcionem com maior velocidade e maior confiança. No entanto, você não precisa comprar o hardware mais caro. Alguns dos interruptores de redes mais caros têm problemas em passar pacotes de multicast, que são usados para passar os bloqueios (flocks) do
fcntl
, onde a mercadoria de interruptores de rede mais baratos é muitas vezes mais rápido e mais confiável. Geralmente é uma boa prática tentar equipamentos antes de implementá-los em produção total.
2.8. Problemas de Desempenho: Verifique o Red Hat Customer Portal
2.9. Bloqueio de Nó GFS2
write
).
Nota
- Um inode é usado em uma forma de leitura somente em todos os nós
- Um inode é escrito ou modificado a partir de um nó único somente.
mmap
() em um arquivo em GFS2 com mapeamento de escrita e leitura, mas somente leitura é feita, se contará apenas como leitura. No GFS entretanto, se conta como uma escrita, então o GFS2 é muito mais escalável com o mmap
() de E/S.
noatime
mount
, então leituras também resultarão em escritas para atualizar o arquivo timestamps. Nós recomendamos que todos usuários GFS2 deveriam ser montados com noatime
ao menos que eles tenham um requerimento específico para o atime
.
2.9.1. Problemas com o Bloqueio de Posix
- Ao utilizar o Flocks, você irá gerar processamento mais rápido do que se utilizar os bloqueios de Posix.
- Programas que utilizam os bloqueios Posix no GFS2 devem evitar utilizar a função
GETLK
, pois em um ambiente em cluster, o ID do processo pode ser para um nó diferente no cluster.
2.9.2. Ajuste de Desempenho com GFS2
mbox
), ou com um diretório para cada usuário contendo um arquivo para cada mensagem (maldir
). Quando os pedidos chegam via IMAP, a preparação ideal é dar cada usuário uma afinidade a um nó particular. Desta maneira, seus pedidos para vizualizar e deletar mensagens de email tenderão a ser servidos a partir do cache nesse nó. Obviamente se esse nó falhar, a sessão então pode ser reiniciada em um nó diferente.
imap
ou smtp
.
echo -n 3 >/proc/sys/vm/drop_caches
2.9.3. Resolução de Problemas do Desempenho do Despejo de Bloqueios GFS2
debugfs
que pode ser encontrado no seguinte caminho, assumindo que o debugfs
está montado em /sys/kernel/debug/
:
/sys/kernel/debug/gfs2/fsname/glocks
debugfs
é usar o comando cat
para fazer uma cópia do conteúdo completo do arquivo (isso pode levar um longo tempo se você tiver uma grande quantidade de RAM e vários inodes em cache) enquanto o aplicativo estiver passando por problemas e então buscando através dos dados resultantes em uma data posterior.
Nota
debugfs
, uma poucos segundos ou mesmo um ou dois minutos depois da outra. Comparando as informações do detentor nos dois arquivos, relacionados ao mesmo número glock, você poderá dizer se a carga de trabalho está fazendo progresso (que está somente lenta) ou se tornou parada (que é sempre um bug e deve ser avisado ao suporte Red Hat imediatamente).
debugfs
iniciando com o H: (holders - detentores) representam pedidos de bloqueios tanto concedidos ou em espera. O sinalizador 'W' se refere ao pedido em espera, o 'H' se refere a um pedido concedido. Os glocks que possuem um grande número de pedidos em espera são provavelmente aqueles que estão passando por determinadas contenções.
Tabela 2.1. Sinalizadores Glock
Sinalização | Nome | Significado |
---|---|---|
b | Bloqueantes | Válido quando a sinalização bloqueada é definida, e indica que a operação, que foi requisitada do DLM, poderá bloquear. Esta sinalização é removida para operações de rebaixamento e para "tentativas" de bloqueios. O propósito desta sinalização é permitir reunir estatísticas do tempo de resposta de DLM independentes a partir do tempo tomado por outros nós para bloqueios de rebaixamento. |
d | Rebaixamento pendente | Um pedido (remoto) de rebaixamento deferido |
D | Rebaixamento | Um pedido de rebaixamento (local ou remoto) |
f | Descarga de Log | O log precisa ser enviado antes de liberar esse glock |
F | Congelado | Responde a partir de nós remotos ignorados - recuperação está em progresso. Esta sinalização não é relacionada ao congelamento de sistema de arquivo, o qual utiliza um mecanismo diferente, mas é utilizado somente na recuperação. |
i | Invalidação em progresso | No processo de estar invalidando páginas sob este glock. |
I | Inicial | Ajuste quando o bloqueio DLM é associado com este glock |
l | Bloqueado | O glock está no processo de mudança de estado |
L | LRU | Definido quando o glock está na lista do LRU |
o | Object | Definido quando o glock é associado com um objeto (ou seja, um inode para glocks tipo 2, e um grupo de recurso para glocks tipo 3) |
p | Rebaixamento em progresso | O glock está no processo de responder a um pedido de rebaixamento |
q | Em fila | Definido quando um proprietário é enfileirado em um glock e limpo quando um glock é mantido, mas não houver nenhum outro proprietário. Usado como parte do algorítimo que calcula um tempo mínimo de espera para um glock. |
r | Resposta pendente | Resposta recebida do nó remoto está aguardando processamento |
y | Sujo | Os dados precisam descarregar para o disco antes de liberar este glock |
Tabela 2.2. Sinalizadores do proprietário glock
Sinalização | Nome | Significado |
---|---|---|
a | Async | Não espere pelo resultado glock (fará um conjunto para enviar depois) |
A | Qualquer | Qualquer modo de bloqueio compatível é aceitável |
c | Sem cache | Quando desbloqueado, rebaixe o bloqueio DLM imediatamente |
e | Não expirar data | Ignore pedidos de cancelamento de bloqueios subsequentes |
E | exato | Deve ter um modo de bloqueio exato |
F | Primeiro | Ajuste quando o proprietário é o primeiro a ser concedido para este bloqueio |
H | Detentor | Indica que o bloqueio requerido é concedido |
p | Prioridade | Enfileire os proprietários no início da fila |
t | Tentar | Uma "tentativa" de bloqueio |
T | Tentar 1CB | Uma "tentativa" que envia um callback |
W | Espera | Ajuste enquanto espera por um pedido para completar |
find -inum number
onde número é o número inode convertido do formato hex nos arquivos glocks em decimais.
Nota
find
em um sistema de arquivos quando estiver passando por uma contenção de bloqueio, você poderá tornar o problema pior. É uma boa idéia parar a aplicação antes de rodar o find
quando você estiver buscando por inode sustentados.
Tabela 2.3. Tipos de Glock
Digite o número | Tipo de bloqueio | Use |
---|---|---|
1 | Trans | Bloqueio de transação |
2 | Inode | Dados e metadados inode |
3 | Rgrp | Metadados de grupos de recursos |
4 | Meta | O superblock |
5 | Iopen | Detecção mais próxima do último inode |
6 | Flock | flock (2) syscall |
8 | Quota | Operações de quota |
9 | Diário | Diário mutex |
gfs2_grow
para expandir o sistema de arquivos.
Capítulo 3. Iniciando
3.1. Tarefas de Pré-requisitos:
- Certifique-se de que você anotou as características chave dos nós de GFS2 (consulte o Seção 1.2, “Antes de Configurar o GFS2”).
- Certifique-se de que os relógios no nós GFS2 estão sincronizados. Recomenda-se que você utilize o software Network Time Protocolo (NTP) fornecido com seu Red Hat Enterprise Linux.
Nota
O relógio do sistema nos nós de GFS2 deve ter uma diferença de quinze minutos entre um e o outro para evitar atualizações desnecessárias de carimbo de data e hora de inode. Esta atualização desnecessária de carimbo de data e hora de inode causa um sério impacto no desempenho do cluster. - Para você utilizar o GFS2 em um ambiente em cluster, você precisa configurar seu sistema para usar o Clustered Logical Volume Manager (CLVM), um conjunto de extensões de cluster para o Gerenciador de Volume Lógico. Para utilizar o CLVM, o software Red Hat Cluster Suite, incluindo o daemon do
clvmd
devem estar em execução. Para mais informações sobre como utilizar o CLVM, veja Logical Volume Manager Administration. Para informações sobre como instalar e administrar o Red Hat Cluster Suite, veja Cluster Administration.
3.2. Tarefas Iniciais de Configuração
- Configurando Volumes Lógicos:
- Produzindo um sistema de arquivos GFS2.
- Montando sistemas de arquivos.
- Usando o LVM, crie um volume lógico para cada sistema de arquivo do Red Hat GFS2.
Nota
Você pode usar os scriptsinit.d
inclusos no Red Hat Cluster Suite para automatizar a ativação e desativação dos volumes lógicos. Para mais informações sobre os scriptsinit.d
, consulte Configurando e Gerenciando um Red Hat Cluster. - Crie sistemas de arquivo GFS2 em volumes lógicos criados no Passo 1. Escolha um nome único para cada sistema de arquivo. Para mais informações sobre como criar um sistema de arquivo GFS2, consulte o Seção 4.1, “Criando um Sistema de Arquivo”.Você pode usar qualquer um dos formatos a seguir para criar um sistema de arquivo GFS2 em cluster:
mkfs.gfs2 -p lock_dlm -t
ClusterName:FSName
-jNumberJournals BlockDevice
mkfs -t gfs2 -p lock_dlm -t
LockTableName
-jNumberJournals BlockDevice
Para mais informações sobre como montar um sistema de arquivo GFS2, consulte o Seção 4.2, “Montagem de Sistema de Arquivo”. - Em cada nó, monte os sistemas de arquivos GFS2. Para mais informações sobre como montar um sistema de arquivo GFS2, consulte o Seção 4.2, “Montagem de Sistema de Arquivo”.Uso do comando:
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
A opção de montagem
permite manipular ACLs de arquivos. Se um sistema de arquivo for montado sem a opção de montagem-o
acl
os usuários poderão visualizar as ACLs ( com o comando-o
aclgetfacl
), porém, não poderão configurá-los ( com o comandosetfacl
).Nota
Você pode usar scriptsinit.d
incluídos no Complemento de Alta Disponibilidade Red Hat para automatizar a montagem e desmontagem de sistemas de arquivo GFS2.
Capítulo 4. Gerenciando o GFS2
4.1. Criando um Sistema de Arquivo
mkfs.gfs2
. Você pode também usar o comando mkfs
com a opção -t gfs2
especificada. Um sistema de arquivo é criado em um volume LVM ativado. As seguintes informações são necessárias para executar o comando mkfs.gfs2
:
- Protocolo de bloqueio/ nome do módulo (o protocolo de bloqueio para um cluster é
lock_dlm
) - Nome do Cluster (quando estiver sendo executado como parte de uma configuração de cluster)
- Número de diários (um diário necessário para cada nó que possa montar o sistema de arquivo)
mkfs.gfs2
diretamente ou você pode usar o comando mkfs
com o parâmetro -t
especificando um sistema de arquivos do tipo gfs2
, seguido pelas opções do sistema de arquivos gfs2.
Nota
mkfs.gfs2
. No entanto, você poderá aumentar o tamanho de um sistema de arquivo existente com o comando gfs2_grow
, conforme descrito no Seção 4.6, “Aumentando um Sistema de Arquivo”.
4.1.1. Uso
mkfs.gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
Nota
mkfs.gfs2 -pLockProtoName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-jNumberJournals BlockDevice
Atenção
LockProtoName
e LockTableName
. O uso impróprio dos parâmetros LockProtoName
e LockTableName
pode fazer com que o sistema de arquivo ou espaço de bloqueio sejam corrompidos.
LockProtoName
- Especifica o nome do protoloco de bloqueio a usar. O protocolo de bloqueio para um cluster é
lock_dlm
. LockTableName
- Este parâmetro é especificado para o sistema de arquivos do GFS2 em uma configuração de cluster. Ele possui duas partes separadas por uma vírgula (sem espaços) como se segue:
ClusterName:FSName
ClusterName
, o nome do Red Hat cluster para o qual o sistema de arquivo GFS2 está sendo criado.FSName
, o nome do sistema de arquivos pode ter entre 1 e 16 caracteres. O nome deve ser único para todos os os sistemas de arquivoslock_dlm
sobre o cluster e para todos sistemas de arquivos (lock_dlm
elock_nolock
) em cada nó local.
Número
- Especifica o número de diários a serem criados pelo comando
mkfs.gfs2
. É necessário um diário para cada nó que monta o sistema de arquivos. Para os sistemas de arquivo do GFS2, você pode adicionar diários mais tarde sem aumentar o sistema de arquivos, conforme descrito na Seção 4.7, “Adicionando Diários ao Sistema de Arquivo”. BlockDevice
- Especifica um volume físico ou lógico.
4.1.2. Exemplos
lock_dlm
é o protocolo de bloqueio que o sistema de arquivo usa, desde que seja um sistema de arquivo em cluster. O nome do cluster é alpha
, e o nome do sistema de arquivo é mydata1
. O sistema de arquivo contém oito diários e é criado em /dev/vg01/lvol0
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
mkfs -t gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
lock_dlm
é criado, o qual pode ser usado no cluster alpha
. O nome do sistema de arquivo mydata2
. O sistema de arquivo contém oito diários e é criado em /dev/vg01/lvol1
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
mkfs -t gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
4.1.3. Opções Completas
mkfs.gfs2
” descreve as opções de comando mkfs.gfs2
(sinalizadores e parâmetros).
Tabela 4.1. Opções de Comando: mkfs.gfs2
Sinalizador | Parâmetro | Descrição | |||||||
---|---|---|---|---|---|---|---|---|---|
-c | Megabytes | Estabelece o tamanho inicial de cada arquivo de mudança de cota de diário para Megabytes . | |||||||
-D | Possibilita o resultado depurado. | ||||||||
-h | Ajuda. Exibe as opções disponíveis | ||||||||
-J | MegaBytes | Especifica o tamanho do diário em megabytes. O tamanho padrão do diário é de 128 megabytes. O tamanho mínimo é de 8 megabytes. Diários maiores aumentam o desempenho, embora usem mais memória do que os diários menores. | |||||||
-j | Número | Especifica o número de diários a serem criados pelo comando mkfs.gfs2 . É necessário um diário para cada nó que monta o sistema de arquivo. Se esta opção não for especificada, será criado um diário. Para os sistemas de arquivo do GFS2, você pode adicionar diários mais tarde sem aumentar o sistema de arquivos. | |||||||
-O | Evita que o comando mkfs.gfs2 peça uma confirmação antes de escrever o sistema de arquivo. | ||||||||
-p | LockProtoName |
| |||||||
-q | Silencioso. Não exibe nada. | ||||||||
-r | MegaBytes | Especifica o tamanho de grupos de recursos em megabytes. O tamanho mínimo de grupo de recurso é de 32 MB. O tamanho máximo de grupo de recurso é de 2048MB. Um tamanho grande de grupo de recurso pode aumentar o desempenho em sistemas de arquivo muito grandes. Se ele não for especificado, o mkfs.gfs2 escolhe o tamanho de grupo de recurso baseado no mesmo tamanho do sistema de arquivo: sistemas de arquivo de tamanho comum serão de grupos de recursos de 256MB, e maiores sistemas de arquivos terão RGs maiores para um melhor desempenho. | |||||||
-t | LockTableName |
| |||||||
-u | MegaBytes | Especifica o tamanho inicial de cada arquivo de marca sem vínculo de diário. | |||||||
-V | Exibe as informações sobre a versão do comando. |
4.2. Montagem de Sistema de Arquivo
Nota
cman
) não tiver sido iniciado produz a seguinte mensagem de erro:
[root@gfs-a24c-01 ~]# mount -t gfs2 -o noatime /dev/mapper/mpathap1 /mnt
gfs_controld join connect error: Connection refused
error mounting lockproto lock_dlm
-o acl
. Se um sistema de arquivo for montado sem a opção de montagem -o acl
, usuários podem visualizar as ACLs (com o getfacl
), mas não podem estabelecê-los (com setfacl
).
4.2.1. Uso
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
-o acl
- Opção do GFS2 específico para permitir a manipulação das ACLs do arquivo.
BlockDevice
- Especifica o dispositivo de bloco onde o sistema de arquivo do GFS2 reside.
MountPoint
- Especifica o diretório onde o sistema de arquivo GFS2 deve ser montado.
4.2.2. Exemplo
/dev/vg01/lvol0
é montado no diretório /mygfs2
.
mount /dev/vg01/lvol0 /mygfs2
4.2.3. Uso Completo
montarBlockDevice MountPoint
-ooption
-o option
consiste das opções do GFS2 específico (consulte a Tabela 4.2, “Opções de Montagem do GFS2 Específico”) ou opções padrão aceitáveis mount -o
do Linux, ou uma combinação de ambos. Parâmetros de option
múltiplas são separadas por vírgulas e sem espaços.
Nota
mount
é um comando do sistema Linux. Além de usar as opções do GFS2 específicas descritas nesta seção, você pode usar outras opções de comando padrão, mount
(por exemplo -r
). Para mais informações sobre outras opções de comando de mount
do Linux, veja a página man do mount
do Linux.
-o option
do GFS2 específico disponível, que pode ser passado para o GFS2 durante a montagem.
Nota
Tabela 4.2. Opções de Montagem do GFS2 Específico
Opções | Descrição | ||
---|---|---|---|
acl | Permite manipular ACLs de arquivo. Se um sistema de arquivo for montado sem a opção de montagem acl os usuários podem visualizar as ACLs (com getfacl ), mas não poderão estabelecê-las (com setfacl ). | ||
data=[ordered|writeback] | Quando o data=ordered for estabelecido, os dados de usuários modificados por uma transação, é enviado para o disco antes que a transação seja salva em um disco. Isto deve evitar que o usuário veja blocos não inicializados em um arquivo após um travamento. Quando o modo data=writeback for estabelecido, os dados do usuário serão escritos no disco logo após que for 'sujo'. Isto não oferece a mesma garantia de consistência quanto o modo ordered , mas deve ser um pouco mais rápido para algumas cargas de trabalho. O valor padrão é o modo ordered . | ||
| Força o GFS2 a tratar o sistema de arquivo como o sistema de arquivo multihost. Por padrão, o uso automático do lock_nolock ativa os sinalizadores localcaching e localflocks . | ||
| Informa o GFS2 para deixar que a camada do VFS (sistema de arquivo virtual) faça todo o flock e fcntl. O sinalizador localflocks é ativado automaticamente pelo lock_nolock . | ||
lockproto= LockModuleName | Permite que o usuário especifique qual protocolo de bloqueio usar com o sistema de arquivo. Se o LockModuleName não for especificado, o nome do protocolo de bloqueio é lido a partir do super bloco do sistema de arquivo. | ||
locktable= LockTableName | Permite que o usuário especifique qual tabela de bloqueio usar com o sistema de arquivo. | ||
quota=[off/account/on] | Ativa e desativa as cotas para um sistema de arquivo. Estabelecer as cotas para ficar no estado de account faz com que as estatísticas de uso por UID/GID para ser mantido corretamente pelo sistema de arquivo. Os valores de limite e avisos (warn) são ignorados. O valor de padrão é off . | ||
errors=panic|withdraw | Quando errors=panic forem especificados, os erros do sistema de arquivo causarão pânico no kernel. O comportamento padrão, que é o mesmo que especificar errors=withdraw , é para o sistema retirar o sistema de arquivo e fazê-lo inacessível até a próxima reinicialização. Em alguns casos o sistema pode continuar rodando. Consulte Seção 4.14, “A Função de Retirada do GFS2”, para maiores informações sobre esta função de remoção do GFS2. | ||
discard/nodiscard | Leva o GFS2 a gerar o "descarte" das solicitações para blocos que foram liberados. Ele podem ser usados pelo hardware adequado para implementar esquemas similares e configuração fina. | ||
barrier/nobarrier | Leva o GFS2 a enviar barreiras de E/S quando esvaziando o diário. O valor padrão é on . Esta opção é automaticamente desligada caso o dispositivo adjacente não suporte as barreiras de E/S. O uso das barreiras de E/S com o GFS2 é altamente recomendável em todos os momentos, a não ser que o dispositivo do bloco seja designado de forma que ele não perca seu conteúdo de cache gravado (por exemplo, caso esteja acionado um UPS ou ele não possuir um cache gravado). | ||
quota_quantum=secs | Define o número de segundos para qual uma mudança na informação de quota pode deixar em um nó antes de ser escrito no arquivo de quota. Esta é a maneira preferida para definir este parâmetro. O valor é um número inteiro de segundos maiores que zero. O padrão é 60 segundos. Definições menores resultam em atualizações mais rápidas da informação de quota lazy e probabilidade menor de alguém exceder sua quota. Definições mais longas fazem das operações do sistema de arquivos envolvendo quotas mais rápidas e mais eficientes. | ||
statfs_quantum=secs | A configuração do statfs_quantum para 0 é a maneira preferida de determinar a versão mais lenta do statfs . O valor padrão é 30 segundos, o qual determina o período máximo de tempo antes das alterações statfs serem sincronizadas ao aquivo statfs mestre. Isto pode ser ajustado para permitir valores statfs mais rápidos, menos precisas ou valores menores e mais precisos. | ||
statfs_percent=value | Fornece uma vinculação na alteração de porcentagem máxima na informação statfs de um local básico antes de ser sincronizado de volta ao arquivo statfs mestre, mesmo que o período de tempo não tenha excedido. Caso a configuração do statfs_quantum seja 0, esta configuração pode ser descartada. |
4.3. Desmontando o Sistema de Arquivo
umount
.
Nota
umount
é o comando de sistema Linux. As informações sobre este comando podem ser encontradas na página man do comando umount
.
4.3.1. Uso
umount MountPoint
MountPoint
- Especifica o diretório onde o sistema de arquivos do GFS2 foi montado.
4.4. Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
fstab
não serão conhecidos ao sistema quando os sistemas de arquivos são desmontados no desligamento do sistema. Como resultado, o script GFS2 não desmontará o sistema de arquivos GFS2. Depois do script de desligamento do GFS2 é executado, o processo de desligamento normal termina todos os processos do usuário remanescentes, incluindo a infra estrutura do cluster e tentativas de desmontar o sistema de arquivos. Esta desmontagem falhará sem a infraestrutura do cluster e o sistema parará.
- Sempre use uma entrada no arquivo
fstab
para montar o sistema de arquivo GFS2. - Caso o sistema de arquivo GFS2 tenha sido montado manualmente com o comando
mount
, certifique-se de desmontar o sistema de arquivo manualmente com o comandoumount
, antes de re-iniciar ou encerrar o sistema.
4.5. Gerenciamento de Cota do GFS2
quota=on
ou quota=account
, o GFS2 mantém registro do espaço do usuário usado para cada usuário e grupo mesmo onde não há limites impostos. O GFS2 atualiza a informação de quotas de uma maneira transacional que onde travamentos do sistema não requerem uso de quotas para serem reconstruídos.
Nota
gfs2_quota
para gerenciar quotas. Para informações sobre o uso do comando gfs2_quota
, veja o Apêndice A, Gerenciamento de Quota do GFS2 com o comando gfs2_quota
.
4.5.1. Configurando Quotas de Disco
- Configure quotas em modo enforcement ou accounting
- Inicialize o banco de dados de quota com a informação de uso de bloco atual.
- Atribua políticas de quota (No modo accounting, estas políticas não são impostas).
4.5.1.1. Definindo Quotas no Modo Enforcement ou Accounting
quota=on
especificada.
quota=account
especificada.
4.5.1.1.1. Uso
quota=on
especificada.
mount -o quota=on BlockDevice MountPoint
quota=account
especificada.
mount -o quota=account BlockDevice MountPoint
quota=off
especificada. Esta é a configuração padrão.
mount -o quota=off BlockDevice MountPoint
quota={on|off|account}
on
- Especifica que as quotas estão habilitadas quando o sistema de arquivos é montado.off
- Especifica que quotas estão desabilitadas quando o sistema de arquivos estiver montado.account
- Especifica que o usuário e as estatisticas de uso do grupo são mantidas pelo sistema de arquivos, mesmo que os limites de quota não são impostos.BlockDevice
- Especifica o dispositivo de bloco onde o sistema de arquivo do GFS2 reside.
MountPoint
- Especifica o diretório onde o sistema de arquivo GFS2 deve ser montado.
4.5.1.1.2. Exemplos
/dev/vg01/lvol0
é montado no diretório /mygfs2
com quotas ativadas.
mount -o quota=on /dev/vg01/lvol0 /mygfs2
/dev/vg01/lvol0
é montado no diretório /mygfs2
com a quota accounting mantida mas não imposta.
mount -o quota=account /dev/vg01/lvol0 /mygfs2
4.5.1.2. Criando os Arquivos de Banco de Dados de Quotas
quotacheck
quotacheck
examina sistemas de arquivos com quotas habilitadas e constrói uma tabela de uso de disco atual por arquivo de sistema. A tabela é então usada para atualizar a cópia de uso do disco do sistema operacional. Além disso, os arquivos de quota de disco do sistema de arquivos são atualizados.
-u
e -g
do comando quotacheck
; ambas opções devem ser especificadas para quotas de usuário e grupos a serem inicializados. Por exemplo, se as quotas estiverem ativadas para o sistema de arquivos /home
, crie os arquivos no diretório /home
:
quotacheck -ug /home
4.5.1.3. Atribuindo Quotas por Usuário
edquota
. Note que se você montou seu sistema de arquivos no modo accounting (com a opção quota=account
especificada), as quotas não são impostas.
edquota username
/etc/fstab
para a partição /home
(/dev/VolGroup00/LogVol02
no exemplo abaixo) e o comando edquota testuser
é executado, o seguinte é mostrado no editor padrão do sistema:
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0
Nota
EDITOR
é usada pelo edquota
. Para mudar o editor, defina a variável de ambiente EDITOR
em seu arquivo ~/.bash_profile
para o caminho completo do editor de sua preferência.
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000
quota testuser
4.5.1.4. Atribuindo Quotas por Grupo
account=on
especificada), as quotas não são impostas.
devel
(o grupo deve existir antes de definir a quota de grupo), use o seguinte comando:
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0
quota -g devel
4.5.2. Gerenciando Quotas de Disco
repquota
. Por exemplo, o comando repquota /home
produz este resultado:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
a
), use o comando:
repquota -a
--
exibido após cada usuário é uma maneira rápida para determinar se um limite de bloco foi excedido. Se o limite block soft for excedido, um +
aparece no lugar do primeiro -
no resultado. O segundo -
indica o limite inode, mas os sistemas de arquivos GFS2 não suportam limites inode que então o caractér permanecerá como -
. Os sistemas de arquivos GFS2 não suportam um período de cortesia (grace period) , então a coluna cortesia
(grace) permanecerá em branco.
repquota
não é suportado sobre o NFS, independente do sistema de arquivos subjacente.
4.5.3. Mantendo Quotas Precisar
quotacheck
para criar, checar e reparar arquivos de quota. Adicionalmente, você pode querer rodar o comando quotacheck
se você acha que seus arquivos de quotas podem não estar precisos, como pode ocorrer quando um sistema de arquivos não estiver montado adequadamente depois de um travamento do sistema.
quotacheck
, veja a página man quotacheck
.
Nota
quotacheck
quando o sistema de arquivos estiver relativamente parado em todos os nós por causa que a atividade de disco pode descartar os valores de quota computados.
4.5.4. Sincronizando Quotas com o Comando quotasync
quota_quantum
. Por padrão, o tempo é de 60 segundos utilizando a opção de montagem quota_quantum=
como descrito em Tabela 4.2, “Opções de Montagem do GFS2 Específico”. O parâmetro de quota_quantum
deve ser estabelecido em cada nó e todas as vezes que o sistema de arquivo for montado. Mudanças no parâmetro quota_quantum
não são persistentes nas desmontagens. Você pode atualizar o valor de quota_quantum
com mount -o remount
.
quotasync
para sincronizar as informações de quota de um nó para um arquivo de quota em disco, entre atualizações automáticas realizadas pelo GFS2.
4.5.4.1. Uso
quotasync [-ug] -a|mntpnt
...
u
- Sincronizar os arquivos de quota de usuário.
g
- Sincronizar os arquivos de quota de grupos
a
- Sincroniza todos os sistemas de arquivo que estão atualmente com quotas ativadas e suporte à sincronia. Quando um -a estiver ausente, o ponto de montagem do sistema de arquivos deve ser especificado.
mntpnt
- Especifica o sistema de arquivo GFS2 para o qual as ações se aplicam.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Especifica o sistema de arquivo GFS2 para o qual as ações se aplicam.
secs
- Especifica o novo período entre sincronizações de cota arquivo regulares pelo GFS2. Valores menores podem aumentar a contenção e diminuir o desempenho.
4.5.4.2. Exemplos
/mnt/mygfs2
.
# quotasync -ug /mnt/mygfs2
/mnt/mygfs2
na remontagem deste sistema de arquivo no volume lógico /dev/volgroup/logical_volume
.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
4.6. Aumentando um Sistema de Arquivo
gfs2_grow
é usado para expandir um sistema de arquivo GFS2, depois que o dispositivo, onde o sistema de arquivo estiver, for expandido. A execução de um comando gfs2_grow
em um sistema de arquivo GFS2 existente preenche todo o espaço livre entre o final do sistema arquivo atual e o final do dispositivo com uma extensão de sistema de arquivo GFS2 inicializada recentemente. Quando a operação de preenchimento for concluída, o índice dos recursos para o sistema de arquivo será atualizado. Todos os nós no cluster podem usar um espaço de armazenamento extra que tenha sido adicionado.
gfs2_grow
deve ser executado em um sistema de arquivo montado, mas precisa ser executado somente em um nó de um cluster. Todos os outros nós reconhecerão que a expansão ocorreu e automaticamente começarão a usar um novo espaço.
Nota
mkfs.gfs2
.
4.6.1. Uso
gfs2_grow MountPoint
MountPoint
- Especifica o sistema de arquivo GFS2 para o qual as ações se aplicam.
4.6.2. Comentários
gfs2_grow
:
- Faça um backup dos dados importantes no sistema de arquivos.
- Determina o volume que é usado pelo sistema de arquivo a ser expandido executando o comando
df
MountPoint
- Expande o volume do cluster adjacente com o LVM. Para informações sobre como administrar os volumes LVM, veja o Logical Volume Manager Administration.
gfs2_grow
, execute o comando df
para verificar se o novo espaço está disponível no sistema de arquivo.
4.6.3. Exemplos
/mygfs2fs
, é expandido.
[root@dash-01 ~]# gfs2_grow /mygfs2fs
FS: Mount Point: /mygfs2fs
FS: Device: /dev/mapper/gfs2testvg-gfs2testlv
FS: Size: 524288 (0x80000)
FS: RG size: 65533 (0xfffd)
DEV: Size: 655360 (0xa0000)
The file system grew by 512MB.
gfs2_grow complete.
4.6.4. Uso Completo
gfs2_grow [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Especifica o diretório onde o sistema de arquivos do GFS2 foi montado.
Device
- Especifica o nó de dispositivo do sistema de arquivo.
Tabela 4.3. Opções de GFS2 específico Disponíveis Ao Expandir um Sistema de Arquivos.
Opções | Descrição |
---|---|
-h | Ajuda. Exibe uma mensagem curta de uso. |
-q | Silencioso. Abaixa o nível de verbosidade. |
-r MegaBytes | Especifica o tamanho do novo grupo de recursos. O tamanho padrão é de 256MB. |
-T | Teste. Faz todos os cálculos, mas não edita nenhum dado no disco e não expande o sistema de arquivo. |
-V | Exibe as informações sobre a versão do comando. |
4.7. Adicionando Diários ao Sistema de Arquivo
gfs2_jadd
é usado para adicionar diários ao sistema de arquivo GFS2. Você pode adicionar diários ao sistema de arquivo GFS2 de forma dinâmica em qualquer ponto, sem expandir o volume lógico adjacente. O comando gfs2_jadd
deve ser executado em um sistema de arquivo montado, mas precisará ser executado somente em um nó no cluster. Todos os outros nós reconhecem que ocorreu uma expansão.
Nota
gfs2_jadd
falhará, mesmo que o volume lógico que possui o sistema tenha sido estendido e seja maior que o sistema de arquivo. Isto deve-se ao fato de que em um sistema de arquivo, os jornais são arquivos simples ao invés de metadados incorporados, de forma que a simples extensão do volume lógico adjacente não fornecerá espaço para os diários.
journals
do gfs2_tool
para descobrir quantos diários existem no sistema de arquivo GFS2 atual. Os seguintes exemplos exibem o número e tamanho dos diários no sistema de arquivo montado em /mnt/gfs2
.
[root@roth-01 ../cluster/gfs2]# gfs2_tool journals /mnt/gfs2
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
4.7.1. Uso
gfs2_jadd -j Number MountPoint
Número
- Especifica o número de diários a serem adicionados.
MountPoint
- Especifica o diretório onde o sistema de arquivos do GFS2 foi montado.
4.7.2. Exemplos
/mygfs2
.
gfs2_jadd -j1 /mygfs2
/mygfs2
.
gfs2_jadd -j2 /mygfs2
4.7.3. Uso Completo
gfs2_jadd [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Especifica o diretório onde o sistema de arquivos do GFS2 foi montado.
Device
- Especifica o nó de dispositivo do sistema de arquivo.
Tabela 4.4. Opções do GFS2 Específicas Disponíveis para Adicionar Diários
Sinalizador | Parâmetro | Descrição |
---|---|---|
-h | Ajuda. Exibe uma pequena mensagem de uso. | |
-J | MegaBytes | Especifica o tamanho dos novos diários em megabytes. O tamanho do diário padrão é de 128 megabytes. O tamanho mínimo é de 32 megabytes. Para adicionar diários de diferentes tamanhos ao sistema de arquivo, o comando gfs2_jadd deve ser executado para cada tamanho de diário. O tamanho especificado é arredondado para baixo para que seja um múltiplo do tamanho do segmento do diário que foi especificado quando o sistema de arquivo foi criado. |
-j | Número | Especifica o número de diários novos a serem adicionados pelo comando gfs2_jadd . O valor padrão é de 1. |
-q | Silencioso. Abaixa o nível de verbosidade. | |
-V | Exibe as informações sobre a versão do comando. |
4.8. Diário de Dados
fsync()
em um arquivo, faz com que os dados do arquivo sejam editados no disco imediatamente. A chamada retorna quando o disco informa que todos os dados estão editados de maneira segura.
fsync()
, especialmente para arquivos pequenos, pois os dados do arquivo são editados no diário além dos metadados. Esta vantagem é inversamente proporcional ao tamanho do arquivo, sendo que a edição em arquivos médios e grandes levará mais tempo com o diário de dados acionado.
fsync()
para sincronizar os dados do arquivo, podem melhorar o desempenho usando o diário de dados. O diário de dados pode ser ativado automaticamente para qualquer arquivo GFS2 criado em um diretório sinalizado ( e todos os seus subdiretórios). Os arquivos existentes com comprimento zero, também possuem diário de dados ativados ou desativados.
chattr
.
/mnt/gfs2/gfs2_dir/newfile
e depois verifica se o sinalizador foi ajustado adequadamente.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
/mnt/gfs2/gfs2_dir/newfile
e depois verifica se o sinalizador foi ajustado adequadamente.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
chattr
para ajustar o sinalizador num diretório. Quando isto acontecer, todos os arquivos e diretórios criados subsequentemente naquele diretório passarão pelo diário. O seguinte conjunto de comandos ajusta o sinalizador j
no diretório gfs2_dir
e verifica se o sinalizador foi ajustado corretamente. Em seguida, os comandos criam um novo arquivo chamado newfile
no diretório /mnt/gfs2/gfs2_dir
e verifica se o sinalizador foi ajustado para o arquivo. Como o sinalizador jdata
é estabelecido para o diretório, então o newfile
também deve ter o diário ativado.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
4.9. Configurando atualizações do atime
ctime
— A última vez que o status do inode foi modificadomtime
— A última vez que os dados do arquivo (ou diretório) foram modificadosatime
— A última vez que os dados do arquivo (ou diretório) foram acessados
atime
forem mantidas ativadas, como são por padrão no GFS2 e em outros sistemas de arquivo do Linux, seu inode precisará ser atualizado todas as vezes que um arquivo for lido.
atime
, estas atualizações podem requerer uma quantidade significante de tráfego de edição desnecessário e tráfego de bloqueio de arquivo. Este tráfego pode diminuir o desempenho, por isso, pode ser melhor desativar as atualizações do atime
.
atime
:
- Montar com o
relatime
(atime relativo), que atualiza oatime
, caso a atualizaçãoatime
anterior seja mais antiga domtime
ou atualizaçãoctime
. - Montar com o
noatime
, o qual desativa as atualizações doatime
neste sistema de arquivo.
4.9.1. Montar com o relatime
relatime
pode ser especificada quando o sistema de arquivo for montado. Isto especifica que o atime
é atualizado caso a atualização anterior atime
for mais antiga que a atualização mtime
ou ctime
.
4.9.1.1. Uso
mount BlockDevice MountPoint
-o relatime
BlockDevice
- Especifica o dispositivo de bloco onde o sistema de arquivo do GFS2 reside.
MountPoint
- Especifica o diretório onde o sistema de arquivo GFS2 deve ser montado.
4.9.1.2. Exemplo
/dev/vg01/lvol0
e é montado no diretório /mygfs2
. As atualizações atime
assumem comando apenas se a atualização atime
anterior for mais velha que a atualização mtime
ou ctime
.
mount /dev/vg01/lvol0 /mygfs2 -o relatime
4.9.2. Montar com noatime
noatime
pode ser especificada quando o sistema de arquivo é montado, o qual desativa as atualizações do atime
neste sistema de arquivo.
4.9.2.1. Uso
mount BlockDevice MountPoint
-o noatime
BlockDevice
- Especifica o dispositivo de bloco onde o sistema de arquivo do GFS2 reside.
MountPoint
- Especifica o diretório onde o sistema de arquivo GFS2 deve ser montado.
4.9.2.2. Exemplo
/dev/vg01/lvol0
e é montado no diretório /mygfs2
com atualizações atime
desativadas.
mount /dev/vg01/lvol0 /mygfs2 -o noatime
4.10. Suspendendo a Atividade em um Sistema de Arquivo
dmsetup suspend
. Suspender as atividades de edição, permite que os snapshots do dispositivo baseado em hardware, sejam usados para capturar o sistema de arquivo em estado consistente. O comando dmsetup resume
finaliza a suspensão.
4.10.1. Uso
dmsetup suspend MountPoint
dmsetup resume MountPoint
MountPoint
- Especifica o sistema de arquivo.
4.10.2. Exemplos
/mygfs2
.
# dmsetup suspend /mygfs2
/mygfs2
.
# dmsetup resume /mygfs2
4.11. Reparando um Sistema de Arquivo
gfs2_fsck
.
Importante
gfs2_fsck
deve ser executado somente em um sistema de arquivo que é desmontado de todos os nós.
Importante
fsck.gfs2
. Este comando não pode determinar se o sistema de arquivo foi montado por outro nó no cluster durante a inicialização. Você precisa executar o comando fsck.gfs2
manualmente somente após o sistema inicializar.
fsck.gfs2
não é executado em um sistema de arquivo do GFS2 durante a inicialização, modifique o arquivo /etc/fstab
para que as duas colunas finais para um ponto de montagem do sistema de arquivo GFS2 exiba "0 0" ao invés de "1 1" (ou qualquer outro número), como no exemplo a seguir:
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
Nota
gfs2_fsck
difere das versões anteriores ao gfs_fsck
das seguintes formas:
- Pressionando Ctrl+C enquanto rodando o
fsck.gfs2
, irá interromper o processamento e exibirá uma janela perguntando se você deseja interromper o comando, pular o resto do passo atual ou continuar processando. - Você pode aumentar o nível de verbosidade usando o sinalizador
-v
. Adicionar um segundo-v
aumenta o nível novamente. - Você pode diminuir o nível de verbosidade, usando o sinalizador
-q
. Adicionar um segundo-q
diminui o nível novamente. - A opção
-n
abre um sistema de arquivo como somente-leitura enão
responde à quaisquer buscas automaticamente. A opção provê uma forma de tentar fazer o comando revelar erros sem realmente permitir que o comandogfs2_fsck
tome efeito.
gfs2_fsck
para informações adicionais sobre outras opções de comando.
fsck.gfs2
requer a memória do sistema acima e além da memória usada para o sistema de operação e kernel. Cada bloco de memória no sistema de arquivo GFS2 requer aproximadamente cinco bites de memória adicional, ou 5/8 de um bite. Portanto, para estimar quantos bites de memória você precisará para rodar o comando fsck.gfs2
no seu sistema de arquivo, determine quantos blocos o sistema de arquivo possui e multiplique aquele número por 5/8.
fsck.gfs2
num sistema de arquivo GFS2 que possui 16TB com um bloco de 4K, determine primeiro quantos blocos de memória o sistema de arquivo possui, dividindo 16Tb por 4K:
17592186044416 / 4096 = 4294967296
4294967296 * 5/8 = 2684354560
fsck.gfs2
. Perceba que o tamanho do bloco era 1K. A rodagem do comando fsck.gfs2
requer quatro vezes mais de memória ou aproximadamente 11GB.
4.11.1. Uso
fsck.gfs2 -y BlockDevice
-y
- O sinalizador
-y
faz com que todas as perguntas sejam respondidas comsim
. Com o sinalizador-y
especificado, o comandogfs2_fsck
não lhe pede uma resposta antes de fazer as mudanças. BlockDevice
- Especifica o dispositivo de bloco onde o sistema de arquivo do GFS2 reside.
4.11.2. Exemplo
/dev/testvol/testlv
é reparado. Todas as buscas para reparar são automaticamente respondidas com yes
.
[root@dash-01 ~]# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete
4.12. Montagens Bind e Nomes de Caminho de Contexto Dependente.
bind
do comando mount
.
bind
no comando mount
, permite que você remonte parte de uma hierarquia de arquivo em locais diferentes enquanto estiver ainda disponível no local original. O formato deste comando é:
mount --bind olddir newdir
olddir
estará disponível em dois locais: olddir
e newdir
. Você também pode usar esta opção para disponibilizar um arquivo individual em dois locais.
/root/tmp
será idêntico ao contéudo do diretório /var/log
montado anteriormente.
[root@menscryfa ~]#cd ~root
[root@menscryfa ~]#mkdir ./tmp
[root@menscryfa ~]#mount --bind /var/log /root/tmp
/etc/fstab
para obter o mesmo resultado durante a montagem. A entra a seguir /etc/fstab
resultará no conteúdo /root/tmp
sendo idêntico ao conteúdo do diretório /var/log
.
/var/log /root/tmp none bind 0 0
mount
para ver se o sistema de arquivo foi montado, como no exemplo a seguir.
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
/bin
como um Nome de Caminho de Contexto Dependente que resolveria para um dos seguintes caminhos, dependendo da arquitetura do sistema.
/usr/i386-bin /usr/x86_64-bin /usr/ppc64-bin
/bin
vazio. Depois, se usar um script ou uma entrada no arquivo /etc/fstab
, poderá montar cada um dos diretórios de arquitetura individual no diretório /bin
com um comando mount -bind
. Por exemplo, você pode usar o seguinte comando como uma linha em um script.
mount --bind /usr/i386-bin /bin
/etc/fstab
.
/usr/1386-bin /bin none bind 0 0
%fill
para o sistema de arquivo). Os Nomes de Caminho de Contexto Dependente são mais limitados no que podem abranger. Observe no entanto, que você precisará editar seu próprio script para montar de acordo com o critério tal qual o valor do %fill
.
Atenção
bind
e o sistema de arquivo original já tiver sido montado como rw
, o novo sistema de arquivo também será montado como rw
mesmo que use o sinalizador ro
. O ro
é ignorado. Neste caso, o novo sistema de arquivo deve ser marcado como ro
no diretório/proc/mounts
o qual pode ser confuso.
4.13. Monta Binds e Organiza a Montagem de Sistema de Arquivo
bind
do comando mount
, você deve certificar-se que os sistemas de arquivo são montados na ordem correta. No seguinte exemplo, o diretório /var/log
deve ser montado antes de executar a montagem bind no diretório /tmp
:
# mount --bind /var/log /tmp
- Em geral, a montagem do sistema de arquivos é determinada pela ordem em que os sistemas de arquivos aparecem no arquivo
fstab
. As exceções para esta ordenação são sistemas de arquivos montados com o sinalizador_netdev
ou sistemas de arquivos que possuem seus próprios scriptsinit
. - Um sistema de arquivo com o próprio script
init
é montado mais tarde no processo de inicialização, após os sistemas de arquivo no arquivofstab
. - Os sistemas de arquivo montados com o sinalizador
_netdev
são montados quando a rede é ativada no sistema.
fstab
conforme a seguir:
- Monte sistemas de arquivos locais que são requeridos para a
- Faz o bind de montagem no diretório no qual se montará o sistema de arquivos GFS2.
- Monte do sistema de arquivos GFS2.
fstab
não montará os sistemas de arquivos corretamente já que o sistema de arquivos GFS2 não será montado até que o script init
do GFS2 seja rodado. Neste caso, você deve escrever um script init
para executar o bind de montagem, para que então esse não tome lugar até que o sistema GFS2 seja montado.
init
personalizado. Este script realiza um bind de montagem de dois diretórios em cima de dois diretórios de um sistema de arquivos GFS2. Neste exemplo, há um ponto de montagem GFS2 em /mnt/gfs2a
, que é montado quando o script init
do GFS2 roda, depois da inicialização do cluster.
chkconfig
indicam o seguinte:
- 345 indica os níveis de execução em que o script será iniciado.
- 29 é a prioridade de início, que neste caso indica que o script será executado na hora da inicialização depois do script
init
do GFS2, que possui prioridade de início 26. - 73 é a prioridade de parada, que neste caso indica que o script será parado durante o desligamento antes do script GFS2 que possui uma prioridade de parada de 74.
início de serviço
e parada de serviço
. Por exemplo, se o script é chamado fredwilma
, então você pode executar service fredwilma start
.
/etc/init.d
com as mesmas permissões assim como os outros scripts nesse diretório. Você pode executar um comando chkconfig on
para ligar o script ao níveis de execução indicados. Por exemplo, se o script é chamado fredwilma
, então você pode executar chkconfig fredwilma on
.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0
4.14. A Função de Retirada do GFS2
fsck.gfs2
. A retirada da função GFS é menos severa que um pânico do kernel, que causaria um outro nó fazer um fence neste nó.
gfs2
ativado e o sistema de arquivos GFS2 estiver incluído no arquivo /etc/fstab
, o sistema de arquivos GFS2 será remontado quando você reinicializar. Se o sistema de arquivos GFS2 foi retirado porque percebeu uma corrupção do sistema de arquivos, é recomendado que você execute o comando fsck.gfs2
antes de remontar o sistema de arquivos. Neste caso, para previnir seu sistema de arquivos de remontar na inicialização, você pode seguir o seguinte procedimento:
- Temporiariamente desative o script de inicialização no nó afetado com o seguinte comando:
#
chkconfig gfs2 off
- Reinicialize o nó afetado, iniciando o software de cluster. O sistema de arquivos GFS2 não será montado.
- Desmontar o sistema de arquivos em todos os nós no cluster.
- Execute o comando
fsck.gfs2
no sistema de arquivos de um nó somente para assegurar que não há corrupção do sistema de arquivos. - Reative o script de inicialização no nó afetado executando o seguinte comando:
#
chkconfig gfs2 on
- Remonte o sistema de arquivos de todos os nós no cluster.
-o errors=panic
especificada. Quando esta opção é especificada, quaisquer erros que normalmente causariam a retirada do sistema faz o sistema entrar em pânico. Isto pára as comunicações de cluster dos nós, que faz o nó entrar em fence.
gfs_controld
requerendo a retirada. O daemon gfs_controld
roda o programa dmsetup
para colocar o alvo do erro do mapeador de dispositivos sob o sistema de arquivos prevenindo acesso ao dispositivo de bloco. Ele então diz ao kernel que a operação foi completada. Esta é a razão para o requerimento de suporte do GFS2 para sempre usar um dispositivo CLVM sob GFS2, já que de outra maneira não é possível inserir um alvo de mapeador de dispositivo.
dmsetup
inserir os alvos de erro conforme requeridos. Isto pode ocorrer se há uma falta de memória no ponto de retirada e mais memória não pode ser recuperada devido ao problema que desencadeou a retirada em primeiro lugar.
Capítulo 5. Diagnosticando e Corrigindo Problemas com os Sistemas de Arquivos GFS2
5.1. O Sistema de Arquivos GFS2 Exibe um Baixo Desempenho
5.2. O Sistema de Arquivos GFS2 Suspende e Requer Reinicialização de um Nó.
- O despejo do bloqueio gfs2 para o sistema de arquivos em cada nó:
cat /sys/kernel/debug/gfs2/fsname/glocks >glocks.fsname.nodename
- O despejo de bloqueio DLM para o sistema de arquivos em cada nó: Você pode obter essa informação com o
dlm_tool
:dlm_tool lockdebug -sv lsname.
Neste comando, o lsname é o nome do espaço de bloqueio usado pelo DLM para o sistema de arquivos em questão. Você pode encontar este valor no resultado do comandogroup_tool
. - O resultado do comando
sysrq -t
. - Os conteúdos do arquivo
/var/log/messages
.
5.3. O Sistema de Arquivos GFS2 Suspende e Requer Reinicialização de todos os Nós
- Você pode ter tido uma falha no fence. Os sistemas de arquivos GFS2 congelarão para assegurar a integridade dos dados no evento de uma falha de fence. Cheque as mensagens de log para ver se existem quaisquer fences com falha no momento da suspensão. Assegure-se que o fence está configurado corretamente.
- O sistema de arquivos GFS2 pode ter sido retirado. Cheque pelas mensagens do log pela palavra
withdraw
e veja se há mensagens e traços do GFS2 indicando que o sistema de arquivos foi retirado. Uma retirada (withdraw) é um indicador de tanto corrupção do sistema de arquivos, uma falha na armazenagem ou um bug. Desmonte o sistema de arquivos, atualize o pacotegfs2-utils
e execute o comandofsck
no sistema de arquivos para retorna-lo à operação. Abra um tíquete de suporte com o Suporte da Red Hat. Informe-os que você passou por uma retirada de GFS2 (withdraw) e forneça o sosreports com logs.Para informações sobre a função GFS2 withdraw, veja a Seção 4.14, “A Função de Retirada do GFS2”. - Este erro pode ser um indicativo de um problema de bloqueio ou bug. Recolha os dados durante uma dessas ocorrências e abra um tíquete de suporte com o Suporte Red Hat, conforme descrito na Seção 5.2, “O Sistema de Arquivos GFS2 Suspende e Requer Reinicialização de um Nó.”.
5.4. O Sistema de Arquivos GFS2 Não Monta um Nó de Cluster Recém Adicionado.
spectator
definidas, já que estes não requerem diários). Você pode adicionar diários a um sistema de arquivos GFS2 com o comando gfs2_jadd
, conforme descrito na Seção 4.7, “Adicionando Diários ao Sistema de Arquivo”.
5.5. Espaço Indicado como Usado em um Sistema de Arquivos Vazio
df
mostrará que há espaço sendo tomado. Isto é por causa que os diários do sistema de arquivos consomem espaço (número de diários * tamanho dos diários) no disco. Se você criou um sistema de arquivos GFS2 com um grande número de diários ou especificado um tamanho grande de diários, então você verá (número de diários * tamanho dos diários) como já em uso quando você executar o df
. Mesmo que você não especificou um número grande de diários ou grandes diários, sistemas de arquivos GFS2 pequenos (na faixa de 1GB ou menos) mostrarão uma quantidade grande de espaço sendo usadas com o tamanho de diário padrão.
Capítulo 6. Configurando um Sistema de Arquivo do GFS2 em um Cluster de Pacemaker.
cman
, clvmd
, e pacemaker
e crie o cluster do Pacemaker. Você precisa configurar o isolamento para o cluster. Para mais informações sobre configuração de um cluster Pacemaker, veja Configuring the Red Hat High Availability Add-On with Pacemaker.
- Definir o parâmetro do Pacemaker global
no_quorum_policy
parafreeze
.Nota
Por padrão, o valor dono-quorum-policy
é definido parastop
, indicando que uma vez que o quorum se perde, todos os recursos na partição restante serão interrompidos imediatamente. Geralmente este padrão é a opção mais segura e otimizada, mas ao contrário da maioria dos recursos, o GFS2 requer que o quorum funcione. Quando o quorum estiver perdido, as aplicações que estiverem utilizando as montagens GFS2 e a própria GFS2, não serão interrompidas corretamente. Qualquer tentativa de interrupção destes recursos sem o quorum, irá falhar, a qual resultará no isolamento de todo o cluster, todas as vezes que o quorum estiver perdido.Para lidar com esta situação, você pode estabelecer ono-quorum-policy=freeze
quando o GFS2 estiver sendo usado. Isto significa que quando o quorum se perde, a partição restante não fará nada até que o quorum retorne.#
pcs property set no-quorum-policy=freeze
- Após garantir que o tipo de bloqueio está definido para 3 no arquivo
/etc/lvm/lvm.conf
para suportar o bloqueio em cluster, crie o LV em cluster e o formato do volume com um sistema de arquivo GFS2. Assegure-se de que você possa criar agendas suficientes para cada um dos nós em seu cluster.#
pvcreate /dev/vdb
#vgcreate -Ay -cy cluster_vg /dev/vdb
#lvcreate -L5G -n cluster_lv cluster_vg
#mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv
- Configure um recurso
clusterfs
.Você não precisa adicionar o sistema de arquivo ao arquivo/etc/fstab
porque será gerenciado como um recurso de cluster Pacemaker. As opções de montagem podem ser especificadas como parte da configuração do recurso com ooptions=options
. Execute o comandopcs resource describe Filesystem
para opções de configurações completas.Este comando de criação do cluster especifica a opção de montagem donoatime
#
pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" "options=noatime" op monitor interval=10s on-fail=fence clone interleave=true
- Verificar se o GFS2 está montado como o esperado
#
mount |grep /mnt/gfs2-demo
/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel) - (Opcional) Reinicialize todos os nós de cluster para verificar a persistência e recuperação do gfs2
Apêndice A. Gerenciamento de Quota do GFS2 com o comando gfs2_quota
gfs2_quota
para gerenciar quotas. Este apêndice documenta o uso do comando gfs2_quota
para gerenciar quotas de sistema de arquivos GFS2.
A.1. Definindo Quotas com o comando gfs2_quota
gfs2_quota
. O comando somente precisa ser executado em um nó único onde o GFS2 estiver montado.
quota=
do comando mount
quando montar sistema de arquivos GFS2, conforme descrito na Seção A.4, “Ativando/Desativando a Imposição de Quotas”.
A.1.1. Uso
gfs2_quota limit -uUser
-lSize
-fMountPoint
gfs2_quota limit -gGroup
-lSize
-fMountPoint
gfs2_quota warn -uUser
-lSize
-fMountPoint
gfs2_quota warn -gGroup
-lSize
-fMountPoint
User
- Uma ID de usuário para limitar ou avisar. Pode ser um nome de usuário de um arquivo de senha ou o número UID.
Group
- Um ID de grupo para limitar ou avisar. Pode ser tanto um nome de grupo do arquivo de grupo ou o número GID.
Size
- Especifica o novo valor de limite ou aviso. Por padrão, o valor é em unidades de megabytes. Os sinalizadores adicionais
-k
,-s
, e-b
mudam as unidades para kilobytes, setores e blocos do sistema de arquivos, respectivamente. MountPoint
- Especifica o sistema de arquivos GFS2 ao qual as ações de aplicam.
A.1.2. Exemplos
/mygfs2
.
# gfs2_quota limit -u Bert -l 1024 -f /mygfs2
/mygfs2
.
# gfs2_quota warn -g 21 -l 50 -k -f /mygfs2
A.2. Exibindo limites de quotas e uso com o comando gfs2_quota
gfs2_quota get
. Todo o conteúdo do arquivo de quota pode também ser exibido usando o comando gfs2_quota
, que no caso todos os IDs com hard limits diferentes de zero, soft limits, ou valores são exibidos.
A.2.1. Uso
gfs2_quota get -uUser
-fMountPoint
gfs2_quota get -gGroup
-fMountPoint
gfs2_quota list -f MountPoint
User
- Uma ID de usuário para mostrar informações sobre um usuário específico. Pode ser tanto um nome de usuário do arquivo de senha ou número UID.
Group
- Uma ID de grupo para exibir informações sobre um grupo específico. Pode ser tanto um nome de grupo do grupo de arquivo ou o número GID.
MountPoint
- Especifica o sistema de arquivos GFS2 ao qual as ações de aplicam.
A.2.2. Resultado do Comando
gfs2_quota
são mostradas a seguir:
userUser
: limit:LimitSize
warn:WarnSize
value:Value
groupGroup
: limit:LimitSize
warn:WarnSize
value:Value
LimitSize
, WarnSize
, e Value
estão em unidades de megabytes por padrão. Adicionar os sinalizadores -k
, -s
, ou -b
à linha de comando muda as unidades para kilobytes, setores ou blocos de sistema de arquivos respectivamente.
User
- Um nome de usuário ou ID o qual os dados são associados.
Group
- Um nome de grupo ou ID a qual os dados são associados.
LimitSize
- A definição hard limit para o usuário ou grupo. Este valor é zero se nenhum limite foi estabelecido.
Value
- A quantidade atual de espaço em disco usado pelo usuário ou grupo.
A.2.3. Comentários
gfs2_quota
não determina os UIDs e GIDs em nomes se a opção -n
é adicionada à linha de comando.
-d
à linha de comando. Isto é útil quando tentar corresponder os números do gfs2_quota
com os resultados do comando du
.
A.2.4. Exemplos
/mygfs2
.
# gfs2_quota list -f /mygfs2
usuários
do grupo no sistema de arquivos /mygfs2
.
# gfs2_quota get -g users -f /mygfs2 -s
A.3. Sincronizando Quotas com o Comando gfs2_quota
.
quota_quantum
. Por padrão, o tempo é de 60 segundos utilizando a opção de montagem quota_quantum=
como descrito em Tabela 4.2, “Opções de Montagem do GFS2 Específico”. O parâmetro de quota_quantum
deve ser estabelecido em cada nó e todas as vezes que o sistema de arquivo for montado. Mudanças no parâmetro quota_quantum
não são persistentes nas desmontagens. Você pode atualizar o valor de quota_quantum
com mount -o remount
.
gfs2_quota sync
para sincronizar as informações de quota de um nó ao arquivo de quotas no disco entre as atualizações automáticas realizadas pelo GFS2.
A.3.1. Uso
gfs2_quota sync -f MountPoint
MountPoint
- Especifica o sistema de arquivos GFS2 ao qual as ações de aplicam.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Especifica o sistema de arquivos GFS2 ao qual as ações de aplicam.
secs
- Especifica um novo período de tempo entre sincronizações do arquivo de quota pelo GFS2. Valores menores podem aumentar a contenção e diminuir o desempenho.
A.3.2. Exemplos
/mygfs2
.
# gfs2_quota sync -f /mygfs2
/mnt/mygfs2
na remontagem deste sistema de arquivo no volume lógico /dev/volgroup/logical_volume
.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
A.4. Ativando/Desativando a Imposição de Quotas
quota=on
especificada.
A.4.1. Uso
mount -o quota=on BlockDevice MountPoint
quota=off
especificada. Isto é uma configuração padrão.
mount -o quota=off BlockDevice MountPoint
-o quota={on|off}
- Especifica que a imposição de quotas está ativada ou desativada quando um sistema de arquivos é montado.
BlockDevice
- Especifica o dispositivo de bloco onde um sistema de arquivos GFS2 reside.
MountPoint
- Especifica o diretório onde o sistema de arquivos GFS2 deve ser montado.
A.4.2. Exemplos
/dev/vg01/lvol0
está montado no diretório /mygfs2
com imposição de quotas ativada.
# mount -o quota=on /dev/vg01/lvol0 /mygfs2
A.5. Ativando Quotas Accounting
quota=account
especificada.
A.5.1. Uso
mount -o quota=account BlockDevice MountPoint
-o quota=account
- Especifica que as estatisticas de uso do usuário e grupos são mantidas pelo sistema de arquivos, mesmo que os limites de quota não são impostos.
BlockDevice
- Especifica o dispositivo de bloco onde um sistema de arquivos GFS2 reside.
MountPoint
- Especifica o diretório onde o sistema de arquivos GFS2 deve ser montado.
A.5.2. Exemplo
/dev/vg01/lvol0
está montado no diretório /mygfs2
com quota accounting ativada.
# mount -o quota=account /dev/vg01/lvol0 /mygfs2
Apêndice B. Convertendo um Sistema de Arquivo utilizando os GFS e GFS2
gfs2_convert
. Note que você deve realizar este procedimento de conversão em um sistema Red Hat Enterprise 5 antes de atualizar para o Red Hat Enterprise Linux 6.
Atenção
gfs_fsck
para checar o sistema de arquivos e consertar quaisquer erros.
fsck.gfs2
no sistema de arquivos até que a conversão estiver completa.
B.1. Conversão de Nomes de Caminhos Dependentes de Contexto (CDPNs)
bind
do comando mount
.
gfs2_convert
identifica o CDPNs e os substitui com diretórios vazios com o mesmo nome. Para configurar as montagens de vinculação para substituir os CDPNs, entretanto, você precisa saber os caminhos completos para os links alvos dos CDPNs que você está substituindo. Antes de converter seu sistema de arquivos, você pode usar o comando find
para identificar os links.
hostname
:
[root@smoke-01 gfs]# find /mnt/gfs -lname @hostname
/mnt/gfs/log
find
para outros CDPNs (mach
, os
, sys
, uid
, gid
, jid
). Note que já que os nomes CDPN podem ser na forma @hostname
ou {hostname}
, você precisará rodar o comando find
para cada variante.
B.2. Procedimento da Conversão do GFS para GFS2
- Em um sistema Red Hat Enterprise Linux, faça um backup de seus sitema de arquivos GFS existente.
- Desmontar o sistema de arquivos GFS de todos os nós no cluster.
- Executar o comando
gfs_fsck
no sistema de arquivo GFS para assegurar que o sistema de arquivos não foi corrompido. - Execute o
gfs2_convert
. O sistema irá exibir avisos e questões de confirmação antes de converter ogfsfilesystem
gfsfilesystem
para GFS2. - Atualize o Red Hat Enterprise Linux 6.
/dev/shell_vg/500g
para um sistema de arquivos GFS2.
[root@shell-01 ~]# /root/cluster/gfs2/convert/gfs2_convert /dev/shell_vg/500g
gfs2_convert version 2 (built May 10 2010 10:05:40)
Copyright (C) Red Hat, Inc. 2004-2006 All rights reserved.
Examinando sistema de arquivo..................
Este programa irá converter um sistema de arquivo gfs1 para um sistema de arquivo gfs2.
AVISO: Esta ação não poderá ser desfeita. Sugerimos que você:
1. Faça um Backup de todo o seu sistema de arquivo primeiro.
2. Execute o gfs_fsck primeiro para garantir a integridade do sistema de arquivo.
3. Assegure-se de que o sistema de arquivo NÃO foi montado de nenhum nó.
4. Assegure-se de que você possui as versões do software mais recentes.
Converta /dev/shell_vg/500g a partir do GFS1 para o GFS2? (y/n)y
Convertendo grupos de recursos...................
Convertendo inodes.
24208 inodes a partir do 1862 rgs convertido.
Reparando arquivo e informações de diretório.
18 cdpn symlinks mudaram para diretórios vazios.
Convertendo agendas.
Convertendo espaço de agendas para espaço rg .
Gravando agenda #1...concluído.
Gravando agenda #2...concluído.
Gravando agenda #3...concluído.
Gravando agenda #4...concluído.
Construindo as estruturas de sistema de arquivo do GFS2.
Removendo estruturas de sistema de arquivo GFS1 obsoletas.
Gravando mudanças ao disco.
/dev/shell_vg/500g: sistema de arquivo convertido com sucesso para gfs2.
Apêndice C. Os tracepoints e o Arquivo debugfs glocks
debugfs
e dos tracepoints do GFS2. Estes são direcionados a usuários avançados que estão familiarizados com o sistema de arquivo interno que gostariam de aprender mais sobre criação de um GFS2 e como depurar problemas específicos ao GFS2.
C.1. Tipos de tracepoint do GFS2.
blktrace
e os tracepoints blktrace
podem ser usados em combinação com os de GFS2 para obter uma imagem mais completa do desempenho do sistema. Devido ao nível em que os pontos de rastreamento operam, eles podem produzir grandes volumes de dados num curto período de tempo. Eles são criados para colocar uma carga mínima no sistema quando são ativadas, mas é inevitável que vão ter algum efeito. Filtragem de eventos através de uma variedade de meios que podem ajudar a reduzir o volume de dados e ajudar focar em obter apenas a informação que será útil para compreender qualquer situação em específico.
C.2. Tracepoints
/sys/kernel/debug/tracing/
assumindo-se que debugfs
é montado em um local padrão no diretório /sys/kernel/debug
. O subdiretório events
contém todos os eventos de rastreamento que podem ser especificados e considerando-se que o módulo gfs2
esteja carregado, haverá um subdiretório gfs2
que contém subdiretórios futuros, um para cada evendo do GFS2. O conteúdo do diretório /sys/kernel/debug/tracing/events/gfs2
deve se parecer com o seguinte:
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
enable
em cada um dos subdiretórios de eventos individuais. O mesmo é verdadeiro para o arquivo filter
que pode ser utilizado para configurar um filtro de evento para cada evento ou conjunto de eventos. O significado dos eventos individuais é explicado em mais detalhes abaixo.
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
/sys/kernel/debug/tracing/trace_pipe
, pode ser usado quando todo o resultado é necessário. Eventos são lidos a partir desse arquivo à medida que ocorrem, não há informações históricas disponíveis através desta interface. O formato de resultado é o mesmo de ambas as interfaces e é descrito para cada um dos GFS2 eventos nas seções deste apêndice.
trace-cmd
está disponível para leitura de dados do tracepoint. Para mais informações sobre este utilitário, consulte o link em Seção C.10, “Referências”. O utilitário trace-cmd
pode ser utilizado de uma forma semelhante ao utilitário strace
, por exemplo, para executar um comando enquanto reune dados de rastreamento de diversas fontes.
C.3. Glocks
Tabela C.1. Modos de glock e Modos de Bloqueio de DLM
Modo de GLock | Modo de bloqueio do DLM | Notas |
---|---|---|
UN | IV/NL | Desbloqueado (nenhum bloqueio DLM associado ao glock ou bloqueio de NL dependendo da bandeira I) |
SH | PR | Bloqueio Compartilhado (leitura protegida) |
EX | EX | Bloqueio exclusivo |
DF | CW | Deferido (gravação simultânea) usada para o Direct I/O e congelamento de sistema de arquivo |
Nota
lock_dlm
(para não ser confundido com o próprio DLM) em GFS2.
Nota
Tabela C.2. Modos de Glock e Tipos de Dados
Modo de GLock | Cache Dados | Cache Metadado | Dados Sujos | Metadados Sujos |
---|---|---|---|---|
UN | Não | Não | Não | Não |
SH | Sim | Sim | Não | Não |
DF | Não | Sim | Não | Não |
EX | Sim | Sim | Sim | Sim |
C.4. A interface de debugfs do glock
debugfs
permite a visualização do estado interno dos Glock e os "holders" e também inclui alguns detalhes em síntese dos objetos que estão sendo travados em alguns casos. Cada linha do arquivo ou começa G: sem recuo (que se refere ao próprio glock) ou começa com uma letra diferente, recuado com um único espaço, e refere-se às estruturas associadas ao glock imediatamente acima dele no arquivo (H: é um holder, I: um inode, e R: um grupo de recursos). Aqui está um exemplo de como o conteúdo deste arquivo pode parecer:
G: s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2] R: n:258028 f:05 b:22256/22256 i:16800 G: s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522 G: s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2 G: s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
cat/sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
durante uma execução do postmark benchmark em um sistema de arquivos GFS2 de nó único. Os glocks na figura foram selecionados, a fim de mostrar algumas das características mais interessantes dos despejos do glock.
Iopen
, que se relaciona com Inode 75320. No caso do inode e glocks Iopen
, o número Glock é sempre idêntico ao número do bloco de disco do inode.
Nota
blktrace
por exemplo) e com resultado de stat
(1).
debugfs
do glock.
Tabela C.3. Tipos de Glock
Digite o número | Tipo de bloqueio | Use |
---|---|---|
1 | trans | Bloqueio de transação |
2 | inode | Dados e metadados inode |
3 | rgrp | Metadados de grupos de recursos |
4 | meta | O superblock |
5 | iopen | Detecção mais próxima do último inode |
6 | flock | flock (2) syscall |
8 | quota | Operações de quota |
9 | Diário | Diário mutex |
Tabela C.4. Sinalizadores Glock
Sinalizador | Nome | Significado |
---|---|---|
d | Rebaixamento pendente | Um pedido (remoto) de rebaixamento deferido |
D | Rebaixamento | Um pedido de rebaixamento (local ou remoto) |
f | Descarga de Log | O log precisa ser enviado antes de liberar esse glock |
F | Congelado | Respostas de nós remotos ignorados - recuperação em progresso. |
i | Invalidação em progresso | No processo de estar invalidando páginas sob este glock. |
I | Inicial | Ajuste quando o bloqueio DLM é associado com este glock |
l | Bloqueado | O glock está no processo de mudança de estado |
L | LRU | Definido quando o glock está na lista do LRU |
o | Object | Definido quando o glock é associado com um objeto (ou seja, um inode para glocks tipo 2, e um grupo de recurso para glocks tipo 3) |
p | Rebaixamento em progresso | O glock está no processo de responder a um pedido de rebaixamento |
q | Em fila | Definido quando um proprietário é enfileirado em um glock e limpo quando um glock é mantido, mas não houver nenhum outro proprietário. Usado como parte do algorítimo que calcula um tempo mínimo de espera para um glock. |
r | Resposta pendente | Resposta recebida do nó remoto está aguardando processamento |
y | Sujo | Os dados precisam descarregar para o disco antes de liberar este glock |
C.5. Glock Holders
Tabela C.5. Sinalizadores do proprietário glock
Sinalizador | Nome | Significado |
---|---|---|
a | Async | Não espere pelo resultado glock (fará um conjunto para enviar depois) |
A | Qualquer | Qualquer modo de bloqueio compatível é aceitável |
c | Sem cache | Quando desbloqueado, rebaixe o bloqueio DLM imediatamente |
e | Não expire | Ignore pedidos de cancelamento de bloqueios subsequentes |
E | exato | Deve ter um modo de bloqueio exato |
F | Primeiro | Ajuste quando o proprietário é o primeiro a ser concedido para este bloqueio |
H | Detentor | Indica que o bloqueio requerido é concedido |
p | Prioridade | Enfileire os proprietários no início da fila |
t | Tentar | Uma "tentativa" de bloqueio |
T | Tentar 1CB | Uma "tentativa" que envia um callback |
W | Espera | Ajuste enquanto espera por um pedido para completar |
try 1CB
) por outro lado, é idêntico ao bloqueio t, exceto que o DLM irá enviar uma única chamada de retorno para os bloqueios holders de correntes incompatíveis. Uma das utilidades do bloqueio T (try 1CB
) é com os bloqueios iopen
, que são utilizados para arbitrar entre os nós quando a contagem de um i_nlink
do inode é zero, e determinar qual dos nós será responsável por desalocar o inode. O glock iopen
é normalmente realizado no estado compartilhado, mas quando a contagem do i_nlink
torna-se zero e ->delete_inode
() é chamado, ele vai solicitar um bloqueio exclusivo com o conjunto do T (try 1CB
). Ele continuará a desalocar o inode se o bloqueio for concedido. Se o bloqueio não for concedido o resultado será o(s) nó(s) que estavam impedindo a concessão do bloqueio marcando seu(s) glock(s) com a bandeira D (demote), que é verificada em ->drop_inode
() tempo, a fim de assegurar que o desalocação não seja esquecida.
close
(). Além disso, ao mesmo tempo que a contagem da ligação do inodo é decrementado para zero o inodo é marcado como estando no estado especial de possuir zero de contagem da link, mas ainda em uso no bitmap do grupo de recursos. Este funciona como lista órfã do arquivo ext3 system3 na medida em que permite que qualquer leitor subseqüente do bitmap saiba que existe espaço em potencial que pode ser recuperado, e tentar recuperá-lo.
C.6. Tracepoints do Glock
gfs2_glock_state_change
é o mais importante de se entender. Ele rastreia cada mudança de estado do glock a partir da criação inicial até o final do rebaixamento que finaliza com o gfs2_glock_put
e o final NL para desbloquear a transição. A bandeira l (locked) do glock é sempre definida antes da mudança de estado ocorrer e não será explicada até que ela seja finalizada. Não existem holders obtidos (a bandeira glock holder H) durante uma mudança de estado. Caso existam holders em fila, eles estarão sempre em W (waiting). Quando a mudança de estado estiver concluída, os holders podem receber direitos, o que é o final da operação antes da bandeira do glock l ser removida.
gfs2_demote_rq
mantém o controle de pedidos de rebaixamento local e remoto. Assumindo que não há memória suficiente no nó, os pedidos de rebaixamento local raramente serão vistos, e na maioria das vezes serão criados por umount ou pela recuperação de memória ocasional. O número de pedidos de rebaixamento remoto é uma medida de luta entre nós por um inode em particular ou grupo de recursos.
gfs2_promote
é chamado, isto ocorre a medida que as estapas finais de uma mudança de estado se aproximam, ou ainda quando um bloqueio é requisitado, o qual pode ser obtido imediatamente devido ao estado do glock estar realizando um cache de um bloqueio de um modo apropriado. Se o holder for o primeiro a receber para este glock, então a bandeira f (flag) será definida neste holder. Isto é utilizado atualmente somente pelos grupos de recurso.
C.7. Tracepoints de Bmap
gfs2_bmap
é chamado duas vezes para cada operação bmap: uma vez no início para apresentar o pedido bmap, e uma vez no final para exibir o resultado. Isto facilita ao coincidir com as solicitações e resultados e medir o tempo necessário para mapear blocos em diferentes partes do sistema de arquivos, diferentes deslocamentos de arquivo, ou até mesmo de arquivos diferentes. Também é possível ver qual a média de tamanhos de extensão retornados comparado àqueles que estão sendo solicitados.
gfs2_block_alloc
é chamado não somente em alocações, mas como também em liberações de blocos. Como as alocações são todas referenciadas de acordo com os inodes para qual o bloco é pretendido, isto pode ser usado para rastrear quais blocos físicos pertencem à quais arquivos em um sistema de arquivo ao vivo. Isto é particularmente útil quando combinado com o blktrace
, que exibirá modelos de I/O problemáticos, que podem ser referenciados de volta à inodes relevantes, utilizando o mapeamento obtido através deste tracepoint.
C.8. Tracepoints dos logs
gfs2_pin
), assim como tempo que o comprometimento de transações levou para o log (gfs2_log_flush
). Isto pode ser bem útil ao tentar depurar os problemas de desempenho do diário.
gfs2_log_blocks
mantém histórico dos blocos reservados no log, que podem ajudar a mostrar se o log é muito pequeno para a carga de trabalho, por exemplo.
gfs2_ail_flush
(Red Hat Enterprise Linux 6.2 e posteriores) é semelhante ao tracepoint gfs2_log_flush
, ou seja, observa o início e final de fluxos das listas AIL. Estas listas contém buffers que passaram pelo log, mas ainda não foram gravadas de volta em seu local e este é esvaziado para lançar mais espaço de log para ser usado pelos filesystems, ou quando um processo requer uma sincronização ou fsync.
C.9. Estatística de Glock
dcount
, que conta o número das operações de DLM requisitadas. Isto mostra quantos dados foram para o cálculo de média/variação.qcount
,que conta o número de operações de nível dosyscall
requisitada. Geralmente,qcount
será igual ou maior do quedcount
.
- srtt/srttvar: Número redondo de vezes suavizados para operações sem bloqueio.
- srttb/srttvarb: Número redondo de vezes suavizados para operações de bloqueio.
- irtt/irttvar: Tempo de requisição interna (por exemplo, tempo entre as requisições de DLM)
sysfs
:
- O arquivo
glstats
. Este arquivo é semelhante ao arquivoglocks
, exceto pelo fato de conter estatísticas, com um glock por linha. Os dados são inicializados a partir dos dados "per cpu", para aquele tipo de glock para o qual o glock foi criado (além dos contadores, que são zerados). - O arquivo
lkstats
. Isto contém a stats do "per cpu" para cada tipo de glock. Ele contém uma estatística por linha, na qual cada coluna é um núcleo de cpu. Existem oito linhas por tipo de glock, com tipos seguindo um depois do outro.
C.10. Referências
glocks
, consulte os seguintes recursos:
- Este apêndice foi parcialmente adaptado de um documento entregue por Steve Whitehouse no Linux Symposium 2009, o qual pode ser encontrado em http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=04 94f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Para informações sobre as regras de bloqueio internas do glock, veja http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=0494f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Para informações sobre rastreamento de evento, veja http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/trace/events.txt;h=09bd8e9029892e4e1d48078de4d076e24eff3dd2;hb=HEAD.
- Para informações sobre o utilitário
trace-cmd
veja http://lwn.net/Articles/341902/.
Apêndice D. Histórico de Revisões
Histórico de Revisões | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Revisão 7.1-3.2 | Tue Feb 10 2015 | Glaucia Cintra | |||||||||||
| |||||||||||||
Revisão 7.1-3.1 | Tue Feb 10 2015 | Glaucia Cintra | |||||||||||
| |||||||||||||
Revisão 7.1-3 | Tue Dec 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 7.0-9 | Wed Oct 8 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 7.0-8 | Thu Aug 7 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 7.0-4 | Thu Jul 17 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 7.0-3 | Wed Jul 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 7.0-1 | Thu Jun 5 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 6.0-6 | Wed Nov 13 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 6.0-5 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 6.0-3 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 6.0-1 | Fri Sep 06 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 5.0-7 | Mon Feb 18 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 5.0-5 | Mon Nov 26 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 5.0-4 | Tue Nov 13 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 5.0-1 | Mon Oct 15 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 4.0-2 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 4.0-1 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 3.0-2 | Thu Dec 1 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 3.0-1 | Mon Sep 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 2.0-1 | Thu May 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisão 1.0-1 | Wed Nov 15 2010 | Steven Levine | |||||||||||
|
Índice Remissivo
A
- adicionando diários no sistema de arquivo, Adicionando Diários ao Sistema de Arquivo
- ajuste de desempenho, Ajuste de Desempenho com GFS2
- ajuste, desempenho, Ajuste de Desempenho com GFS2
- atime, configurando atualizações, Configurando atualizações do atime
- montando com noatime, Montar com o relatime, Montar com noatime
- aumentando um sistema de arquivo, Aumentando um Sistema de Arquivo
B
- bandieras do glock holder, Glock Holders
- Bloqueio de Posix, Problemas com o Bloqueio de Posix
C
- comando de montagens, Montagem de Sistema de Arquivo
- comando desmontar, Desmontando o Sistema de Arquivo
- comando fsck.gfs2, Reparando um Sistema de Arquivo
- comando gfs2_grow, Aumentando um Sistema de Arquivo
- comando gfs2_quota, Gerenciamento de Quota do GFS2 com o comando gfs2_quota
- comando mkfs, Criando um Sistema de Arquivo
- comando quotacheck
- verificando a precisão de quotas com, Mantendo Quotas Precisar
- configuração, antes, Antes de Configurar o GFS2
- configuração, inicial, Iniciando
- tarefas de pré-requisitos, Tarefas de Pré-requisitos:
- configurações, iniciais
- tarefas iniciais, Tarefas Iniciais de Configuração
- Considerações de configuração, Configuração do GFS2 e Considerações Operacionais
- Context-Dependent Path Names (CDPNs)
- Conversão do GFS para GFS2, Conversão de Nomes de Caminhos Dependentes de Contexto (CDPNs)
- criando um sistema de arquivo, Criando um Sistema de Arquivo
D
- debugfs, Os tracepoints e o Arquivo debugfs glocks
- debugfs file, Resolução de Problemas do Desempenho do Despejo de Bloqueios GFS2
- desmonta, trava o sistema, Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
- desmontando o sistema de arquivo, Desmontando o Sistema de Arquivo, Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
- diário de dados, Diário de Dados
F
- feedback
- informação de contato para este manual, Precisamos de seu Feedback
- função de retirada, GFS2, A Função de Retirada do GFS2
G
- gerenciamento de cota, Gerenciamento de Cota do GFS2, Definindo Quotas no Modo Enforcement ou Accounting
- sincronizando cotas, Sincronizando Quotas com o Comando quotasync
- gerenciamento de quotas, Gerenciamento de Quota do GFS2 com o comando gfs2_quota
- ativando quotas accounting, Ativando Quotas Accounting
- ativando/desativando imposição de quotas, Ativando/Desativando a Imposição de Quotas
- definição de quotas, Definindo Quotas com o comando gfs2_quota
- exibindo limites de quotas, Exibindo limites de quotas e uso com o comando gfs2_quota
- sincronizando quotas, Sincronizando Quotas com o Comando gfs2_quota.
- gerenciando o GFS2, Gerenciando o GFS2
- GFS2
- atime, configurando atualizações, Configurando atualizações do atime
- montando com noatime , Montar com noatime
- montando com o relatime , Montar com o relatime
- Configuration considerations, Configuração do GFS2 e Considerações Operacionais
- função de retirada, A Função de Retirada do GFS2
- gerenciamenteo de quotas, Gerenciamento de Quota do GFS2 com o comando gfs2_quota
- gerenciamento de cota
- sincronizando cotas, Sincronizando Quotas com o Comando quotasync
- gerenciamento de quotas
- ativando quotas accounting, Ativando Quotas Accounting
- ativando/desativando imposição de quotas, Ativando/Desativando a Imposição de Quotas
- definindo quotas, Definindo Quotas com o comando gfs2_quota
- exibindo limites de quotas, Exibindo limites de quotas e uso com o comando gfs2_quota
- sincronização de quotas, Sincronizando Quotas com o Comando gfs2_quota.
- gerenciamento do cota, Gerenciamento de Cota do GFS2, Definindo Quotas no Modo Enforcement ou Accounting
- gerenciando, Gerenciando o GFS2
- Operation, Configuração do GFS2 e Considerações Operacionais
- gfs2_jadd command, Adicionando Diários ao Sistema de Arquivo
- glock, Os tracepoints e o Arquivo debugfs glocks
- glock flags, Resolução de Problemas do Desempenho do Despejo de Bloqueios GFS2, A interface de debugfs do glock
- glock holder flags, Resolução de Problemas do Desempenho do Despejo de Bloqueios GFS2
- glock types, Resolução de Problemas do Desempenho do Despejo de Bloqueios GFS2, A interface de debugfs do glock
I
- introdução, Introdução
- público alvo, Público Alvo
M
- mkfs.gfs2 tabela de opções de comando, Opções Completas
- montagens bind, Montagens Bind e Nomes de Caminho de Contexto Dependente.
- ordem de montagem, Monta Binds e Organiza a Montagem de Sistema de Arquivo
- montagens do sistema de arquivo, Montagem de Sistema de Arquivo, Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
N
- node locking, Bloqueio de Nó GFS2
- nomes de caminho, dependente de contexto (CDPNs), Montagens Bind e Nomes de Caminho de Contexto Dependente.
O
- opção de montagen acl, Montagem de Sistema de Arquivo
- Opções de GFS2 específicos para expandir tabelas de sistemas de arquivo, Uso Completo
- Opções do GFS2 específicas para adicionar tabelas de diários, Uso Completo
P
- parâmetro ajustável quota_quantum, Sincronizando Quotas com o Comando quotasync, Sincronizando Quotas com o Comando gfs2_quota.
- prefácio (ver introdução)
- público alvo, Público Alvo
Q
- quota= mount option, Definindo Quotas com o comando gfs2_quota
- quotacheck , Criando os Arquivos de Banco de Dados de Quotas
- quotas de disco
- atribuindo por grupo, Atribuindo Quotas por Grupo
- atribuindo por usuário, Atribuindo Quotas por Usuário
- gerenciamento de, Gerenciando Quotas de Disco
- quotacheck comando, usando para checar, Mantendo Quotas Precisar
- reportar, Gerenciando Quotas de Disco
- habilitando, Configurando Quotas de Disco
- criando arquivos de quotas, Criando os Arquivos de Banco de Dados de Quotas
- habilitar
- quotacheck, execução, Criando os Arquivos de Banco de Dados de Quotas
- limite de hard, Atribuindo Quotas por Usuário
- limite de soft, Atribuindo Quotas por Usuário
- recursos adicionais, Referências
R
- recursos, novos e alterados, Recursos Novos e Alterados
- reparando um sistema de arquivo, Reparando um Sistema de Arquivo
S
- sistema de arquivo
- adicionando diários, Adicionando Diários ao Sistema de Arquivo
- atime, configurando atualizações, Configurando atualizações do atime
- montando com noatime , Montar com noatime
- montando com relatime , Montar com o relatime
- aumentando, Aumentando um Sistema de Arquivo
- criando, Criando um Sistema de Arquivo
- desmontando, Desmontando o Sistema de Arquivo, Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
- diário de dados, Diário de Dados
- gerenciamento de cota
- sincronizando cotas, Sincronizando Quotas com o Comando quotasync
- gerenciamento do cota, Gerenciamento de Cota do GFS2, Definindo Quotas no Modo Enforcement ou Accounting
- monta bind, Montagens Bind e Nomes de Caminho de Contexto Dependente.
- montagem, Montagem de Sistema de Arquivo, Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
- nomes de caminho dependente do contexto (CDPNs), Montagens Bind e Nomes de Caminho de Contexto Dependente.
- ordem de montagem, Monta Binds e Organiza a Montagem de Sistema de Arquivo
- reparando, Reparando um Sistema de Arquivo
- suspendendo atividade, Suspendendo a Atividade em um Sistema de Arquivo
- sistema de arquivos
- gerenciamento de quotas, Gerenciamento de Quota do GFS2 com o comando gfs2_quota
- ativando quotas accounting, Ativando Quotas Accounting
- ativando/desativando imposição de quotas, Ativando/Desativando a Imposição de Quotas
- definição de quotas, Definindo Quotas com o comando gfs2_quota
- exibindo limites de quotas, Exibindo limites de quotas e uso com o comando gfs2_quota
- sincronizando quotas, Sincronizando Quotas com o Comando gfs2_quota.
- suspendendo a atividade em um sistema de arquivo, Suspendendo a Atividade em um Sistema de Arquivo
T
- tabelas
- as opções do GFS2 específico para expandir sistemas de arquivo, Uso Completo
- opções de montagem, Uso Completo
- Opções do GFS2 específicas para adicionar diários, Uso Completo
- tabelas de montagens, Uso Completo
- tables
- mkfs.gfs2 opções de comando, Opções Completas
- tamanho máximo do sistema de arquivo GFS2, Visão Geral do GFS2
- tamanho máximo, sistema de arquivos GFS2, Visão Geral do GFS2
- tarefas de pré-requisitos
- configuração, inicial, Tarefas de Pré-requisitos:
- tarefas iniciais
- configuração inicial, Tarefas Iniciais de Configuração
- tracepoints, Os tracepoints e o Arquivo debugfs glocks
- trava o sistema na desmontagem, Considerações Especiais ao Montar os Sistemas de Arquivo GFS2
V
- visão geral, Visão Geral do GFS2
- configuração, anterior, Antes de Configurar o GFS2
- recursos, novos e alterados, Recursos Novos e Alterados