Вопрос или проблема
Здравствуйте, я не могу смонтировать несколько каталогов NFS Share с помощью fstab на RHEL 7. Ознакомьтесь с моей конфигурацией LAB.
Хочу задать вопрос, используя nfs и монтируя через fstab, можно ли монтировать только один каталог nfs? Если нет, то как смонтировать несколько каталогов?
LAB
server.example.com 192.168.2.2/24
client.example.com 192.168.2.1/24
На сервере
папки nfs share
/test1
/test2
Отключите firewalld, selinux находится в режиме permissive на сервере и клиенте.
На сервере
[root@server ~]# yum install nfs-utils
[root@server ~]# systemctl enable rpcbind
[root@server ~]# systemctl start rpcbind
[root@server ~]# systemctl start nfs-server
[root@server ~]# systemctl start nfs-secure
[root@server ~]# mkdir /test1
[root@server ~]# mkdir /test2
[root@server ~]# ls /test*
/test1:
/test2:
[root@server ~]# chmod 777 /test1
[root@server ~]# chmod 777 /test2
[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/test1 192.168.2.1(rw,sync,no_root_squash)
/test2 192.168.2.1(rw,sync,no_root_squash)
[root@server ~]# exportfs -r
[root@server ~]# exportfs -v
/test1 192.168.2.1(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/test2 192.168.2.1(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
[root@server ~]# systemctl stop firewalld.service
[root@server ~]# systemctl disable firewalld.service
[root@server ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
На клиенте
[root@client ~]# systemctl enable rpcbind
[root@client ~]# systemctl start rpcbind
[root@client ~]# setenforce 0
[root@client ~]# vim /etc/sysconfig/selinux
[root@client ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
[root@client ~]# systemctl stop firewalld
[root@client ~]# systemctl disble firewalld
[root@client ~]# showmount -e 192.168.2.2
Список экспортируемых ресурсов для 192.168.2.2:
/test2 192.168.2.1tes
/test1 192.168.2.1
[root@client ~]# mkdir /mnt/nfstest1
[root@client ~]# mkdir /mnt/nfstest2
[root@client ~]# chmod 777 /mnt/nfstest1
[root@client ~]# chmod 777 /mnt/nfstest2
Проверьте файл fstab
[root@client ~]# vim /etc/fstab
[root@client ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Apr 26 08:01:03 2017
#
# Доступные файловые системы, по ссылке, поддерживаются в '/dev/disk'
# Смотрите страницы man fstab(5), findfs(8), mount(8) и/или blkid(8) для получения дополнительной информации
#
UUID=8cfced80-d77a-41a6-a7ee-9b41ebea88b2 / xfs defaults 1 1
UUID=ad9e8442-335f-478c-81af-b77e1ac88549 /boot xfs defaults 1 2
UUID=e55cb2d8-4461-4792-944c-1b76225dd13a /home xfs defaults 1 2
UUID=ffbc9edf-42ce-4d82-af5c-b2ff1cff5a68 /usr xfs defaults 1 2
UUID=556f0e53-bfa3-4639-9d47-ba1c70299393 /var xfs defaults 1 2
UUID=a855e109-f05f-4bfe-bfc9-a06f10d294f1 swap swap defaults 0 0
192.168.2.2:/test1 /mnt/nfstest1 nfs rw,sync 0 0
192.168.2.2:/test2 /mnt/nfstest2 nfs rw,sync 0 0
[root@client ~]# mount -a
df -h показывает только один смонтированный каталог nfs /mnt/nfstest1
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.8G 70M 9.7G 1% /
devtmpfs 354M 0 354M 0% /dev
tmpfs 363M 0 363M 0% /dev/shm
tmpfs 363M 5.2M 357M 2% /run
tmpfs 363M 0 363M 0% /sys/fs/cgroup
/dev/sda5 9.8G 2.8G 7.0G 29% /usr
/dev/sda3 9.8G 33M 9.8G 1% /home
/dev/sda1 2.0G 107M 1.9G 6% /boot
/dev/sda6 9.8G 3.8G 6.1G 39% /var
192.168.2.2:/test1 9.8G 71M 9.7G 1% /mnt/nfstest1
но команда mount показывает оба каталога nfs
[root@client ~]# mount | grep nfstest*
192.168.2.2:/test1 on /mnt/nfstest1 type nfs4 (rw,relatime,sync,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.2.1,local_lock=none,addr=192.168.2.2)
192.168.2.2:/test2 on /mnt/nfstest2 type nfs4 (rw,relatime,sync,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.2.1,local_lock=none,addr=192.168.2.2)
Я перезагрузился
Проверьте мой статус снова, снова смонтирован только один каталог nfs, и это /mnt/nfstest2, а /mnt/nfstest1 исчез. Почему это происходит? У меня правильная опция в /etc/fstab. Может кто-нибудь сказать, правильно ли это.
login as: root
[email protected]'s password:
Last login: Wed May 10 22:37:20 2017 from 192.168.2.100
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.8G 70M 9.7G 1% /
devtmpfs 354M 0 354M 0% /dev
tmpfs 363M 0 363M 0% /dev/shm
tmpfs 363M 5.2M 357M 2% /run
tmpfs 363M 0 363M 0% /sys/fs/cgroup
/dev/sda5 9.8G 2.8G 7.0G 29% /usr
/dev/sda1 2.0G 107M 1.9G 6% /boot
/dev/sda3 9.8G 33M 9.8G 1% /home
/dev/sda6 9.8G 3.8G 6.1G 39% /var
192.168.2.2:/test2 9.8G 71M 9.7G 1% /mnt/nfstest2
[root@client ~]# mount | grep nfstest*
192.168.2.2:/test2 on /mnt/nfstest2 type nfs4 (rw,relatime,sync,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.2.1,local_lock=none,addr=192.168.2.2)
192.168.2.2:/test1 on /mnt/nfstest1 type nfs4 (rw,relatime,sync,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.2.1,local_lock=none,addr=192.168.2.2)
[root@client ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Apr 26 08:01:03 2017
#
# Доступные файловые системы, по ссылке, поддерживаются в '/dev/disk'
# Смотрите страницы man fstab(5), findfs(8), mount(8) и/или blkid(8) для получения дополнительной информации
#
UUID=8cfced80-d77a-41a6-a7ee-9b41ebea88b2 / xfs defaults 1 1
UUID=ad9e8442-335f-478c-81af-b77e1ac88549 /boot xfs defaults 1 2
UUID=e55cb2d8-4461-4792-944c-1b76225dd13a /home xfs defaults 1 2
UUID=ffbc9edf-42ce-4d82-af5c-b2ff1cff5a68 /usr xfs defaults 1 2
UUID=556f0e53-bfa3-4639-9d47-ba1c70299393 /var xfs defaults 1 2
UUID=a855e109-f05f-4bfe-bfc9-a06f10d294f1 swap swap defaults 0 0
192.168.2.2:/test1 /mnt/nfstest1 nfs rw,sync 0 0
192.168.2.2:/test2 /mnt/nfstest2 nfs rw,sync 0 0
Здесь несколько каталогов nfs share не монтируются одновременно.
На клиенте /etc/fstab
192.168.2.2:/test1 /mnt/nfstest1 nfs rw,sync 0 0
192.168.2.2:/test2 /mnt/nfstest2 nfs rw,sync 0 0
после выполнения команды mount -a
я получаю /mnt/nfstest1
192.168.2.2:/test1 9.8G 71M 9.7G 1% /mnt/nfstest1
но после перезапуска клиента я получаю наоборот. ПОЧЕМУ
Может ли кто-нибудь помочь мне решить эту проблему
Обратите внимание, каталоги NFS созданы на единственной файловой системе / на сервере.
И смонтированы на /mnt/test1 и /mnt/test2 на клиенте.
Спасибо
Sagar Dalvi
Вывод команды mount
должен быть авторитетным. /proc/mounts является настоящим авторитетом, но mount использует его в настоящее время, /etc/mtab всего лишь символьная ссылка. Вы можете проверить их сами, если хотите. Но я думаю, что файловые системы действительно смонтированы.
Ответ заключается в том, что df фильтрует повторяющиеся файловые системы, такие как привязанные монтирования (bind mounts). (Порядок монтирования этих файловых систем фактически случайный, когда используется systemd).
df каким-то образом способен правильно определить, что эти два каталога размещены на одной физической файловой системе – информация о пространстве для них будет идентичной. Если вы поищете в интернете, вы найдете такие же жалобы на df и монтирования NFS, зарегистрированные как ошибки в нескольких дистрибутивах Linux.
Ответ на эти ошибки: если вы хотите показать все точки монтирования, вам нужно использовать df -a
.
Ответ или решение
Здравствуйте,
Ваш вопрос о проблемах с монтированием нескольких NFS-директорий через fstab
на RHEL 7 может показаться сложным, но его решение вполне возможно. Сначала разберем теоретическую основу процесса монтирования и NFS, потом погрузимся в анализ вашего примера и завершим практическими рекомендациями по исправлению ситуации.
Теория
NFS (Network File System) — это протокол для удаленной работы с файловыми системами, позволяющий клиентам монтировать сетью разделы, расположенные на сервере, и работать с ними так, как если бы они находились локально. Монтирование через fstab
— это удобный способ автоматизировать процесс монтирования NFS-разделов при запуске системы.
Файл fstab
(File Systems Table) содержит настройки для монтирования файловых систем. Каждая строка в файле задает определенные параметры, такие как источник монтирования, точка монтирования, тип файловой системы и опции.
Пример
На основании вашего описания, базовая настройка вашей лаборатории выглядит следующим образом:
-
На сервере:
- Файлообменные каталоги
/test1
и/test2
настроены и экспортированы. - NFS настроен с параметрами без ограничения привилегий пользователя и синхронизацией (no_root_squash, sync).
- Файлообменные каталоги
-
На клиенте:
- Каталоги
/mnt/nfstest1
и/mnt/nfstest2
созданы с разрешением 777. - В
fstab
указаны соответствующие записи для монтирования NFS-директорий.
- Каталоги
Проблема, которую вы описываете, связана с непостоянством отображения монтированных директорий в выводе команды df
.
Анализ и Применение
Проблема, как вы упомянули, заключается в том, что только одна NFS директория видна через df -h
, хотя команда mount
показывает, что обе директории смонтированы.
-
Особенности
df
:df
отображает использование дискового пространства, основываясь на уникальных файловых системах. Это значит, что при выборе одинаковых файловых систем, как в случае с NFS, особенно если эти файловые системы имеют одинаковые идентификаторы (серийные номера),df
склонен показывать только одну из них. Это поведение не является ошибкой, а результатом намеренного дизайна. -
Проверка через
mount
и/proc/mounts
: Поскольку выводmount
утверждает, что обе директории смонтированы, возможно использование альтернативных методов, как просмотр/proc/mounts
, чтобы подтвердить статус монтирования. -
Решение с помощью
df -a
: Параметр-a
позволяетdf
показывать все точки монтирования, что может помочь в вашем случае отобразить все монтированные NFS-директории. -
Отладка: Для дальнейшей отладки можете попробовать временно отключить влияющие на монтирование параметры, такие как специфичные опции монтирования NFS или настройки SELinux и firewalld, хоть они и выключены в данный момент, чтобы увидеть, помогут ли они варьировать ситуацию.
Дополнительные рекомендации и best practices
-
Настройка логирования: Включите подробное логирование для NFS как на стороне клиента, так и на стороне сервера, чтобы отслеживать любые сообщения об ошибках или предупреждения.
-
Использование уникальных опций монтирования: Проверка и использование уникальных опций монтирования для разных экземпляров NFS-директорий, таких как различные протоколы (v3 или v4), могут повлиять на идентификацию файловых систем.
-
Версия ядра и обновления: Uбедитесь, что ваша система и используемый NFS имеют все последние обновления, так как это может повлиять на стабильность работы с сетевыми файловыми системами.
-
Консультация документации и комьюнити: Проверка с актуальной документацией от Red Hat и общение с сообществом, включая форумы и вики, может прояснить специфические нюансы, касающиеся вашей конфигурации.
Надеюсь, эта информация поможет вам в решении проблемы с монтированием нескольких NFS-директорий с использованием fstab
. Если вы продолжите сталкиваться с этой или другими проблемами, не стесняйтесь искать дальнейшую помощь у экспертов в сообществе Linux или непосредственно в поддержке Red Hat.