Linux下配置ATA-over-Ethernet存儲(chǔ)系統(tǒng)
AoE 架構(gòu)
AoE 是由一家叫做 Brantley Coile Company 的公司所開發(fā)出來的一種網(wǎng)絡(luò)通訊協(xié)議 , 是 IP SAN 的一個(gè)成員 , 此協(xié)議可以在以太網(wǎng)路上訪問 ATA 標(biāo)準(zhǔn)的存儲(chǔ)裝置(AoE 存儲(chǔ)設(shè)備可以是單個(gè)的磁盤,也可以是組合為 RAID 卷的磁盤組。它們可以像磁盤那樣被分區(qū)),運(yùn)用此協(xié)議的好處在于能以平價(jià)且標(biāo)準(zhǔn)的技術(shù)來實(shí)現(xiàn)一個(gè)存儲(chǔ)局域網(wǎng)路環(huán)境。AoE 不倚賴以太網(wǎng)路中網(wǎng)絡(luò)層以上的協(xié)議,包括 IP、UDP、TCP 等都棄舍不用,這表示 AoE 不能通過在局域網(wǎng)路上進(jìn)行路由、繞徑,很明顯 AoE 僅打算做為存儲(chǔ)局域網(wǎng)路之用。需要注意的是,AoE 與 iSCSI 相同,皆強(qiáng)調(diào)自身是遠(yuǎn)比光纖渠道(Fibre Channel)低廉的存儲(chǔ)局域網(wǎng)路布建方案,不過 AoE 標(biāo)榜比 iSCSI 更簡(jiǎn)單、更低廉,單就標(biāo)準(zhǔn)規(guī)范的技術(shù)文件而言,AoE 規(guī)格僅有 8 頁,而 iSCSI 卻為 257 頁。AoE 協(xié)議與 iSCSI協(xié)議的比較如圖 1。

圖 1. AoE 協(xié)議與 iSCSI 協(xié)議的比較
圖 1 中可明顯看出 AoE 協(xié)議的堆棧層數(shù)少于 iSCSI,因此在傳輸效益表現(xiàn)上 AoE 能夠比 iSCSI 更具效率。首先,ATA 在 AoE 中被當(dāng)成一種硬盤用的線路協(xié)議,資料寫入硬盤后若要進(jìn)行讀出,則會(huì)以一個(gè)或一個(gè)以上的塊狀型態(tài)進(jìn)行回傳,且每塊的容量尺寸大小(Block size)固定一致,此可稱為傳輸區(qū)塊(Block),AoE 的技術(shù)基礎(chǔ)即是此種“區(qū)塊性傳輸”。接著,AoE 協(xié)議直接、簡(jiǎn)單地將 ATA 指令(ATA command)送入低階網(wǎng)絡(luò)封包內(nèi),此種方式使以太網(wǎng)路線(ethernet cable)能有效取代 ATA 接口的接線,AoE 可以在以太網(wǎng)路所及的各處進(jìn)行資料區(qū)塊的搬運(yùn)與傳輸,而以太網(wǎng)路上的各端點(diǎn)可以是硬盤(硬盤柜)。對(duì) ATA 標(biāo)準(zhǔn)中的 ATA 排線而言,它不用去理會(huì)自身所傳輸?shù)氖呛畏N資料區(qū)塊,這對(duì) AoE 標(biāo)準(zhǔn)而言也是相同,AoE 標(biāo)準(zhǔn)所用的以太網(wǎng)路線不用去了解它所傳輸?shù)氖呛畏N資料區(qū)塊,用戶可以讀出、寫入任何想要的區(qū)塊資料,只不過在多數(shù)情況下,文件系統(tǒng)將比傳輸區(qū)塊更適合用來進(jìn)行資料的組織與結(jié)構(gòu)化運(yùn)用。AoE 規(guī)范為開放協(xié)議,詳見 http://www.qqread.com/ArtImage/20061104/aoer9.txt。#p#
AoE 優(yōu)點(diǎn)
在此探討 AoE 優(yōu)點(diǎn),主要是相對(duì)于 iSCSI 與 Fibre Channel(光纖通道)來比較,這三種共同功能即是可建立 Block-Level I/O 和 Shared Storage(共享磁盤)。
便宜
因?yàn)?Fibre Channel(光纖通道)設(shè)備一般來說都不便宜,相對(duì)的 AoE 使用 以太網(wǎng) (通常是千兆以太網(wǎng))作傳輸介質(zhì),這點(diǎn)與 iSCSI 也使用以太網(wǎng)來傳輸數(shù)據(jù)相當(dāng)類似,這可節(jié)省不少成本。
簡(jiǎn)單
AoE 使用 ATA 通訊方式來傳輸數(shù)據(jù),這與 iSCSI 使用 SCSI 通訊還必須經(jīng)過 TCP/IP 封包處理相比,兩者相較之下 AoE 著實(shí)簡(jiǎn)單多了。
AoE 缺點(diǎn)
成熟度
以發(fā)展成熟度來看,F(xiàn)ibre Channel(光纖通道) 可說是成熟度***之技術(shù),接著是 iSCSI,而 AoE 算是敬陪末座,AoE 的數(shù)據(jù)包無法使用路由器,若以中高端應(yīng)用看 AoE 還有努力空間。
傳輸距離
Fibre Channel(光纖通道)在遠(yuǎn)距傳輸有著優(yōu)勢(shì)存在,而 iSCSI 使用以太網(wǎng)傳輸,在 TCP/IP 協(xié)議下可以通過路由器 而傳輸?shù)竭h(yuǎn)方,AoE 在設(shè)計(jì)上沒有采用 TCP/IP,而是利用標(biāo)準(zhǔn)的以太網(wǎng)傳送 ATA 磁盤命令。AoE 的傳輸距離就局限在以太網(wǎng)能傳輸?shù)木嚯x。
速度
理論上會(huì)是 Fibre Channel(光纖通道)***,iSCSI 與 AoE 第二且差別不大,F(xiàn)ibre Channel(光纖通道) 以每秒 4Gb / 2Gb / 1Gb 速度傳輸,而 iSCSI 與 AoE 以每秒 1Gb / 100Mb (0.1Gb)傳輸速度。
安全性
Fibre Channel(光纖通道)和 iSCSI 都有多種嚴(yán)格安全認(rèn)證方式,而 AoE 只有基于網(wǎng)卡 MAC 地址一種驗(yàn)證方式,所以只能使用在可以信任的網(wǎng)絡(luò)。
AoE 如何在網(wǎng)絡(luò)上工作
基本上和 iSCSI 一樣 AoE 也分為 Target 和 Initiato 如圖 2 。

