This is a guest post written by Dhineshkumar Manikannan.
Network block devices are used to access remote storage device that does not physically reside in the local machine. Using Network Block Device, we can access and use the remote storage devices in following three ways on the local machine:
- File System
NBD presents a remote resource as local resource to the client. Also, NBD driver makes a remote resource look like a local device in Linux, allowing a cheap and safe real-time mirror to be constructed.
You can also use remote machine storage area as local machine swap area using NBD.
To setup the NBD based file system, we need a nbd-server (on remote machine, where we like to access/create the content) and nbd-client (on local machine, where we like to access the remote storage device locally).
I. NBD Server Side Configuration Steps
1. Install nbd-server
If you working on Debian flavor, get the nbd-server through apt-get.
# apt-get install nbd-server
2. Create a file content
Create a file using dd as shown below.
# dd if=/dev/zero of=/mnt/dhini bs=1024 count=36000
Use mke2fs to make the /mnt/dhini as a filesystem.
# mke2fs /mnt/dhini
When you try to make /mnt/dhini as ext2 file system, you may get a warning message as show below. Press y to continue.
/mnt/dhini is not a block special device. Proceed anyway? (y,n) y
3. Start the NBD Server Daemon
Syntax: nbd-server port-number filename/filesystem # nbd-server 1043 /mnt/dhini
You can also run the nbd-server on multiple ports as shown below.
# nbd-server 1043 1077 1076 /mnt/dhini
You can also specify the timeout to make the server to run N idle seconds
II. NBD Client Side Configuration Steps
Perform the following steps in the client machine, where you like to access the remote storage device.
1. Install nbd-client
If you working on debian flavor, get the nbd-client through apt-get.
# apt-get install nbd-client
2. Using nbd-client create a filesystem on client machine
Syntax: nbd-client server-ip server-port# filename/filesystem # nbd-client 192.168.1.11 1043 /mnt/dhini Starting NBD client process: Connecting...Negotiation: ..size = 36000KB bs=1024, sz=36000 connected /mnt/dhini Activating... fsck 1.39-WIP (31-Dec-2005) /mnt/dhini: Superblock last write time is in the future. FIXED. /mnt/dhini has gone 49710 days without being checked, check forced. /mnt/dhini: |===============================| 56.0% /mnt/dhini: |===============================| 100.0%
Once it gets to 100%, you will get the block device on your local macine on the same path.
$ls -lh /mnt/dhini brw-r--r-- 1 root root 43, 0 2009-02-05 17:31 /mnt/dhini
If you face any issues during the NBD configuration process, you may also configure the nbd-server and nbd-client through dpkg-reconfigure.
III. Mount the File System on Client-side
# mkdir /rem_space # mount /mnt/dhini /rem_space
Once mounted, you may get the directory with “lost+found”. You can start accessing the files and directories properly from this point.
IV. Get Client Changes on Server-side
Mount the nbd filesystem locally
# mount -o loop /mnt/dhini /client_changes
If you are not using “-o loop” option, you may get the following error:
mount: /mnt/dhini is not a block device (maybe try `-o loop'?)
When you list the /client_changes, You will get all the client created files and directories properly.
V. Access Remote Storage as Local Swap Memory Area
Configuration On Server side:
1. Create a file
# dd if=/dev/zero of=/mnt/dhini bs=1024 count=16000
2. Instead of create a file in ext2 filesystem create it as swap file, using mkswap
# mkswap /mnt/dhini
3. Run the server daemon
# nbd-server 1043 /mnt/dhini
Configuration On Client side:
1. Get the filesystem as swap area
# nbd-client 192.168.1.11 1043 -swap /mnt/dhini
2. Cross check using “cat /proc/swaps “. This will list the swap areas
$ cat /proc/swaps Filename Type Size Used Priority /dev/hda4 partition 650624 57732 -1 /mnt/dhini partition 15992 0 -4