From 868fec1f8eca7c344fc9ac057b7418331299d9ce Mon Sep 17 00:00:00 2001 From: Lars Müller Date: Sat, 1 Mar 2008 18:30:38 +0000 Subject: Import dnbd* from the former openslx-contrib repo as of revision 92. openslx-contrib is currently read only and will get removed in some days. git-svn-id: http://svn.openslx.org/svn/openslx/contrib/dnbd/trunk@1592 95ad53e4-c205-0410-b2fa-d234c58c8868 --- README | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 README (limited to 'README') diff --git a/README b/README new file mode 100644 index 0000000..9074c3f --- /dev/null +++ b/README @@ -0,0 +1,153 @@ +INTRODUCTION +============ + +DNBD (Distributed Network Block Device) is a read-only and caching network +block device and supports following main features: + +* replication of servers for robustness +* multicast communication and caching of network traffic for scalability + +These characteristics make it suitable especially for use in wireless networks, +e.g. for diskless clients or to share multimedia files in such an environment. +The servers can export a file or block device equipped with a operating system, +movies, music, etc. Several clients can import the block device and access it +like a local hard disk. However, each block transfer over the network can be +cached by all clients: If several users on each client start to watch a movie +within a certain time interval, the movie data has to be transmitted only once +(depending on the cache size). The network is not burdened with unnecessary +traffic. +DNBD can be used together with cowloop [1] or unionfs [2] in order to get local +write semantics, e.g. for diskless clients. Especially in wireless environments +with limited bandwidth, caching can increase boot-up time enormously. + +COMPILATION +=========== + +DNBD was developed for kernel 2.6.13 and later releases. Kernel 2.4 is not +supported. The kernel sources and common tools (gcc, make, etc.) have to be +installed. + +Server and Client +-------------------- +Unpacking: +$ tar xzvf dnbd.tar.gz + +Compiling: +$ cd dnbd; make + +USAGE +===== + +Server +------ +To show available command line parameters, start the server without +arguments: + +$ ./server/dnbd-server +dnbd-server, version 0.9.0 +Usage: dnbd-server -m
-d -i + [-t ] + +description: + -m|--mcast + -d|--device + -i|--id + -t|--threads + +With the following command, the server will be started for the multicast +network with address 239.0.0.1 and export the given file or block device. +Its unique id is 1: + +root@server1 $ ./server/dnbd-server -m 239.0.0.1 -d -i 1 + +To start a server on another computer, the used file or block device must have +the same content and size as on the first server. However, the id has to be +changed: + +root@server2 $ ./server/dnbd-server -m 239.0.0.1 -d -i 2 + +If DNBD is used for wired networks and on multi-processor machines, the +number of threads should be increased to the number of CPUs. + +To access the exported file or block device, another computer is used as +client. + +Client +------ + +The kernel module has to be loaded, before the client application can be used: + +root@client1 $ insmod ./kernel/dnbd.ko + +There should be an entry in syslog after successful loading. With no command +line arguments the client gives available options: + +root@client1 $ ./client/dnbd-client +dnbd-client, version 0.9.0 +Usage: dnbd-client -d device -b
[-c ] + or dnbd-client -d device -u + or dnbd-client -d device -c + +description: + -d|--device + -b|--bind + -u|--unbind + -c|--cache + +We will now import the block device of the server, e.g.: + +root@client1 $ ./client/dnbd-client -d /dev/dnbd0 -b 239.0.0.1 + +The client should tell you that it found a server with id "1". If you exported +a CDROM with a movie, you can watch it on the client over the network, e.g. +with mplayer (usually after mounting). + +If someone else wants to watch the movie on a different client, you should +enable caching either during operation + +root@client1 $ ./client/dnbd-client -d /dev/dnbd0 -c + +or at the beginning + +root@client2 $ ./client/dnbd-client -d /dev/dnbd0 -b 239.0.0.1 -c + +To create a cache with, e.g. 32M use + +root@client1$ dd if=/dev/zero of=/tmp/cachefile bs=1M count=32 + +Cache statistics are shown with + +root@client1$ cat /proc/driver/dnbd/dnbd0 + +The block device has to be unbound before the module can be unloaded: + +root@client1 $ ./client/dnbd-client -d /dev/dnbd0 -u +root@client1 $ rmmod dnbd + +FILES +===== + +Client +------ +./client + client.c # client application + +Server +------ +./server + net.c # network routines + query.c # server request handling + filer.c # file/device I/O + server.c # server application (main file) + +Kernel module +------------- +./kernel + net.c # server management + queue.c # queue handling for requests + cache.c # cache implementation (red-black trees) + main.c # module and block device (un)registration, threads + + +[1] http://www.atconsultancy.nl/cowloop/ +[2] http://www.fsl.cs.sunysb.edu/project-unionfs.html -- cgit v1.2.3-55-g7522