圖 2. AoE 存儲(chǔ)協(xié)議工作流程
1. AoE Initiator 以廣播 (broadcasts) 的方式在網(wǎng)絡(luò)傳送包含 AoE 配置信息尋找 AoE target 端 . 這些廣播 Initiators 會(huì)定期的傳送 .
2. AoE targets 端接收到 Initiator 所指定信息后 , 會(huì)將 AoE 有效的 storage volumes 傳送給 Initiator 端 .3. AoE Initiator 傳送給 Target 端的 AoE 信息會(huì)夾帶一個(gè)唯一的 tag 用來辨識(shí)是由哪個(gè) Initiator 給 Target 端的 . 而完整的信息還會(huì)包含 ATA 磁盤的指令 . 4. AoE targets 會(huì)依據(jù) tag 來響應(yīng)給特定的 Initiator 端并執(zhí)行 AoE messages 所包含的 disk read/write 指令 .5. 如果 Initiator 傳送給 Target 端的信息沒響應(yīng)時(shí)會(huì)重新傳送這信息 .#p#
兩個(gè)術(shù)語
在 Aoe 體系結(jié)構(gòu)模式中通常有兩個(gè)角色 Target 與 Initiator 分別敘述如下:
Target
稱為 Target 的通常是存儲(chǔ)設(shè)備(Storage Device),也就是存放數(shù)據(jù)的磁盤(AoE 存儲(chǔ)設(shè)備可以是單個(gè)的磁盤,也可以是組合為 RAID 卷的磁盤組。它們可以像磁盤那樣被分區(qū),以磁盤陣列居多)。
Initiator
Initiator 的主要功能是提供計(jì)算機(jī)主機(jī)聯(lián)機(jī)到 Target 作磁盤存取。
Linux 配置 AoE 模塊
Linux 操作系統(tǒng)支持 Linux 自 2.6.11 版(2005 年 3 月 1 日發(fā)布)之后的核心即具備 AoE 的功能。Linux AoE target ip 地址192.168.0.16 ,以 Ubuntu 10.04 版本為例,Linux AoE Initiatorip 地址192.168.0.13 ,以 RHEL 5.5 版本為例。以下操作在 Linux AoE target 和Linux AoE Initiator 都要運(yùn)行一遍。
查看內(nèi)核是否正常 AoE
進(jìn)入內(nèi)核所在目錄運(yùn)行命令:# make menuconfig
在 Block devices 下查看 ATA over Ethernet support 確保支持如圖 3 。

