| Network Block Device (TCP version) | |
| What is it: With this compiled in the kernel (or as a module), Linux | |
| can use a remote server as one of its block devices. So every time | |
| the client computer wants to read, e.g., /dev/nb0, it sends a | |
| request over TCP to the server, which will reply with the data read. | |
| This can be used for stations with low disk space (or even diskless - | |
| if you boot from floppy) to borrow disk space from another computer. | |
| Unlike NFS, it is possible to put any filesystem on it, etc. It should | |
| even be possible to use NBD as a root filesystem (I've never tried), | |
| but it requires a user-level program to be in the initrd to start. | |
| It also allows you to run block-device in user land (making server | |
| and client physically the same computer, communicating using loopback). | |
| Current state: It currently works. Network block device is stable. | |
| I originally thought that it was impossible to swap over TCP. It | |
| turned out not to be true - swapping over TCP now works and seems | |
| to be deadlock-free, but it requires heavy patches into Linux's | |
| network layer. | |
| For more information, or to download the nbd-client and nbd-server | |
| tools, go to http://nbd.sf.net/. | |
| Howto: To setup nbd, you can simply do the following: | |
| First, serve a device or file from a remote server: | |
| nbd-server <port-number> <device-or-file-to-serve-to-client> | |
| e.g., | |
| root@server1 # nbd-server 1234 /dev/sdb1 | |
| (serves sdb1 partition on TCP port 1234) | |
| Then, on the local (client) system: | |
| nbd-client <server-name-or-IP> <server-port-number> /dev/nb[0-n] | |
| e.g., | |
| root@client1 # nbd-client server1 1234 /dev/nb0 | |
| (creates the nb0 device on client1) | |
| The nbd kernel module need only be installed on the client | |
| system, as the nbd-server is completely in userspace. In fact, | |
| the nbd-server has been successfully ported to other operating | |
| systems, including Windows. |