Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1076 / 303 | Оценка: 4.30 / 3.78 | Длительность: 18:28:00
Лекция 7:

Настройка сервера и клиента NFS

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Кэширование файловой системы

Для ускорения доступа к любой медленной файловой системе, такой, как удаленная система NFS или файловая система привода CD-ROM, может быть применено создание файловой системы кэша. Проще говоря, содержимое медленной файловой системы может быть закэшировано на локальном диске. Управление такой файловой системой кэша (cachefs) осуществляется утилитой cfsadmin.

NFS. Настройка клиента

Монтирование удаленных файловых систем

Монтирование файловых систем NFS осуществляется очень похоже на монтирование файловой системы любого другого типа. Посмотрим, как смонтировать файловую систему с машины под управлением Linux, если роль файлового сервера выполняет Solaris (компьютер pxy работает под Linux, компьютер с адресом 192.168.5.33):

root@pxy# mount -t nfs 192.168.5.33:/nfst ./nfst
root@pxy# mount
/dev/hda1 on / type ext2 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,mode=0620)
/dev/hda3 on /usr type ext2 (rw)
/dev/hda2 on /var type ext2 (rw)
192.168.5.33:/nfst on /usr/home/filip/nfst type nfs
(rw,addr=192.168.5.33)

Удаленная файловая система успешно смонтирована, о чем говорит последняя строка вывода mount.

Попробуем осуществить копирование файла:

root@pxy# cp /etc/mail/aliases /usr/home/filip/nfst/
root@pxy# ls /usr/home/filip/nfst/
aliases
root@pxy# ls -l /usr/home/filip/nfst/
total 1
-rw-r--r-- 1 root root 406 Jun 20 22:30 aliases

Файл был записан, как видите, от имени пользователя root и группы root. На самом деле, в выводе команды ls таится подвох. Ведь команда ls на локальной машине использует для получения соответствия между идентификатором в файловой системе и именем пользователя (группы) локальный файл /etc/passwd. Потенциальная опасность состоит в том, что на удаленном сервере и на локальной машине файлы /etc/passwd окажутся разными. В случае пользователя root это не важно, если только на сервере NFS пользователю root нашей машины разрешено монтировать файловую систему от имени root. В противном случае все файлы, которые локальный root будет записывать на удаленный сервер, будут записываться от имени nobody (или иного имени, если так определено конфигурацией сервера).

root@pxy# ls -ld /usr/home/filip/nfst/
drwxrwxr-x 2 root bin 512 Jun 20 22:30 /usr/home/filip/nfst/

Коль скоро в нашем примере файл был записан от имени root, следует предположить, что настройки сервера NFS это позволяют. Проверим это на компьютере 192.168.5.33:

192.168.5.33# cat /etc/dfs/dfstab
# Place share(1M) commands here for automatic execution
# on entering init state 3.
#
# Issue the command '/etc/init.d/nfs.server start' to run the NFS
# daemon processes and the share commands, after adding the very
# first entry to this file.
#
# share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resource]
# .e.g,
# share -F nfs -o rw=engineering -d "home dirs" /export/home2
share -F nfs -o root=pxy.spb.ru /nfst

Здесь, на компьютере 192.168.5.33, управляемом Solaris, разделяется общий каталог /nfst, а с компьютера pxy.spb.ru разрешено работать с этим каталогом от имени root. Следует осторожно раздавать подобные права и в большинстве случаев избегать разделения в сети каталогов с настроечной или секретной информацией.

По команде showmount можно получить список компьютеров, подключенных к серверу NFS:

192.168.5.33# showmount
pxy.spb.ru
www.spb.ru

Как видно, на сервере NFS имя хозяина файла совпадает с тем, что мы видели с клиента NFS, а имя группы файла – нет, так как под одним и тем же идентификатором в файлах /etc/group на сервере и на клиенте значатся разные группы. На практике следует избегать подобных расхождений, чтобы не возникало ситуаций, компроментирующих безопасность системы файлов. Синхронизация файлов passwd и group на сервере и клиентах или использование общей базы NIS помогут миновать путаницу в именах групп и владельцев файлов на сервере и клиенте NFS.

192.168.5.33# pwd
/nfst
192.168.5.33# ls -l
total 2
-rw-r--r-- 1 root root 406 Июн 20 22:30 aliases

Обратите внимание на одинаковое время создания файла с точки зрения команды ls сервера и клиента. В поле времени указывается время создания, которое записывает туда сервер NFS. Следует синхронизировать не только файлы group и passwd, но и время на сервере NFS и его клиентах, чтобы не было расхождений между клиентом и сервером при выполнении резервного копирования или выяснения "свежести" файлов.

Оптимизация производительности

Для оптимизации производительности NFS используется несколько средств. Во-первых, чем быстрее работают диски сервера NFS, тем быстрее информация сможет быть переданной через сеть. Современные сети часто строятся на основе высокоскоростных (как минимум, 100-мегабитных) коммутаторов, поэтому диски даже чаще оказываются узким местом в производительности, чем сеть. Если говорить об архитектуре x86, то предпочтительнее использовать в серверах современные жесткие диски с поддержкой UltraDMA-100, которые позволяют отдавать данные приложению с диска со скоростью порядка 50 Мб/с.

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