圖 3. 確保 AoE 選項(xiàng)支持
或者運(yùn)行命令:
# grep ATA_OVER /boot/config-`uname -r`
如果顯示:CONFIG_ATA_OVER_ETH=m
也表示內(nèi)核支持 AoE 。
加載 AoE 模塊
#modprobe aoe
使用 lsmod 命令查看一下:
# lsmod | grep aoe aoe 60385 0
編輯 /etc/modules 文件讓系統(tǒng)自動(dòng)加載 AoE 模塊
# /etc/modules: kernel modules to load at boot time loop lp rtc aoe
#p#
配置 Linux AoE Target
安裝 vblade 軟件
vblade 有虛擬(Virtual)刀片(Blade)之意。
#aptitude install vblade
vblade 主要的參數(shù) :
vblade [ -m mac[,mac...] ] shelf slot netif filename
shelf: 在 AoE Inititaor 端時(shí)所呈現(xiàn)硬盤裝置名稱方式 .AoE Target 將硬盤排列方式像是以書架的方式來呈現(xiàn) . 這里的 Shelf 就是指定哪一個(gè)機(jī)架 (major AoE address)。
slot: slot 就是指定哪個(gè)機(jī)架的哪一個(gè)地方 (minor AoE address) 。
netif: 如果系統(tǒng)包含多個(gè)網(wǎng)絡(luò)裝置時(shí)我們可以指定由哪一個(gè)以太網(wǎng) 分享 AoE 傳輸。
filename: AoE Target 端要分享的裝置是物理硬盤或是鏡像文件 (image)。
mac: 因?yàn)?iSCSI 是通過 IP 為基礎(chǔ)所以可以指定限定由哪些 IP 來存取 , 但是 AoE 不通過 IP 層所以要限制就只能透過鎖定 mac 地址。
建立鏡像文件
#mkdir /storage # dd if=/dev/zero of=/storage/storage1.img bs=1024k count=300 300+0 records in 300+0 records out 314572800 bytes (315 MB) copied, 3.13268 seconds, 100 MB/s
使用鏡像文件
#vbladed 0 1 eth0 /storage/storage1.img
***個(gè)參數(shù) 1 為
第二個(gè)參數(shù) 2 是
第三個(gè)參數(shù) eth0 是 AoE 網(wǎng)絡(luò)接口
第四個(gè)參數(shù) /storage/storage1.img 是分享出去的設(shè)備
4 修改啟動(dòng)文件
vi /etc/rc.local
在 exit 0 前加一行 :
[...] vbladed 0 1 eth0 /storage/storage1.img
配置 Linux AoE Initiator
安裝軟件
#wget http://ftp.heanet.ie/disk1/sourceforge/a/project/ao/aoetools/vblade/19/vblade-19.tgz |-------10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| #tar vxfz vblade-19.tgz #cd vblade-19 #make ;make install #yum install aoetools
啟動(dòng) Aoe 設(shè)備發(fā)現(xiàn)
AoE 提供一個(gè)查詢 AoE 磁盤工具 aoe-stat 收錄在 aoetools 套件包中,這個(gè)軟件可以用來觀察 / 查詢網(wǎng)絡(luò)上 AoE 磁盤。aoe-discover 工具用來發(fā)現(xiàn) AoE 設(shè)備。另外 AoE 核心模塊提供 aoe_iflist 參數(shù),可以特別指明 AoE 網(wǎng)絡(luò)接口,例如:使用指令 modprobe aoe aoe_iflist=eth0 即特別指明 eth0 才是 AoE 網(wǎng)絡(luò),這樣若是 eth10 接口有 AoE 磁盤也不會(huì)檢測(cè)到。如圖 4 所示。
#aoe-discover #modprobe aoe aoe_iflist=eth0 #aoe-stat
圖 4. 啟動(dòng) Aoe 設(shè)備發(fā)現(xiàn)

這里發(fā)現(xiàn)了剛才建立的 storage1.img 文件下面使用 fdisk – l 查看一下圖 5 。
圖 5. 使用 fdisk – l 查看一下

這里同樣發(fā)現(xiàn)了設(shè)備,但是還無法使用。下面我可以使用 fdsik、mkfs、mount 三個(gè)命令進(jìn)行分區(qū)、格式化、掛載工作。
使用 fdisk /dev/etherd/e1.0 來分區(qū)磁盤,以下只示范切單一主區(qū):
按下 n 新增扇區(qū) Enter,再按下 p 新增主要扇區(qū) enter,按下 Enter 新增 partition 1,按下 Enter 設(shè)定 partition 1 使用***磁柱開始、Enter 設(shè)定 partition 1 使用***磁柱結(jié)束,***按下 w 寫入磁盤信息。
下面使用命令格式化成 Ext3 格式:
#mkfs -j /dev/etherd/e1.0
或使用命令格式化成 ReiserFS 格式:
#mkreiserfs /dev/etherd/e1.0
下面是用命令掛載分區(qū):
#mount /dev/etherd/e1.0
下面就可以使用遠(yuǎn)程的磁盤了。
性能測(cè)試:架構(gòu)好 AoE 后當(dāng)然要測(cè)試看看他的效能,使用命令:hdparm -t /dev/etherd/e1.0 來測(cè)試 I/O 效能,一般來說,100Mbit/s 網(wǎng)絡(luò)連接速度理想值是 12.5 MB/s,實(shí)際值是 10 MB/s,若是 GbE 網(wǎng)絡(luò)則更為快速。
處于安全考慮應(yīng)當(dāng)在沒有必要使用時(shí)卸載 AoE 模塊:
#rmmod aoe
總結(jié)
本文介紹 Linux 下配置 ATA-over-Ethernet(AoE) 存儲(chǔ)系統(tǒng)的過程,同時(shí)比較 AoE 和 iSCSI 和 FC 優(yōu)缺點(diǎn)??梢钥吹? AoE 在局域網(wǎng)環(huán)境下可以構(gòu)建低成本的存儲(chǔ)環(huán)境。不過相比 iSCSI 存儲(chǔ)環(huán)境相比安全性稍差。
原文:http://www.ibm.com/developerworks/cn/linux/l-cn-aoe/index.html?ca=drs-
【編輯推薦】