Назад | Перейти на главную страницу

Монтирования NFS, показывающие файлы из других подключений

У меня есть сервер, на котором хранятся моментальные снимки ZFS, которые я экспортирую через NFS на серверы, резервные копии которых они создают, чтобы вы могли восстановить их с помощью собственного приложения. Проблема в следующем:

ПРИМЕЧАНИЕ. Я не использую встроенную в ZFS NFS по какой-то причине, поэтому, пожалуйста, не говорите мне использовать ее!

Это все NFS v4
Хост работает под управлением CentOS 6.2. Клиент работает под управлением CentOS 5.7.

У меня на хосте по умолчанию запущено 8 серверов nfs.

На сервере резервного копирования, который содержит общие ресурсы NFS, я могу сколь угодно глубоко пройти по структуре каталогов и увидеть все ожидаемые файлы.

На клиенте я могу перемещаться по файловой системе, но иногда, и это действительно кажется случайным, когда я углубляюсь в 2 или более каталогов, я в конечном итоге вижу файлы с другого сервера.

Вот пример:

[NFSSERVER /nfs/share]#  ls -l
total 60
drwx--x--x 30 root root 4096 Feb 25 00:15 20120225
drwx--x--x 30 root root 4096 Feb 26 00:05 20120226
drwx--x--x 30 root root 4096 Feb 27 00:06 20120227
.....

скоро

[NFSCLIENT /app/backups]# ls -l
total 60
drwx--x--x 30 nobody nobody 4096 Mar  2 00:25 20120225/
drwx--x--x 30 nobody nobody 4096 Mar  2 00:25 20120226/
drwx--x--x 30 nobody nobody 4096 Mar  2 00:25 20120227/
......

скоро

Вы можете видеть, что они идентичны, как и должно быть.

Вот здесь и начинается проблема. Если я войду в:

[NFSCLIENT /app/backups/20120225/home] #  ls -l

Когда я запускаю этот ls -l на клиенте иногда Я вижу нужные файлы, иногда я вижу домашний каталог другого сервера.

Если бы я получил [NFSSERVER /nfs/share/20120225/home]# ls -l

Когда я запускаю команду ls -l, я вижу нужные файлы. Если я удалю папку в / nfs / share /, я сразу увижу результат на клиенте. Эти «перекрестно смонтированные» файловые системы я вижу только при более глубоком изучении.

Вот часть моих файлов / etc / exports (имена хостов изменены)

/nfs *.domain.com(fsid=0,ro,nohide,no_root_squash)
/nfs/server1/20120308 *.domain.com(ro,nohide,no_root_squash)
/nfs/server1/20120309 *.domain.com(ro,nohide,no_root_squash)
/nfs/server1/20120310 *.domain.com(ro,nohide,no_root_squash)
/nfs/server1/20120311 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120308 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120309 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120310 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120311 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120204 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120205 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120206 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120207 *.domaincom(ro,nohide,no_root_squash)

ЕСЛИ я удаляю все строки из etc exports, ЗА ИСКЛЮЧЕНИЕМ той, которая перекрестно монтируется, а затем перезагружаю файл экспорта (т.е. оставляя только одну запись в / etc / exports), он показывает все соответствующие каталоги на клиентской машине.

Итак, устаревшие дескрипторы NFS? По умолчанию работает больше серверов NFS? Что-то другое? Любые идеи? Я уже пару недель бью головой по этому поводу.

ОБНОВИТЬ

Это строка кода, которую запускает мой скрипт, который устанавливает каталоги, которые экспортируются:

mount -t ext4 -o noload,ro /dev/zvol/backups/$HOST@$DATE"-00" /nfs/$HOST/$DATE

Папки / nfs / $ HOST / $ DATE экспортируются (как вы можете видеть в файле экспорта выше)

так что, похоже, это был экспорт с подстановочными знаками, который, если вы читаете справочную страницу, не рекомендуется. Я читал это раньше, но по какой-то причине не исправил. Я все еще думаю, что это "ошибка" и должен работают в теории, но на практике нет.

Надеюсь, это поможет другим.

Пример моего нового файла экспорта:

/nfs server1.a2hosting.com(fsid=0,ro,nohide,no_root_squash)
/nfs/server1/20120320 server1.a2hosting.com(ro,nohide,no_root_squash)