Skip to main content
Enterprise applications
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Stale NFSv3 fechaduras

Colaboradores

Se um servidor de banco de dados Oracle falhar, ele pode ter problemas com bloqueios NFS obsoletos ao reiniciar. Este problema é evitável prestando atenção cuidadosa à configuração da resolução de nomes no servidor.

Este problema surge porque criar um bloqueio e limpar um bloqueio usam dois métodos ligeiramente diferentes de resolução de nomes. Dois processos estão envolvidos, o Network Lock Manager (NLM) e o cliente NFS. O NLM usa uname n para determinar o nome do host, enquanto o rpc.statd processo usa gethostbyname()`o . Esses nomes de host devem corresponder para que o sistema operacional limpe corretamente os bloqueios obsoletos. Por exemplo, o host pode estar procurando bloqueios de propriedade `dbserver5 do , mas os bloqueios foram registrados pelo host como dbserver5.mydomain.org. Se gethostbyname() não retornar o mesmo valor que uname –a, o processo de liberação do bloqueio não foi bem-sucedido.

O script de exemplo a seguir verifica se a resolução do nome é totalmente consistente:

#! /usr/bin/perl
$uname=`uname -n`;
chomp($uname);
($name, $aliases, $addrtype, $length, @addrs) = gethostbyname $uname;
print "uname -n yields: $uname\n";
print "gethostbyname yields: $name\n";

Se gethostbyname não corresponder uname, é provável que os bloqueios obsoletos. Por exemplo, este resultado revela um problema potencial:

uname -n yields: dbserver5
gethostbyname yields: dbserver5.mydomain.org

A solução é geralmente encontrada alterando a ordem em que os hosts aparecem em /etc/hosts. por exemplo, suponha que o arquivo hosts inclua esta entrada:

10.156.110.201  dbserver5.mydomain.org dbserver5 loghost

Para resolver esse problema, altere a ordem em que o nome de domínio totalmente qualificado e o nome de host curto aparecem:

10.156.110.201  dbserver5 dbserver5.mydomain.org loghost

gethostbyname() agora retorna o nome de host curto dbserver5, que corresponde à saída uname do . Assim, os bloqueios são apagados automaticamente após uma falha do servidor.