В-третьих, может использоваться локальное кэширование посредством создания кэширующей файловой системы cachefs, как рассказано выше.

В SunOS 4.x для кэширования запросов к удаленной файловой системе NFS использовался процесс biod, но в SunOS 5.x (т.е. с самых ранних версий Solaris) применяется кэширование автоматическое всех операций чтения и записи, в том числе и для файлов, расположенных на удаленных серврах NFS. Поэтому в специальном процессе biod (в некоторых системах UNIX аналогичный по смыслу процесс называется nfsiod ) нет необходимости в Solaris.

Таблица 7.3. Соответствие версий SunOS и Solaris Operating Environment
Версия SunOS Версия Solaris
4.x 1.x
5.6 2.6
5.7 7
5.8 8
5.9 9
5.10 10

Выполним еще один эксперимент: сервером NFS будет компьютер pxy (Linux), клиентом – компьютер под управлением Solaris. Все команды даются на компьютере-клиенте:

showmount -e ixy
export list for ixy:
/usr/home/filip/nfst (everyone)

Посмотрим, где можно создать подходящий пустой каталог, чтобы в него смонтировать удаленную файловую систему. Создадим каталог nfsc в корневом каталоге:

cd /
ls
devices lost+found opt TT_DB
bin etc mnt platform tuition
boot export named.run proc usr
cdrom home net sbin var
core kernel nfst test vol
dev lib nsmail tmp xfn
mkdir nfsc
mount ixy:/usr/home/filip/nfst /nfsc

Проверим, получилось ли:

mount
/ on /dev/dsk/c0d0s0 read/write/setuid/intr/largefiles/xattr/
onerror=panic/dev=1980000 on Сбт Июл 3 18:59:13 2004
/boot on /dev/dsk/c0d0p0:boot read/write/setuid/nohidden/nofoldcase/
dev=19a3010 on Сбт Июл 3 18:59:11 2004
/proc on /proc read/write/setuid/dev=2d80000 on Сбт Июл 3 18:59:12 2004
/etc/mnttab on mnttab read/write/setuid/dev=2e40000 on Сбт Июл 3
18:59:12 2004
/dev/fd on fd read/write/setuid/dev=2e80000 on Сбт Июл 3 18:59:14 2004
/var/run on swap read/write/setuid/xattr/dev=1 on Сбт Июл 3 18:59:17 2004
/tmp on swap read/write/setuid/xattr/dev=2 on Сбт Июл 3 18:59:18 2004
/export/home on /dev/dsk/c0d0s7 read/write/setuid/intr/largefiles/xattr/
onerror=panic/dev=1980007 on Сбт Июл 3 18:59:18 2004
/nfsc on ixy:/usr/home/filip/nfst remote/read/write/setuid/xattr/
dev=2fc0002 on Сбт Июл 3 21:23:45 2004

Последняя строка вывода mount говорит о нашем успехе.

Попобуем копировать файл на сервер NFS:

cp /etc/dfs/dfstab /nfsc
cp: cannot create /nfsc/dfstab: Read-only file system

Это говорит о том, что данная файловая система экспортируется сервером NFS только для чтения. Демонтирование удаленной файловой системы производится аналогично демонтированию файловых систем других типов:

umount /nfsc

При экспорте файловых систем, если экспорт осуществляется компьютером под управлением Solaris, могут быть использованы параметры, указывающие, в каком режиме экспортируется файловая система. Подробнее об этих параметрах рассказывает руководство по dfstab(4) – см. man dfstab.

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

Основные параметры монтирования приведены в табл. 7.4. Их следует указывать в файле /etc/dfs/dfstab в поле параметров монтирования (последнее поле строки dfstab ). Пример /etc/dfs/dfstab приведен выше в этой лекции, в разделе "Параметры экспорта в /etc/dfs/dfstab ".

Таблица 7.4. Параметры монтирования файловой системы NFS
Параметр Значение
rw смонтировать в режиме чтения и записи (действует только если сервер экспортирует указанный каталог в режиме чтения и записи)
ro смонтировать только для чтения
hard если сервер станет недоступен, повторять обращение к файлу на удаленной файловой системе до тех пор, пока сервер снова станет доступен; приводит к зависанию приложения, обращающегося к недоступной файловой системе
soft если сервер станет недоступен, повторять обращение к файлу на удаленной файловой системе столько раз, сколько указано в параметре retrans ; обычно приводит к ошибке приложения, обращающегося к недоступной файловой системе (подобно тому, как будет вести себя приложение при попытке чтения с неисправного жесткого диска, например)
retrans=n количество повторений запроса до принятии решения об ошибке, см. soft, тайм-аут задается параметром timeo
timeo=n n – тайм-аут между запросами в десятых долях секунды
intr позволяет прервать (послать сигнал INTR, Ctrl-C) обращение к недоступной файловой системе
nointr не позволяет прерывать обращения к недоступной файловой системе
proto=(tcp|udp) выбор протокола, по умолчанию – первый доступный из /etc/netconfig
rsize=n размер буфера чтения в байтах
wsize=n размер буфера записи в байтах

Пример файла /etc/vfstab:

#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot option
/proc - /proc proc - no -
fd - /dev/fd fd - no -
swap - /tmp tmpfs - yes -
pxy.gu.ru:/exprt - /home nfs - yes rw,noquota
< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.