在 CentOS 7 上使用 ATA Over Ethernet (AoE)(启动器和目标)
本教程适用于这些操作系统版本
- CentOS 7.2
- CentOS 6.3
在此页
- 1 条初步说明
- 2 启用其他存储库
- 3 在两个系统上加载 AoE 内核模块
- 4 在服务器 2 上设置服务器(目标)
- 5 在服务器 1 上设置客户端(启动器)
- 6 个链接
本指南解释了如何设置 AoE 目标和 AoE 启动器(客户端),它们都运行 CentOS 7。AoE 代表“以太网上的 ATA”,是一种存储区域网络 (SAN) 协议,它允许 AoE 启动器使用使用普通以太网电缆连接(远程)AoE 目标上的存储设备。在这种情况下,“远程”意味着“在同一 LAN 内”,因为 AoE 在 LAN 外不可路由(这是与 iSCSI 相比的主要区别)。对于 AoE 发起者,远程存储看起来像一个普通的、本地连接的硬盘驱动器。
1 初步说明
我在这里使用两台 CentOS 7 服务器:
- server1.example.com(发起方):IP 地址 192.168.1.100
- server2.example.com(目标):IP 地址 192.168.1.101
2 启用其他存储库
服务器 1/服务器 2:
首先,我们导入软件包的 GPG 密钥:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
然后我们在 CentOS 系统上启用 EPEL 存储库,因为我们将在本教程中安装的许多软件包在官方 CentOS 7 存储库中不可用:
yum -y install epel-release
yum -y install yum-priorities
编辑 /etc/yum.repos.d/epel.repo...
nano /etc/yum.repos.d/epel.repo
...并将行 priority=10 添加到 [epel] 部分:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]
然后我们更新系统上现有的包:
yum -y update
3 在两个系统上加载 AoE 内核模块
在我们开始之前,我们必须确保内核支持 AoE:
grep ATA_OVER /boot/config-`uname -r`
这应该显示如下内容:
[ ~]#
这意味着 AoE 是作为内核模块构建的。让我们检查模块是否已经加载:
lsmod | grep aoe
如果你什么也没得到,这意味着它没有加载。在这种情况下,我们可以按如下方式加载它:
modprobe aoe
让我们再次检查模块是否已加载:
lsmod | grep aoe
[ ~]#
要在系统启动时自动加载模块,我们将以下行添加到 /etc/rc.local:
nano /etc/rc.local
[...]
modprobe aoe
[...]
4 在服务器 2 上设置服务器(目标)
首先,我们设置目标(server2):
rpm -i http://download.opensuse.org/repositories/home:/cyberorg:/ltsp/CentOS_7/x86_64/vblade-22-3.1.x86_64.rpm
我们可以使用未使用的逻辑卷、映像文件、硬盘(例如/dev/sdb)、硬盘分区(例如/dev/sdb1)或RAID设备(例如/dev/md0)来存储。
在此示例中,我将使用位于存储文件夹 /storage 中的 10GB 图像文件。
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=10000
这将创建一个大小为 10GB 的图像文件 /storage/storage1.img。
如果您想改用逻辑卷,则可以在卷组 vg0 中创建一个大小为 10GB 的名为 storage1 的卷,如下所示:
lvcreate -L10G -n storage1 vg0
现在我们导出我们的存储设备如下:
vbladed 0 1 ens33 /storage/storage1.img
第一个数字 (0) 是货架号(主要),第二个 (1) 是槽号(次要),根据您的喜好更改这些数字。每个 AoE 设备由一对必须唯一的主要/次要标识(如果您要导出多个设备),主要在 0-65535 之间,次要在 0-255 之间。 ens33 部分告诉 vbladed 使用哪个以太网设备,您可以通过运行找到有关您的以太网设备的详细信息
ifconfig
).
要在启动目标时自动开始导出,请打开 /etc/rc.local...
nano /etc/rc.local
...并向其中添加以下行(在 modprobe aoe 行之后!):
[...]
vbladed 0 1 ens33 /storage/storage1.img
[...]
5 在服务器 1 上设置客户端(启动器)
在 server1 上,我们安装启动器。没有适用于 CentOS 7 的软件包,但来自 centOS 6 的软件包可以正常工作,因此我们将在此处使用它。
rpm -i http://download.opensuse.org/repositories/system:/aoetools/CentOS_CentOS-6/x86_64/aoetools-36-1.2.x86_64.rpm
现在我们检查可用的 AoE 存储设备:
aoe-discover
命令
aoe-stat
现在应该显示存储设备:
[ ~]#
此时,我们在名为 /dev/etherd/e0.1 的客户端盒上有一个可用的新块设备。如果我们看一下 /dev 树,就会出现一个新节点:
ls -la /dev/etherd/
[ ~]#
要使用该设备,我们必须对其进行格式化:
fdisk /dev/etherd/e0.1
[ ~]#
之后,有一个新设备 /dev/etherd/e0.1p1,您可以在输出中看到它
ls -l /dev/etherd/
[ ~]#
现在我们在 /dev/etherd/e0.1p1 上创建一个文件系统...
mkfs.ext4 /dev/etherd/e0.1p1
...并出于测试目的安装它:
mount /dev/etherd/e0.1p1 /mnt
您现在应该在...的输出中看到新设备
mount
[ ~]#
... 和
df -h
[ ~]#
您可以像这样卸载它:
umount /mnt
在启动时自动安装设备,例如在目录 /storage 中,我们创建该目录...
mkdir /storage
... 并将以下行添加到 /etc/fstab:
nano /etc/fstab
[...]
/dev/etherd/e0.1p1 /storage ext4 defaults,auto,_netdev 0 0
仅此一项不足以在启动时安装设备,因为 AoE 内容是在读取 /etc/fstab 后加载的。因此我们打开/etc/rc.local ...
nano /etc/rc.local
...并向其中添加以下行(在 modprobe aoe 行之后!):
[...]
aoe-discover
sleep 5
mount -a
[...]
出于测试目的,您现在可以重新启动系统:
reboot
重启后,应该挂载设备:
mount
[ ~]#
df -h
[ ~]#
6个链接
- AoE 协议定义:http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- CentOS:http://www.centos.org/