NFS монтирует, показывая файлы с других монтировок
У меня есть сервер, на котором хранятся снимки ZFS, которые я экспортирую через NFS на серверы, для которых они создаются, чтобы вы могли восстановить их с помощью собственного приложения, написанного собственными силами. Вопрос заключается в следующем:
ПРИМЕЧАНИЕ: я не использую встроенную NFS ZFS по причине, поэтому, пожалуйста, не говорите мне использовать это!
Это все 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, за исключением той, которая монтируется перекрестно, затем перезагружаю файл экспорта (то есть, оставляя только одну запись в / etc / exports), он показывает все надлежащие каталоги на клиентском компьютере.
Итак, устаревшие ручки NFS? Больше NFS серверов работают по умолчанию? Что-то другое? Есть идеи? Я уже несколько недель бьюсь головой об этом.
ОБНОВИТЬ
Вот строка кода, которую запускает мой скрипт, которая устанавливает экспортируемые каталоги:
mount -t ext4 -o noload,ro /dev/zvol/backups/$HOST@$DATE"-00" /nfs/$HOST/$DATE
Папки /nfs/$HOST/$DATE экспортируются (как вы можете видеть в файле экспорта выше)
1 ответ
Так что, похоже, это был подстановочный экспорт, который, если вы читаете страницу руководства, не рекомендуется. Я читал это раньше, но по какой-то причине не исправил это. Я все еще думаю, что это "ошибка", и она должна работать в теории, но на практике это не так.
Надеюсь, что это помогает другим.
Пример моего нового файла экспорта:
/nfs server1.a2hosting.com(fsid=0,ro,nohide,no_root_squash)
/nfs/server1/20120320 server1.a2hosting.com(ro,nohide,no_root_squash)