Поиск по сайту:

Настройка ATA через Ethernet (AoE) в Debian 8 (инициатор и цель)


Это руководство существует для этих версий ОС

  • Debian 8 (Джесси)
  • Debian 5 (Ленни)

На этой странице

  1. 1 Предварительное примечание
  2. 2. Загрузите модуль ядра AoE в обе системы.
  3. 3. Настройка цели (сервер 2)
  4. 4 Настройка клиента/инициатора области действия (сервер 1)
  5. 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/