[РЕШЕНО] Проблемы монтирования NFSv3 - неожиданно появились сбои без изменений каких-либо настроек, или обновлений
Есть сервер на calculate (ядро 2.6.32) и diskless компьютеры (gentoo, ядро 2.6.32, genkernell). Версия nfs-utils 1.1.4-r1.
Все прекрасно работало более полугода, но в один момент две станции отказались монтировать каталоги а потом и грузится. Хотя не сервер не десктопы не обнавлялись. Железо тоже не менялось.
Если загрузится удалось, то проблема с монтированием на клиенте выглядит как большая пауза и затем ошибка:
mount.nfs: mount system call failed
иногда не может отмонтировать с
mount.nfs: unmount system call failed
При этом
linux-terminal ~ # rpcinfo -p 192.168.0.1 прог-ма верс прото порт 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 46924 status 100024 1 tcp 37511 status 100005 1 udp 53410 mountd 100005 1 tcp 34574 mountd 100005 2 udp 53410 mountd 100005 2 tcp 34574 mountd 100005 3 udp 53410 mountd 100005 3 tcp 34574 mountd 100021 1 udp 50516 nlockmgr 100021 3 udp 50516 nlockmgr 100021 4 udp 50516 nlockmgr 100021 1 tcp 44319 nlockmgr 100021 3 tcp 44319 nlockmgr 100021 4 tcp 44319 nlockmgr 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs
Или в процессе загрузки не может примонтировать root и падает в kernel panic.
На сервере в логах выглядит вот так:
14:31:20 dhcpd: DHCPDISCOVER from 00:1d:92:0e:79:97 via eth1 14:31:21 dhcpd: DHCPOFFER on 192.168.0.71 to 00:1d:92:0e:79:97 via eth1 14:31:23 dhcpd: DHCPREQUEST for 192.168.0.71 (192.168.0.1) from 00:1d:92:0e:79:97 via eth1 14:31:23 dhcpd: DHCPACK on 192.168.0.71 to 00:1d:92:0e:79:97 via eth1 14:31:23 in.tftpd[4328]: tftp: client does not accept options 14:31:43 dhcpd: DHCPDISCOVER from 00:1d:92:0e:79:97 via eth1 14:31:43 dhcpd: DHCPOFFER on 192.168.0.71 to 00:1d:92:0e:79:97 via eth1 14:31:43 dhcpd: DHCPREQUEST for 192.168.0.71 (192.168.0.1) from 00:1d:92:0e:79:97 via eth1 14:31:43 dhcpd: DHCPACK on 192.168.0.71 to 00:1d:92:0e:79:97 via eth1 14:32:11 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot) 14:32:26 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot) 14:32:46 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot) 14:33:01 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot) 14:33:21 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot) 14:33:36 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot) 14:33:56 mountd[4031]: authenticated mount request from 192.168.0.71:920 for /var/nfs/netroot (/var/nfs/netroot)
Аналогично когда не может примонтировать каталог в уже загруженной системе
14:12:14 mountd[4031]: authenticated mount request from 192.168.0.71:870 for /var/nfs/nethome (/var/nfs/nethome) 14:12:30 mountd[4031]: authenticated mount request from 192.168.0.71:870 for /var/nfs/nethome (/var/nfs/nethome) 14:12:50 mountd[4031]: authenticated mount request from 192.168.0.71:870 for /var/nfs/nethome (/var/nfs/nethome)
/etc/exports:
# /etc/exports: NFS file systems being exported. See exports(5). /var/nfs/netroot/ 192.168.0.*(ro,sync,no_root_squash,no_subtree_check) /var/nfs/nethome/ 192.168.0.*(rw,sync,no_root_squash,no_subtree_check)
Команда монтирования:
mount -o nolock,udp -t nfs 192.168.0.1:/var/nfs/nethome /tmp/usrtmpl
P.S. Есть еще ошибка
15:37:28 calculate kernel: Installing knfsd (copyright (C) 1996 ). 15:37:28 calculate kernel: svc: failed to register lockdv1 RPC service (errno 97)
Но курение форумов привело к выводу что это связано с включенной поддержкой IPv6
И nfsstat с сервера:
Server rpc stats: calls badcalls badauth badclnt xdrcall 255469 0 0 0 0 Server nfs v3: null getattr setattr lookup access readlink 3 0% 59727 23% 819 0% 4273 1% 17792 6% 1202 0% read write create mkdir symlink mknod 136556 53% 31439 12% 132 0% 394 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 194 0% 0 0% 12 0% 64 0% 47 0% 1415 0% fsstat fsinfo pathconf commit 58 0% 6 0% 0 0% 1275 0%
P.P.S. Поиском аналогичных проблем не нашел :(
- Для комментирования войдите или зарегистрируйтесь
ipv6 не трогали?
ipv6 не трогали?
Нет, IPv6 не трогали.
Нет, IPv6 не трогали.
http://xforce.iss.net/xforce/
http://xforce.iss.net/xforce/xfdb/58957
не оно?
Непохоже. Юязвимость
Непохоже. Юязвимость локальная, А на сервер доступ есть только у администратора.
Так, перестали грузится все
Так, перестали грузится все машины. Заменили сетевую на сервере - проблема осталась.
В общем проблема решилась
В общем проблема решилась парадоксально-магическим способом:
/etc/exports:
Т.е. заменой метода указания подсети.
Думаю этот коммент может
Думаю этот коммент может помочь тем, кто разбирается с diskless системами сейчас.
Последняя стабильная версия nfs-utils имеющая поддержку nfsv3 доступная в portage == 1.2.3-r1.
Мне помогла установка именно её.
Возможно я ошибаюсь, и nfsv3 можно как-то хитро включить и в нынешних версиях, возможно nfsroot можно (и нужно) использовать с nfsv4, возможно я еще много-го другого не понял, но по крайней мере установка этой версии (на nfs сервере) мне помогла.
До этого в логах на сервере при загрузке появлялись шесть строк
Jul 13 18:58:56 gate rpc.mountd[14228]: authenticated mount request from 192.168.4.11:719 for /diskless/192.168.4.11 (/diskless/192.168.4.11)
После чего diskless станция падала в kernel panic из-за отсутствующего root'а (initrd не использовал, настраивал по руководству.
Поспешил с выводами: 1. Ядро
Поспешил с выводами:
1. Ядро (без initrd образа, передавал опции ip=dhcp root=/dev/nfs nfsroot=192.168.4.1:/diskless/192.168.1.11 nfsrootdebug) монтировало используя v2, принудительно по v3 не захотело, хотя если загрузить эту же систему с диска (то же ядро, тот же root-раздел, поддержка клиента, естественно, в ядре) монтирование проходит (mount -t nfs ...), но уже не root-раздела, а стороннего (/mnt/nfs, например). Не разобрался.
2. В текущей версии nfs-utils (==1.2.9-r3) поддержка v3 все же есть.
Без initrd завести не смог (или не проходит монтирование root'а или монтируется только он), хотя тут причина, видимо, в другом - /usr у меня отдельно вынесен, и помнится его теперь (уже года два вроде как) нельзя просто в fstab вписать.