ATA over Ethernet

**ATA over Ethernet**（**ATAoE**、**AoE**）は、Brantley Coile Companyhttp://support.coraid.com/documents/AoEr11.pdf が開発した通信プロトコルであり、ATAストレージ装置にイーサネット経由でアクセスするもの。ストレージエリアネットワーク (SAN) を低価格の標準技術を使って構築できる。

ATAoEはイーサネット上の一般の上位プロトコル（IP、UDP、TCPなど）を使わない。つまり、ATAoEは複数のLANをまたがることはできず、SANとしてのみ利用可能である。SANの別の方式であるiSCSIは仕様書が257ページにも及ぶが、ATAoE の仕様書はわずか12ページである。

## OSでのサポート
ATAoEをサポートしているオペレーティングシステム (OS) として以下のものがある。

サードパーティー製品でのATAoEサポートとしては、以下のものがある。
* Coraid http://www.coraid.com/は、FreeBSD向けのデバイスドライバを提供しており、現在のバージョンはStacy D. Son http://www.coraid.com/support/freebsd/が保守している。
* 2DegreesFrost http://www.2degreesfrost.com/ は、Mac OS X (10.4) 向けのATAoEサポートを提供している。
* WinAoE http://winaoe.orgはオープンソース（GPL）のWindows向けATAoEアクセスドライバであり、ディスクレスブートにも対応している（つまりブートディスクをイーサネット経由で接続）。
* LayerWalker http://www.layerwalker.com/は、ATAoE技術をホームアプライアンスや周辺機器製品に導入している。

## ハードウェアでのサポート
Coraid http://www.coraid.com/は、ATAoE用ハードディスクドライブEtherDriveを販売している。

LayerWalker http://www.layerwalker.com/はATAoEを中心とした miniSAN と呼ぶソリューションを2007年に発表した。

また、vbladeプログラムを使うと、Linuxが動作するコンピュータのハードディスクをイーサネットで接続された他のコンピュータにATAoE用ドライブ（ターゲット）であるかのように見せることができる。vbladeの実装は、ユーザー空間で実装されたものとLinuxカーネルモジュールとして実装されたものの2種類がある。

## 関連する概念
ATAoEは単純なプロトコルだが、その可能性は大きい。それには、以下のような概念が関係してくる。

### ブロックストレージ
ATAoEは、ATAコマンド群をサポートした補助記憶装置のセッション層プロトコルである。ディスクの読み書きはブロックと呼ばれる固定サイズのデータ単位で行われる。ブロックサイズは512バイトで固定されている。

ATAoEは ATAコマンドと（もしあれば）データがイーサネットのフレーム内でどのようにフォーマットされるかを指定している。従って、イーサネットとATAoE用補助記憶装置の組合せは、通常のホストバスアダプタとディスク装置とケーブルの置換となる。

#### ブロックストレージ上のファイルシステム
一般に、ハードディスクはその上でファイルシステムを構築して利用される。つまり、ハードディスクから見た唯一のユーザーはファイルシステムになる。ext3、XFS、HFS+、NTFSといったファイルシステムは、そのような前提で設計されている。

ATAoEを使うと、イーサネットには複数のコンピュータが接続されているため、この前提が崩れる可能性が生じる。従来型のファイルシステムではこれは危険であり、ファイルシステムの中身が壊れたり、OSがダウンする事態を引き起こす。

クラスターファイルシステムは、あるブロックデバイスにアクセスできるコンピュータを1台に制限することで、これを回避する。複数のコンピュータが協調動作して安全にブロックデバイスを共有することを可能にする。

このようなクラスターファイルシステムの例としてGFSやOCFS2がある。

ストレージエリアネットワーク (SAN) のファイルシステムではこれとは異なった回避方法をとっているものもある。Tiger Technology Sarlhttp://www.tiger-technology.com/のMetaSANでは、NTFSなどの通常のファイルシステムを構築したディスクドライブを複数のコンピュータで共有可能であり、ATAoE もサポートしている。

#### ディスクドライブ
ATAoEのターゲットデバイスは、ハードディスクドライブまたはホスト側からハードディスクのように見えるものである。これについては、以下の点が重要である。
* アクセス性能は、ディスクのRPM（回転速度）、ヘッド移動速度（シークタイム）、磁気記録密度、ヘッドの位置あわせの正確さ、ディスク上のデータの配置、インタフェース技術などに依存する。
* ランダムなディスクアクセス性能は、主にシークタイムで決定される。
** ランダムアクセスはシーケンシャルアクセスの約100倍の時間がかかる。
** 単一ディスクのシーケンシャルアクセスは一般に 50-80 MB/s の性能である。
** RAIDでは、シーケンシャルアクセス性能もランダムアクセス性能も一般に向上する。
** ホストOSとディスクファイルシステムは、ディスク性能を引き出すため、なるべくシーケンシャルにアクセスしようとする。

### イーサネット
ATAoE ではイーサネットについての以下の点が重要である。
* ATAoE のパケットでは、MACアドレスのみで発信元と送信先を示す。MACアドレスはイーサネットのレベルで規定されているアドレスである。従って、単一のイーサネットがブロードキャストできる範囲でしか使えない。
* 最近のハードウェアにはイーサネットでのフロー制御機能が備わっていて、再送をなるべくしないようにしている。
* イーサネットのフレームは巡回冗長検査で完全性を保つようになっており、検査に通らないフレームは捨てられる。

## ATAoE の利点
イーサネットを使ってブロックストレージにアクセスすると、以下のような利点がある。
* ストレージ容量を追加するのが容易である。
* 容量の上限は事実上存在しない。
* アクセスはイーサネットの物理的な制限によって制御できる。そのLANがインターネットと接続していても、外部からATAoEのパケットを送り込むことはできない。
* 一般的なハードウェアを使うことができる。
* バックアップが容易にできる可能性がある。
* データを複数のコンピュータで共有できる可能性がある。

## Config String
ATAoEターゲット（ストレージ）には、Config String と呼ばれる情報が付与される。これはディスクドライブそのものに格納される情報ではなく、インタフェース部にある不揮発性メモリに格納される。Config String は初期状態では長さゼロであり、その状態のときだけATAoEイニシエータが Config String を設定できる。これを使って、簡単な調停が行える。

## 関連項目
* HyperSCSI - いわばSCSI over Ethernet
* iSCSI - SCSI over TCP/IP
* ファイバーチャネル・オーバー・イーサネット (Fiber Channel over Ethernet, FCoE)

## 脚注

## 外部リンク
* 記事:
** ATA Over Ethernet: Putting Hard Drives on the LAN — Linux Journal (28 April 2005)
**  — LinuxDevices.com (23 June 2004)
** The ATA over Ethernet (AoE) Protocol — Linux Magazine (June 15th, 2005) 要ログイン
* プロトコル:
** AoE protocol description (PDF file)
** AoE protocol definition
* エミュレータとツール:
** ATA Over Ethernet Tools and vblade ユーザー空間版 vblade を含む。
** vblade, implemented as a kernel module ユーザー空間版より高速である。
** qaoed - Mulithreaded ATA over Ethernet storage target ユーザー空間版
** Aoeserver - Mulithreaded ATA over Ethernet storage target カーネルモジュール版
* Live CD:
** Slax Frodo with vblade and ATA Over Ethernet Tools 評価やバックアップに利用できる。
* ハウツー:
** Using ATA Over Ethernet On Debian Etch