Jump to content
zyxmon

Ядерный nfs сервер на кинетике

Recommended Posts

17 часов назад, psbnt сказал:

nfs-kernel-server на kn-1810 с ОС 3.1.6 выдает:

rpc.mountd[3547]
/opt/nfs is not a directory or regular file

Железка? Версия пакета?

Пробовали ли запустить rpc.mountd с помощью strace? Выхлоп strace на pastebin plz.

Share this post


Link to post
Share on other sites
6 часов назад, zyxmon сказал:

Гадалки в отпуске - расшифруйте. После обновы пакета кинетика или после обновы прошивки?

Кинетик точно обновился - с 3.1.6 до 3.1.7. Пакеты тоже недавно обновлялись, но не помню, относились ли они к rpcbind. В течение недели же в репе этот пакет не обновлялся? Точно помню, что неделю назад шара работала, в течение недели обновился на новую прошивку, так же обновлял пакеты. Но обновляю их не реже раза в неделю. Мне кажется, дело не в пакетах. 

Linux Keenetic_Giga 4.9-ndm-3 #2 SMP Mon Oct 7 17:59:49 MSK 2019 mips GNU/Linux (Giga 1010)

# rpc.mountd -v
rpc.mountd version 2.3.4
# df -hT
/dev/sda1            ext4          292.4G    115.4G    162.1G  42% /tmp/mnt/bc14cb6c-d6d3-4623-ac76-ad73d5331fd5
# cat /opt/etc/exports
/tmp/mnt/bc14cb6c-d6d3-4623-ac76-ad73d5331fd5    *(rw,no_root_squash,insecure,sync,no_subtree_check)

 

# cat /opt/etc/init.d/S19rpcbind
#!/bin/sh

ENABLED=yes
PROCS=rpcbind
ARGS="-f -w"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func
# cat /opt/etc/init.d/S20nfsd
#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
        PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NFS_D=/opt/var/lib/nfs
LOCK_D=/opt/var/lib/nfs/sm
        start() {
        insmod /lib/modules/4.9-ndm-3/sunrpc.ko
        insmod /lib/modules/4.9-ndm-3/lockd.ko
        insmod /lib/modules/4.9-ndm-3/nfsd.ko
        insmod /lib/modules/4.9-ndm-3/nfs.ko
        grep -q /proc/fs/nfsd /proc/mounts || \
                mount -t nfsd nfsd /proc/fs/nfsd
        mkdir -p $LOCK_D
        touch $NFS_D/rmtab
        sysctl -w fs.nfs.nlm_tcpport=32777 fs.nfs.nlm_udpport=32777 > /dev/null
        rpc.statd -p 32778 -o 32779
        exportfs -r
        rpc.nfsd
        rpc.mountd -p 32780
}
        stop() {
        killall rpc.mountd 2> /dev/null
        rpc.nfsd 0 2> /dev/null
        exportfs -au
        killall rpc.statd 2> /dev/null
        grep -q /proc/fs/nfsd /proc/mounts && \
                umount /proc/fs/nfsd
}
        reload() {
        exportfs -r
}

case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        reload)
                reload
            ;;
        link_up)
                ;;
        ppp_up)
            ;;
        link_down)
            ;;
        ppp_down)
            ;;
        *)
            echo "Usage: $0 {start|stop|restart|reload|link_up|link_down|ppp_up|ppp_down}"
            ;;
esac⏎

strace rpcbind 

https://pastebin.com/JVAfiisq

strace rpcbind -f -w

https://pastebin.com/z5fTJxUQ

Edited by Floppik

Share this post


Link to post
Share on other sites

! $$$ Model: Keenetic Ultra
! $$$ Version: 2.06.1

strace че то для меня непонятное, если честно) отделил момент где монтирую

https://pastebin.com/ZP70WRfy

S57nfs-kernel-server 

