| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | 
INTRODUCTION------------The vblade is a minimal ATA over Ethernet (AoE) storage target.  Itsfocus is simplicity, not performance or richness of features.  Itexports a seekable file available over an ethernet local area network(LAN) via the AoE data storage protocol.The name, "vblade," is historical: It is a virtual EtherDrive (R)blade.  The first AoE target hardware sold by Coraid was in a bladeform factor, ten to a 4-rack-unit chassis.The seekable file is typically a block device like /dev/md0 but evenregular files will work.  Sparse files can be especially convenient.When vblade exports the block storage over AoE it becomes a storagetarget.  Another host on the same LAN can access the storage if it hasa compatible aoe kernel driver.BUILDING--------The following command should build the vblade program on a Linux-basedsystem:  makeFor FreeBSD systems, include an extra parameter like so:  make PLATFORM=freebsdEXAMPLES--------There is a "vbladed" script that daemonizes the program and sends itsoutput to the logger program.  Make sure you have logger installed ifyou would like to run vblade as a daemon with the vbladed script.  ecashin@kokone vblade$ echo 'I have logger' | logger  ecashin@kokone vblade$ tail -3 /var/log/messages  Feb  8 14:52:49 kokone -- MARK --  Feb  8 15:12:49 kokone -- MARK --  Feb  8 15:19:56 kokone logger: I have loggerHere is a short example showing how to export a block device with avblade.  (This is a loop device backed by a sparse file, but you coulduse any seekable file instead of /dev/loop7.)  ecashin@kokone vblade$ make  cc -Wall   -c -o aoe.o aoe.c  cc -Wall   -c -o linux.o linux.c  cc -Wall   -c -o ata.o ata.c  cc -o vblade aoe.o linux.o ata.o  ecashin@kokone vblade$ su  Password:   root@kokone vblade# modprobe loop  root@kokone vblade# dd if=/dev/zero bs=1k count=1 seek=`expr 1024 \* 4096` of=bd  -file  1+0 records in  1+0 records out  1024 bytes transferred in 0.009901 seconds (103423 bytes/sec)  root@kokone vblade# losetup /dev/loop7 bd-file    root@kokone vblade# ./vblade 9 0 eth0 /dev/loop7   ioctl returned 0  4294968320 bytes  pid 16967: e9.0, 8388610 sectorsHere's how you can use the Linux aoe driver to access the storage fromanother host on the LAN.  ecashin@kokone ecashin$ ssh makki  Last login: Mon Feb  7 10:25:04 2005  ecashin@makki ~$ su  Password:   root@makki ecashin# modprobe aoe  root@makki ecashin# aoe-stat      e9.0            eth1              up  root@makki ecashin# mkfs -t ext3 /dev/etherd/e9.0  mke2fs 1.35 (28-Feb-2004)...  Creating journal (8192 blocks): done  Writing superblocks and filesystem accounting information: done    This filesystem will be automatically checked every 24 mounts or  180 days, whichever comes first.  Use tune2fs -c or -i to override.  root@makki ecashin# mkdir /mnt/e9.0  root@makki ecashin# mount /dev/etherd/e9.0 /mnt/e9.0  root@makki ecashin# echo hooray > /mnt/e9.0/test.txt  root@makki ecashin# cat /mnt/e9.0/test.txt  hoorayRemember: be as careful with these devices as you would with /dev/hda!Jumbo Frame Compatibility-------------------------Vblade can use jumbo frames provided your initiator is jumbo framecapable.  There is one small configuration gotcha to consider to avoid having the vblade kernel frequently drop frames.Vblade uses a raw socket to perform AoE.  The linux kernel willonly buffer a certain amount of data for a raw socket.  For 2.6kernels, this value is managed through /proc:root@nai aoe# grep . /proc/sys/net/core/rmem_*/proc/sys/net/core/rmem_default:128000/proc/sys/net/core/rmem_max:128000rmem_max is the max amount a user process may expand the receivebuffer to -- through setsockopt(...) -- and rmem_default is, as youmight expect, the default.The gotcha is that this amount to buffer does not relateto the amount of user data buffered, but the amount ofreal data buffered.  As an example, the Intel GbE controllermust be given 16KB frames to use an MTU over 8KB.For each received frame, the kernel must be able to buffer16KB, even if the aoe frame is only 60 bytes in length.The linux aoe initiator will use 16 outstanding frames whenused with vblade.  A good default for ensuring frames arenot dropped is to allocate 16KB for 17 frames:for f in /proc/sys/net/core/rmem_*; do echo $((17 * 16 * 1024)) >$f; doneBe sure to start vblade after changing the buffering defaultsas the buffer value is set when the socket is opened.AoE Initiator Compatibility---------------------------The Linux aoe driver for the 2.6 kernel is compatible if you useaoe-2.6-7 or newer.  You can use older aoe drivers but you will onlybe able to see one vblade per MAC address.Contrib Patches---------------see contrib/READMEKvblade-------  While vblade runs as a userland process (like "ls" or "vi"), there  is another program that runs inside the kernel.  It is called  kvblade.  It is alpha software.
 |