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 jfsinmsp

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.