Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux...
[wrt350n-kernel.git] / Documentation / nbd.txt
blobaeb93ffe64163173e37cf099a63451b6540551d0
1                       Network Block Device (TCP version)
2                                        
3    What is it: With this compiled in the kernel (or as a module), Linux
4    can use a remote server as one of its block devices. So every time
5    the client computer wants to read, e.g., /dev/nb0, it sends a
6    request over TCP to the server, which will reply with the data read.
7    This can be used for stations with low disk space (or even diskless -
8    if you boot from floppy) to borrow disk space from another computer.
9    Unlike NFS, it is possible to put any filesystem on it, etc. It should
10    even be possible to use NBD as a root filesystem (I've never tried),
11    but it requires a user-level program to be in the initrd to start.
12    It also allows you to run block-device in user land (making server
13    and client physically the same computer, communicating using loopback).
14    
15    Current state: It currently works. Network block device is stable.
16    I originally thought that it was impossible to swap over TCP. It
17    turned out not to be true - swapping over TCP now works and seems
18    to be deadlock-free, but it requires heavy patches into Linux's
19    network layer.
20    
21    For more information, or to download the nbd-client and nbd-server
22    tools, go to http://nbd.sf.net/.
24    Howto: To setup nbd, you can simply do the following:
26    First, serve a device or file from a remote server:
28    nbd-server <port-number> <device-or-file-to-serve-to-client>
30    e.g.,
31         root@server1 # nbd-server 1234 /dev/sdb1
33         (serves sdb1 partition on TCP port 1234)
35    Then, on the local (client) system:
37    nbd-client <server-name-or-IP> <server-port-number> /dev/nb[0-n]
39    e.g.,
40         root@client1 # nbd-client server1 1234 /dev/nb0
42         (creates the nb0 device on client1)
44    The nbd kernel module need only be installed on the client
45    system, as the nbd-server is completely in userspace. In fact,
46    the nbd-server has been successfully ported to other operating
47    systems, including Windows.