0
回答
Linux 下配置 ATA-over-Ethernet(AoE) 存储系统
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

AoE 是由一家叫做 Brantley Coile Company 的公司所开发出来的一种网络通讯协议 , 本文介绍 Linux 下配置 ATA-over-Ethernet(AoE) 存储系统的过程。同时比较 AoE 和 iSCSI 的优缺点。

AoE 简介

AoE 架构

AoE 是由一家叫做 Brantley Coile Company 的公司所开发出来的一种网络通讯协议 , 是 IP SAN 的一个成员 , 此协议可以在以太网路上访问 ATA 标准的存储装置(AoE 存储设备可以是单个的磁盘,也可以是组合为 RAID 卷的磁盘组。它们可以像磁盘那样被分区),运用此协议的好处在于能以平价且标准的技术来实现一个存储局域网路环境。AoE 不倚赖以太网路中网络层以上的协议,包括 IP、UDP、TCP 等都弃舍不用,这表示 AoE 不能通过在局域网路上进行路由、绕径,很明显 AoE 仅打算做为存储局域网路之用。需要注意的是,AoE 与 iSCSI 相同,皆强调自身是远比光纤渠道(Fibre Channel)低廉的存储局域网路布建方案,不过 AoE 标榜比 iSCSI 更简单、更低廉,单就标准规范的技术文件而言,AoE 规格仅有 8 页,而 iSCSI 却为 257 页。AoE 协议与 iSCSI协议的比较如图 1。


图 1. AoE 协议与 iSCSI 协议的比较
图 1. AoE 协议与 iSCSI 协议的比较

图 1 中可明显看出 AoE 协议的堆栈层数少于 iSCSI,因此在传输效益表现上 AoE 能够比 iSCSI 更具效率。首先,ATA 在 AoE 中被当成一种硬盘用的线路协议,资料写入硬盘后若要进行读出,则会以一个或一个以上的块状型态进行回传,且每块的容量尺寸大小(Block size)固定一致,此可称为传输区块(Block),AoE 的技术基础即是此种“区块性传输”。接着,AoE 协议直接、简单地将 ATA 指令(ATA command)送入低阶网络封包内,此种方式使以太网路线(ethernet cable)能有效取代 ATA 接口的接线,AoE 可以在以太网路所及的各处进行资料区块的搬运与传输,而以太网路上的各端点可以是硬盘(硬盘柜)。对 ATA 标准中的 ATA 排线而言,它不用去理会自身所传输的是何种资料区块,这对 AoE 标准而言也是相同,AoE 标准所用的以太网路线不用去了解它所传输的是何种资料区块,用户可以读出、写入任何想要的区块资料,只不过在多数情况下,文件系统将比传输区块更适合用来 进行资料的组织与结构化运用。AoE 规范为开放协议,详见 http://www.qqread.com/ArtImage/20061104/aoer9.txt

AoE 优点

在此探讨 AoE 优点,主要是相对于 iSCSI 与 Fibre Channel(光纤通道)来比较,这三种共同功能即是可建立 Block-Level I/O 和 Shared Storage(共享磁盘)。

便宜

因为 Fibre Channel(光纤通道)设备一般来说都不便宜,相对的 AoE 使用 以太网 (通常是千兆以太网)作传输介质,这点与 iSCSI 也使用以太网来传输数据相当类似,这可节省不少成本。

简单

AoE 使用 ATA 通讯方式来传输数据,这与 iSCSI 使用 SCSI 通讯还必须经过 TCP/IP 封包处理相比,两者相较之下 AoE 着实简单多了。

AoE 缺点

成熟度

以发展成熟度来看,Fibre Channel(光纤通道) 可说是成熟度最高之技术,接着是 iSCSI,而 AoE 算是敬陪末座,AoE 的数据包无法使用路由器,若以中高端应用看 AoE 还有努力空间。

传输距离

Fibre Channel(光纤通道)在远距传输有着优势存在,而 iSCSI 使用以太网传输,在 TCP/IP 协议下可以通过路由器 而传输到远方,AoE 在设计上没有采用 TCP/IP,而是利用标准的以太网传送 ATA 磁盘命令。AoE 的传输距离就局限在以太网能传输的距离。

速度

理论上会是 Fibre Channel(光纤通道)第一,iSCSI 与 AoE 第二且差别不大,Fibre Channel(光纤通道) 以每秒 4Gb / 2Gb / 1Gb 速度传输,而 iSCSI 与 AoE 以每秒 1Gb / 100Mb (0.1Gb)传输速度。

安全性

Fibre Channel(光纤通道)和 iSCSI 都有多种严格安全认证方式,而 AoE 只有基于网卡 MAC 地址一种验证方式,所以只能使用在可以信任的网络。

AoE 如何在网络上工作

基本上和 iSCSI 一样 AoE 也分为 Target 和 Initiato 如图 2 。


图 2. AoE 存储协议工作流程
图 2. AoE 存储协议工作流程

1. AoE Initiator 以广播 (broadcasts) 的方式在网络传送包含 AoE 配置信息寻找 AoE target 端 . 这些广播 Initiators 会定期的传送 .
2. AoE targets 端接收到 Initiator 所指定信息后 , 会将 AoE 有效的 storage volumes 传送给 Initiator 端 .3. AoE Initiator 传送给 Target 端的 AoE 信息会夹带一个唯一的 tag 用来辨识是由哪个 Initiator 给 Target 端的 . 而完整的信息还会包含 ATA 磁盘的指令 . 4. AoE targets 会依据 tag 来响应给特定的 Initiator 端并执行 AoE messages 所包含的 disk read/write 指令 .5. 如果 Initiator 传送给 Target 端的信息没响应时会重新传送这信息 .

