NFSv4 и distfiles[Solved]

Здравствуйте.

Пытаюсь сделать общий для локальных машин distfiles, решил использовать NFSv4 из-за большей надежности и простоты администрирования. Делал по следующим мануалам:
http://ru.gentoo-wiki.com/HOWTO_Portage_через_NFS
http://gentoo-wiki.com/HOWTO_NFSv4
http://www.ibm.com/developerworks/ru/library/l-nfsv4/index.html
http://us.gentoo-wiki.com/HOWTO_Using_a_shared_portage_via_NFS

Как указано, включил поддержку v4
Сервер:

--- Network File Systems
<M>   NFS file system support
[*]     Provide NFSv3 client support
[ ]       Provide client support for the NFSv3 ACL protocol extension
[*]     Provide NFSv4 client support (EXPERIMENTAL)
[*]     Allow direct I/O on NFS files
<*>   NFS server support
[*]     Provide NFSv3 server support
[ ]       Provide server support for the NFSv3 ACL protocol extension (NEW)
[*]       Provide NFSv4 server support (EXPERIMENTAL)
-*-     Provide NFS server over TCP support 
[ ]   Support for rpcbind versions 3 & 4 (EXPERIMENTAL)
-M-   Secure RPC: Kerberos V mechanism (EXPERIMENTAL)

Клиент:

--- Network File Systems
<M>   NFS file system support
[*]     Provide NFSv3 client support
[ ]       Provide client support for the NFSv3 ACL protocol extension
[*]     Provide NFSv4 client support (EXPERIMENTAL)
[*]     Allow direct I/O on NFS files
< >   NFS server support
[ ]   Support for rpcbind versions 3 & 4 (EXPERIMENTAL)
-M-   Secure RPC: Kerberos V mechanism (EXPERIMENTAL)

На сервере и клиенте поставил net-fs/nfs-utils-1.1.0-r1.

На сервере:

# cat /etc/exports
# /etc/exports: NFS file systems being exported.  See exports(5).

/usr/portage/distfiles 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,sync,no_root_squash)

# /etc/init.d/nfs start

На клиенте:

# emerge --info | grep DIST
DISTDIR="/mnt/distfiles"

 # ls /mnt/ | grep dist
distfiles

# mount -t nfs4 mainserv:/ /mnt/distfiles/

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

# emerge dnsmasq
Calculating dependencies... done!
>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) net-dns/dnsmasq-2.41 to /
Traceback (most recent call last):
  File "/usr/bin/emerge", line 6971, in ?
    retval = emerge_main()
  File "/usr/bin/emerge", line 6965, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "/usr/bin/emerge", line 6395, in action_build
    retval = mergetask.merge(pkglist, favorites, mtimedb)
  File "/usr/bin/emerge", line 3981, in merge
    return self._merge(mylist, favorites, mtimedb)
  File "/usr/bin/emerge", line 4259, in _merge
    prev_mtimes=ldpath_mtimes)
  File "/usr/lib/portage/pym/portage.py", line 4675, in doebuild
    if need_distfiles and not fetch(
  File "/usr/lib/portage/pym/portage.py", line 3107, in fetch
    if portage_util.ensure_dirs(mydir, gid=portage_gid, mode=dirmode, mask=modemask):
  File "/usr/lib/portage/pym/portage_util.py", line 872, in ensure_dirs
    perms_modified = apply_permissions(dir_path, *args, **kwargs)
  File "/usr/lib/portage/pym/portage_util.py", line 589, in apply_permissions
    os.chown(filename, uid, gid)
OSError: [Errno 22] Invalid argument: '/mnt/distfiles/'

Вижу, что ругань идет на разрешения. Делаю

 # ls /mnt/ -l
итого 15
drwx------ 2 root       root          72 Апр 20  2007 cdrom
drwxr-xr-x 2 root       root          48 Окт 16  2007 console
drwxrwsr-x 5 4294967294 4294967294 15560 Май 14 10:46 distfiles
drwxr-xr-x 2 root       root          48 Июл 26  2007 flash
drwx------ 2 root       root          72 Апр 20  2007 floppy

 # ls /mnt/distfiles/ -l | grep dns
-rw-rw-r-- 1 4294967294 4294967294    85648 Фев 21 15:31 djbdns-1.05.tar.gz
-rw-rw-r-- 1 4294967294 4294967294    18480 Фев 21 15:31 djbdns-1.05-test23.diff.bz2

Видно что владельцами дистфайлс и его содержимого на клиенте являются nobody:nobody и скорее всего ошибка во время установки исходит именно отсюда. Пытался исправить на клиенте:

# chown root:portage distfiles/zlib-1.2.3.tar.bz2
chown: изменение владельца `distfiles/zlib-1.2.3.tar.bz2': Недопустимый аргумент

Что можно сделать в данной ситуации и возможно ли это? Топик, который я нашел http://gentoo-wiki.com/Talk:HOWTO_Using_a_shared_portage_via_NFS , ничем не обрадовал.

HolyBoy пишет:На

HolyBoy написал(а):
На клиенте:

# mount -t nfs4 mainserv:/ /mnt/distfiles/

попробуй:
# mount -t nfs4 mainserv:/usr/portage/distfiles /mnt/distfiles/
у меня так работает, да и во всех HOWTO которые я видел было так.

А ты с nfs той

А ты с nfs той которая v3 не путаешь?
У nfs4 синтаксис слегка другой =)
Кури маны
___________________________________________
Gentoo GNU/Linux 2.6.25 GCC 4.2.3 && GCC 4.3.0
Working on Gentoo for iPAQ hx4700 :-)

Куда пропал мой пост вчерашний?! :)

Согласен с предыдущим оратором. У нфсв4 синтаксис именно такой, как у меня. У нфсв3 такой, как вы показали, только не "-t nfs4", а "-t nfs" и будет это монтирование по протоколу nfsv3. ;)

Что касается сабжа, то похоже решения на данный момент нет. Народ в интернете не знает что делать. Я подмонтировал по nfsv3 и, конечно же, получил папку с правами как на сервере, т.е. root:portage. Забавно, что при этом количество и состав открытых в фаерволле портов не изменился по сравнению с nfsv4. Такое впечатление, что работает сейчас nfsv3.5.

Проблема была

Проблема была решена поднятием сервиса /etc/init.d/rpc.idmapd на клиенте и на сервере.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".