У меня есть Ubuntu 11.10 VPS, работающий внутри OPenVZ с хостинговой компанией. Я пытаюсь заставить его смонтировать удаленный сервер NFS с помощью NFS4, но могу заставить его работать только с версией 3. Я много искал в Google по этому поводу и иногда читаю что-то вроде "NFS4" клиенты не могут работать внутри контейнеров OpenVZ ». Я не могу найти актуальный конкретный ответ на этот вопрос, поэтому спрошу здесь:

Это правда, и если да, то отлично - тогда я могу перестать пытаться заставить это работать! Но если это возможно, почему не работает ?? Вот что я сделал -

  • nfs-common установлен на клиенте, nfs-kernel-server установлен на сервере
  • видел некоторые инструкции по установке nfs-utils на клиенте, но apt-get не может найти пакет
  • монтирование с клиента на сервер успешно работает с NFS версии 3
  • сервер работает нормально; могу успешно монтировать с помощью NFSv4 с виртуальной машины Ubuntu, запущенной на моем рабочем столе
  • НО на успешной клиентской машине nfs AND nfs4 указан в / proc / filesystems, на проблемной - только nfs
  • Я зарегистрировал заявку, и, по словам ответственного инженера, соответствующий модуль теперь установлен на узле VPS. Он ответил, что теперь он должен работать, но я думаю, что он, возможно, только что повторно включил "стандартный" модуль NFS (см. Выше re: cat / proc / filesystems | grep nfs)

    $ sudo mount -v -t nfs4 [SERVER_IP]: / / NFS-ARCHIVE / mount.nfs4: pinging: prog 100003 vers 4 prot tcp port 2049 mount.nfs4: такого устройства нет

    $ sudo mount.nfs [SERVER_IP]: / / NFS-ARCHIVE / -w -n -o nfs4 mount.nfs: Неподдерживаемый параметр монтирования nfs: nfs4

  • Я читал, что мне может потребоваться вручную загрузить модуль , запустив modprobe nfs перед монтированием, но я не думаю, что смогу сделать это на VPS. sudo modprobe -l на клиенте ничего не возвращает

Любая помощь очень ценится, особенно если вы можете категорически ответить на первый вопрос - по крайней мере, если я знаю, что это невозможно, я могу перейти к настройке всего с помощью версии 3!

answer

Более поздние версии OpenVZ поддерживают NFS4 в контейнере. Мы используем последнюю версию CentOS 6.2 вместе с последней стабильной версией OpenVZ 2.6.32-042stab053.5, и NFS4 нам подходит.

Хотя клиенты NFS 4 действительно работают в OpenVZ VPS (протестировано с Proxmox 2.1), если функция nfs: on включена и модуль nfs загружен на хост (т. Е. Контейнер 0), поиск по имени -> UID всегда выполняется с использованием rpc.idmapd запущен на хосте. Это означает, что у вас должны быть те же пользователи на вашем хосте / etc / passwd, что и на вашем VPS.

Кроме того, опция монтирования по умолчанию sec = sys permissions не работает правильно, если номера UID / GID не совпадают между вашим VPS, хостом и сервером! Можно было бы ожидать, что с nfs3 (поскольку он отправляет номера UID / GID по сети), но с nfs4 отправляются имена пользователей / групп. См. Http://thread.gmane.org/gmane.linux.nfsv4/7103/focus=7105 (и ответ на RHEL - NFS4: Установлено / экспортировано как rw, пользователю отказано в разрешении на запись ).

В результате вы можете смонтировать nfs4 внутри VPS с помощью sec = sys.

  1. У вас достаточно новое ядро ​​openVZ.

  2. У вас достаточно контроля над хостом и настройкой VPS, чтобы

    • включить опцию nfs: on для клиентского VPS nfs4
    • загрузить модуль nfs на хост
    • запустить демон rpc.idmapd на хосте
    • управлять записями / etc / passwd на хосте
  3. Вы можете жить с ограничениями, связанными с необходимостью делиться именами пользователей VPS / хоста.

Возможно, удастся настроить что-то более гибкое с помощью kerberos / ldap или, возможно, даже если есть способ контролировать домен idmapd, используемый для монтирования, но у меня нет опыта работы с этими параметрами.

На самом VPS должна быть включена функция nfs: on. Попросите вашу хостинговую компанию включить это.

Дополнительную информацию можно найти в Wiki: http://wiki.openvz.org/NFS