Как заставить zpool обращаться к диску с помощью читаемой строки?

rpcbind - это близкий аналог BIND, или действительно, любого DNS сервера. Если я правильно помню, вы выбираете или получаете номер протокола, когда компилируете объявление интерфейса RPC в код сервера и заглушки клиента с помощью rpcgen.

Когда клиент регистрируется для данного интерфейса на определенном хосте, обычно с помощью вызова clnt_create(), код заглушки задает rpcbind на этом хосте вопрос, что-то вроде "на каком UDP или TCP порту прослушивается протокол номер X?". rpcbind, в отличие от большинства других служб ONC, прослушивает TCP и UDP порт 111, поэтому, задав имя хоста или IP адрес, программа может просто спросить rpcbind на этом хосте или IP адресе. rpcbind отвечает соответствующим номером порта, если на этом хосте зарегистрирован сервер. Эта регистрация выполняется серверным процессом при вызове svc_create().

В вашем примере 100003 - это номер протокола для NFS. Некоторые процессы зарегистрировались в rpcbind, указав свой номер протокола (100003) и любой порт TCP или UDP, который они получили. Именно rpcbind должен правильно выдать этот номер порта, 2049 в вашем случае, на любое обращение к нему с вопросом "какой порт я должен использовать для протокола номер 100003".

Теперь мы попадаем на более странную территорию. "0.0.0.0.0.8.1" находится в колонке "адрес" вывода rpcinfo. Поскольку это "универсальный адрес" процесса сервера NFS, я готов поспорить, что префикс "0.0.0.0" является IP-адресом (INADDR_ANY в данном случае), который сервер использовал в системном вызове bind() при получении номера порта. Я не уверен, что такое суффикс "8.1", но, глядя на вывод rpcinfo, это должно быть связано с тем, что сервер NFS в основном является потоком ядра.

1
12.12.2017, 19:39
0 ответов

Теги

Похожие вопросы