Доброго времени, читатели и гости . Очень большой перерыв между постами был, но я снова в бою). В сегодняшней статье рассмотрю работу протокола NFS , а так же настройку сервера NFS и клиента NFS на Linux .
NFS (Network File System - сетевая файловая система ) по моему мнению - идеальное решение в локальной сети, где необходим быстрый (более быстрый по сравнению с SAMBA и менее ресурсоемкий по сравнению с удаленными файловыми системами с шифрованием - sshfs, SFTP, etc...) обмен данными и во главе угла не стоит безопасность передаваемой информации. Протокол NFS позволяет монтировать удалённые файловые системы через сеть в локальное дерево каталогов , как если бы это была примонтирована дисковая файловая система. Тем самым локальные приложения могут работать с удаленной файловой системой, как с локальной. Но нужно быть осторожным (!) с настройкой NFS , ибо при определенной конфигурации можно подвесить операционную систему клиента в ожидании бесконечного ввода/вывода. Протокол NFS основан на работе протокола RPC , который пока не поддается моему пониманию)) поэтому материал в статье будет немного расплывчат... Прежде, чем Вы сможете использовать NFS, будь это сервер или клиент, Вы должны удостовериться, что Ваше ядро имеет поддержку файловой системы NFS. Проверить поддерживает ли ядро файловую систему NFS можно, просмотрев наличие соответствующих строк в файле /proc/filesystems :
ARCHIV ~ # grep nfs /proc/filesystems nodev nfs nodev nfs4 nodev nfsd
Если указанных строк в файле /proc/filesystems не окажется, то необходимо установить описанные ниже пакеты. Это скорее всего позволит установить зависимые модули ядра для поддержки нужных файловых систем. Если после установки пакетов, поддержка NFS не будет отображена в указанном файле, то необходимо будет , с включением данной функции.
Протокол NFS разработан компанией Sun Microsystems и имеет в своей истории 4 версии. NFSv1 была разработана в 1989 и являлась экспериментальной, работала на протоколе UDP. Версия 1 описана в . NFSv2 была выпущена в том же 1989 г., описывалась тем же RFC1094 и так же базировалась на протоколе UDP, при этом позволяла читать не более 2Гб из файла. NFSv3 доработана в 1995 г. и описана в . Основными нововведениями третьей версии стало поддержка файлов большого размера, добавлена поддержка протокола TCP и TCP-пакетов большого размера, что существенно ускорило работоспосбоность технологии. NFSv4 доработана в 2000 г. и описана в RFC 3010, в 2003 г. пересмотрена и описана в . Четвертая версия включила в себя улучшение производительности, поддержку различных средств аутентификации (в частности, Kerberos и LIPKEY с использованием протокола RPCSEC GSS) и списков контроля доступа (как POSIX, так и Windows-типов). NFS версии v4.1 была одобрена IESG в 2010 г., и получила номер . Важным нововведением версии 4.1, является спецификация pNFS - Parallel NFS, механизма параллельного доступа NFS-клиента к данным множества распределенных NFS-серверов. Наличие такого механизма в стандарте сетевой файловой системы поможет строить распределённые «облачные» («cloud») хранилища и информационные системы.
Так как у нас NFS - это сетевая файловая система, то необходимо . (Так же можно почитать статью ). Далее необходимо . В Debian это пакет nfs-kernel-server и nfs-common , в RedHat это пакет nfs-utils . А так же, необходимо разрешить запуск демона на необходимых уровнях выполнения ОС (команда в RedHat - /sbin/chkconfig nfs on , в Debian - /usr/sbin/update-rc.d nfs-kernel-server defaults ).
Установленные пакеты в Debian запускается в следующем порядке:
ARCHIV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx 1 root root 20 Окт 18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 27 Окт 22 01:23 S16nfs-kernel-server -> ../init.d/nfs-kernel-server
То есть, сначала запускается nfs-common , затем сам сервер nfs-kernel-server . В RedHat ситуация аналогичная, за тем лишь исключением, что первый скрипт называется nfslock , а сервер называется просто nfs . Про nfs-common нам сайт debian дословно говорит следующее: общие файлы для клиента и сервера NFS, этот пакет нужно устанавливать на машину, которая будет работать в качестве клиента или сервера NFS. В пакет включены программы: lockd, statd, showmount, nfsstat, gssd и idmapd . Просмотрев содержимое скрипта запуска /etc/init.d/nfs-common можно отследить следующую последовательность работы: скрипт проверяет наличие исполняемого бинарного файла /sbin/rpc.statd , проверяет наличие в файлах /etc/default/nfs-common , /etc/fstab и /etc/exports параметров, требующих запуск демонов idmapd и gssd , запускает демона /sbin/rpc.statd , далее перед запуском /usr/sbin/rpc.idmapd и /usr/sbin/rpc.gssd проверяет наличие этих исполняемых бинарных файлов, далее для демона /usr/sbin/rpc.idmapd проверяет наличие sunrpc, nfs и nfsd , а так же поддержку файловой системы rpc_pipefs в ядре (то есть наличие ее в файле /proc/filesystems ), если все удачно, то запускает /usr/sbin/rpc.idmapd . Дополнительно, для демона /usr/sbin/rpc.gssd проверяет модуль ядра rpcsec_gss_krb5 и запускает демон.
Если просмотреть содержимое скрипта запуска NFS-сервера на Debian (/etc/init.d/nfs-kernel-server ), то можно проследить следующую последовательность: при старте, скрипт проверяет существование файла /etc/exports , наличие nfsd , наличие поддержки файловой системы NFS в (то есть в файле /proc/filesystems ), если все на месте, то запускается демон /usr/sbin/rpc.nfsd , далее проверяет задан ли параметр NEED_SVCGSSD (задается в файле настроек сервера /etc/default/nfs-kernel-server ) и, если задан - запускает демона /usr/sbin/rpc.svcgssd , последним запускает демона /usr/sbin/rpc.mountd . Из данного скрипта видно, что работа сервера NFS состоит из демонов rpc.nfsd, rpc.mountd и если используется Kerberos-аутентификация, то и демон rcp.svcgssd. В краснойшляпе еще запускается демон rpc.rquotad и nfslogd (В Debian я почему-то не нашел информации об этом демоне и о причинах его отсутствия, видимо удален...).
Из этого становиться понятно, что сервер Network File System состоит из следующих процессов (читай - демонов) , расположенных в каталогах /sbin и /usr/sbin:
В NFSv4 при использовании Kerberos дополнительно запускаются демоны:
Кроме указанных выше пакетов, для корректной работы NFSv2 и v3 требуется дополнительный пакет portmap (в более новых дистрибутивах заменен на переименован в rpcbind ). Данный пакет обычно устанавливается автоматически с NFS как зависимый и реализует работу сервера RPС, то есть отвечает за динамическое назначение портов для некоторых служб, зарегистрированных в RPC сервере. Дословно, согласно документации - это сервер, который преобразует номера программ RPC (Remote Procedure Call) в номера портов TCP/UDP. portmap оперирует несколькими сущностями: RPC-вызовами или запросами , TCP/UDP портами , версией протокола (tcp или udp), номерами программ и версиями программ . Демон portmap запускается скриптом /etc/init.d/portmap до старта NFS-сервисов.
Коротко говоря, работа сервера RPC (Remote Procedure Call) заключается в обработке RPC-вызовов (т.н. RPC-процедур) от локальных и удаленных процессов. Используя RPC-вызовы, сервисы регистрируют или удаляют себя в/из преобразователя портов (он же отображатель портов, он же portmap, он же portmapper, он же, в новых версиях, rpcbind), а клиенты с помощью RPC-вызовов направляя запросы к portmapper получают необходимую информацию. Юзер-френдли названия сервисов программ и соответствующие им номера определены в файле /etc/rpc. Как только какой-либо сервис отправил соответствующий запрос и зарегистрировал себя на сервере RPC в отображателе портов, RPC-сервер присваивает сопоставляет сервису TCP и UDP порты на которых запустился сервис и хранит в себе ядре соответствующую информацию о работающем сервисе (о имени), уникальном номере сервиса (в соответствии с /etc/rpc) , о протоколе и порте на котором работает сервис и о версии сервиса и предоставляет указанную информацию клиентам по запросу. Сам преобразователь портов имеет номер программы (100000), номер версии - 2, TCP порт 111 и UDP порт 111. Выше, при указании состава демонов сервера NFS я указал основные RPC номера программ. Я, наверно, немного запутал Вас данным абзацем, поэтому произнесу основную фразу, которая должна внести ясность: основная функция отображателя портов заключается в том, чтобы по запросу клиента, который предоставил номер RPC-программы (или RPC-номер программы) и версию, вернуть ему (клиенту) порт, на котором работает запрошенная программа . Соответственно, если клиенту нужно обратиться к RPC с конкретным номером программы, он сначала должен войти в контакт с процессом portmap на серверной машине и определить номер порта связи с необходимым ему сервисом RPC.
Работу RPC-сервера можно представить следующими шагами:
Для получения информации от RPC-сервера используется утилита rpcinfo . При указании параметров -p host программа выводит список всех зарегистрированных RPC программ на хосте host. Без указания хоста программа выведет сервисы на localhost. Пример:
ARCHIV ~ # rpcinfo -p прог-ма верс прото порт 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 59451 status 100024 1 tcp 60872 status 100021 1 udp 44310 nlockmgr 100021 3 udp 44310 nlockmgr 100021 4 udp 44310 nlockmgr 100021 1 tcp 44851 nlockmgr 100021 3 tcp 44851 nlockmgr 100021 4 tcp 44851 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 51306 mountd 100005 1 tcp 41405 mountd 100005 2 udp 51306 mountd 100005 2 tcp 41405 mountd 100005 3 udp 51306 mountd 100005 3 tcp 41405 mountd
Как видно, rpcinfo отображает (в столбиках слева направо) номер зарегистрированной программы, версию, протокол, порт и название. С помощью rpcinfo можно удалить регистрацию программы или получить информацию об отдельном сервисе RPC (больше опций в man rpcinfo). Как видно, зарегистрированы демоны portmapper версии 2 на udp и tcp портах, rpc.statd версии 1 на udp и tcp портах, NFS lock manager версий 1,3,4, демон nfs сервера версии 2,3,4, а так же демон монтирования версий 1,2,3.
NFS сервер (точнее демон rpc.nfsd) получает запросы от клиента в виде UDP датаграмм на порт 2049. Несмотря на то, что NFS работает с преобразователем портов, что позволяет серверу использовать динамически назначаемые порты, UDP порт 2049 жестко закреплен за NFS в большинстве реализаций.
Процесс монтирования удаленной файловой системы NFS можно представить следующей схемой:
Типичный доступ к удаленной файловой системе можно описать следующей схемой:
Настройка сервера в целом заключается в задании локальных каталогов, разрешенных для монтирования удаленными системами в файле /etc/exports . Это действие называется экспорт иерархии каталогов . Основными источниками информации об экспортированных каталогах служат следующие файлы:
Прим: вообще, в интернете куча трактовок и формулировок назначения файлов xtab, etab, rmtab, кому верить - не знаю Даже на http://nfs.sourceforge.net/ трактовка не однозначна.
В простейшем случае, файл /etc/exports является единственным файлом, требующим редактирования для настройки NFS-сервера. Данный файл управляет следующими аспектами:
Каждая строка файла exports имеет следующий формат:
точка_экспорта клиент1 (опции ) [клиент2(опции) ...]
Где точка_экспорта абсолютный путь экспортируемой иерархии каталогов, клиент1 - n имя одного или более клиентов или IP-адресов, разделенные пробелами, которым разрешено монтировать точку_экспорта . Опции описывают правила монтирования для клиента , указанного перед опциями .
Вот типичный пример конфигурации файла exports:
ARCHIV ~ # cat /etc/exports /archiv1 files(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)
В данном примере компьютерам files и 10.0.0.1 разрешен доступ к точке экспорта /archiv1, при этом, хосту files на чтение/запись, а для хоста 10.0.0.1 и подсети 10.0.230.1/24 доступ только на чтение.
В файле exports используются следующие общие опции (сначала указаны опции применяемые по-умолчанию в большинстве систем, в скобках - не по-умолчанию):
Экспорт символических ссылок и файлов устройств. При экспорте иерархии каталогов, содержащих символические ссылки, необходимо, чтобы объект ссылки был доступен клиентской (удаленной) системе, то есть должно выполняться одно из следующих правил:
Файл устройства относится к интерфейсу . При экспорте файла устройства экспортируется этот интерфейс. Если клиентская система не имеет устройства такого же типа, то экспортированное устройство не будет работать. В клиентской системе, при монтировании NFS объектов можно использовать опцию nodev, чтобы файлы устройств в монтируемых каталогах не использовались.
Опции по умолчанию в разных системах могут различаться, их можно посмотреть в файле /var/lib/nfs/etab. После описания экспортированного каталога в /etc/exports и перезапуска сервера NFS все недостающие опции (читай: опции по-умолчанию) будут отражены в файле /var/lib/nfs/etab.
Для большего понимания нижесказанного я бы посоветовал ознакомиться со статьей . Каждый пользователь Linux имеет свои UID и главный GID, которые описаны в файлах /etc/passwd и /etc/group . Сервер NFS считает, что операционная система удаленного узла выполнила проверку подлинности пользователей и назначила им корректные идентификаторы UID и GID. Экспортирование файлов дает пользователям системы клиента такой же доступ к этим файлам, как если бы они регистрировались напрямую на сервере. Соответственно, когда клиент NFS посылает запрос серверу, сервер использует UID и GID для идентификации пользователя в локальной системе, что может приводить к некоторым проблемам:
Следующие опции задают правила отображения удаленных пользователей в локальных:
Пример использования файла маппинга пользователей:
ARCHIV ~ # cat /etc/file_maps_users # Маппинг пользователей # remote local comment uid 0-50 1002 # сопоставление пользователей с удаленным UID 0-50 к локальному UID 1002 gid 0-50 1002 # сопоставление пользователей с/span удаленным GID 0-50 к локальному GID 1002
Управление сервером NFS осуществляется с помощью следующих утилит:
Утилита nfsstat позволяет посмотреть статистику RPC и NFS серверов. Опции команды можно посмотреть в man nfsstat .
Утилита showmount запрашивает демон rpc.mountd на удалённом хосте о смонтированных файловых системах. По умолчанию выдаётся отсортированный список клиентов. Ключи:
При запуске showmount без аргументов, на консоль будет выведена информация о системах, которым разрешено монтировать локальные каталоги. Например, хост ARCHIV нам предоставляет список экспортированных каталогов с IP адресами хостов, которым разрешено монтировать указанные каталоги:
FILES ~ # showmount --exports archiv Export list for archiv: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2
Если указать в аргументе имя хоста/IP, то будет выведена информация о данном хосте:
ARCHIV ~ # showmount files clnt_create: RPC: Program not registered # данное сообщение говорит нам, что на хосте FILES демон NFSd не запущен
Данная команда обслуживает экспортированные каталоги, заданные в файле /etc/exports , точнее будет написать не обслуживает, а синхронизирует с файлом /var/lib/nfs/xtab и удаляет из xtab несуществующие. exportfs выполняется при запуске демона nfsd с аргументом -r. Утилита exportfs в режиме ядра 2.6 общается с демоном rpc.mountd через файлы каталога /var/lib/nfs/ и не общается с ядром напрямую. Без параметров выдаёт список текущих экспортируемых файловых систем.
Параметры exportfs:
Прежде чем обратиться к файлу на удалённой файловой системе клиент (ОС клиента) должен смонтировать её и получить от сервера указатель на неё . Монтирование NFS может производиться с помощью или с помощью одного из расплодившихся автоматических монтировщиков (amd, autofs, automount, supermount, superpupermount). Процесс монтирования хорошо продемонстрирована выше на иллюстрации.
На клиентах NFS никаких демонов запускать не нужно, функции клиента выполняет модуль ядра kernel/fs/nfs/nfs.ko , который используется при монтировании удаленной файловой системы. Экспортированные каталоги с сервера могут монтироваться на клиенте следующими способами:
Третий способ с autofs в данной статье я рассматривать не буду, ввиду его объемной информации. Возможно в следующих статьях будет отдельное описание.
Пример использования команды mount представлен в посте . Тут я рассмотрю пример команды mount для монтирования файловой системы NFS:
FILES ~ # mount -t nfs archiv:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archiv:/archiv-big /archivs/archiv-big FILES ~ # mount ....... archiv:/archiv-small on /archivs/archiv-small type nfs (rw,addr=10.0.0.6) archiv:/archiv-big on /archivs/archiv-big type nfs (ro,addr=10.0.0.6)
Первая команда монтирует экспортированный каталог /archiv-small на сервере archiv в локальную точку монтирования /archivs/archiv-small с опциями по умолчанию (то есть для чтения и записи). Хотя команда mount в последних дистрибутивах умеет понимать какой тип файловой системы используется и без указания типа, все же указывать параметр -t nfs желательно. Вторая команда монтирует экспортированный каталог /archiv-big на сервере archiv в локальный каталог /archivs/archiv-big с опцией только для чтения (ro ). Команда mount без параметров наглядно отображает нам результат монтирования. Кроме опции только чтения (ro), возможно задать другие основные опции при монтировании NFS :
Атрибуты файлов , хранящиеся в (индексных дескрипторах), такие как время модификации, размер, жесткие ссылки, владелец, обычно изменяются не часто для обычных файлов и еще реже - для каталогов. Многи программы, например ls, обращаются к файлам только для чтения и не меняют атрибуты файлов или содержимое, но затрачивают ресурсы системы на дорогостоящие сетевые операции. Чтобы избежать ненужных затрат ресурсов, можно кэшировать данные атрибуты . Ядро использует время модификации файла, чтобы определить устарел ли кэш, сравнивая время модификации в кэше и время модификации самого файла. Кэш атрибутов периодически обновляется в соответствии с заданными параметрами:
Следующие опции управляют действиями NFS при отсутствии ответа от сервера или в случае возникновения ошибок ввода/вывода:
Подобрать оптимальный timeo для определенного значения передаваемого пакета (значений rsize/wsize), можно с помощью команды ping:
FILES ~ # ping -s 32768 archiv PING archiv.DOMAIN.local (10.0.0.6) 32768(32796) bytes of data. 32776 bytes from archiv.domain.local (10.0.0.6): icmp_req=1 ttl=64 time=0.931 ms 32776 bytes from archiv.domain.local (10.0.0.6): icmp_req=2 ttl=64 time=0.958 ms 32776 bytes from archiv.domain.local (10.0.0.6): icmp_req=3 ttl=64 time=1.03 ms 32776 bytes from archiv.domain.local (10.0.0.6): icmp_req=4 ttl=64 time=1.00 ms 32776 bytes from archiv.domain.local (10.0.0.6): icmp_req=5 ttl=64 time=1.08 ms ^C --- archiv.DOMAIN.local ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 0.931/1.002/1.083/0.061 ms
Как видно, при отправке пакета размером 32768 (32Kb) время его путешествия от клиента до сервера и обратно плавает в районе 1 миллисекунды. Если данное время будет зашкаливать за 200 мс, то стоит задуматься о повышении значения timeo, чтобы оно превышало значение обмена в три-четыре раза. Соответственно, данный тест желательно делать во время сильной загрузки сети
Заметка скопипсчена с блога http://bog.pp.ru/work/NFS.html, за что ему огромное спасибо!!!
Запуск сервера NFS, монтирования, блокировки, квотирования и статуса с "правильными" портами (для сетевого экрана)
Если вы хотите сделать ваш разделённый NFS каталог открытым и с правом записи, вы можете использовать опцию all_squash в комбинации с опциями anonuid и anongid . Например, чтобы установить права для пользователя "nobody" в группе "nobody", вы можете сделать следующее:
ARCHIV ~ # cat /etc/exports # Доступ на чтение и запись для клиента на 192.168.0.100, с доступом rw для пользователя 99 с gid 99 /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99)) # Доступ на чтение и запись для клиента на 192.168.0.100, с доступом rw для пользователя 99 с gid 99 /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))
Это также означает, что если вы хотите разрешить доступ к указанной директории, nobody.nobody должен быть владельцем разделённой директории:
man mount
man exports
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm - производительность NFS от IBM.
С Уважением, Mc.Sim!
N FS (Network File System ) в основном разработана для совместного использования файлов и папок между /Unix систем от компании Sun Microsystems в 1980 году . Она позволяет монтировать локальные файловые системы по сети и удаленных хостов, для взаимодействия с ними так, как будто они установлены локально на той же системе. С помощью NFS , мы можем настроить общий доступ к файлам между Unix в Linux системе и Linux для системы Unix .
Cервис System V-launched . Серверный пакет NFS включает в себя три средства, входящие в состав пакетов portmap и nfs-Utils .
Для настройки монтирования NFS , мы будем нуждаться по крайней мере, в двух машинах Linux /Unix . Вот в этом учебнике, мы будем использовать два сервера.
Нам нужно установить пакеты NFS на нашем сервере NFS , а также на машине клиента NFS . Мы можем установить его с помощью “ ” (Red Hat Linux) и установочный пакет “apt-get ” (Debian и Ubuntu ).
# yum install nfs-utils nfs-utils-lib # yum install portmap (not required with NFSv4) # apt-get install nfs-utils nfs-utils-lib
Теперь запустите службы на обеих машинах.
# /etc/init.d/portmap start # /etc/init.d/nfs start # chkconfig --level 35 portmap on # chkconfig --level 35 nfs on
После установки пакетов и запуск сервисов на обеих машинах, нам нужно настроить обе машины для совместного использования файлов.
Сначала настроим сервер NFS .
# mkdir /nfsshare
Теперь нам нужно сделать запись в “/etc/exports ” и перезапустить службы, чтобы сделать наш каталог разделяемыми в сети.
# vi /etc/exports /nfsshare 192.168.0.60(rw,sync,no_root_squash)
В приведенном выше примере, есть каталог, в разделе / под названием “nfsshare “, в настоящее время совместно с клиентом IP “192.168.0.60 ” с привилегиями чтения и записи (RW ), вы можете также использовать имя хоста клиента вместо IP в приведенном выше примере.
Некоторые другие варианты мы можем использовать в файлы “/etc/exports ” для совместного использования файлов выглядит следующим образом.
Для большего количества вариантов с “/etc/exports “, рекомендуется прочитать страницы руководства для экспорта .
После настройки NFS -сервера, нам необходимо смонтировать этот общий каталог или раздел на клиентском сервере.
Теперь на клиенте NFS , нам нужно смонтировать этот каталог для доступа к нему на местном уровне. Для этого, во-первых, мы должны выяснить, какие ресурсы доступны на удаленном сервере или сервере NFS.
# showmount -e 192.168.0.55 Export list for 192.168.0.55: /nfsshare 192.168.0.60
Для того, чтобы смонтировать общий NFS каталог, мы можем использовать следующую команду монтирования.
# mount -t nfs 192.168.0.55:/nfsshare /mnt/nfsshare
Приведенная выше команда установит общий каталог в “/mnt/nfsshare ” на сервере клиента. Вы можете проверить его следующей командой.
# mount | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) 192.168.0.55:/nfsshare on /mnt type nfs (rw,addr=192.168.0.55)
Выше команда mount монтирует на NFS совместно используемый каталог на NFS клиента временно, чтобы смонтировать каталог NFS постоянно на вашей системе вне зависимости от перезагрузок, нам нужно сделать запись в “/etc/fstab “.
# vi /etc/fstab
Добавьте следующую новую строку, как показано ниже.
192.168.0.55:/nfsshare /mnt nfs defauls 0 0
Мы можем протестировать нашу установку сервера NFS путем создания тестового файла на стороне сервера и проверить его наличие на NFS клиента стороне или наоборот.
Мы создали новый текстовый файл с именем “nfstest.txt ” в этом общем каталоге.
# cat > /nfsshare/nfstest.txt This is a test file to test the working of NFS server setup.
Перейдите в общий каталог на сервере клиента и вы обнаружите общий файл без какого-либо ручного обновления или службы перезагрузки.
# ll /mnt/nfsshare total 4 -rw-r--r-- 1 root root 61 Sep 21 21:44 nfstest.txt root@nfsclient ~]# cat /mnt/nfsshare/nfstest.txt This is a test file to test the working of NFS server setup.
Если вы хотите размонтировать этот общий каталог с сервера после того, как вы закончите с обменом файлами, вы можете просто размонтировать этот конкретный каталог с помощью команды “umount “. Смотрите этот пример ниже.
Root@nfsclient ~]# umount /mnt/nfsshare
Вы можете видеть, что монтирование было удалено в файловой системе.
# df -h -F nfs
Вы увидите, что эти общие каталоги не доступны больше.
Некоторые более важные команды для NFS .
Это все про монтирование NFS на данный момент, если интересно, можете прочитать гид о том . Оставляйте свои
NFS: удобная и перспективная сетевая файловая система
Сетевая файловая система – это сетевая абстракция поверх обычной файловой системы, позволяющая удаленному клиенту обращаться к ней через сеть так же, как и при доступе к локальным файловым системам. Хотя NFS не является первой сетевой системой, она сегодня развилась до уровня наиболее функциональной и востребованной сетевой файловой системы в UNIX®. NFS позволяет организовать совместный доступ к общей файловой системе для множества пользователей и обеспечить централизацию данных для минимизации дискового пространства, необходимого для их хранения.
Эта статья начинается с краткого обзора истории NFS, а затем переходит к исследованию архитектуры NFS и путей её дальнейшего развития.
Первая сетевая файловая система называлась FAL (File Access Listener - обработчик доступа к файлам) и была разработана в 1976 году компанией DEC (Digital Equipment Corporation). Она являлась реализацией протокола DAP (Data Access Protocol – протокол доступа к данным) и входила в пакет протоколов DECnet. Как и в случае с TCP/IP, компания DEC опубликовала спецификации своих сетевых протоколов, включая протокол DAP.
NFS была первой современной сетевой файловой системой, построенной поверх протокола IP. Её прообразом можно считать экспериментальную файловую систему, разработанную в Sun Microsystems в начале 80-х годов. Учитывая популярность этого решения, протокол NFS был представлен в качестве спецификации RFC и впоследствии развился в NFSv2. NFS быстро утвердилась в качестве стандарта благодаря способности взаимодействовать с другими клиентами и серверами.
Впоследствии стандарт был обновлен до версии NFSv3, определенной в RFC 1813. Эта версия протокола была более масштабируема, чем предыдущие, и поддерживала файлы большего размера (более 2 ГБ), асинхронную запись и TCP в качестве транспортного протокола. NFSv3 задала направление развития файловых систем для глобальных (WAN) сетей. В 2000 году в рамках спецификации RFC 3010 (переработанной в версии RFC 3530) NFS была перенесена в корпоративную среду. Sun представила более защищенную NFSv4 c поддержкой сохранения состояния (stateful) (предыдущие версии NFS не поддерживали сохранение состояния, т.е. относились к категории stateless). На текущий момент последней версией NFS является версия 4.1, определенная в RFC 5661, в которой в протокол посредством расширения pNFS была добавлена поддержка параллельного доступа для распределенных серверов.
История развития NFS, включая конкретные RFC, описывающие её версии, показана на рисунке 1.
Как ни удивительно, NFS находится в стадии разработки уже почти 30 лет. Она является исключительно стабильной и переносимой сетевой файловой системой с выдающимися характеристиками масштабируемости, производительности и качества обслуживания. В условиях увеличения скорости и снижения задержек при обмене данными внутри сети NFS продолжает оставаться популярным способом реализации файловой системы внутри сети. Даже в случае локальных сетей виртуализация побуждает хранить данные в сети, чтобы обеспечить виртуальным машинам дополнительную мобильность. NFS также поддерживает новейшие модели организации вычислительных сред, нацеленные на оптимизацию виртуальных инфраструктур.
NFS использует стандартную архитектурную модель "клиент-сервер" (как показано на рисунке 2). Сервер отвечает за реализацию файловой системы совместного доступа и хранилища, к которому подключаются клиенты. Клиент реализует пользовательский интерфейс к общей файловой системе, смонтированной внутри локального файлового пространства клиента.
В ОС Linux® виртуальный коммутатор файловой системы (virtual file system switch - VFS) предоставляет средства для одновременной поддержки на одном хосте нескольких файловых систем (например, файловой системы ISO 9660 на CD-ROM и файловой системы ext3fs на локальном жестком диске). Виртуальный коммутатор определяет, к какому накопителю выполняется запрос, и, следовательно, какая файловая система должна использоваться для обработки запроса. Поэтому NFS обладает такой же совместимостью, как и другие файловые системы, применяющиеся в Linux. Единственное отличие NFS состоит в том, что запросы ввода/вывода вместо локальной обработки на хосте могут быть направлены для выполнения в сеть.
VFS определяет, что полученный запрос относится к NFS, и передает его в обработчик NFS, находящийся в ядре. Обработчик NFS обрабатывает запрос ввода/вывода и транслирует его в NFS-процедуру (OPEN , ACCESS , CREATE , READ , CLOSE , REMOVE и т.д.). Эти процедуры, описанные в отдельной спецификации RFC, определяют поведение протокола NFS. Необходимая процедура выбирается в зависимости от запроса и выполняется с помощью технологии RPC (вызов удаленной процедуры). Как можно понять по названию, RPC позволяет осуществлять вызовы процедур между различными системами. RPC-служба соединяет NFS-запрос с его аргументами и отправляет результат на соответствующий удаленный хост, а затем следит за получением и обработкой ответа, чтобы вернуть его инициатору запроса.
Также RPC включает в себя важный уровень XDR (external data representation – независимое представление данных), гарантирующий, что все пользователи NFS для одинаковых типов данных используют один и тот же формат. Когда некая платформа отправляет запрос, используемый ею тип данных может отличаться от типа данных, используемого на хосте, обрабатывающего этот запрос. Технология XDR берет на себя работу по преобразованию типов в стандартное представление (XDR), так что платформы, использующие разные архитектуры, могут взаимодействовать и совместно использовать файловые системы. В XDR определен битовый формат для таких типов, как float , и порядок байтов для таких типов, как массивы постоянной и переменной длины. Хотя XDR в основном известна благодаря применению в NFS, это спецификация может быть полезна во всех случаях, когда приходится работать в одной среде с различными архитектурами.
После того как XDR переведет данные в стандартное представление, запрос передается по сети с помощью определенного транспортного протокола. В ранних реализациях NFS использовался протокол UDP, но сегодня для обеспечения большей надежности применяется протокол TCP.
На стороне NFS-сервера применяется схожий алгоритм. Запрос поднимается по сетевому стеку через уровень RPC/XDR (для преобразования типов данных в соответствии с архитектурой сервера) и попадает в NFS-сервер, который отвечает за обработку запроса. Там запрос передается NFS-демону для определения целевой файловой системы, которой он адресован, а затем снова поступает в VFS для обращения к этой файловой системе на локальном диске. Полностью схема этого процесса приведена на рисунке 3. При этом локальная файловая система сервера – это стандартная для Linux файловая система, например, ext4fs. По сути NFS – это не файловая система в традиционном понимании этого термина, а протокол удаленного доступа к файловым системам.
Для сетей с большим временем ожидания в NFSv4 предлагается специальная составная процедура (compound procedure ). Эта процедура позволяет поместить несколько RPC-вызовов внутрь одного запроса, чтобы минимизировать затраты на передачу запросов по сети. Также в этой процедуре реализован механизм callback-функций для получения ответов.
Когда клиент начинает работать с NFS, первым действием выполняется операция mount , которая представляет собой монтирование удаленной файловой системы в пространство локальной файловой системы. Этот процесс начинается с вызова процедуры mount (одной из системных функций Linux), который через VFS перенаправляется в NFS-компонент. Затем с помощью RPC-вызова функции get_port на удаленном сервере определяется номер порта, который будет использоваться для монтирования, и клиент через RPC отправляет запрос на монтирование. Этот запрос на стороне сервера обрабатывается специальным демоном rpc.mountd , отвечающим за протокол монтирования (mount protocol ). Демон проверяет, что запрошенная клиентом файловая система имеется в списке систем, доступных на данном сервере. Если запрошенная система существует и клиент имеет к ней доступ, то в ответе RPC-процедуры mount указывается дескриптор файловой системы. Клиент сохраняет у себя информацию о локальной и удаленной точках монтирования и получает возможность осуществлять запросы ввода/вывода. Протокол монтирования не является безупречным с точки зрения безопасности, поэтому в NFSv4 вместо него используются внутренние RPC-вызовы, которые также могут управлять точками монтирования.
Для считывания файла его необходимо сначала открыть. В RPC нет процедуры OPEN , вместо этого клиент просто проверяет, что указанные файл и каталог существуют в смонтированной файловой системе. Клиент начинает с выполнения RPC-запроса GETATTR к каталогу, в ответ на который возвращаются атрибуты каталога или индикатор, что каталог не существует. Далее, чтобы проверить наличие файла, клиент выполняет RPC-запрос LOOKUP . Если файл существует, для него выполняется RPC-запрос GETATTR , чтобы узнать атрибуты файла. Используя информацию, полученную в результате успешных вызовов LOOKUP и GETATTR , клиент создает дескриптор файла, который предоставляется пользователю для выполнения будущих запросов.
После того как файл идентифицирован в удаленной файловой системе, клиент может выполнять RPC-запросы типа READ . Этот запрос состоит из дескриптора файла, состояния, смещения и количества байт, которое следует считать. Клиент использует состояние (state ), чтобы определить может ли операция быть выполнена в данный момент, т.е. не заблокирован ли файл. Смещение (offset ) указывает, с какой позиции следует начать чтение, а счетчик байт (count ) определяет, сколько байт необходимо считать. В результате RPC-вызова READ сервер не всегда возвращает столько байт, сколько было запрошено, но вместе с возвращаемыми данными всегда передает, сколько байт было отправлено клиенту.
Наибольший интерес представляют две последние версии NFS – 4 и 4.1, на примере которых можно изучить наиболее важные аспекты эволюции технологии NFS.
До появления NFSv4 для выполнения таких задач по управлению файлами, как монтирование, блокировка и т.д. существовали специальные дополнительные протоколы. В NFSv4 процесс управления файлами был упрощен до одного протокола; кроме того, начиная с этой версии UDP больше не используется в качестве транспортного протокола. NFSv4 включает поддержку UNIX и Windows®-семантики доступа к файлам, что позволяет NFS "естественным" способом интегрироваться в другие операционные системы.
В NFSv4.1 для большей масштабируемости и производительности была введена концепция параллельной NFS (parallel NFS - pNFS). Чтобы обеспечить больший уровень масштабируемости, в NFSv4.1 реализована архитектура, в которой данные и метаданные (разметка ) распределяются по устройствам аналогично тому, как это делается в кластерных файловых системах. Как показано на , pNFS разделяет экосистему на три составляющие: клиент, сервер и хранилище. При этом появляются два канала: один для передачи данных, а другой для передачи команд управления. pNFS отделяет данные от описывающих их метаданных, обеспечивая двухканальную архитектуру. Когда клиент хочет получить доступ к файлу, сервер отправляет ему метаданные с "разметкой". В метаданных содержится информация о размещении файла на запоминающих устройствах. Получив эту информацию, клиент может обращаться напрямую к хранилищу без необходимости взаимодействовать с сервером, что способствует повышению масштабируемости и производительности. Когда клиент заканчивает работу с файлом, он подтверждает изменения, внесенные в файл и его "разметку". При необходимости сервер может запросить у клиента метаданные с разметкой.
С появлением pNFS в протокол NFS было добавлено несколько новых операций для поддержки такого механизма. Метод LayoutGet используется для получения метаданных с сервера, метод LayoutReturn "освобождает" метаданные, "захваченные" клиентом, а метод LayoutCommit загружает "разметку", полученную от клиента, в хранилище, так что она становится доступной другим пользователям. Сервер может отозвать метаданные у клиента с помощью метода LayoutRecall . Метаданные с "разметкой" распределяются между несколькими запоминающими устройствами, чтобы обеспечить параллельный доступ и высокую производительность.
Данные и метаданные хранятся на запоминающих устройствах. Клиенты могут выполнять прямые запросы ввода/вывода на основе полученной разметки, а сервер NFSv4.1 хранит метаданные и управляет ими. Сама по себе эта функциональность и не нова, но в pNFS была добавлена поддержка различных методов доступа к запоминающим устройствам. Сегодня pNFS поддерживает использование блочных протоколов (Fibre Channel), объектных протоколов и собственно NFS (даже не в pNFS-форме).
Развитие NFS продолжается, и в сентябре 2010 года были опубликованы требования к NFSv4.2. Некоторые из нововведений связаны с наблюдающейся миграцией технологий хранения данных в сторону виртуализации. Например, в виртуальных средах с гипервизором весьма вероятно возникновение дублирования данных (несколько ОС выполняют чтение/запись и кэширование одних и тех же данных). В связи с этим желательно, чтобы система хранения данных в целом понимала, где происходит дублирование. Такой подход поможет сэкономить пространство в кэше клиента и общую емкость системы хранения. В NFSv4.2 для решения этой проблемы предлагается использовать "карту блоков, находящихся в совместном доступе" (block map of shared blocks). Поскольку современные системы хранения все чаще оснащаются собственными внутренними вычислительными мощностями, вводится копирование на стороне сервера, позволяющее снизить нагрузку при копировании данных во внутренней сети, когда это можно эффективно делать на самом запоминающем устройстве. Другие инновации включают в себя субфайловое кэширование для флэш-памяти и рекомендации по настройке ввода-вывода на стороне клиента (например, с использованием mapadvise).
Хотя NFS – самая популярная сетевая файловая система в UNIX и Linux, кроме нее существуют и другие сетевые файловые системы. На платформе Windows® чаще всего применяется SMB, также известная как CIFS ; при этом ОС Windows также поддерживает NFS, равно как и Linux поддерживает SMB.
Одна из новейших распределенных файловых систем, поддерживаемых в Linux - Ceph - изначально спроектирована как отказоустойчивая POSIX-совместимая файловая система. Дополнительную информацию о Ceph можно найти в разделе .
Стоит также упомянуть файловые системы OpenAFS (Open Source-версия распределенной файловой системы Andrew, разработанной в университете Карнеги-Меллона и корпорации IBM), GlusterFS (распределенная файловая система общего назначения для организации масштабируемых хранилищ данных) и Lustre (сетевая файловая система с массовым параллелизмом для кластерных решений). Все эти системы с открытым исходным кодом можно использовать для построения распределенных хранилищ.
Развитие файловой системы NFS продолжается. Подобно ОС Linux, подходящей для поддержки и бюджетных, и встраиваемых, и высокопроизводительных решений, NFS предоставляет архитектуру масштабируемых решений для хранения данных, подходящих как отдельным пользователям, так и организациям. Если посмотреть на путь, уже пройденный NFS, и перспективы её дальнейшего развития, становится понятно, что эта файловая система будет продолжать изменять наши взгляды на то, как реализуются и используются технологии хранения файлов.
Что такое тонкий клиент (thin client)?
Тонким клиентом называется устройство ввода и отображения информации (терминал). Физически тонкий клиент это компактный и бесшумный компьютер без жесткого диска (и без вентиляторов), загрузка основной операционной системы которого происходит на сервере. Все пользовательские приложения выполняются на терминальном сервере (сервере приложений), но для пользователя это совершенно прозрачно. Так как вся вычислительная нагрузка ложится на сервер, то тонкий клиент обладает минимальной аппаратной конфигурацией без какого-либо ущерба производительности.
Для чего применяются тонкие клиенты?
Тонкие клиенты применяются в организациях, где большинство пользователей используют компьютеры для выполнения однотипных задач: работа с базами данных, информационные каталоги (магазины, аптеки, библиотеки), работа в качестве банковских терминалов и т.д.
Какая операционная система на терминале?
Терминальная операционная система "прошита" в устройстве disk-on-module небольшого объема (флэш память объемом 64Мб-1Гб). Она обеспечивает базовый функционал работы клиента: начальную загрузку, корректную работу видеоадаптера, аудио, работу периферийных устройств подключенных непосредственно к терминальному клиенту (мышь, клавиатура, локальные принтеры, USB-флэш накопители). Также операционная система тонкого клиента может содержать в своем составе интернет-браузер, который может работать автономно (без терминального сервера). При переходе в терминальный режим клиент начинает работать с серверной операционной системой, индивидуальный сеанс которой запускается на терминальном сервере. С этого момента терминал становится просто средством отображения и ввода информации.
Какие лицензии на ПО нужны?
Для организации работы группы терминалов с ПО Microsoft в общем случае понадобятся следующие лицензии:
Лицензии на встроенные ОС на терминалах (Win CE 5.0 или Win XP Embedded), лицензия на серверную ОС (Windows Server 2008), лицензии клиентского доступа (Windows Server CAL 2008) — необходимое число лицензий равно числу терминалов, лицензии терминального доступа (Windows Trmnl Svcs CAL 2008) — необходимое число лицензий равно числу терминалов или пользователей. Лицензирование прикладных программ, как правило, осуществляется по принципу сколько пользователей (терминалов), столько и лицензий.
Преимущества применения тонких клиентов вместо обычных ПК:
Сравнение стоимости внедрения решения для терминалов и ПК для рабочей группы на 40 пользователей:
Наименование | Стоимость, руб | Количество | Всего (для тонких клиентов), руб | Всего (для ПК), руб |
ОС Windows Server 2003 R2 Standard (Сервер + 5 клиентских лицензий) | 22131 | 1 | 22131 | 22131 |
Windows Server 2003 CAL 5 clt. (пакет в 5 клиентских лицензий) | 4214 | 7 | 29498 | 29498 |
Лицензии терминального доступа (Terminal Server Client Access License) | 2260 | 40 | 90400 | 0 |
ОС Windows CE 5.0 | включено | 40 | 0 | 0 |
ОС Windows XP Professional | 4209 | 40 | 0 | 168360 |
Сервер для решения на ПК Team Server 3000P | 36600 | 1 | 0 | 36600 |
Сервер для решения на тонких клиентах Team Server 1500A | 68400 | 1 | 68400 | 0 |
Тонкий клиент Norma-TS L66VC-CE | 6499 | 40 | 259960 | 0 |
ПК Team Office b352 | 8372 | 40 | 0 | 334880 |
Монитор LCD 17" | 7369 | 40 | 294760 | 294760 |
Клавиатура и мышь | 651 | 40 | 26040 | 26040 |
Итого: | 791189 | 912269 | ||
Стоимость рабочего места: | 19779 | 22806 | ||
В данной статье будет рассмотрена технология «тонких клиентов», описаны преимущества их применения, типы клиентов и примеры их использования.
В типичной сети небольшой организации присутствуют, обычно, полтора – два десятка компьютеров, один – два сервера и небольшое количество других устройств. Обслуживают такую систему один – два системных администратора. До тех пор, пока масштабы организации существенно не меняются, этого вполне достаточно.
Но что происходит при существенном увеличении количества элементов сети (хотя бы до 50-70 компьютеров)? Растет число компьютеров, растет нагрузка на сервер и, в особенности, на систему хранения данных,начинает «тормозить» сеть. Чтобы повысить производительность, закупается новое серверное оборудование, новые компьютеры. Естественно, нанимаются системные администраторы, потому как обслуживать такое количество техники один – два человека неспособны в принципе. Причем расширение штата должно быть весьма значительно, поскольку, как известно любому IT – специалисту, с компьютерами пользователей постоянно происходят самые загадочные явления. К этому необходимо прибавить стоимость самого закупаемого оборудования, поскольку современное программное обеспечение либо отказывается работать на компьютерах старше двух – трех лет, либо работает, но с неудовлетворительной скоростью.
Что самое интересное, все эти трудоемкие и дорогостоящие меры не приносят желаемого результата – сеть работает все медленнее, количество сбоев постоянно увеличивается. В чем же причина? Причина в неправильном принципе организации корпоративной сети.
При высокой популярности на западе, в России терминальные сети до сих пор малоизвестны. Основная причина тут скорее психологическая.
Сам по себе «тонкий клиент» (далее терминал) представляет собой несложное устройство, предназначенное для работы в SBC (Server Based Computing) среде. В процессе работы они взаимодействуют с развернутыми на сервере приложениями посредством ПО эмуляции терминала, отображающего передаваемую сервером информацию. Технически это компактные (размером со среднюю книгу) компьютеры, не отличающиеся высокими техническими параметрами (приблизительно 500MHz, 128 RAM). У терминалов отсутствуют дисковые приводы и устройства хранения информации. Таким образом, без производительного серверного оборудования такие компьютеры работать не способны.
Именно в этом заключается причина невысокой популярности терминальных решений –хороший сервер стоит недешево и в краткосрочной перспективе терминалы не выглядят привлекательным решением по сравнению с традиционными компьютерами («толстыми клиентами»).
Ситуация радикально меняется, если провести небольшой анализ расходов на сетевую инфраструктуру за значительный период времени. Достаточно типичное разбиение по статьям расходов выглядит, приблизительно, следующим образом:
Не сложно заметить, что основные средства уходят не на закупку «железа», а направильную его настройку и поддержку в рабочем состоянии. И именно поэтому параметру терминальные решения выигрывают в разы. Используя терминальный доступ, администратор больше не должен бегать по всей организации и пытаться объединить конгломерат разнообразных по конфигурации, настройкам и программному обеспечению компьютеров в единую работоспособную систему. Процесс установки, настройки и интеграции очередного терминала занимает буквально несколько минут, причем не отходя от рабочего места (как правило, в пределах одной организации используются терминалы стандартной конфигурации и вся настройка заключается в создании учетной записи на стороне сервера).
Многие полагают: «Раз все вычисления производятся на стороне сервера, значит его производительность должна быть равна совокупной производительности всех компьютеров, которые ранее использовали пользователи». Но это не так — с уверенностью можно утверждать, что 95% времени персональный компьютер используется на 5%, имея ярко выраженный пиковый характер загрузки. Причем пики эти от всех клиентов не носят одновременный характер. Кроме того, если вопрос производительности вообще встает, то гораздо эффективнее (и дешевле) увеличить ресурсы сервера на 50% вместо наращивания ресурсов пятидесяти клиентов по 20% на каждого.
Можно выделить следующие основные преимущества «тонких клиентов»:
Экономия, защита вложений
Терминалы не нуждаются в модернизации, в терминалах нет большинства дорогостоящих комплектующих — жестких дисков, большого объема памяти, внешней видеокарты и др. Снижается совокупная стоимость владения системой за счёт уменьшения времени обслуживания пользовательских рабочих мест, возможности быстрого восстановления вышедшего из строя рабочего места, экономия электроэнергии (до 80%)
Надежность
Большее время наработки на отказ. Отсутствие механических компонентов, а также сама по себе упрощенная архитектура повышают надежность системы. Исключается возможность потери информации при сбоях станции (вся информация хранится на сервере)
Длительный срок эксплуатации
Терминальные станции значительно менее подвержены моральному устареванию, чем обычные ПК
Безопасность хранения информации
Высокий уровень безопасности системы. Отсутствие дисков и дисководов существенно снижает риски утечки информации и занесения в систему вирусов.
Отсутствует передача данных по сети, на клиентские места передается только изображение экрана. Возможность программного шифрования данных без использования дополнительного оборудования исключает вероятность несанкционированного перехвата;
Централизованное хранение данных и настроек упрощает процедуры резервного копирования, Отпадает необходимость заботы о сохранности данных и программ на рабочих станциях.
Простота администрирования
Упрощение администрирования и снижение расходов на поддержание пользователей. Пользователи не могут повлиять на стабильность работы ПО на своем рабочем месте. Администрирование терминальной системы полностью централизованно. Для разрешения проблем у пользователя администратору достаточно подключиться к пользовательской сессии. Упрощается контроль и управление используемым в компании программным обеспечением. Простая организация контроля пользователей и ограничения нежелательной деятельности.
Возможность удаленного доступа
Пользователь получает доступ к своему виртуальному рабочему столу с любого терминала, подключенного к серверу. Тонкий клиент можно подключить даже из своего дома, достаточно подключить его к терминальному серверу (к примеру, через интернет). Предварительная и однократная настройка занимает всего несколько минут, после чего пользователь сразу попадает на свое рабочее место с уже установленными программами (на сервере).
Высвобождение ресурсов, снижение загрузки сети
Снижается загрузка локальной сети, так как на терминал передаются только состояния экрана, в то время как на персональный компьютер могут передаваться значительные объемы данных. В случае нехватки вычислительных ресурсов, достаточно провести модернизацию терминального сервера, а не всего парка персональных компьютеров.
Эргономичность
Терминалы работают бесшумно, так как тонкие клиенты, как правило, либо не имеют совсем, либо оснащены одним вентилятором. Небольшие размеры и эргономичность. Тонкие клиенты неспроста носят такое название. Их размеры обычно не превышают размеров большой книги, и они не занимают много места на столе.
На рынке сегодня представлены терминальные решения трех типов:
X- терминалы
X-терминалы похожи на старые не интеллектуальные дисплеи, которые раньше широко использовались в качестве устройств доступа к мини-ЭВМ и мэйн-фрэймам. X-терминал по протоколу X-Window взаимодействует с функционирующими на сервере Linux или Unix приложениями. Он исполняет программу X-сервер идля вывода информации использует локальные шрифты. Для такого функционирования требуется больше ресурсов центрального процессора и больший объем оперативной памяти, чем для нормальной работы “тонких” клиентов других категорий. К тому же X-терминалы должны сохранять информацию о состоянии своих рабочих сеансов.
Windows-терминалы
Windows-терминалы работают под управлением той или иной разновидности ОС Windows и поддерживают протоколы ICA и RDP. Они загружают свою ОС из ПЗУ или с сервера (где хранится ее образ) и визуализируют экраны приложений, функционирующих на сервере. Windows-терминалы используют ПО “тонкого” клиента - клиентские программы служб Microsoft Terminal Services и Citrix. Хотя для визуализации экранов приложений на Windows-терминале нужно меньше ресурсов центрального процессора и ОЗУ, чем для отображения их на X-терминале, эти ресурсы все же должны наличествовать в достаточно большом объеме.
“Тонкие”клиенты Sun Ray ориентированы на работу в средах Solaris. В отличие от X- или Windows-терминалов они не хранят информацию о состоянии своих сеансов (она хранится на сервере). Продукт Sun Ray функционирует под управлением микропрограммного обеспечения, которое реализует его связь с серверами Sun Ray. Кроме того, данные “тонкие” клиенты работают со смарт-картами. Эти карты используются для аутентификации пользователей,а также могут поддерживать те или иные приложения и хранить данные. Функционируя на сервере Solaris и управляя пользовательскими сеансами, программа Session Manager (часть серверного ПО Sun Ray) направляет устройствам Sun Ray соответствующую видеоинформацию (см. рисунок). Поскольку на клиентах, о которых идет речь, не хранится информация о состоянии пользовательских сеансов, последние могут быть инициированы или возобновлены с помощью любого клиента. Таким образом, сеанс способен как бы следовать за своим пользователем
Требования к сети
При типовой работе трафик от клиента к серверу не превышает одного килобайта в секунду, максимальное значение, зарегистрированное в тестовом сеансе — 1006 байт/c. Трафик в обратном направлении (сервер-клиент) составляет несколько десятков килобайт в секунду. Максимальное значение, достигнутое в ходе сеанса, — 106664 байт/с (достигнуто при открытиии окна IE с графикой и динамическими flash-баннерами на mail.ru). Среднее значение трафика составляет около 5-6 Кбайт/c (работав Internet Explorer, просмотр документов WinWord без графики, открытие и работа программ со стандартными элементами пользовательского интерфейса). Такой низкий трафик достигается не только компрессией передаваемых данных (доходит до 300%), но и, главным образом, тем, что во время сеанса клиенту передаются только команды на локальное отображение элементов пользовательского интерфейса (окна, кнопки, шрифтовое оформление) вместо их изображения. Превышение максимальной пропускной способности канала не приводит к сбою, а лишь вызывает замедление обновления экрана клиента. Это позволяет при необходимости работать даже через модемное соединение с полосой пропускания 2-5Кбит/с. Если принять за номинальную рабочую полосу пропускания Ethernet сети 100 Мбит, оставляя необходимый запас прочности для критичного трафика примерно 2-3 Мбайт/с, то данная полоса дает возможность работать либо 20-30 клиентам в самом жестком режиме без малейшей задержки обновления экрана, либо до 500 клиентов в случае обычной офисной работы без активной динамической графики, требующей постоянной пересылки графических изображений на экран. С учетом того, что даже в случае динамической графики загрузка канала имеет пиковый характер, то вполне возможно и некоторое превышение этих величин без ущерба для удобства работы клиентов (пики прогрузки экрана одних машин будут приходиться на периоды ожидания реакции пользователя других клиентов).
Применение
Тонкие клиенты могут быть применены везде, где большое количество пользователей решают однотипные офисные или специализированные задачи, не требующие больших ресурсов ПК. Это могут быть, например:
Использование терминалов невозможно если работа предполагает обработку значительных объемов данных – работа с графикой, звуком, видео, проведение расчетов и т.д. Также неприменимы приложения, генерирующие излишний трафик(просмотр видеофильмов, современные 3D – игры)
Заключение
Таким образом, преимущества тонких клиентов делают их достаточно привлекательными для многих организаций. Надо лишь четко определить для себя достоинства и ограничения терминального подхода в организации рабочих мест. Важно также отметить, что совокупная стоимость владения (TCO — Total Cost of Ownership) оказывается существенно ниже (по оценке Gartner Group - на 5-40 процентов) при использовании на рабочих местах именно тонких клиентов, а не полноценных компьютеров. Ведь TCO складывается не только из затрат на закупку оборудования, но и затрат на администрирование и модернизацию этого оборудования. Снижения вероятности сбоев оборудования также приводит к уменьшению ТСО.