#!/bin/sh
# Copyright © 2006 OpenWrt.org
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    NFS_D=/opt/var/lib/nfs
    LOCK_D=/opt/var/lib/nfs/sm
    start() {
        for a in sunrpc lockd exportfs nfsd ; do
            if [ $(lsmod | grep -c $a) -eq 0 ]; then
                insmod /lib/modules/4.9-ndm-3/${a}.ko
            fi
        done
        grep -q /proc/fs/nfsd /proc/mounts || \
                mount -t nfsd nfsd /proc/fs/nfsd
        mkdir -p $LOCK_D
        touch $NFS_D/rmtab
        sysctl -w fs.nfs.nlm_tcpport=32777 fs.nfs.nlm_udpport=32777 > /dev/null
        rpc.statd -p 32778 -o 32779
        exportfs -r
        rpc.nfsd -t -u -V 3 -N 4
        rpc.mountd -p 32780
}
    stop() {
        killall rpc.mountd 2> /dev/null
        rpc.nfsd 0 2> /dev/null
        exportfs -au
        killall rpc.statd 2> /dev/null
        grep -q /proc/fs/nfsd /proc/mounts && \
                umount /proc/fs/nfsd
}
    reload() {
        exportfs -r
}

case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        reload)
                reload
            ;;
        link_up)
                ;;
        ppp_up)
            ;;
        link_down)
            ;;
        ppp_down)
            ;;
        *)
            echo «Usage: $0 {start|stop|restart|reload|link_up|link_down|ppp_up|ppp_down}»
            ;;
esac

 

Edited by psbnt

Share this post


Link to post
Share on other sites

Linux Keenetic_Ultra 4.9-ndm-3 #2 SMP Mon Sep 30 11:32:51 MSK 2019 mips GNU/Linux

Package: rpcbind
Version: 1.2.5-4

Package: nfs-kernel-server
Version: 2.4.1-1

Edited by psbnt

Share this post


Link to post
Share on other sites

Осталось еще выяснить - кто виноват - прошивка или пакет(ы).

Просьба сделать downgrade всех пакетов nfs-kernel-server версии 2.4.1 на версию 2.3.4 (обновление было с неделю назад).

Старые версии в архиве. Для mipsel это http://bin.entware.net/mipselsf-k3.4/archive/

  
  • Thanks 1

Share this post


Link to post
Share on other sites
28 минут назад, zyxmon сказал:

Осталось еще выяснить - кто виноват - прошивка или пакет(ы).

Просьба сделать downgrade всех пакетов nfs-kernel-server версии 2.4.1 на версию 2.3.4 (обновление было с неделю назад).

Старые версии в архиве. Для mipsel это http://bin.entware.net/mipselsf-k3.4/archive/


  

Заработало! Сделал downgrade этих пакетов на версию 2.3.4:

nfs-kernel-server-utils_2.3.4-1_mipsel-3.4.ipk  
nfs-kernel-server_2.3.4-1_mipsel-3.4.ipk 
nfs-utils-libs_2.3.4-1_mipsel-3.4.ipk
nfs-utils_2.3.4-1_mipsel-3.4.ipk

Share this post


Link to post
Share on other sites

да, у меня тоже заработало. спасибо!!!

готов предположить, что дело именно в пакетах. потому что пробовал откатываться до версии 2.16 (legacy которая...), ошибка была та же "is not a directory or regular file"

Share this post


Link to post
Share on other sites

Заинтересованных, просьба проверить

nfs-kernel-server_2.4.1-1a_mipsel-3.4.ipk nfs-kernel-server-utils_2.4.1-1a_mipsel-3.4.ipk nfs-utils_2.4.1-1a_mipsel-3.4.ipk nfs-utils-libs_2.4.1-1a_mipsel-3.4.ipk

upd

отправлено в бинарные репы

Edited by TheBB
upd
  • Thanks 1

Share this post


Link to post
Share on other sites
21 час назад, TheBB сказал:

Здравствуйте, подтверждаю работает. Спасибо

  • Thanks 1

Share this post


Link to post
Share on other sites

Мне кажется, что-то с производительностью этого сервера не все гладко. Делаю бэкапы debian систем через nfs сервер и rsync - минут через 5 disk utilization становится 95-98%, а скорость записи 0,6 мб/сек. По ssh и rsync все работает намного быстрее. 

Share this post


Link to post
Share on other sites

Добрый день всем.

После обновления Кинетиков на 3.3 NFS перестает работать, т. к. пути в инит скрипте уже другие.

Предлагаю заменить в нем "4.9-ndm-3" на "$(uname -r)", что бы в будущем не менять каждый раз.

И еще хорошо-бы инструкцию в шапке темы переписать на работающую на данный момент.

Share this post


Link to post
Share on other sites

Подскажите, пожалуйста, а как завести NFS на свежей прошивке вроде "3.5 Alpha 5" и ядре 4.9? Аппарат KN-1810 (Ultra).

