Як я можу визначити, чи дистанційний NFS експортує каталог?


11

У моєму сценарії у мене є кілька шарів статусування:

  1. доступний пульт (ping)
  2. віддалена служба NFS активна
  3. віддалений NFS експортує певний каталог
  4. монтується віддалений NFS (кріплення)

Для (2) та (3) я вважаю, що rcpinfoце найкраща ставка. Для (2), однак, я не можу зрозуміти, як звузити запит до служби NFS, не запустивши підзаголовок (що неприйнятно для цієї програми). Щодо (3), я не впевнений, що ця інформація доступна навіть віддалено ( sshзвичайно, не маючи на увазі).

Я працюю над RHEL 6 і не маю доступу до програм, які не входять у стандартний дистрибутив.

Відповіді:


16

Для 3) ви, ймовірно, хочете використовувати те, showmount -e remote_nfs_serverщо показує, чи віддалений_nfs_server щось експортував.

І для 2) якщо ви не хочете використовувати shubshell і знаєте, чи віддалений сервер працює NFSv3 або NFSv4, і якщо TCP або UDP, ви можете запитати про це конкретно за допомогою rpcinfo:
rpcinfo -u remote_nfs_server nfs 3 для NFSv3 через UDP і
rpcinfo -t remote_nfs_server nfs 4для NFSv4 через TCP

Для 4) ви можете подивитися Перевірити, чи папка - це змонтована віддалена файлова система


Додаткова інформація:


showmount -r remoteпідкаже, чи remoteекспортує що- небудь , але чи є для мене спосіб визначити, чи remote:/mnt/dirекспортується без запуску нижньої оболонки (тобто трубопроводу)?
Шон Аллред

showmount -e remoteпідкаже, чи remoteекспортував щось. showmount -rнадасть вам лише повідомлення про помилку, оскільки ця опція не існує. Ви можете спробувати використати відповідність підрядкових оболонок, щоб в основному отримати греп для регулярного виразу у вихідному показі. Може бути , поглянути на , наприклад , stackoverflow.com/questions/12619720 / ...
doktor5000

Або, навпаки, я не знаю жодної окремої команди, яка може спеціально запитувати віддалений сервер NFS для одного конкретного кріплення, і я не думаю, що це існує. Тільки інші два життєздатні способи полягають у запиті віддаленого сервера локально за допомогою ssh (хоча навіть тоді немає надійного способу визначити, чи даний каталог експортується в даний час через характер NFS без громадянства). Іншим підходом може бути спробувати встановити експорт NFS від клієнта та перевірити код виходу, а потім локальне кріплення та його вміст.
doktor5000

Моя помилка з -rваріантом проти -e- ось що я мав на увазі :) "Спроба підходу" була запропонована раніше. Мені це особливо не подобається, але це виглядає як справжній варіант.
Шон Аллред

5

Ви можете використовувати showmount -e <server>для деяких аспектів №3. Коли експорт простий, то, принаймні, можна припустити, що каталог (або, можливо, батько такого каталогу) експортується.

# showmount -e server
/export                               (everyone)

Для №2 я не впевнений, що ти шукаєш. Якщо ви використовуєте NFSv3, ви будете шукати принаймні mountd та nfs (а в деяких випадках можливо, вам доведеться підтвердити менеджерів блокування). Ви можете перевірити наявність явно за допомогою rpcinfo, як ви кажете.

# rpcinfo -t server mountd 3
program 100005 version 3 ready and waiting

showmount -r remoteпідкаже, чи remoteекспортує що- небудь , але чи є для мене спосіб визначити, чи remote:/mnt/dirекспортується без запуску нижньої оболонки (тобто трубопроводу)?
Шон Аллред

Це залежить від ваших послуг. Про що написано у вашому сценарії? Чому запуск окремого виконуваного файлу (showmount) менше проблем, ніж запуск іншої оболонки?
BowlOfRed

Я пишу свій сценарій в Python 2.6 і використовую subprocessмодуль. Я можу встановити трубопровід з ним, але я краще не дуже ускладнюю його дизайн. Мені потрібно уникати запуску доподібної оболонки, щоб дозволити граціозному вбиттю сценарію - якщо він буде вбитий, його дочірні процеси будуть вбиті, але не діти, які займаються дитиною. Таким чином, нижня оболонка буде вбита, але не обробка породженої. Я також зауважив rpcinfo, що повернення може зайняти до трьох хвилин, що є оригінальною основою для того, щоб не повертатись. Хоча зараз це занадто пізно змінити.
Шон Аллред

Напишіть окремий сценарій, який виконує те, що вам потрібно (наприклад, виклики showmount, але бере аргумент для каталогу та повертає успіх / невдачу та включає в себе таймаут, який є розумним для ваших цілей), а потім викликайте цей скрипт зі свого python.
BowlOfRed

Я можу пообіцяти вам, що це не так просто, як ви відразу подумаєте - коли він зафіксований так, rpcinfoне реагує ні на що, окрім SIGKILL (що є неправильним розподілом - ОС, очевидно, просто вбиває процес). У будь-якому випадку це все-таки запустить оболонку для запуску rpcinfo- основна проблема залишається.
Шон Аллред

0

Перерахуйте всі каталоги експорту псевдокореневих NFS-V4

ls /net/ip-addr-nfs-server

Перевірте мою відповідь в іншій темі


Щоб /netкріплення працювало, /etc/auto.netсценарій повинен встановити, що сервер має відповідний експорт. Для цього використовується showmountкоманда. Якщо сервер має лише NFSv4, він не буде працювати (покаже дисплеї RPC: Program not registered, і /net/serverбуде лише звітувати File not found)
Але
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.