Як я можу визначити, чи дистанційний 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.