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