Re: client (-1) cannot open NBD device /dev/nda or similar: Nosuch file or directory

Peter Breuer <[email protected]> Tue, 4 Nov 2008 16:23:50 +0100 (CET)
Newsgroups gmane.linux.enbd.general
Message-ID <[email protected]>
Hi Volker ...

"Also sprach Volker Stoppe:"
> Hallo list!
> 
> I am trying to implement ENBD but I stuck at the moment when I want to
> connect from the client to the Server.  Compiation of the source works
> fine, the modules are loading without a problem and I have no problem
> starting with the server.  I would be -very- glad if someone could help!
> Nobody in the web seems to have my problem.  I followed the instructions
> from: http://www.it.uc3m.es/~ptb/nbd/ but there has to be something
> missing.  It is definitly not sudo (installed).

Strange. Let's see (log output and /proc/nbdinfo is what I generally
need to make diagnosis complete - te's have a go).

> Environment:
> Distri: Debian 4.0
> Kernel: 2.6.18-6-686
> ENBD: 2.4.35
> 
> PS: I know that client and server have the same hostname (clones).
> 
> Some output of the Systems:
> 
> == Server ==
> debian32:~/enbd# lsmod | grep enbd
> enbd_ioctl              5920  0
> enbd                  583032  1 enbd_ioctl
> 
> debian32:~/enbd# ./enbd-server 4001 /dev/sda1

Listens on port 4001.

> enbd-server[3843]: server: will open resources in mode linear
> enbd-server[3843]: looking for blksize of /dev/sda1 with fstat...
> enbd-server[3843]: blksize of /dev/sda1 is 4096                  
> enbd-server[3843]: set final blksize of whole resource to 4096   
> enbd-server[3843]: looking for size of fd 4 with seek SEEK_END...
> enbd-server[3843]: set size of fd 4 to 98668544                  
> enbd-server[3843]: server: set blksize to 4096.                  
> enbd-server[3843]: size of exported file/device is 98668544B (24089 blocks)
> enbd-server[3844]: server (-2) locked /var/state/enbd/server-1Bu49m.client_ips
> enbd-server[3844]: server (-2) unlocked /var/state/enbd/server-1Bu49m.client_ips
> enbd-server[3844]: server (-2) set new signal handlers                     

Looks like it's doing something. I note the server is running without
an explicit session identifier (-i ...) and the identifier (1Bu49m) has been
assigned randomly.


> debian32:~/enbd# ps aux | grep enbd
> root      3844  0.0  0.1   1844   664 pts/0    S    Nov03   0:00 ./enbd-server 4001 /dev/sda1
> root      3872  0.0  0.1   2872   748 pts/0    S+   02:12   0:00 grep enbd
> 
> debian32:/usr/src/enbd-2.4.35# cat /proc/nbdinfo
> Device a-p:     Closed

Well, no client, I guess. Nobody seems to have connected.

> Also the test didn't work:
> debian32:/usr/src/enbd-2.4.35# make test
> enbd-server[5969]: server (-2) sighandler propagates signal 15
> enbd-server[5969]: server (-2) sighandler terminates safely on signal 15
> /tmp/enbd-server localhost/8:3033 /tmp/core0 /tmp/core1 -i NBDabcdefNBD -t 120 -b 1024 -l -w 500 -h 10000
> enbd-server[6055]: server: will open resources in mode linear
> enbd-server[6055]: looking for size of fd 4 with seek SEEK_END...
> enbd-server[6055]: set size of fd 4 to 4194304
> enbd-server[6055]: looking for size of fd 5 with seek SEEK_END...
> enbd-server[6055]: set size of fd 5 to 4194304
> enbd-server[6055]: size of exported file/device is 8388608B (8192 blocks)
> enbd-server[6056]: server (-2) locked /var/state/enbd/server-NBDabcdefNBD.client_ips
> enbd-server[6056]: server (-2) unlocked /var/state/enbd/server-NBDabcdefNBD.client_ips
> enbd-server[6056]: server (-2) set new signal handlers
> /tmp/enbd-client localhost:3033 -n 4 -b 1024 -i NBDabcdefNBD -t 120 -p 5 /dev/nda
> enbd-client[6057]: enbd-client cmdline: #channels is 4
> enbd-client[6057]: enbd-client cmdline: blksize is 1024
> enbd-client[6057]: enbd-client cmdline: identifier is "NBDabcdefNBD"
> enbd-client[6057]: enbd-client cmdline: negotiation timeout is 120
> enbd-client[6057]: enbd-client cmdline: pulse intvl is 5
> enbd-client[6057]: enbd-client #5757 main[0]: client (-1) cannot open NBD device /dev/nda or similar: No such file or directory


Oh - well, that's clear!

You don't have the /dev/nda, /dev/ndaS, /dev/ndaX, /dev/ndaSX devices
nodes.

You need to make them .. there's a MAKEDEV script provided.


Alternatively, you can drop in the udev script provided. It's in the
archive ..


  % ls -lR nbd/etc/udev/
  nbd/etc/udev/:
  -rw-r--r-- 1 ptb kmem 1019 Oct 13  2006 enbd.rules
  drwxrwxr-x 2 ptb kmem 1024 Apr 13  2008 rules.d/
  nbd/etc/udev/rules.d:
  lrwxrwxrwx 1 ptb kmem 13 Apr 13  2008 090-enbd.rules -> ../enbd.rules






> client not running
> cannot open /dev/nda rw: Invalid argument
> done

Well, that would be the case.

> == Output of the Client ==
> 
> debian32:~/enbd# ls /dev/nda*
> /dev/nda
> 
> debian32:~/enbd# ps aux | grep enbd
> root      3790  0.0  0.1   2876   752 pts/0    S+   02:15   0:00 grep enbd
> 
> debian32:~/enbd# ./enbd-client 192.168.1.20:4001 -n 1  /dev/nda1
> enbd-client[3788]: enbd-client cmdline: #channels is 1
> enbd-client[3788]: enbd-client #5757 main[0]: client (-1) cannot open NBD device /dev/nda1 or similar: No such file or directory

Same.



> I am thankful for every useful hint!

Needs the /dev/nd[S]xy stuff, I would say. Try the MAKEDEV script.

  % ls nbd/scripts/
  MAKEDEV  REMOVEDEV  postinst

That gets installed somewhere ... run dpkg -L on the .deb to see where
it goes (I don't have a package handy).

Better check that the udev enbd.rules script refernces wherever it is
put too! Tell me if not :).


Regards

Peter