ATA over Ethernet

ATA over Ethernet（簡稱：AoE）是由Brantley Coile所提創的一種網路通訊協議，此協定可以在乙太網路上訪問ATA標準的存儲裝置（多指硬碟），運用此協定的好處在於能以平價且標準的技術來實現一個儲存區域網路環境。

AoE不倚賴乙太網路中網路層以上的協定，包括IP、UDP、TCP等都棄捨不用，這表示AoE不能通過在區域網路上進行路由、繞徑，很明顯AoE僅打算做為儲存區域網路之用。

需要注意的是，AoE與iSCSI相同，皆強調自身是遠比光纖渠道（Fibre Channel）低廉的儲存區域網路佈建方案，不過AoE標榜比iSCSI更簡單、更低廉。單就標準規範的技術文件而言，AoE規格僅有8頁，而iSCSI卻為257頁。

## 作業系統支持

以下是各式作業系統對AoE的支援程度：

- Linux
- Linux自2.6.11版（2005年3月1日發佈）之後的核心程式即具備AoE的功效機制。
- FreeBSD
- FreeBSD自身並不支援AoE，但Coraid公司有提供FreeBSD之用的AoE驅動程式 （下載網址）
- Solaris
- 無論是SPARC版的Solaris或x86版的Solaris，都已有外部測試（beta test）性的AoE驅動程式。
- OpenBSD
- 自4.5-Current版開始原生支援

其他作業系統如Windows、Mac OS X等並未內建支援，需要第三方的驅動程式方可使用。

## 支援AoE的軟、硬體

在支援的硬體方面，有Coraid公司推出AoE用的硬碟櫃，稱為EtherDrive。

另外，LayerWalker也推出了AoE的SoC晶片。實際測試的效能，在10/100Mbps乙太網路上可以達到最高11.5MB/s（約92Mbps）的速度。在Gigabit網路上，則可以達到最高65MB/s（約530Mbps）讀取速度與55MB/s（約440 Mbps寫入速度）。稱為miniSAN的這個Soc解決方案，展現了AoE有足夠的能力與穩定性以取代價格高昂的iSCSI與速度較慢的SAMBA，FTP等以TCP為基礎的資料傳輸協定。

在軟體方面，自由軟體的專案網站SourceForge.net有提供vblade軟體的 下載，將vblade軟體安裝到Linux伺服器上，Linux伺服器就會透過網路去尋找AoE硬碟櫃，找尋到後便可向硬碟櫃提出儲存服務的請求，進而使用硬碟櫃內的儲存空間、資源。vblade軟體有兩種型態與執行法，一種是以使用者空間（userspace）的執行程式（屬aoetools工具程式包的一部份）來運作，另一種是以Linux的核心模組程式（kernel module）來運作。

## 相關概念

雖然AoE是簡單的網路協定，但在儲存的功效機制運作上卻也增高了複雜性，因此有必要對AoE的進一步細節進行瞭解，如此才能切實依據場合、情境的需求來決定是否該採行AoE，同時此也有助於將一些新儲存概念的普及推行。

### 區塊性的儲存傳輸

首先，ATA在AoE中被當成一種硬碟用的線路協定，資料寫入硬碟後若要進行讀出，則會以一個或一個以上的塊狀型態進行回傳，且每塊的容量尺寸大小（Block size）固定一致，此可稱為傳輸區塊（Block），AoE的技術基礎即是此種「區塊性傳輸」。

接著，AoE協定直接、簡單地將ATA指令（ATA command）送入低階網路封包內，此種方式使乙太網路線（ethernet cable）能有效取代ATA介面的接線（或稱：排線，ribbon cable），AoE可以在乙太網路所及的各處進行資料區塊的搬運與傳輸，而乙太網路上的各端點可以是硬碟（硬碟櫃）或電腦。

對ATA標準中的ATA排線而言，它不用去理會自身所傳輸的是何種資料區塊，這對AoE標準而言也是相同，AoE標準所用的乙太網路線不用去瞭解它所傳輸的是何種資料區塊，使用者可以讀出、寫入任何想要的區塊資料，只不過在多數情況下，文件系統將比傳輸區塊更適合用來進行資料的組織與結構化運用。

#### 區塊傳輸上的檔案系統

就傳統而言，使用者是以檔案系統的方式來使用電腦中的硬碟，如ext3、XFS、以及NTFS等檔案系統皆是以此種想定所設計、運用。

然而在使用AoE時，由於AoE運用乙太網路來取代ATA排線，這就有可能破壞此種想定用法，改以AoE方式運作對傳統檔案系統而言是一件危險的事，有可能導致檔案系統的錯亂，或造成作業系統的核心錯愕（kernel panic）。

對此，AoE是用集群式的檔案系統來避免這些問題，使AoE硬碟、硬碟櫃的區塊性儲存、傳輸的裝置設備，能夠同時供多部電腦存取使用，跳脫過往ATA技術只能讓硬碟、硬碟群專供單一部電腦存取使用的限制。若就實際的功效運作來說，能夠存取AoE硬碟櫃的伺服器自身就如同是加入叢集系統的一部叢集電腦，是以叢集的共享機制來共同取用儲存資源，而AoE硬碟櫃即是一個可供共享的區塊性儲存設備。

至於具叢集功效的檔案系統有哪些，常見的有GFS、OCFS2等。

#### 硬碟

