Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> NFS & Win2k3

Работа NFS с Windows

Автор: Raven2000.


  При работе с *NIX системами на предприятиях мне часто приходится организовывать совместную работу с Windows2003. В работе необходимо обеспечить взаимодействие UNIX <-> WIN, но бывает, что доступ по FTP или SCP не устраивает. Sambа я не перевариваю за ее ммм прихотливость, да и незачем ее ставить из-за такой мелочи.
Обычно нужно подобие сетевого диска для Win2003. За этим воспользуемся NFS. До
недавнего времени Win2003 не могла корректно обеспечить работу с сетевой файловой системой. И только с выходом Windows Server 2003 R2 все встало на свои места.

Содержание:

  • NFS
         NFS Сервер
         NFS Клиент
  • Windows2003
         Компоненты Windows
         Windows mount info
         Mount
  • Windows Services for UNIX Version 3.5 (WinXP Pro)
  • Информация о работе NFS
  • Литература

  • NFS
      В FreeBSD встроена поддержка сетевой файловой системы (Network File System),
    известной как NFS. NFS позволяет системе использовать каталоги и файлы совместно с другими машинами, посредством сети. Посредством NFS пользователи и программы могут получать доступ к файлам на удалённых системах точно так же, как если бы это были файлы на собственных дисках. Те можно хранить все данные на другой машине или использовать один CD-ROM или Zip всеми компьютерами. Иметь домашние каталоги доступные по все сети. А так же несколько машин могут иметь общий каталог /usr/ports/distfiles.

    NFS Сервер
      Сначала организуем NFS сервер на FreeBSD. Для сервера NFS необходимо наличие на сервере работающих следующих демонов:
    nfsd - Демон NFS, обслуживающий запросы от клиентов NFS.
    mountd - Демон монтирования NFS, который выполняет запросы, передаваемые ему от nfsd.
    rpcbind - Этот даемон позволяет клиентам NFS определить порт, используемый сервером NFS.

    OpenBSD - для включение NFS Сервера в /etc/rc.conf измените.
    portmap=YES # Note: inetd (8) rpc services need portmap too
    nfs_server=YES # see sysctl.conf for nfs client configuration
    nfs_server_flags="-tun 4" # Crank the 4 for a busy NFS fileserver
    


    FreeBSD - для включение NFS Сервера в /etc/rc.conf добавьте.
    rpcbind_enable="YES"
    nfs_server_enable="YES"
    nfs_server_flags="-u -t -n 4"
    mountd_flags="-r -n"
    


    Некоторые флаги nfs_server_flags:
    -t - Обслуживание TCP-клиентов.
    -u - Обслуживание UDP-клиентов.
    -n 'x' - Количество одновременных подключений.
    -h - Указать какой интерфейс слушать (-h 192.168.1.11 или -h Raven2000.su) можно
    указать несколько интерфейсов.

    Некоторые флаги mountd_flags:
    -r - Позволяет mountd обслуживать и рядовые файлы, а не только каталоги.
    -n - Монтирование ресурсов NFS на удаленных системах, не разделяющих модели владения и полномочий принятых в UNIX. (Windows)
    -r - Протоколирование все запросы на монтирование NFS. (OpenBSD)
    -l - Протоколирование все запросы на монтирование NFS. (FreeBSD)

    Теперь обозначим, что будем экспортировать (EXPORTS).
    В файле /etc/exports определяют, какие файловые системы на вашем сервере будут экспортироваться. Каждая строка в файле задаёт файловую систему, которая будет экспортироваться и какие машины будут иметь к ней доступ. Допустим нам нужно расшарить директорию /home/share.

    Для этого в /etc/exports добавим.
    /home/share -ro -alldirs -maproot=root 192.168.1.12 host.win2k3.local
    


    /home/share - Директория для доступа.
    -alldirs - Разрешает монтировать любой подкаталог; по умолчанию разрешение выдается
    только для указанного каталога.
    -maproot=юзер - Закрепляет идентификатор учетной записи root за указанным пользователем
    (это может быть значение UID или имя). По умолчанию выбирается пользователь nobody
    (UID -2). Чтобы разрешить привилегированный доступ, задайте -maproot=root.
    -mapall=юзер - Закрепляет все значений UID за определенным пользователем; это удобно
    при работе с персональными компьютерами и ненадежными однопользовательскими станциями.
    -webnfs - Экспорт каталога в формате WebNFS; доступ только для чтения всем
    пользователям, а все идентификаторы закрепляют за пользователем nobody.
    192.168.1.12 - Хосты, которым разрешено подключатся.
    -ro - Экспорт для чтения; по умолчанию экспорт предоставляет для чтения-записи.

    При изменение exports нужно перезапустить mountd.
    kill -HUP `cat /var/run/mountd.pid`
    

    или
    # /etc/rc.d/mountd reload
    


    NFS Клиент
    В /etc/rc.conf добавьте
    nfs_client_enable="YES"
    


    Перезагрузим систему и примонтируем директорию.
    По команде /home/share на сервере будет смонтирована в каталог /mnt на клиенте.
    Вы сможете в этом убедится, выполнив эту команду.
    mount_nfs Server_IP:/home/share /mnt
    


    Если вы хотите автоматически монтировать удалённую файловую систему при каждой загрузке компьютера, добавьте файловую систему в /etc/fstab:
    Server_IP:/home/share     /mnt    nfs     rw, -b      0   0
    


    -b - Заставляет при загрузке системы выполнить быструю попытку соединится с сервером если попытка не удалась система будет загружаться дальше. Но  порождается дочерний процесс,  продолжающий попытки.
    -T - Принуждает использовать транспорт TCP вместо UTP.
    -s -x 'x' - Позволяет примонтировать на строго определенное время (-x 60)
    используя мягкое монтирование (-s).
    -i - Это разрешает прерываемость комбинацией клавиш <Ctrl+C>.

    Вы можете настроить количество процессов устанокой nfs_client_flags в /etc/rc.conf
    nfs_client_flags="-n 4"
    

    Или выполнив в консоли
    # nfsiod -n 4
    

    Демон nfsiod не обязателен, но позволяет работать в асинхронной манере, с операциями "опережающее чтение" и "отложенной записи" выполняемое в фоновом режиме, вместо ожидания каждого шага процесса. Количество процессов на сервере nfsd, должно совпадать или превышать количество процессов nfsiod на клиенте.

  • Windows2003
     Службы Майкрософт® для Network File System (NFS) предоставляют решение совместного доступа к файлам для предприятий, работающих в смешанной среде Windows и UNIX. Службы Майкрософт для NFS позволяют пользователям перемещать файлы между Microsoft Windows Server™ 2003 R2 и компьютерами под управлением UNIX с помощью протокола сетевой файловой системы NFS.

    Поиск в Active Directory. Расширение схемы Active Directory «Управление идентификацией  для UNIX», доступное в Windows Server 2003 R2, содержит идентификатор пользователя UNIX (UID) и идентификатор группы (GID), которые позволяют клиентам NFS просматривать сведения об идентификации UNIX прямо из Active Directory.

    Компоненты Windows
      Для работы Windows2003 c NFS необходимо добавить Службу Майкрософт® для Network File System. Для этого проделаем следующее:
    1. Установка и удаления программ -> Установка компонентов Windows
    2. Другие службы доступа к файлам и принтерам сети -> Служба Microsoft для NFS
    И выбираем там:
    2.1 Администрирование служб Microsoft для NFS
    2.2 Внешнее представление данных RPC
    2.3 Клиент для NFS


    После установки и перезагрузки появляется возможность примонтировать NFS к Win2k3.

    Windows mount info
      Чтобы сопоставить сетевой диск с помощью средств командной строки введите:
    mount [–o Параметры ] [–u: Имя_пользователя ] [–p:{ Пароль | *}]
     Имя_компьютера :/ Имя_общего_ресурса { Имя_устройства | *}
    


    или
    mount [–o Параметры ] [–u: Имя_пользователя ] [–p:{ Пароль | *}]
     \\ Имя_компьютера \ Имя_общего_ресурса { Имя_устройства | *} 
    


    Аргументы  Описания:
    –o rsize= n
    Размер буфера чтения, в килобайтах. Допустимые значения: 1, 2, 4, 8, 16 и 32(default).

    –o wsize= n
    Размер буфера записи, в килобайтах. Допустимые значения: 1, 2, 4, 8, 16 и 32(default).

    –o timeout= n
    Время задержки удаленного вызова процедуры (RPC), в секундах. Допустимые значения 0,8; 0,9 и все целые числа в диапазоне 1—60; значение по умолчанию равно 0,8.

    –o retry= n
    Количество попыток программного (soft) подключения. Допустимые значения: целые числа в диапазоне 1—10; значение по умолчанию равно 1.

    –o mtype={soft | hard}
    Программное (soft) или аппаратное (hard) подключение. Независимо от типа подключения его установка повторяется, если общий ресурс не удается подключить сразу. Однако если тип подключения является аппаратным, то после успешного подключения общего ресурса клиент для NFS будет продолжать попытки получения доступа к общему ресурсу до тех пор, пока они не завершатся успехом.

    –o anon
    Выполняет подключение в качестве анонимного пользователя.

    –o nolock
    Отключает блокировку. Данный параметр может увеличить производительность, если требуется только читать файлы.

    -o lang={euc-jp|euc-tw|euc-kr|shift-jis|big5|ksc5601|gb2312-80|ansi}
    Задает для имен файлов и каталогов кодировку по умолчанию, и, если параметр используется, должна устанавливаться одна из следующих кодировок:

    -o fileaccess= режим
    Задает стандартный режим разрешений для вновь создаваемых файлов на общем ресурсе NFS. Указывайте режим в виде трехразрядного числа, имеющего формат ogw, где каждая из букв o, g и w — цифра, обозначающая доступ, предоставляемый владельцу файла, группе и всем, соответственно. Цифры должны находиться в диапазоне 0—7 и имеют следующее значение:

    0: нет доступа;
    1: x (доступ с правами на выполнение);
    2: w (доступ с правами на запись);
    3: wx (доступ с правами на запись и выполнение);
    4: r (доступ с правами на чтение);
    5: rx (доступ с правами на чтение и выполнение);
    6: rw (доступ с правами на чтение и запись);
    7: rwx (доступ с правами на чтение, запись и выполнение).

    -o casesensitive
    Принудительно устанавливает режим поиска на сервере, учитывающий регистры вводимых букв.

    –u: Имя_пользователя
    Имя пользователя, используемое для подключения общего ресурса.

    –p:{ Пароль | *}
    Пароль пользователя, используемый для подключения общего ресурса. Если используется звездочка (*), выводится запрос на ввод пароля.

    Имя_компьютера
    Имя сервера, на котором находится подключаемый общий ресурс.

    Имя_общего_ресурса
    Имя общего каталога, к которому выполняется подключение.

    Имя_устройства | *
    Буква диска, назначаемая подключенному общему ресурсу. Звездочка указывает (*) на использование следующей доступной буквы.

    Mount
    Из сего вышесказанного ясно что примонтировать можно так:
    Имя_сервера:/Имя_общего_ресурса 
    

    или так:
    \\Имя_сервера\Имя_общего_ресурса 
    


    Но остановимся на первом варианте тк. с этим форматом операции просмотра выполняются с меньшими задержками и, соответственно, поиск и подключение ресурса NFS осуществляются быстрее.

    Для автоматического монтирования можно создать *.bat файл следующего содержания ипоместить в автозагрузку для автоматическов подключения. Или в командной стороке выполнить. Способов много на вкус и цвет.
    umount -a
    mount 192.168.1.12:/home/share  Z:
    


  • Windows Services for UNIX Version 3.5 (WinXP Pro)
      Для WindowsXP клиентов NFS много, но они платные и этим все сказано. Эта ситуация
    мне не нравится, поэтому  пошел в обход. Для работы Windows XP Pro с NFS есть
    официальная бесплатная вещь Windows Services for UNIX Version 3.5 Ее нужно
    скачать и установить. Так как я не боян то выложу полную выборку, откуда что качать
    и как ставить. :)

    1) Overview of Windows Services for UNIX Installation
     1.1) Службы Windows для UNIX
    2) Скачать Windows Services for UNIX Version 3.5
    Устанавливается на: Windows 2000 Service Pack 4; Windows Server 2003; Windows XP.
    3) Как установить клиент NFS для Windows при переходе с UNIX на Windows
    4) Making Windows Services for Unix (SFU) Install on XP Home Edition.

  • Информация о работе NFS
      Для отображения совместных используемых ресурсов с их полномочиями используется
    showmount с опцией -e т.е. показать список экспорта.
    # showmount -e
    Exports list on localhost:
    /home/share Everyone


    Или использую nfsstat

    Просмотрим статистику процессов NFS-сервера.
    # nfsstat -s

    Server Info:
    Getattr Setattr Lookup Readlink Read Write Create Remove
    9 1 8 0 0 1 3 3
    Rename Link Symlink Mkdir Rmdir Readdir RdirPlus Access
    3 0 0 0 0 4 13 3
    Mknod Fsstat Fsinfo PathConf Commit
    0 34 4 4 1
    Server Ret-Failed
    4
    Server Faults
    0
    Server Cache Stats:
    Inprog Idem Non-idem Misses
    0 0 0 0
    Server Write Gathering:
    WriteOps WriteRPC Opsaved
    1 1 0


    Отобразим информацию об операциях на стороне клиента.
    # nfsstat -c
    Client Info:
    Rpc Counts:
    Getattr Setattr Lookup Readlink Read Write Create Remove
    0 0 0 0 0 0 0 0
    Rename Link Symlink Mkdir Rmdir Readdir RdirPlus Access
    0 0 0 0 0 0 0 0
    Mknod Fsstat Fsinfo PathConf Commit
    0 0 0 0 0
    Rpc Info:
    TimedOut Invalid X Replies Retries Requests
    0 0 0 0 0
    Cache Info:
    Attr Hits Misses Lkup Hits Misses BioR Hits Misses BioW Hits Misses
    0 0 0 0 0 0 0 0
    BioRLHits Misses BioD Hits Misses DirE Hits Misses
    0 0 0 0 0 0


    Ну вот и все NFS примонтированна к Windows лишнего ничего не стоит и все довольны.
    На сим закончим.

  • Литература
    1) Network File System (NFS)
    2) FreeBSD 6 Полное Руководство.
    3) Справочная система Windows.



    размещено: 2008-02-17,
    последнее обновление: 2008-02-17,
    автор: Raven2000


    KaMa-CyTpA, 2008-02-17 в 10:23:10

    Как всегда превосходно! Такое давно юзаю - единственное что не смог найи - NFS-Client для Windows XP. А вот это было бы самое то. Пока думаю остановиться на FreeNAS + iSCSI ну и соответствующий клиент на Windows XP.

    Raven2000, 2008-02-17 в 13:22:34

    to KaMa-CyTpA
    Специально для тебя добавил.
    Windows Services for UNIX Version 3.5 (WinXP Pro)
    Посмотри и если есть еще, какие вопросы для добавления пишите, рассмотрю.
    Голосовать не забываем ;)

    victor, 2008-02-17 в 19:42:59

    из опыта настройки помню, что для удачной авторизации на на NFS сервере нужно мапить Win/UNIX имена. В комплекте W2k3R2 есть соответствующая надстройка (что-то NIS)

    KaMa-CyTpA, 2008-02-17 в 20:03:52

    Пасибки огромные!
    А почему Вы не хотите написать о iSCSI?
    Взять даже размеры клиентов...
    У нас трафик платный на работе.
    Да и у многих я думаю, а iSCSI клиентик - малыш просто по сравнению с 217,6 мегабайт.
    Но всё равно спасибо!!!

    Raven2000, 2008-02-17 в 20:09:07

    to victor
    В Win2k3 для этого есть:
    Сопоставление имен пользователей
    Программа сопоставления портов RPC


    to KaMa-CyTpA
    iSCSI говорите...
    А почему бы и нет :)

    KaMa-CyTpA, 2008-02-17 в 20:27:06

    Я просто тут давеча поднимал FreeNAS - там такой "вкусный" набор - веб-морда полностью русская и всё такое, с консоли шелл доступна - а там-то уже pkg_add -r mc, cvsup-without-gui, portupgrade и радость до ушей! Попробовал подмапить диски пользователям - ну вот правда шоколаднее не бывает. Как свой диск видится. Только писать как Вы не умею. Поэтому и предложил.

    Raven2000, 2008-02-17 в 20:52:43

    to KaMa-CyTpA
    Не это точно прикол я как раз и ковыряю FreeNAS-i386-liveCD-0.686
    На VMware раком встает :) надо реальную тачку.
    Я этой штукой давно интересуюсь приятно что на FreeBSD 6.2 работает :) Если будет не лень накидаю статейку.
    Да это еще держит и.
    5.5. iSCSI
    5.5.1. iSCSI target
    5.5.2. iSCSI initiator

    toptyg, 2008-02-17 в 21:43:43

    "Sambа я не перевариваю за ее ммм прихотливость"
    а по-точнее? :) И в плане удаленной работы, как я понимаю, NFS рульнее(в плане корректности работы)?

    спасибо.  

    Raven2000, 2008-02-18 в 9:56:05

    to toptyg
    "как я понимаю, NFS рульнее"
    Смотря для какой задачи.
    А по самбе - нестоит из-за такой мелочи ставить ее да и просто мне ненравится как она ведет себя в работе.

    mane, 2008-02-28 в 14:12:42

    NFS не совсем секурно

    Manefesto, 2008-02-28 в 14:13:01

    NFS не совсем секурно

    Raven2000, 2008-02-29 в 9:37:55

    to mane Manefesto
    Чем не секурно, обоснование?
    И по IP ограничение доступа и по логину и пасу. А если шифрование канала то это ни к NFS ни к FTP ни к самба не пременимо. Та что не сукурно?

    Manefesto, 2008-02-29 в 13:39:29

    Читая  книгу Эвви Немета я понял, что можно перехватить пакеты шлющиеся по NFS.
    Цитировать не буду, много

    Raven2000, 2008-02-29 в 13:51:08

    to Manefesto
    Ты прав, но это касается всего, что можно заснифить.
    Те относится не только к NFS ;)

    Manefesto, 2008-02-29 в 15:51:57

    давай на форуме обсудим....

    azimut, 2009-12-16 в 16:05:42

    Samba умеет мапить кодировки, а NFS - нет. Соответственно Samba покажет клиенту на Win нормальные файлы, а NFS - крякозябры.



  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0406 секунд
    Из них PHP: 28%; SQL: 72%; Число SQL-запросов: 77 шт.
    Исходный размер: 52508; Сжатая: 12853