Есть ли способ достижения контекстно-зависимых имен путей (CDPN) в NFS?

В моих кластерах GFS я использую функцию CDPN для создания отдельных /dev/log chrooted /dev/log на отдельных узлах кластера:

 / Главная / ftpuser / Foo:
 lrwxrwxrwx 1 корень root 18 сентября 26 2010 dev -> .sys / @ hostname / dev

 /home/ftpuser/foo/.sys:
 drwx - x - x 3 root root 3864 Sep 26 2010 server1.example.com
 drwx - x - x 3 root root 3864 26 сентября 2010 server2.example.com
 drwx - x - x 3 корень root 3864 26 сентября 2010 server3.example.com

 /home/ftpuser/foo/.sys/server2.example.com:
 drwx - x - x 2 корень root 3864 Сен 25 09:34 dev

 /home/ftpuser/foo/.sys/server2.example.com/dev:
 srw-rw-rw- 1 корень root 0 Сен 25 09:23 log

 / home / ftpuser / foo / dev: (прозрачный выбор 1 subdir в зависимости от имени узла)
 srw-rw-rw- 1 корень root 0 Сен 25 09:23 log

Я использую это так, чтобы демон rsyslog на каждом узле не мешал друг другу. Он работает, потому что @hostname в пути заменяется именем хоста, которое интерпретирует его, поэтому разные хосты получают другую директорию. Кластеры активны на всех узлах одновременно.

Мои вопросы:

  • Есть ли способ получить соответствующую функциональность на общем ресурсе NFS?
  • Могло ли это теоретически быть реализовано в ядре linux на всех файловых системах (через параметр mount, чтобы он не разбивал материал по умолчанию)?

Этот вопрос аналогичен, но не идентичен этому: файл NFS с тем же именем, но с другим содержимым, в зависимости от хоста

One Solution collect form web for “Есть ли способ достижения контекстно-зависимых имен путей (CDPN) в NFS?”

Я не думаю, что CDPN существует для NFS, но вы можете добиться чего-то примерно эквивалентного базовым инструментам. Ограничение заключается в том, что вы должны поместить все файлы, специфичные для вашего узла, в одно и то же место (или, по крайней мере, вам нужно сохранить список местоположений), вы не можете использовать функцию @hostname любом месте.

Установите локальную файловую систему на всех узлах в одном месте, например /local . В этой файловой системе создайте символическую ссылку, цель которой варьируется между узлами и точками в узловой области удаленной файловой системы. Для этого вам не требуется локальное хранилище, это может быть файловая система в памяти; так как ему нужно только сохранить одну символическую ссылку, накладные расходы крошечные.

 mount -t tmpfs -o noexec,nodev,nosuid,mode=755,nr_inodes=2,nr_blocks=2 local-redirect /local ln -s "/nfs/.sys/$HOSTNAME" /local/storage 

Используйте /local/storage где вы должны использовать .sys/@hostname в вашем примере.

Другой подход, основанный на Linux, – это создание привязки на каждом узле. Имейте пустой каталог в общей файловой системе и привяжите-mount @hostname к нему после установки файловой системы NFS.

 mount --bind "/.nfs/sys/$HOSTNAME" /nfs/.sys/@hostname 
  • Как запустить ядро ​​linux usermode?
  • путают скорость записи dd и кеш страниц VFS
  • Докер в Крютоне - VFS, потребляющий астрономические объемы пространства
  • Interesting Posts

    беспроводная проблема

    Каковы различные способы отображения сообщения в оболочку bash после входа пользователя в систему?

    Настройки повтора клавиатуры KDE не работают / не действуют?

    Unix / Linux – Заменить слова между круглыми скобками

    Запускать скрипт один раз в день с помощью systemd

    Создайте файл JSON всего установленного программного обеспечения dpkg

    Как удалить (плагин) тюрьму из FreeNAS

    «. ~ / .bashrc "не устанавливает переменные, как ожидалось, в вызывающем скрипте

    как запустить пользовательский скрипт после пробуждения systemd?

    systemctl не может точно сообщить о статусе демонов, если они были запущены с помощью механизма, отличного от systemctl

    Grep не соответствует символам без ascii

    Используя ; или && с помощью $ @

    получить первое появление целого в текстовом файле

    rsync bash скрипт "не удалось установить"

    Может ли папка / home в Linux содержать что-либо еще, кроме пользовательских папок?

    Linux и Unix - лучшая ОС в мире.