AoE的目標端是個硬碟（集中放於AoE硬碟櫃內），或者必須被視為一顆硬碟（用其他非硬碟的儲存媒體來喬裝頂替），對此有幾項與與硬碟關連的要項必須關心留意：

- 存取速度主要取決於碟片的轉速，轉速單位為RPM，RPM值愈高，硬碟讀寫頭（head，俗稱：磁頭）的旋轉等待時間（rotational latency）就愈短，硬碟性能就愈高。其次讀寫頭的移動速度愈快，搜軌時間（seek time）就愈短，此也會影響硬碟的傳輸快慢，其他還有磁錄密度（magnetic density）、磁頭入軌的精準度、碟片上的資料配置分佈情形、以及碟機上的數位信號處理器、介面控制電路等也都會影響硬碟的效能表現。
- 硬碟的隨機存取速度完全主導了搜尋時間
- 完整隨機存取的時間比連續存取慢上1,000倍
- 就一般而言，單顆硬碟的連續存取速度為50MB/Sec—80MB/Sec。
- 運用磁碟陣列（RAID）技術多半可提高隨機存取及連續存取的傳輸效能。
- 主控端作業系統及其檔案系統必須儘可能將資料以連續存取的方式寫入硬碟，如此有助於整體存取效能的提升。

### 乙太網路

- AoE封包是用乙太網路中的MAC位址來決定封包從何處發出以及要傳往何處。不過MAC位址只能在單一的乙太網路中使用，因為MAC位址是以網域為範疇進行廣播式發送。
- 現有的乙太網路硬體多具有流量控制（flow control）的功效機制，能夠使封包重新發送（packet retransmission）的頻寬需求降至最低。
- 乙太網路使用循環冗餘校驗（CRC）演演算法來確保封包完整送達。

### 網路式儲存

當使用乙太網路來進行區塊性傳輸時，將能夠獲得以下的幾項潛在益處：

- 儲存的空間、容量等資源可以很容易地擴展延伸。
- 容量擴展的上限幾乎是無限。
- 可以將乙太網路建立成ad hoc的型態，藉此來對存取傳輸進行控制。
- 儲存設備的硬體及其資源可以從專屬個用、單用轉變成公用、共享型態。
- 資料備份更加容易。
- 與儲存設備、儲存資源相同的，儲存的資料也可以從專用改成共享。

### 組態字串

當同時間有一部以上的伺服器對AoE硬碟櫃進行存取，此時傳輸運作就會發生衝突，因為AoE硬碟櫃不能確認哪一部伺服器擁有真正的存取主控權，為了解決這個問題，AoE協定中具備一種協調機制，透過此種機制來排解衝突，使同時性的存取糾紛可以化解，此外該機制也能維持與保護共享資料的一致性，避免資料發生矛盾，舉例來說，當一部伺服器取得AoE硬碟櫃的存取主控權時，特別是伺服器正將新的資料寫入硬碟時，機制上會自動對正在寫入的儲存區塊進行保護，防止其他的伺服器也對該區塊進行寫入，待原有的伺服器完成寫入後才將保護解除，並允許下一個獲得主控權的伺服器對該區塊進行讀出或寫入。

若進一步探究，AoE允許用兩種方式來實現此種排解機制，一種是由已經獲得存取主控權的伺服器，由該伺服器以TCP/IP協定的方式對其他伺服器發送訊息，告知哪個區塊正在存取使用中，請勿對該區塊進行重複性存取，以免造成存取衝突與資料矛盾等問題，等於讓多部伺服器間自行進行存取上的討論與知會。

另一種作法是由AoE硬碟櫃自己來決定哪個伺服器可以進行存取，AoE協定也支援此種作法，在AoE協定中具有一種組態字串（Config String）的功效機制，即是在AoE硬碟櫃上設置一個組態字串，由各部伺服器來對此字串進行設定（對字串的儲存區進行寫入），設定成功的伺服器即擁有存取傳輸的主控權，反之失敗的伺服器只能等候與再次嘗試設定，而同時間只會有一個伺服器能成功設定。

## 參考引據

- Coraid公司對 AoE技術的相關說明
- LinuxDevices.com網站： ATA-over-Ethernet造就平價、Linux型的儲存區域網路（2004年6月23日）

## 相關參見

- HyperSCSI
- 說明：技術性質、特性與AoE相似的技術，但比AoE更早出現，事實上AoE技術的多數特性設計也取自於HyperSCSI。
- iSCSI
- 說明：與AoE相同，皆是以「能低廉、平價地建立出儲存區域網路（SAN）」為訴求的技術，1990年代後期開始提出與研究，於2003年正式成為IETF制訂機構所頒佈的網路標準。

## 外部連結

- 教學
- 在FreeBSD作業系統上使用AoE
- 各種不同發行版本的Linux在設定AoE時的小技巧
- 報導
- ATA Over Ethernet：將硬碟放在區域網路上 - Linux Journal（2005年4月28日）
- 透過乙太網路連接ATA硬碟 - 電子時報（2006年8月14日）
- 協定
- AoE通訊協定的敘述說明（PDF檔）
- AoE通訊協定的規範標準
- 下載
- ATA Over Ethernet Tools（也稱aoetools）及vblade
- 說明：vblade是安裝、運作於AoE伺服器端的程式，負責AoE的使用者空間（userspace）工作執行。
- 以Linux核心模組方式實現的vblade
- 說明：執行運作速度快過以使用者空間型態運作的vblade。