Eu tenho que “falsificar” uma mudança em / etc / exports para obter mount -a para executar, qual é o problema?

4

Sempre que eu tiver que reinicializar o server1, a única maneira de obter as montagens do NFS no server2 é alterar um dos números inteiros "fsid" no arquivo / etc / exports no server1. Caso contrário, o comando mount -a apenas trava no servidor2.

Cenário típico:

O servidor1 é reinicializado. No server1, tenho duas linhas de código em / etc / exports :

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=1,rw,no_root_squash,no_subtree_check,async)

Eu emito este comando:

"exportfs -r".

No server2, eu tenho isso em / etc / fstab:

xxx.xxx.x.x:/server1_dir1/ /dir1_server2 nfs async,noatime 0 0
xxx.xxx.x.x:/server2_dir2  /dir2_server2 nfs async,noatime 0 0

Primeiramente, "desmontei" os diretórios antigos que agora possuem alças NFS obsoletas. Então,

"mount -a"

O comando trava. Depois de matá-lo, o df mostra o dir1 montado, mas o dir2 não.

A única maneira de obter os dois dirs para montar é alterar o inteiro fsid para outra coisa. Por exemplo, no server1, agora temos:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=2,rw,no_root_squash,no_subtree_check,async)

Mudei fsid = 1 para = 2 . Eu novamente emito o comando exportfs -r , e voila, o comando mount -a funciona no server2.

Talvez eu não entenda o que fsid realmente faz, mas obviamente deve haver uma maneira melhor de "remontar" o NFS do que ter que editar aleatoriamente o número de fsid toda vez?

EDIT : Se eu não tiver fsid incluído no meu arquivo de exportação no server1, isso me dá

"Warning: /mnt/ramdisk/dir1 requires fsid= for NFS export" 

E, se eu definir fsid = 0 para as duas linhas (dir1 e dir2), os pontos de montagem serão os mesmos que todos os meus arquivos foram copiados para a localização dir1! Então parece que a única maneira de isso funcionar é mudar constantemente os números inteiros fsid, um tanto aleatoriamente.

EDIT2 : eu removi fsid = 0 já que é "especial", e mudei para fsid = 1 e fsid = 2 em / etc / exports no server1. Isso obviamente funcionou (desde que o arquivo foi alterado). Mas hoje só teve que reiniciar forçosamente, e após (lentamente) desmontar as unidades obsoletas do server2, mount -a falhou, como antes. Então, (como antes), eu editei o arquivo de exportação no server1, desta vez, fsid = 2 e fsid = 3 , exportfs -r e voila, mount -a funciona novamente no server2. De volta ao quadrado 1.

EDIT3 Informação crítica: Se eu derrubar tudo de maneira controlada (ie..server1 não "travar"), e primeiro desmontar as dirs no server2, então reinicie server1, THEN mount - No servidor2, funciona muito bem. É somente quando as montagens no servidor2 são cortadas abruptamente que esse problema ocorre. Então, eu estou supondo que algo precisa ser redefinido no servidor2? Eu sei que leva muito tempo para desmontar as alças obsoletas no server2 após falha de server1.

    
por Corepuncher 01.03.2015 / 08:11

1 resposta

5

Meu palpite é que o problema é causado pelo uso de fsid=0 em uma das suas exportações.

Lembre-se de que o fsid destina-se a identificar exclusivamente os dispositivos quando o driver do sistema de arquivos subjacente não fornece seus próprios IDs exclusivos. E, em particular, fsid=0 tem um significado especial :

For NFSv4, there is a distinguished filesystem which is the root of all exported filesystem. This is specified with fsid=root or fsid=0 both of which mean exactly the same thing.

Como isso claramente não é o que você deseja, use sempre um fsid diferente de 0.

    
por 02.03.2015 / 14:35

Tags