Настройка ATA через Ethernet (AoE) в Debian 8 (инициатор и цель)
Это руководство существует для этих версий ОС
- Debian 8 (Джесси)
- Debian 5 (Ленни)
На этой странице
- 1 Предварительное примечание
- 2. Загрузите модуль ядра AoE в обе системы.
- 3. Настройка цели (сервер 2)
- 4 Настройка клиента/инициатора области действия (сервер 1)
- 5 ссылок
В этом руководстве показано, как настроить клиент AoE (инициатор) и сервер (цель) в Debian 8/Jessie). Термин AoE означает «ATA через Ethernet», который представляет собой протокол сети хранения данных (SAN), который позволяет клиентам AoE использовать устройства хранения на (удаленном) сервере AoE по обычной сети Ethernet. «Удаленный» в данном случае означает «внутри той же локальной сети», потому что AoE не маршрутизируется за пределами локальной сети (это главное отличие по сравнению с iSCSI). Для клиента AoE (инициатора) удаленное хранилище выглядит как обычный локально подключенный жесткий диск.
1 Предварительное примечание
Здесь я использую два сервера Debian 8:
- server1.example.com (инициатор): IP-адрес 192.168.1.100
- server2.example.com (цель): IP-адрес 192.168.1.101
2 Загрузите модуль ядра AoE в обе системы.
В качестве первого шага мы должны убедиться, что ядро на наших серверах поддерживает ATA Over Ethernet. Выполните следующую команду от имени пользователя root.
grep ATA_OVER /boot/config-`uname -r`
Это должно отображать что-то вроде этого:
:/tmp#
Это означает, что AoE был встроен как модуль ядра. Теперь проверим, загружен ли модуль:
lsmod | grep aoe
Если вы ничего не получите обратно, это означает, что он не загружен. В этом случае мы можем загрузить его следующим образом:
modprobe aoe
Давайте еще раз проверим, загружен ли модуль:
lsmod | grep aoe
:/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 Настройка цели (сервер2)
Во-первых, мы настраиваем цель AoE (server2):
apt-get install vblade
Мы можем использовать неиспользуемые логические тома, файлы образов, жесткие диски (например, /dev/sdb), разделы жесткого диска (например, /dev/sdb1) или устройства RAID (например, /dev/md0) для хранения. В этом примере я буду использовать файл изображения размером 20 ГБ, который хранится в папке /storage.
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000
Это создает файл образа /storage/storage1.img размером 20 ГБ.
Если вместо этого вы хотите использовать логический том, вы можете создать его размером 20 ГБ с именем storage1 в группе томов vg0 следующим образом:
lvcreate -L20G -n storage1 vg0
Теперь мы экспортируем наше запоминающее устройство следующим образом:
vbladed 0 1 eth0 /storage/storage1.img
Первая цифра (0) это номер полки (мажор), вторая (1) номер слота (младший), меняйте эти цифры на свое усмотрение. Каждое устройство AoE идентифицируется парой основных и второстепенных параметров, которые должны быть уникальными (если вы экспортируете несколько устройств), с основным значением в диапазоне 0–65535 и второстепенным значением в диапазоне 0–255. Часть eth0 сообщает vbladed, какое устройство Ethernet использовать (если ваше устройство Ethernet — eth1, используйте eth1 — вы можете узнать о своих устройствах Ethernet, запустив
ifconfig
).
Чтобы экспорт начинался автоматически при каждой загрузке цели, откройте /etc/rc.local...
nano /etc/rc.local
... и добавьте в него следующую строку (перед строкой выхода 0):
[...] /usr/sbin/vbladed 0 1 eth0 /storage/storage1.img [...]
4 Настройка клиента/инициатора AoE (server1)
На server1 устанавливаем инициатор:
apt-get install aoetools
Теперь проверяем, какие устройства хранения AoE доступны:
aoe-discover
Не волнуйтесь, команда не покажет никаких результатов. Команда:
aoe-stat
теперь должны отображаться устройства хранения:
:/tmp#
На данный момент у нас есть новое блочное устройство с именем /dev/etherd/e0.1. Если мы посмотрим на дерево /dev, появится новый узел:
ls -la /dev/etherd/
:/tmp#
Чтобы использовать это устройство /dev/etherd/e0.1, мы должны отформатировать его:
fdisk /dev/etherd/e0.1
:/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
:/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
:/tmp#
... и
df -h
:/tmp#
Вы можете размонтировать его следующим образом:
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
... и добавьте в него следующие строки (перед строкой выхода 0):
[...] aoe-discover sleep 5 mount -a [...]
В целях тестирования теперь вы можете перезагрузить систему:
reboot
После перезагрузки устройство должно быть смонтировано:
mount
:/tmp# mount
[...snip...]
/dev/etherd/e0.1p1 on /storage type ext4 (rw,relatime,data=ordered)
[...snip...]
df -h
:/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
:/tmp#
Файл test.txt был успешно записан на том, который мы смонтировали с server2.
5 ссылок
- Определение протокола AoE: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition.
- Debian: http://www.debian.org/