Настройка и монтирование NFS
Навожу инструкцию по установке и настройке NFS (Network File System). NFS – это сетевая файловая система, с помощью которой можно обращаться к файлам и каталогам удалённого компьютера (сервера), как будто эти файлы и каталоги были локальными. Главным преимуществом такой системы является то, что отдельно взятые рабочие станции могут использовать меньше собственного дискового пространства, так как совместно используемые данные хранятся на отдельной машине (хранилище данных) и доступны для других машин в сети. NFS – это клиент-серверное приложение, где роль хранилища возлагается на сервер. Каждый участник сети – это NFS-клиент, который монтирует сетевой диск сервера у себя в файловой системе.
В роли сервера возьмем Ubuntu 12.04.
В качестве клиентов будем использовать и тестировать Centos и Winows 7.
Master server: 192.168.2.213 (Ubuntu)
Clients: 192.168.2.72 (Centos), 192.168.2.180 (Windows)
Настройка сервера
Для начала нужно настроить сервер. Так как мы будем использовать Ubuntu в роли сервера, нужно установить соответствующий пакет
1
| root@ubuntu:~ # apt-get install nfs-kernel-server |
1
2
3
4
| … Creating config file /etc/idmapd .conf with new version Creating config file /etc/default/nfs-common with new version … |
1
2
3
4
5
6
7
8
9
10
11
12
| root@ubuntu:~ # cat /etc/idmapd.conf [General] Verbosity = 0 Pipefs-Directory = /run/rpc_pipefs # set your own domain here, if id differs from FQDN minus hostname # Domain = localdomain [Mapping] Nobody-User = nobody Nobody-Group = nogroup |
Второй файл нужен для настройки идентификации Kerberos и настройке нестандартного порта, на котором будет слушаться демон. Он пока нам не нужен. Об настройке Kerberos речь пойдет в следующей статье.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| root@ubuntu:~ # cat /etc/default/nfs-common # If you do not set values for the NEED_ options, they will be attempted # autodetected; this should be sufficient for most people. Valid alternatives # for the NEED_ options are "yes" and "no". # Do you want to start the statd daemon? It is not needed for NFSv4. NEED_STATD= # Options for rpc.statd. # Should rpc.statd listen on a specific port? This is especially useful # when you have a port-based firewall. To use a fixed port, set this # this variable to a statd argument like: "--port 4000 --outgoing-port 4001". # For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS STATDOPTS= # Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD= |
Все директории для шаринга нужно прописывать в файле /etc/exports. Для начала создадим 2 папки в домашней директории и закинем в них файлы. Дерево каталогов и файлов для экспорта:
1
2
3
4
5
6
7
8
9
10
| root@ubuntu:~ # tree /home/alex/ /home/alex/ ├── nfs_dir1 │ ├── file1_dir1 │ ├── file2_dir1 │ └── file3_dir1 ├── nfs_dir2 ├── file1_dir2 ├── file2_dir2 └── file3_dir2 |
1
2
| root@ubuntu:~ # chown –R nobody:nogroup nfs_dir1/ root@ubuntu:~ # chown –R nobody:nogroup nfs_dir2/ |
1
2
3
4
5
| root@ubuntu:~ # vim /etc/exports # Для конкретного хоста (Windows) /home/alex/nfs_dir1 192.168.2.180(rw, sync ,all_squash,no_subtree_check,insecure) # Для любого хоста подсети /home/alex/nfs_dir2 192.168.2.0 /24 (rw,no_root_squash, sync ,no_subtree_check) |
- /home/alex/nfs_dir1 – путь к папке, для которой раздается доступ;
- 192.168.2.180 – IP-адрес, которому раздается доступ к папке(можно указать всю сеть, тогда запись примет вид 192.168.2.0/24)
- (rw,sync,all_squash,no_subtree_check) – набор опций.
- rw –чтение/запись(может принимать значение ro-только чтение);
- no_root_squash – по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;
- sync – синхронный режим доступа(может принимать обратное значение – async);
- noaccess – запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.
- all_squash– подразумевает, что все подключения будут выполнятся от анонимного пользователя (нужно для Windows клиента)
- anonuid=1000 – привязывает анонимного пользователя к «местному» пользователю;
- anongid=1000 – привязывает анонимного пользователя к группе «местного» пользователя.
- no_subtree_check(subtree_check) –если экспортируется подкаталог файловой системы, но не вся файловая система, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге. Отключение проверки уменьшает безопасность, но увеличивает скорость передачи данных.
- Обычно, Linux (и другие Unix-подобные операционные системы) резервируют TCP и UDP порты от 1-1023 (так называемые безопасные порты) для использования процессами пользователя root. Чтобы удостовериться, что именно root инициировал удаленное подключение NFS, сервер NFS обычно требует, чтобы удаленные клиенты использовали безопасные порты. Это соглашение, однако, не соблюдается некоторыми операционными системами (например Windows). В таких случаях опция insecure позволяет клиенту NFS использовать любой порт TCP/UDP. Обычно она требуется при обслуживании клиентов Windows.
1
| root@ubuntu:~ # man exports |
1
| root@ubuntu:~ # exportfs –a |
1
2
3
| root@ubuntu:~ # exportfs -v /home/alex/nfs_dir1 192.168.2.180(rw,wdelay,all_squash,no_subtree_check,insecure) /home/alex/nfs_dir2 192.168.2.0 /24 (rw,wdelay,no_root_squash,no_subtree_check) |
Настройка клиентов
Настройка Windows клиента
Если не было сообщений об ошибке. Можно приступить к монтирование на клиентской стороне.Для начала, нужно добавить сервис (службу-клиента) NFS. Для этого переходив в Пуск –> Панель управления –> Программы и компоненты и нажимаем на пункт меню слева Включение или отключение компонентов Windows. В появившимся окне выбираем Клиент для NFS и жмем ОК(рис. 1).
Далее нужно смонтировать диск. Для этого можно использовать командную строку или же просто щелкнуть правой кнопкой мыши на Мой компьютер и выбрать Подключение сетевого диска. И ввести строку \\192.168.2.213\home\alex\nfs_dir1. Это IP сервера и путь к папке (рис. 2).
Если все ок, мы увидим диск (рис. 3).
То же можно проделать, используя командную строку (рис. 4).
Возможные ошибки:
Вы не сможете подключить сетевой NFS диск к Windows OS (рис. 5), если
1. Не установлен клиент NFS
2. Включен (не настроен) фаэрвол
3. Нет сетевого доступа к серверу
4. Неверно введены параметры монтирования
5. Не настроен (не применены настройки) экспорт на сервере.
6. Добавить опцию insecure в настройках экспорта
Вы не сможете добавить файл в смонтированную файловую систему (рис. 6) , если:
1. На сервере не выставлены права на папку (nobody:nogroup)
2. Не выставлена опция all_squash в настройках экспорта
3. Не выставлена опция rw в настройках экспорта
Настройка Centos клиента
Настройка линукс систем довольно проста и безболезненна. Нужно просто установить нужные пакеты и смонтировать диск. Для Centos нужны следующие пакеты
1
| [root@centos ~] # yum install nfs-utils nfs-utils-lib |
1
2
3
4
5
6
7
8
9
10
11
12
| [root@centos ~] # mkdir -p /mnt/nfs [root@centos ~] # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/nfs [root@centos ~] # mount /dev/mapper/vg_slave-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext= "system_u:object_r:tmpfs_t:s0" ) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 192.168.2.213: /home/alex/nfs_dir1 on /mnt/nfs type nfs (rw,vers=4,addr=192.168.2.213,clientaddr=192.168.2.72) |
1
2
3
4
5
6
7
8
9
10
11
12
| [root@centos ~] # mkdir /mnt/dir1 [root@centos ~] # mkdir /mnt/dir2 [root@centos ~] # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/dir1 [root@centos ~] # mount 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 или [root@centos ~] # mount -t nfs4 -o rw,hard,intr,bg 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 [root@centos ~] # echo "Hello" > /mnt/dir1/file1 [root@centos ~] # echo "Hello" > /mnt/dir2/file1 [root@centos ~] # su alex [alex@centos root]$ echo "Hello" > /mnt/dir1/file1 [alex@centos root]$ echo "Hello" > /mnt/dir2/file1 bash : /mnt/dir2/file1 : Permission denied |
Флаг | Описание |
rw | Монтирование файловой системы для чтения/записи (она должна экспортироваться сервером в режиме чтения/записи) |
го | Монтирование файловой системы только для чтения |
bg | Если смонтировать файловую систему не удается (сервер не отвечает), следует перевести операцию в фоновый режим и продолжить обработку других запросов на монтирование |
hard | Если сервер отключился, операции, которые пытаются получить к нему доступ, блокируются до тех пор, пока сервер не включится вновь |
soft | Если сервер отключился, операции, которые пытаются получить к нему доступ, завершаются выдачей сообщения об ошибке. Этот флаг полезно устанавливать для того, чтобы предотвратить зависание процессов в случае неудачного монтирования не очень важных файловых систем |
intr | Позволяет прерывать с клавиатуры заблокированные операции (будут выдаваться сообщения об ошибке) |
nointr | Не позволяет прерывать с клавиатуры заблокированные операции |
retrans=n | Указывает, сколько раз нужно повторить запрос, прежде чем будет выдано сообщение об ошибке (для файловых систем, смонтированных с флагом soft) |
timeo=n | Задает интервал тайм-аута для запросов (в десятых долях секунды) |
rsize=n | Задает размер буфера чтения равным n байт |
wsize=fl | Задает размер буфера записи равным n байт |
sec=режим | Задает режим безопасности |
vers=n | Задает версию протокола NFS |
proto = протокол | Выбирает транспортный протокол; им должен быть протокол tcp для версии NVS 4 |
1
2
3
4
| root@centos ~ # showmount -e 192.168.2.213 Export list for 192.168.2.213: /home/alex/nfs_dir2 192.168.2.0 /24 /home/alex/nfs_dir1 192.168.2.180 |
1
2
3
| [root@centos ~] # cat /etc/fstab ... 192.168.2.213: /home/alex/nfs_dir2 /mnt/dir2 nfs4 rw, bg ,intr,hard,nodev,nosuid 0 0 |
1
| root@centos ~ # mount -a -t nfs4 |
1
2
| root@centos ~ # mount -a -t nfs4 mount .nfs4: mount point /mnt/dir2 does not exist |
1
2
| root@centos ~ # mount -a -t nfs4 mount .nfs4: remote share not in 'host:dir' format |
Если возникли ошибки при монтировании NFS разделов – пройдитесь по списку Возможные ошибки из предыдущего раздела.
Для монтирования NFS разделов можно также использовать autofs. О чем пойдет речь в следующей статье.
Link
Комментарии
Отправить комментарий