Accrochez pendant l'opération "tactile" sur un assembly NFS

J'ai deux clients NFS montés sur un partage openfiler 2.99 NFS à 192.0.2.3:

  • 192.0.2.1 monte 192.0.2.3:/mnt/nfs01/volnfs01/share01 avec rw,noatime,nodiratime,hard,rsize=32768,wsize=32768,noacl,nocto,tcp,nfsvers=3
  • 192.0.2.1 monte 192.0.2.3:/mnt/nfs01/volnfs01/share02 avec rw,noatime,nodiratime,hard,rsize=32768,wsize=32768,nfsvers=3,tcp,noacl,nocto
  • 192.0.2.2 monte 192.0.2.3:/mnt/nfs01/volnfs01/share02 avec rw,noatime,nodiratime,hard,rsize=32768,wsize=32768,nfsvers=3,tcp,noacl,nocto

touch cassé

Mon problème est avec la monture NFS de 192.0.2.2. Quand je touche un file sur cette monture, le process se bloque indéfiniment … J'ai utilisé strace touch /mnt/share02/this et strace touch /mnt/share02/this suis arrivé là …

 rt_sigaction(SIGRTMIN, {0x3b71c05ae0, [], SA_RESTORER|SA_SIGINFO, 0x3b71c0f500}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x3b71c05b70, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x3b71c0f500}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 brk(0) = 0xafb000 brk(0xb1c000) = 0xb1c000 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=99158576, ...}) = 0 mmap(NULL, 99158576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fce244c0000 close(3) = 0 open("/mnt/share02/this", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666 ^^^ stops touching | | 

Quand je vérifie ps -elf partir d'un autre terminal, je vois le process en état "D" …

 [mpenning@host192_0_2_2 ~]$ ps -elf | awk '$2=="D"' 0 D mpenning 8157 8032 0 80 0 - 26293 rpc_wa 09:59 pts/2 00:00:00 touch /mnt/share02/this [mpenning@host192_0_2_2 ~]$ 

showmount ne trouve pas de problème …

 [mpenning@host192_0_2_2 ~]$ showmount -e 192.0.2.3 Export list for 192.0.2.3: /mnt/nfs01/volnfs01/share01 192.0.2.2/255.255.255.255,192.0.2.1/255.255.255.255 /mnt/nfs01/volnfs01/share02 192.0.2.2/255.255.255.255,192.0.2.1/255.255.255.255 [mpenning@host192_0_2_2 ~]$ 

Divers état des services NFS …

 [mpenning@host192_0_2_2 ~]$ service nfs status rpc.svcgssd is stopped rpc.mountd (pid 9168) is running... nfsd (pid 9232 9231 9230 9229 9228 9227 9226 9225) is running... rpc.rquotad (pid 9164) is running... [mpenning@host192_0_2_2 ~]$ service rpcbind status rpcbind (pid 9088) is running... [mpenning@host192_0_2_2 ~]$ service nfslock status rpc.statd (pid 9256) is running... [mpenning@host192_0_2_2 ~]$ 

Configuration réseau (gw par défaut n'est pas nécessaire car il s'agit d'un vlan NFS couche 2 dédié):

 [mpenning@host192_0_2_2 ~]$ sudo cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 NM_CONTROLLED=no ONBOOT=yes BOOTPROTO=none IPADDR=192.0.2.2 NETMASK=255.255.255.0 DNS2=none TYPE=Ethernet GATEWAY= DNS1=none IPV6INIT=no USERCTL=no MTU=9000 [mpenning@host192_0_2_2 ~]$ 

Cela semble assez méchant. J'ai fait ce qui suit sur 192.0.2.2:

  • Redémarré tout NFS
  • init 6 la machine
  • ping 192.0.2.3 pour s'assurer qu'il a toujours la connectivité au server
  • Vérifié dmesg
  • Checked showmount -e 192.0.2.3

Cela ressemble à un problème de permissions, mais je ne sais pas où aller d'ici …

Comment puis-je résoudre ce problème afin que je puisse lire / écrire dans n'importe quel file sur 192.0.2.3/mnt/nfs01/volnfs01/share02 192.0.2.3:/mnt/nfs01/volnfs01/share02 ?


touch œuvres

Si j'exécute la même command touch depuis 192.0.2.1, tout va bien …

 rt_sigaction(SIGRTMIN, {0xb096e0, [], SA_SIGINFO}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0xb09b80, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 uname({sys="Linux", node="host192_0_2_1.localdomain.local", ...}) = 0 brk(0) = 0x8d4d000 brk(0x8d6e000) = 0x8d6e000 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=99158544, ...}) = 0 mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7574000 close(3) = 0 open("/mnt/share02/this", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE, 0666) = 3 dup2(3, 0) = 0 close(3) = 0 utimensat(0, NULL, NULL, 0) = 0 close(0) = 0 close(1) = 0 close(2) = 0 exit_group(0) = ? 

/etc/exports from 192.0.2.3

 [root@T1-Netfile01 backups]# head /etc/exports # PLEASE DO NOT MODIFY THIS CONFIGURATION FILE! # This configuration file was autogenerated # by Openfiler. Any manual changes will be overwritten # Generated at: Fri Nov 8 9:35:39 CST 2013 /mnt/nfs01/volnfs01/share02 192.0.2.1/255.255.255.255(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) 192.0.2.2/255.255.255.255(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) /mnt/nfs01/volnfs01/share01 192.0.2.1/255.255.255.255(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) 192.0.2.2/255.255.255.255(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) [root@T1-Netfile01 backups]# 

Et si vous changez l'ordre des adresses IP dans le file /etc/exports , qu'arrive-t-il alors? Mettez le .2.2 IP 1er et le .2.1 2ème.

Je voudrais également confirmer ce que les exports présentent en utilisant la command:

 $ showmount -e 192.0.2.3 

/etc/exports peut être très particulier sur la mise en forme!

Autres choses à essayer

  1. Je spécifie généralement mes hôtes dans le /etc/exports comme ceci:

     /cobbler/isos 192.168.1.0/24(rw,no_root_squash) 

    Donc pour vous avec un seul hôte IP:

     /mnt/nfs01/volnfs01/share02 192.0.2.1/32(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) 192.0.2.2/32(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) /mnt/nfs01/volnfs01/share01 192.0.2.1/32(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) 192.0.2.2/32(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) 
  2. nfs services connexes

    Assurez-vous que nfslock et les autres services associés s'exécutent sur 192.0.2.2.

  3. Si vous utilisez des trames jumbo, assurez-vous que ping -s <jumbo_mtu> 192.0.2.3 fonctionne à partir de 192.0.2.2