NFS HOWTO: Часто Задаваемые Вопросы (FAQ)

Next Previous Contents

8. Часто Задаваемые Вопросы (FAQ)

Это раздел часто задаваемых вопросов (FAQ). Большая часть его основана на старом FAQ, написанном Alan Cox.

Если у вас есть проблемы с монтированием файловой системы, то пожалуйста посмотрите, не описана ли она в разделе ``Список проверок при монтировании''.

  1. Я получаю сообщения об ошибках ``stale nfs handle (устарелый дескриптор nfs)'' при использовании Linux как сервера nfs.

    Это вызывается ошибкой в одной из старых версий nfsd. Это исправлено в nfs-server2.2beta16 и более поздних.

  2. Когда я пытаюсь примонтировать файловую систему я получаю сообщение
     can't register with portmap: system error on send
     (не могу зарегистрироваться с помощью portmap: системная ошибка при посылке)
    

    Вы вероятно используете систему Caldera. Это ошибка в скриптах rc. Пожалуйста свяжитесь с Caldera для получения исправления.

  3. Почему я не могу выполнить файл после копирования его на NFS сервер?

    Причина в том, что nfsd кэширует дескрипторы открытых файлов для улучшения производительности (помните, что он запущен в пространстве пользователей). Пока nfsd держит файл открытым (как в этом случае, после записи в него), то ядро не позволит вам выполнять его. Nfsds новее чем версии выпуска весны 95 держат файлы открытыми в течении нескольких секунд, более старые могут держать файл открытым в течении нескольких дней.

  4. Мои файлы на NFS все считаются с правом только на чтение

    По умолчанию сервер NFS для Linux выдается все как только для чтения. Перечитайте разделы ``Mountd и nfsd'' и ``Экспортирование файловых систем'' данного документа, а также справочные страницы по ``exports'' и nfsd. Вам необходимо изменить файл /etc/exports.

  5. Я монтирую файловую систему с сервера nfs под linux и пока работает команда ls я не могу читать или записывать файлы.

    На старых версиях Linux вы должны монтировать сервер NFS с опциями rsize=1024,wsize=1024.

  6. Я монтирую файловую систему с сервера NFS под Linux с размером блока между 3500-4000 и это регулярно роняет машину с Linux

    Обычно не делайте так. Это не случается с ядрами версий 2.0 и 2.2. Также нет проблемы с ядрами серии 2.1.

  7. Может Linux выполнять NFS по TCP

    Нет

  8. Я получаю странные ошибки при монтировании машины с машины под Linux.

    Убедитесь, что ваш пользователь находится в 8 или меньшем количестве групп. Старые сервера требую этого.

  9. Когда я перезагружаю свою машину она иногда вешается при попытке отмонтироваться от зависшего сервера NFS.

    Не отмонтируйтесь от серверов NFS при перезагрузке или выключении, просто проигнорируйте это, ничто не повредится, если вы не отмонтируетесь от него. Команда будет выглядеть следующим образом umount -avt nonfs.

  10. Клиент NFS для Linux работает очень медленно при записи на системы Sun и BSD.

    Обычно NFS записывает в синхронном режиме (вы можете запретить это, если вы считаете, что вы не рискуете потерять данные). Хуже всего то, что ядра произошедшие от BSD не могут работать с маленькими блоками. Таким образом когда вы пишете 4K данных с машины под Linux в 1K пакетах, то BSD выполняет это следующим образом

            прочитать страницу размером 4K
            изменить 1K
            записать страницу размером 4K обратно на диск
            прочитать страницу размером 4K
            изменить 1K
            записать страницу размером 4K обратно на диск
            и т.д...
    

  11. Когда я подключаю много клиентов к Linux NFS серверу, его производительность неожиданно падает.

    Протокол NFS использует использует фрагментированые UDP-пакеты. В ядре имеется предел на то, как много фрагментов или неполных пакетов прибудет до того, как оно начнет отбрасывать пакеты. В ядрах серии 2.2 это настраивается во время работы через файловую систему /proc: /proc/sys/net/ipv4/ipfrag_high_thresh и ipfrag_low_thresh. В ядрах серии 2.0 эти константы определяются во время компиляции и определены в файле .../linux/net/ipv4/ip_fragment.c, IPFRAG_HIGH_THRESH и IPFRAG_LOW_THRESH. Эти параметры означают, что когда потребление памяти не собранными фрагментами пакетов UDP достигает значения ``ipfrag_high_thresh'' в байтах (по умолчанию 256K в ядрах 2.2.3 и 2.0.36) оно уменьшится до значения ``ipfrag_low_tresh''. Это делается отбрасыванием фрагментов. Это будет выглядеть как почти полная потеря пакетов и если будет достигнута верхняя граница, то производительность вашего сервера сильно уменьшится.

    256K достаточно для обслуживания до 30 клиентов. Если у вас 60 клиентов, то увеличьте это значение в 2 раза. И также увеличьте значение нижней границы.

  12. Я использую Linux 2.2 (или более поздний) с knfsd и я не могу заставить мои машины с AIX, IRIX, Solaris, DEC-Unix, ... монтироваться к нему.

    Knfsd объявляет, что реализует NFS версии 3. Это не так. Существует опция, которая запрещает ему анонсировать это. Используйте ее. Или вы можете поместить параметр "vers=2" в список опций монтирования на клиенте.

  13. Моя машина с AIX 4 не может произвести монтирование моего NFS сервера под Linux. Она сообщает
            mount: 1831-011 access denied for server:/dir
            mount: 1831-008 giving up on:
            server:/dir
            The file access permissions do not allow the specified action.
      
    
    или что-то подобное.

    AIX 4.2 использует зарезервированные порты (<1024) для NFS. AIX 4.2.1 и 4.3 не ограничены резервированными портами. Также AIX 4.2.1 и 4.3 пытаются произвести монтирование используя версию NFS3, затем NFS/TCP, и только потом NFS/UDP.

    Добавление строк


    nfso -o nfs_use_reserved_ports=1
    

    в конец файла rc.tcpip заставит его использовать резервированные порты. (Этот совет был послан Brian Gorka).


Next Previous Contents