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 пишет:На
попробуй:
# 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 на клиенте и на сервере.