||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents>>||

= Language =

||'''[[ATAOverEthernet|En]]'''||||'''[[ATAOverEthernet_RU|Ru]]'''||

= Introduction =

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 [[http://en.wikipedia.org/wiki/Global_File_System|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 [[https://launchpad.net/bugs/223440|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 [[https://launchpad.net/bugs/234033|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"
EOM
   (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
}}}

= References =

 * http://support.coraid.com/support/linux/EtherDrive-2.6-HOWTO.html
 * http://en.wikipedia.org/wiki/ATA_over_Ethernet
 * http://en.wikipedia.org/wiki/Global_File_System

----
CategoryHardware CategoryNetworking