本指南介绍了如何设置一个AoE目标和一个运行Ubuntu 12.10的AoE启动器(客户端)。 AoE代表“以太网上的ATA”,是一种存储区域网络(SAN)协议,允许AoE启动器使用通用以太网布线在(远程)AoE目标上使用存储设备。 在这种情况下,“远程”意味着“在同一个LAN内部”,因为AoE不能在LAN外部路由(这与iSCSI相比是一个主要的区别)。 对于AoE启动器,远程存储器看起来像一个正常的本地连接的硬盘驱动器。
我不会保证这将为您工作!
1初步说明
我在这里使用两个Ubuntu 12.10服务器:
-
server1.example.com
(Initiator):IP地址192.168.0.100
-
server2.example.com
(目标):IP地址192.168.0.101
2在两个系统上加载aoe内核模块
server1 / server2:
在我们开始之前,我们必须确保内核支持AoE:
grep ATA_OVER /boot/config-`uname -r`
这应该显示如下:
root@server1:~# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
root@server1:~#
这意味着AoE被构建为内核模块。 我们检查模块是否已经加载:
lsmod | grep aoe
如果你没有回来,这意味着它没有加载。 在这种情况下,我们可以加载如下:
modprobe aoe
如果模块加载,我们再检查一下:
lsmod | grep aoe
root@server1:~# lsmod | grep aoe
aoe 26960 0
root@server1:~#
要在系统启动时自动加载模块,我们将aoe
模块添加到/ etc / modules中
:
vi /etc/modules
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. loop lp rtc aoe |
3设置目标(server2)
server2:
首先我们设置目标( server2
):
apt-get install vblade
我们可以使用未使用的逻辑卷,映像文件,硬盘驱动器(例如/ dev / sdb
),硬盘驱动器分区(例如/ dev / sdb1
)或RAID设备(例如/ dev / md0
)作为存储。 在本例中,我将在卷组vg0
中创建一个名为storage1
的20GB的逻辑卷:
lvcreate -L20G -n storage1 vg0
(如果要使用图像文件,可以按如下方式创建它:
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000
这将创建大小为20GB的映像文件/storage/storage1.img
。
)
现在我们出口我们的存储设备如下:
vbladed 0 1 eth0 /dev/vg0/storage1
第一个号码( 0
)是货架编号(主要),第二个( 1
)socket号(次要),根据您的喜好更改这些数字。 每个AoE设备由几个主要/次要标识,必须是唯一的(如果您导出多个设备),主要在0-65535之间,次要在0-255之间。 eth0
部分告诉vbladed
哪个以太网设备要使用(如果以太网设备是eth1
,那么使用eth1
- 您可以通过运行以下方式了解以太网设备:
ifconfig
)。
要在启动目标时自动导出导出,请打开/etc/rc.local
...
vi /etc/rc.local
...并添加以下行(在退出0
行之前):
[...] vbladed 0 1 eth0 /dev/vg0/storage1 [...] |
4设置启动器(server1)
server1:
在server1上
,我们安装启动器:
apt-get install aoetools
现在我们检查一下可用的AoE存储设备:
aoe-discover
命令
aoe-stat
现在应该显示存储设备:
root@server1:~# aoe-stat
e0.1 21.474GB eth0 up
root@server1:~#
此时,我们在名为/dev/etherd/e0.1
的客户端框上提供了一个新的块设备。 如果我们看看/ dev
树,会出现一个新的节点:
ls -la /dev/etherd/
root@server1:~# ls -la /dev/etherd/
total 0
drwxr-xr-x 2 root root 160 2012-10-01 16:24 .
drwxr-xr-x 16 root root 3800 2012-10-01 16:21 ..
c-w--w---- 1 root disk 152, 3 2012-10-01 16:21 discover
brw-rw---- 1 root disk 152, 16 2012-10-01 16:24 e0.1
cr--r----- 1 root disk 152, 2 2012-10-01 16:21 err
c-w--w---- 1 root disk 152, 6 2012-10-01 16:21 flush
c-w--w---- 1 root disk 152, 4 2012-10-01 16:21 interfaces
c-w--w---- 1 root disk 152, 5 2012-10-01 16:21 revalidate
root@server1:~#
在输出中
fdisk -l
你现在还应该找到新的硬盘驱动器:
root@server1:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00016be9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 3917 31205377 5 Extended
/dev/sda5 32 3917 31205376 8e Linux LVM
Disk /dev/etherd/e0.1: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/etherd/e0.1 doesn't contain a valid partition table
root@server1:~#
要使用该设备,我们必须格式化它:
fdisk /dev/etherd/e0.1
root @ server1:〜#fdisk /dev/etherd/e0.1
设备既不包含有效的DOS分区表,也不包含Sun,SGI或OSF disklabel
构建新的DOS磁盘标签,磁盘标识符为0x3093ae28。
更改将仅保留在内存中,直到您决定编写它们。
之后,当然,以前的内容将无法恢复。
警告:分区表4的无效标志0x0000将被w(rite)修正
警告:DOS兼容模式已弃用。
强烈建议
关闭模式(命令'c')并将显示单位更改为
扇区(命令'u')。
命令(m帮助):
< - n
命令行动
e扩展
p主分区(1-4)
< - p
分区号(1-4):
< - 1
第一个圆柱体(1-2610,默认为1):
< - ENTER
使用默认值1
最后一个圆柱体,+圆柱体或+大小{K,M,G}(1-2610,默认值2610):
< - ENTER
使用默认值2610
命令(m为帮助):
< - t
所选分区1
十六进制代码(类型L列出代码):
< - 83
命令(m为帮助):
< - w
分区表已被更改!
调用ioctl()重新读取分区表。
同步磁盘
root @ server1:〜#
之后,输出
fdisk -l
应该看起来如下:
root@server1:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00016be9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 3917 31205377 5 Extended
/dev/sda5 32 3917 31205376 8e Linux LVM
Disk /dev/etherd/e0.1: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3093ae28
Device Boot Start End Blocks Id System
/dev/etherd/e0.1p1 1 2610 20964793+ 83 Linux
root@server1:~#
现在我们在/dev/etherd/e0.1p1上创建一个文件系统
mkfs.ext4 /dev/etherd/e0.1p1
...并安装它用于测试目的:
mount /dev/etherd/e0.1p1 /mnt
您现在应该在...的输出中看到新设备
mount
root@server1:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 on /boot type ext2 (rw)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw)
root@server1:~#
...和
df -h
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
18G 838M 16G 5% /
none 243M 180K 242M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 32K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
none 247M 0 247M 0% /lib/init/rw
none 18G 838M 16G 5% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/dev/etherd/e0.1p1 20G 172M 19G 1% /mnt
root@server1:~#
你可以这样卸载它:
umount /mnt
要使设备在启动时自动安装,例如在目录/存储中
,我们创建该目录...
mkdir /storage
...并将以下行添加到/ etc / fstab中
:
vi /etc/fstab
[...] /dev/etherd/e0.1p1 /storage ext4 defaults,auto,_netdev 0 0 |
这仅仅是在启动时安装设备是不够的,因为在读取/ etc / fstab
之后AoE的东西被加载。 因此我们打开/etc/rc.local
...
vi /etc/rc.local
...并添加以下行(在退出0
行之前):
[...] aoe-discover sleep 5 mount -a [...] |
出于测试目的,您现在可以重新启动系统:
reboot
重新启动后,应安装设备:
mount
root@server1:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 on /boot type ext2 (rw)
/dev/etherd/e0.1p1 on /storage type ext4 (rw,_netdev)
root@server1:~#
df -h
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
18G 838M 16G 5% /
none 243M 180K 242M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 32K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
none 247M 0 247M 0% /lib/init/rw
none 18G 838M 16G 5% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/dev/etherd/e0.1p1 20G 172M 19G 1% /storage
root@server1:~#
5链接
- AoE协议定义: http : //www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Ubuntu: http : //www.ubuntu.com/