两个术语

在 Aoe 体系结构模式中通常有两个角色 Target 与 Initiator 分别叙述如下:

Target

称为 Target 的通常是存储设备(Storage Device),也就是存放数据的磁盘(AoE 存储设备可以是单个的磁盘,也可以是组合为 RAID 卷的磁盘组。它们可以像磁盘那样被分区,以磁盘阵列居多)。

Initiator

Initiator 的主要功能是提供计算机主机联机到 Target 作磁盘存取。

Linux 配置 AoE 模块

Linux 操作系统支持 Linux 自 2.6.11 版(2005 年 3 月 1 日发布)之后的核心即具备 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 都要运行一遍。

查看内核是否正常 AoE

进入内核所在目录运行命令:# make menuconfig

在 Block devices 下查看 ATA over Ethernet support 确保支持如图 3 。


图 3. 确保 AoE 选项支持
图 3. 确保 AoE 选项支持

或者运行命令:

 # grep ATA_OVER /boot/config-`uname -r` 

如果显示:CONFIG_ATA_OVER_ETH=m

也表示内核支持 AoE 。


加载 AoE 模块
				
 #modprobe aoe 

使用 lsmod 命令查看一下:

 #  lsmod | grep aoe 
 aoe                    60385  0 

编辑 /etc/modules 文件让系统自动加载 AoE 模块

 # /etc/modules: kernel modules to load at boot time 
 loop 
 lp 
 rtc 
 aoe 

配置 Linux AoE Target

安装 vblade 软件

vblade 有虚拟(Virtual)刀片(Blade)之意。

 #aptitude install vblade 

vblade 主要的参数 :

 vblade [ -m mac[,mac...] ] shelf slot netif filename 

shelf: 在 AoE Inititaor 端时所呈现硬盘装置名称方式 .AoE Target 将硬盘排列方式像是以书架的方式来呈现 . 这里的 Shelf 就是指定哪一个机架 (major AoE address)。

slot: slot 就是指定哪个机架的哪一个地方 (minor AoE address) 。

netif: 如果系统包含多个网络装置时我们可以指定由哪一个以太网 分享 AoE 传输。

filename: AoE Target 端要分享的装置是物理硬盘或是镜像文件 (image)。

mac: 因为 iSCSI 是通过 IP 为基础所以可以指定限定由哪些 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 

第一个参数 1 为 <shelf>

第二个参数 2 是 <slot>

第三个参数 eth0 是 AoE 网络接口

第四个参数 /storage/storage1.img 是分享出去的设备

4 修改启动文件

 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 

启动 Aoe 设备发现

AoE 提供一个查询 AoE 磁盘工具 aoe-stat 收录在 aoetools 套件包中,这个软件可以用来观察 / 查询网络上 AoE 磁盘。aoe-discover 工具用来发现 AoE 设备。另外 AoE 核心模块提供 aoe_iflist 参数,可以特别指明 AoE 网络接口,例如:使用指令 modprobe aoe aoe_iflist=eth0 即特别指明 eth0 才是 AoE 网络,这样若是 eth10 接口有 AoE 磁盘也不会检测到。如图 4 所示。

 #aoe-discover 
 #modprobe aoe aoe_iflist=eth0 
 #aoe-stat 


图 4. 启动 Aoe 设备发现
图 4. 启动 Aoe 设备发现

这里发现了刚才建立的 storage1.img 文件下面使用 fdisk – l 查看一下图 5 。


图 5. 使用 fdisk – l 查看一下
图 5. 使用 fdisk – l 查看一下

这里同样发现了设备,但是还无法使用。下面我可以使用 fdsik、mkfs、mount 三个命令进行分区、格式化、挂载工作。

使用 fdisk /dev/etherd/e1.0 来分区磁盘,以下只示范切单一主区:

按下 n 新增扇区 Enter,再按下 p 新增主要扇区 enter,按下 Enter 新增 partition 1,按下 Enter 设定 partition 1 使用第一磁柱开始、Enter 设定 partition 1 使用最后磁柱结束,最后按下 w 写入磁盘信息。

下面使用命令格式化成 Ext3 格式:

 #mkfs -j  /dev/etherd/e1.0 

或使用命令格式化成 ReiserFS 格式:

 #mkreiserfs  /dev/etherd/e1.0 

下面是用命令挂载分区:

 #mount  /dev/etherd/e1.0 

下面就可以使用远程的磁盘了。

性能测试:架构好 AoE 后当然要测试看看他的效能,使用命令:hdparm -t /dev/etherd/e1.0 来测试 I/O 效能,一般来说,100Mbit/s 网络连接速度理想值是 12.5 MB/s,实际值是 10 MB/s,若是 GbE 网络则更为快速。

处于安全考虑应当在没有必要使用时卸载 AoE 模块:

 #rmmod aoe 
			

总结

本文介绍 Linux 下配置 ATA-over-Ethernet(AoE) 存储系统的过程,同时比较 AoE 和 iSCSI 和 FC 优缺点。可以看到 AoE 在局域网环境下可以构建低成本的存储环境。不过相比 iSCSI 存储环境相比安全性稍差。

文章转自:http://www.ibm.com/developerworks/cn/linux/l-cn-aoe/

举报
IBMdW
发帖于6年前 0回/631阅
顶部