Сеть хранения · 10 min read · Feb 02, 2026
Использование ATA Over Ethernet (AoE) на CentOS 7 (Инициатор и Цель)
Этот гид объясняет, как вы можете настроить цель AoE и инициатор AoE (клиент), оба работающие на CentOS 7. AoE означает “ATA over Ethernet” и является протоколом сети хранения (SAN), который позволяет инициаторам AoE использовать устройства хранения на (удаленной) цели AoE с использованием обычных Ethernet-кабелей. “Удаленный” в данном случае означает “внутри одной локальной сети”, потому что AoE не маршрутизируется за пределами локальной сети (это основное отличие от iSCSI). Для инициатора AoE удаленное хранилище выглядит как обычный жесткий диск, подключенный локально.
1 Предварительная заметка
Я использую два сервера CentOS 7:
- server1.example.com (Инициатор): IP-адрес 192.168.1.100
- server2.example.com (Цель): IP-адрес 192.168.1.101
2 Включение дополнительных репозиториев
server1/server2:
Сначала мы импортируем GPG-ключи для программного обеспечения:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*Затем мы включаем репозиторий EPEL в нашей системе CentOS, так как многие пакеты, которые мы собираемся установить в ходе этого руководства, недоступны в официальном репозитории CentOS 7:
yum -y install epel-releaseyum -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 update3 Загрузка модуля ядра 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 54175 0
[root@server1 ~]#Чтобы модуль загружался автоматически при загрузке системы, мы добавляем следующую строку в /etc/rc.local:
nano /etc/rc.local[...]
modprobe aoe
[...]4 Настройка сервера (Цель) на сервере 2
server2:
Сначала мы настраиваем цель (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) для хранения.
В этом примере я буду использовать файл образа размером 10 ГБ, который находится в папке хранения /storage.
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=10000Это создаст файл образа /storage/storage1.img размером 10 ГБ.
Если вы хотите использовать логический том вместо этого, вы можете создать один размером 10 ГБ с именем storage1 в группе томов vg0 следующим образом:
lvcreate -L10G -n storage1 vg0Теперь мы экспортируем наше устройство хранения следующим образом:
vbladed 0 1 ens33 /storage/storage1.imgПервое число (0) - это номер полки (major), второе (1) - номер слота (minor), измените эти числа по своему усмотрению. Каждое устройство AoE идентифицируется парой major/minor, которая должна быть уникальной (если вы экспортируете несколько устройств), с major от 0 до 65535 и minor от 0 до 255. Часть ens33 указывает vbladed, какое Ethernet-устройство использовать, вы можете узнать детали о ваших Ethernet-устройствах, выполнив
ifconfig).
Чтобы начать экспорт автоматически при загрузке цели, откройте /etc/rc.local…
nano /etc/rc.local… и добавьте следующую строку в него (после строки modprobe aoe!):
[...]
vbladed 0 1 ens33 /storage/storage1.img
[...]5 Настройка клиента (Инициатор) на сервере 1
server1:
На 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должна теперь показать устройства хранения:
[root@server1 ~]# aoe-stat
e0.1 10.485GB ens33 1024 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 Jun 30 14:49 .
drwxr-xr-x. 21 root root 3240 Jun 30 14:32 ..
c-w--w----. 1 root disk 152, 3 Jun 30 14:32 discover
brw-rw----. 1 root disk 152, 0 Jun 30 14:49 e0.1
cr--r-----. 1 root disk 152, 2 Jun 30 14:32 err
c-w--w----. 1 root disk 152, 6 Jun 30 14:32 flush
c-w--w----. 1 root disk 152, 4 Jun 30 14:32 interfaces
c-w--w----. 1 root disk 152, 5 Jun 30 14:32 revalidate
[root@server1 ~]#Чтобы использовать это устройство, мы должны отформатировать его:
fdisk /dev/etherd/e0.1[root@server1 ~]# fdisk /dev/etherd/e0.1
Устройство не содержит ни действительной таблицы разделов DOS, ни метки диска Sun, SGI или OSF
Создание новой таблицы разделов DOS с идентификатором диска 0xed572fd4.
Изменения останутся в памяти только до тех пор, пока вы не решите записать их.
После этого, конечно, предыдущий содержимое не будет восстановлено.
Количество цилиндров для этого диска установлено на 2610.
С этим нет ничего плохого, но это больше 1024,
и может в определенных настройках вызвать проблемы с:
1) программным обеспечением, которое работает во время загрузки (например, старые версии LILO)
2) программным обеспечением для загрузки и разделения от других ОС
(например, DOS FDISK, OS/2 FDISK)
Предупреждение: недействительный флаг 0x0000 таблицы разделов 4 будет исправлен w(rite)
Команда (m для помощи): <-- n
Команда действия
e расширенный
p основной раздел (1-4)
<-- p
Номер раздела (1-4): <-- 1
Первый сектор (2048-20479999, по умолчанию 2048): <-- ENTER
Используя значение по умолчанию 1
Последний сектор, +секторы или +размер{K,M,G} (2048-20479999, по умолчанию 20479999): <-- ENTER
Используя значение по умолчанию 20479999
Раздел 1 типа Linux и размером 9.8 GiB установлен
Команда (m для помощи): <-- t
Выбранный раздел 1
Шестнадцатеричный код (тип L для списка кодов): <-- L
0 Пустой 1e Скрытый W95 FAT1 80 Старый Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / старый Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 скрытый C: c7 Syrinx
5 Расширенный 41 PPC PReP Boot 85 Linux расширенный da Non-FS данные
6 FAT16 42 SFS 86 NTFS объем db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS объем de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX загрузочный 4f QNX4.x 3rd part 8e Linux LVM e1 DOS доступ
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Скрытый FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq диагност 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Скрытый FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS вторичный
16 Скрытый FAT16 63 GNU HURD или Sys ab Darwin boot fb VMware VMFS
17 Скрытый HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Скрытый W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Скрытый W95 FAT3 75 PC/IX be Solaris boot ff BBT
Шестнадцатеричный код (тип L для списка кодов): <-- 83
Команда (m для помощи): <-- w
Таблица разделов была изменена!
Вызов ioctl() для повторного чтения таблицы разделов.
Синхронизация дисков.
[root@server1 ~]#После этого появляется новое устройство /dev/etherd/e0.1p1, которое вы можете увидеть в выводе
ls -l /dev/etherd/[root@server1 ~]# ls -l /dev/etherd/
total 0
c-w--w----. 1 root disk 152, 3 Jun 30 14:32 discover
brw-rw----. 1 root disk 152, 0 Jun 30 14:54 e0.1
brw-rw----. 1 root disk 152, 1 Jun 30 14:54 e0.1p1
cr--r-----. 1 root disk 152, 2 Jun 30 14:32 err
c-w--w----. 1 root disk 152, 6 Jun 30 14:32 flush
c-w--w----. 1 root disk 152, 4 Jun 30 14:32 interfaces
c-w--w----. 1 root disk 152, 5 Jun 30 14:32 revalidate
[root@server1 ~]#Теперь мы создаем файловую систему на /dev/etherd/e0.1p1…
mkfs.ext4 /dev/etherd/e0.1p1… и монтируем ее для тестирования:
mount /dev/etherd/e0.1p1 /mntТеперь вы должны увидеть новое устройство в выводах…
mount[root@server1 ~]# mount
sysfs на /sys тип sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc на /proc тип proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs на /dev тип devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)
securityfs на /sys/kernel/security тип securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs на /dev/shm тип tmpfs (rw,nosuid,nodev,seclabel)
devpts на /dev/pts тип devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs на /run тип tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs на /sys/fs/cgroup тип tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup на /sys/fs/cgroup/systemd тип cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore на /sys/fs/pstore тип pstore (rw,nosuid,nodev,noexec,relatime)
cgroup на /sys/fs/cgroup/cpu,cpuacct тип cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup на /sys/fs/cgroup/memory тип cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup на /sys/fs/cgroup/devices тип cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup на /sys/fs/cgroup/hugetlb тип cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup на /sys/fs/cgroup/net_cls тип cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup на /sys/fs/cgroup/freezer тип cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup на /sys/fs/cgroup/perf_event тип cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup на /sys/fs/cgroup/blkio тип cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup на /sys/fs/cgroup/cpuset тип cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
configfs на /sys/kernel/config тип configfs (rw,relatime)
/dev/mapper/centos-root на / тип xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs на /sys/fs/selinux тип selinuxfs (rw,relatime)
systemd-1 на /proc/sys/fs/binfmt_misc тип autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs на /sys/kernel/debug тип debugfs (rw,relatime)
mqueue на /dev/mqueue тип mqueue (rw,relatime,seclabel)
hugetlbfs на /dev/hugepages тип hugetlbfs (rw,relatime,seclabel)
/dev/sda1 на /boot тип xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs на /run/user/0 тип tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
/dev/etherd/e0.1p1 на /mnt тип ext4 (rw,relatime,seclabel,data=ordered)
[root@server1 ~]#… и
df -h[root@server1 ~]# df -h
Файловая система Размер Использовано Доступно Использовано% Смонтировано на
/dev/mapper/centos-root 28G 1.3G 27G 5% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 192M 306M 39% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/etherd/e0.1p1 9.5G 37M 9.0G 1% /mnt
[root@server1 ~]#Вы можете размонтировать его так:
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[root@server1 ~]# mount
sysfs на /sys тип sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc на /proc тип proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs на /dev тип devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)
securityfs на /sys/kernel/security тип securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs на /dev/shm тип tmpfs (rw,nosuid,nodev,seclabel)
devpts на /dev/pts тип devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs на /run тип tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs на /sys/fs/cgroup тип tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup на /sys/fs/cgroup/systemd тип cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore на /sys/fs/pstore тип pstore (rw,nosuid,nodev,noexec,relatime)
cgroup на /sys/fs/cgroup/cpu,cpuacct тип cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup на /sys/fs/cgroup/memory тип cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup на /sys/fs/cgroup/devices тип cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup на /sys/fs/cgroup/hugetlb тип cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup на /sys/fs/cgroup/net_cls тип cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup на /sys/fs/cgroup/freezer тип cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup на /sys/fs/cgroup/perf_event тип cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup на /sys/fs/cgroup/blkio тип cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup на /sys/fs/cgroup/cpuset тип cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
configfs на /sys/kernel/config тип configfs (rw,relatime)
/dev/mapper/centos-root на / тип xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs на /sys/fs/selinux тип selinuxfs (rw,relatime)
systemd-1 на /proc/sys/fs/binfmt_misc тип autofs (rw,nosuid,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs на /sys/kernel/debug тип debugfs (rw,nosuid)
mqueue на /dev/mqueue тип mqueue (rw,nosuid,seclabel)
hugetlbfs на /dev/hugepages тип hugetlbfs (rw,nosuid,seclabel)
/dev/sda1 на /boot тип xfs (rw,nosuid,seclabel,attr2,inode64,noquota)
tmpfs на /run/user/0 тип tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
/dev/etherd/e0.1p1 на /mnt тип ext4 (rw,nosuid,seclabel,data=ordered)
[root@server1 ~]#df -h[root@server1 ~]# df -h
Файловая система Размер Использовано Доступно Использовано% Смонтировано на
/dev/mapper/centos-root 28G 1.3G 27G 5% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 192M 306M 39% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/etherd/e0.1p1 9.5G 37M 9.0G 1% /mnt
[root@server1 ~]#6 Ссылки
- Определение протокола AoE: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- CentOS: http://www.centos.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.