在Debian 8(启动器和目标)上设置以太网上的ATA(AoE)

本教程将向您介绍如何在Debian 8 / Jessie上设置AoE客户端(启动器)和服务器(目标))。 术语AoE代表“以太网上的ATA”,它是一种存储区域网络(SAN)协议,允许AoE客户端通过普通以太网网络在远程AoE服务器上使用存储设备。 在这种情况下,“远程”意味着“在同一个LAN内部”,因为AoE不能在LAN外部路由(这与iSCSI相比是一个主要的区别)。 对于AoE客户端(启动器),远程存储器看起来像一个正常的本地连接的硬盘驱动器。

1初步说明

我在这里使用两个Debian 8服务器:

  • server1.example.com (Initiator):IP地址192.168.1.100
  • server2.example.com (目标):IP地址192.168.1.101

2在两个系统上加载AoE内核模块

server1 / server2:

作为第一步,我们必须确保我们服务器上的内核支持以太网上的ATA。 以root用户身份运行以下命令。

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

这应该显示如下:

root@server1:/tmp# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
root@server1:/tmp#

这意味着AoE被内置为内核模块。 现在我们将检查模块是否加载:

lsmod | grep aoe

如果你没有回来,这意味着它没有加载。 在这种情况下,我们可以如下加载它:

modprobe aoe

如果模块加载,我们再检查一下:

lsmod | grep aoe
root@server1:/tmp# lsmod | grep aoe
aoe 51917 0
root@server1:/tmp#

要在系统启动时自动加载模块,我们将aoe模块添加到/ etc / modules中

nano /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.
# Parameters can be specified after the module name.

aoe

3设置目标(server2)

server2:

首先,我们设置了AoE目标( server2 ):

apt-get install vblade

我们可以使用未使用的逻辑卷,映像文件,硬盘驱动器(例如/ dev / sdb ),硬盘驱动器分区(例如/ dev / sdb1 )或RAID设备(例如/ dev / md0 )作为存储。 在这个例子中,我将使用存储在文件夹/存储中的20GB的图像文件。

mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000

这将创建大小为20GB的映像文件/storage/storage1.img

如果要使用逻辑卷,则可以在卷组vg0中创建一个名为storage1的大小为20GB的卷,如下所示:

lvcreate -L20G -n storage1 vg0

现在我们出口我们的存储设备如下:

vbladed 0 1 eth0 /storage/storage1.img

第一个号码( 0 )是货架编号(主要),第二个( 1 )socket号(次要),根据您的喜好更改这些数字。 每个AoE设备由几个主要/次要标识,必须是唯一的(如果您导出多个设备),主要在0-65535之间,次要在0-255之间。 eth0部分告诉vbladed哪个以太网设备要使用(如果以太网设备是eth1 ,那么使用eth1 - 您可以通过运行以下方式了解以太网设备:

ifconfig

)。

要在启动目标时自动导出导出,请打开/etc/rc.local ...

nano /etc/rc.local

...并添加以下行(在退出0行之前):

[...]
/usr/sbin/vbladed 0 1 eth0 /storage/storage1.img
[...]

4设置AoE Client / Initiator(server1)

server1:

server1上 ,我们安装启动器:

apt-get install aoetools

现在我们检查一下可用的AoE存储设备:

aoe-discover

不要担心,命令不会显示任何输出。 命令:

aoe-stat

现在应该显示存储设备:

root@server1:/tmp# aoe-stat
e0.1 20.971GB eth0 1024 up
root@server1:/tmp#

此时,我们在名为/dev/etherd/e0.1的客户端框上提供了一个新的块设备。 如果我们看看/ dev树,会出现一个新的节点:

ls -la /dev/etherd/
root@server1:/tmp# ls -la /dev/etherd/
total 0
drwxr-xr-x 2 root root 160 Mar 22 08:46 .
drwxr-xr-x 19 root root 3160 Mar 22 08:34 ..
c-w--w---- 1 root disk 152, 3 Mar 22 08:34 discover
brw-rw---- 1 root disk 152, 0 Mar 22 08:46 e0.1
cr--r----- 1 root disk 152, 2 Mar 22 08:34 err
c-w--w---- 1 root disk 152, 6 Mar 22 08:34 flush
c-w--w---- 1 root disk 152, 4 Mar 22 08:34 interfaces
c-w--w---- 1 root disk 152, 5 Mar 22 08:34 revalidate
root@server1:/tmp#

要使用/dev/etherd/e0.1设备,我们必须格式化它:

fdisk /dev/etherd/e0.1
root@server1:/tmp# fdisk /dev/etherd/e0.1
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x2922f0be.
Command (m for help): <-- n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): <-- p
Partition number (1-4, default 1): <-- 1
First sector (2048-40959999, default 2048): <-- ENTER
Last sector, +sectors or +size{K,M,G,T,P} (2048-40959999, default 40959999): <-- ENTER
Created a new partition 1 of type 'Linux' and of size 19.5 GiB.
Command (m for help): <-- w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

现在我们在/dev/etherd/e0.1p1上创建一个文件系统

mkfs.ext4 /dev/etherd/e0.1p1
root@server1:/tmp# mkfs.ext4 /dev/etherd/e0.1p1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 5119744 4k blocks and 1281120 inodes
Filesystem UUID: 2342cd83-bd45-4975-96c0-b0f366b73778
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

...并安装它用于测试目的:

mount /dev/etherd/e0.1p1 /mnt

您现在应该在...的输出中看到新设备

mount
root@server1:/tmp# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=125556,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=204220k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,relatime,data=ordered)
root@server1:/tmp#

...和

df -h
root@server1:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 57G 1.1G 54G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4.6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/etherd/e0.1p1 20G 44M 19G 1% /mnt
root@server1:/tmp#

你可以这样卸载它:

umount /mnt

要使设备在启动时自动安装,例如在目录/存储中 ,我们创建该目录...

mkdir /storage

...并将以下行添加到/ etc / fstab中

nano /etc/fstab
[...]
/dev/etherd/e0.1p1       /storage        ext4    defaults,auto,_netdev 0 0

这仅仅是在启动时安装设备是不够的,因为在读取/ etc / fstab之后AoE的东西被加载。 因此我们打开/etc/rc.local ...

nano /etc/rc.local

...并添加以下行(在退出0行之前):

[...]
aoe-discover
sleep 5
mount -a
[...]

出于测试目的,您现在可以重新启动系统:

reboot

重新启动后,应安装设备:

mount
root@server1:/tmp# mount
[...snip...]
/dev/etherd/e0.1p1 on /storage type ext4 (rw,relatime,data=ordered)
[...snip...]
df -h
root@server1:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 57G 1.1G 54G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4.6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/etherd/e0.1p1 20G 44M 19G 1% /storage

现在我们可以在挂载的分区上做一个测试写:

touch /storage/test.txt

如果文件已写入,请使用ls命令进行检查:

ls -la /storage
root@server1:/tmp# ls -la /storage
total 24
drwxr-xr-x 3 root root 4096 Mar 22 09:06 .
drwxr-xr-x 23 root root 4096 Mar 22 09:05 ..
drwx------ 2 root root 16384 Mar 22 09:00 lost+found
-rw-r--r-- 1 root root 0 Mar 22 09:06 test.txt
root@server1:/tmp#

test.txt文件已经从我们从server2安装的卷上成功写入。

5链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