Ставлю opkg install nfs-kernel-server, после этого пытаюсь стартовать /opt/etc/init.d/S57nfs-kernel-server start, но оно ругается, что portmap'а нет (его в репе даже нет), если закомментить его проверку в скрипте, оно падает на modprobe и т.п.

И даже принудительные приседания с insmod /lib/modules/4.9-ndm-4/nfs.ko и insmod /lib/modules/4.9-ndm-4/nfsd.ko просто не работают, ругаются вот таким: insmod: can't insert '/lib/modules/4.9-ndm-4/nfsd.ko': unknown symbol in module, or unknown parameter.

Edited by REVERSE
  • Upvote 1

Share this post


Link to post
Share on other sites
В 26.09.2018 в 19:42, TheBB сказал:

oops! ошибся в названии пакета. пакет называется rpcbind. для запуска `/opt/etc/init.d/S19rpcbind start`

пакет должен был быть установлен по зависимостям (libtirpc - так же)

А скрипт запуска ./S57nfs-kernel-server проверяет наличие запущенного portmap.

Достаточно ли тогда просто променять строку на if [ -z "`pidof rpcbind`" ] ; then ?

  • Thanks 1

Share this post


Link to post
Share on other sites
В 24.08.2020 в 10:02, Александр Сухоруков сказал:

Достаточно ли тогда просто променять строку на if [ -z "`pidof rpcbind`" ] ; then ?

можно просто вырезать "мёртвый код"

Share this post


Link to post
Share on other sites
19 часов назад, TheBB сказал:

можно просто вырезать "мёртвый код"

Тогда как уже писали падает на modprobe

./S57nfs-kernel-server start
Starting NFS server
./S57nfs-kernel-server: line 13: modprobe: not found
mount: mounting rpc_pipefs on /opt/var/lib/nfs/rpc_pipefs failed: No such device
mount: mounting nfsd on /proc/fs/nfsd failed: No such device
./S57nfs-kernel-server: line 25: can't create /proc/fs/nfsd/max_block_size: nonexistent directory
exportfs: Failed to stat /mnt: No such file or directory
rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory).
Please try, as root, 'mount -t nfsd nfsd /proc/fs/nfsd' and then restart rpc.nfsd to correct the problem
rpc.nfsd: unable to set any sockets for nfsd

Share this post


Link to post
Share on other sites
4 часа назад, Александр Сухоруков сказал:

./S57nfs-kernel-server: line 13: modprobe: not found

`opkg install kmod` или `opkg install kmod_ndms` (второй подтянет прошивки для USB-TV)

+

4 часа назад, Александр Сухоруков сказал:

Please try, as root, 'mount -t nfsd nfsd /proc/fs/nfsd' and then restart rpc.nfsd to correct the problem
rpc.nfsd: unable to set any sockets for nfsd

выполнить то, что просят.

вариации на тему ))) :

забрать скрипт запуска из проекта buildroot , адаптировать и запустит, e.g.:

~ # /opt/etc/init.d/S60nfs restart
Shutting down NFS mountd: OK
Shutting down NFS daemon: OK
Shutting down NFS services: OK
Stopping NFS statd: OK
Starting NFS statd: OK
Starting NFS services: OK
Starting NFS daemon: OK
Starting NFS mountd: OK
~ #

 

Share this post


Link to post
Share on other sites
1 час назад, TheBB сказал:

Please try, as root, 'mount -t nfsd nfsd /proc/fs/nfsd'

opkg install kmod
Installing kmod (20-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/kmod_20-2_mipsel-3.4.ipk
Configuring kmod.
root@Giga /o/e/init.d# mount -t nfsd nfsd /proc/fs/nfsd
mount: mounting nfsd on /proc/fs/nfsd failed: No such device

Однако никак.

 

Share this post


Link to post
Share on other sites

У меня giga 3

Текущая версия KeeneticOS: 3.3.16

не знаю то ли я делаю но модули, если они нужны, не подгружаются.

lsmod | grep nfs не выводит ничего

insmod дает ошибку

root@Giga /l/m/4.9-ndm-4# insmod nfsd.ko
insmod: ERROR: could not insert module nfsd.ko: Unknown symbol in module
root@Giga /l/m/4.9-ndm-4# insmod nfs.ko
insmod: ERROR: could not insert module nfs.ko: Unknown symbol in module

modprobe на эти модули ничего не пишет, но и модули не загружает.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...