En uno de mis servidores NFS sobre FreeBSD me ocurrió un error extraño que se resolvió con un simple reinicio de servicio: "RPC: Program not registered".

La herramienta showmount se utiliza desde clientes o servidores NFS para obtener información de estado relacionada a un servidor NFS específico. Por ejemplo, es posible consultar los puntos de montaje NFS disponibles en un servidor ejecutando:

root@fbsd10:~ # showmount -e localhost
Exports list on localhost:
/zdata/mywebapp/www-data 192.168.1.19 10.1.1.111 10.1.1.240 
/zdata/mywebapp/postgres 192.168.1.19 10.1.1.111 10.1.1.240 

Cada línea (en concordancia con el archivo /etc/exports) muestra un punto de montaje, junto con los hosts a los que se les permite montar dicho filesystem.

El problema puntual (que me ocurrió una única vez hasta el momento) fue que, al consultar los exports de un servidor NFS utilizando showmount desde un cliente, falló la conexión RPC con el servicio mountd con el siguiente mensaje de error:

root@webserver21:~# showmount -e fbsdnfs.linuxito.com
clnt_create: RPC: Program not registered

Tanto desde clientes GNU/Linux como FreeBSD:

emi@hal9000:~ % showmount -e fbsdnfs.linuxito.com
RPC: Program not registered
showmount: can't do exports rpc

Sin embargo el servicio estaba en perfecto funcionamiento, es decir, los clientes NFS estaban funcionando normalmente. Un error un tanto raro, aunque ya le había sucedido antes a alguien. Para resolver este problema se debe simplemente reiniciar nfsd y mountd:

# service nfsd restart
# service mountd restart

El servicio nfsd es el que atiende las solicitudes NFS desde los clientes y mountd se encarga de resolver las solicitudes de montaje de sistemas de archivos alojados en el servidor.

Una vez reiniciados, showmount volvió a funcionar correctamente:

root@webserver21:~# showmount -e fbsdnfs.linuxito.com
Export list for fbsdnfs.linuxito.com:
/zdata/mywebapp/postgres 10.1.1.240,10.1.1.111,192.168.1.19
/zdata/mywebapp/www-data 10.1.1.240,10.1.1.111,192.168.1.19
emi@hal9000:~ % showmount -e fbsdnfs.linuxito.com
Exports list on fbsdnfs.linuxito.com:
/zdata/mywebapp/www-data 192.168.1.19 10.1.1.111 10.1.1.240
/zdata/mywebapp/postgres 192.168.1.19 10.1.1.111 10.1.1.240
/backup                            10.1.1.180 

La causa probable de este error es que el servicio rpcbind haya sido reiniciado sin reiniciar luego nfsd y mountd, o que éstos hayan sido iniciados antes que rpcbind. Por ende no hayan sido registrados en el servicio RPC.

Es importante saber que el servicio rpcbind debe estar en ejecución antes que cualquier otro servicio que utilice RPC (por ejemplo mountd). Cuando un servicio RPC es iniciado, éste registra con rpcbind la dirección en la cual está escuchando, y los números de RPC que está preparado para servir. Cuando un programa cliente desea hacer una llamada RPC a un determinado número de programa, primero contacta a rpcbind para determinar la dirección donde los pedidos RPC deben ser enviados.

Para más información:

man rpcbind


Tal vez pueda interesarte


Compartí este artículo