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 硬碟櫃上設置一個組態字串，由各部伺服器來對此字串進行設定（對字串的儲存區進行寫入），設定成功的伺服器即擁有存取傳輸的主控權，反之失敗的伺服器只能等候與再次嘗試設定，而同時間只會有一個伺服器能成功設定。

## 附註說明

## 參考引據

1. Coraid 公司對 AoE 技術的相關說明（英文）
2. 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。