There is now a kernel module (aoe), tools (aoetools) and server software (vblade) which allows anyone to set up an ATA over Ethernet storage network... it is very easy to do in Ubuntu.

This software is available in Dapper 6.06 LTS and later..

WARNING: These commands need to be run with root privileges (sudo -i). Do this at your own risk.

WARNING: Don't mount the target from more than one client or filesystem corruption will occur. To do this something like GFS is needed.

Required Packages

With the Universe repository enabled..

On the Ubuntu host that you wish to be the disk server (due to a bug in Ubuntu 8.04 LTS, you will need vblade 14-1ubuntu1.1 for this to work. See bug #223440 for details):

  (server)# apt-get install vblade

On the Ubuntu host that you wish to mount the disk on:

  (client)# apt-get install aoetools

To set the interface up

It's important to note that no IP address is needed to get this working.

 # ip link set eth0 up

To create an AoE device

To test that everything is working correctly, we created and used a 1 Mbyte file (vblade0). Any other block device or file could be used.

On the server:

  (server)# dd if=/dev/zero of=vblade0 count=1 bs=1M
  (server)# vblade 1 1 eth0 vblade0
  ioctl returned 0
  1048576 bytes
  pid 25000: e1.1, 2048 sectors

The daemon ('vbladed') could be used instead of 'vblade', which detaches the process from the console and send log messages to the system logs.

Using AoE

The 'aoe' module should already be automatically loaded when the 'aoetools' package is installed. Please note that you will not be able to discover AoE devices on the localhost unless you specify lo to vblade.

If this hasn't occured, insert the module into the linux kernel.

  (client)# modprobe aoe

optionally the list of interfaces can be specified while loading the module

   (client)# modprobe aoe aoe_iflist="eth0 eth1"

This can automatically be performed at startup, by entering a line into the /etc/modules file.

In Ubuntu 6.06 (or any systems without udev), create the 'etherd' directory:

  (client)# mkdir /dev/etherd

In Ubuntu 8.04, add the necessary rules to udev (this is not needed in 9.04 and later, see bug #234033):

   (client)# cat > /etc/udev/rules.d/60-aoe.rules << EOM
SUBSYSTEM=="aoe", NAME="etherd/%k", GROUP="disk", MODE="0220"
SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
   (client)# /etc/init.d/udev restart

Next, access the devices:

  (client)# aoe-interfaces eth0
  (client)# aoe-discover
  (client)# aoe-stat
      e1.1         0.001GB   eth0 up 

The block device is then located in /dev/etherd/e1.1 and can be treated like any other block device.

Create a filesystem:

  (client)# mke2fs /dev/etherd/e1.1

Create a mount point and mount the file system:

  (client)# mkdir /mnt/e1.1
  (client)# mount /dev/etherd/e1.1 /mnt/e1.1

This can be made to automatically mount on reboot, by entering a configuration line in /etc/fstab (untested).

If the AoE device disappears or changes size use the aoe-revalidate command:

   (client)# aoe-revalidate e1.1

Alternatively, you can re-load the aoe module completely.

   (client)# rmmod aoe
   (client)# modprobe aoe


CategoryHardware CategoryNetworking

ATAOverEthernet (last edited 2009-12-20 16:27:19 by philip-tidepool)