ATAoE
ATA over Ethernet
Решил попробовать пробросить диск с удаленного сервера (но в пределах одного сегмента).
Сервер
Клиент
Конфигурация ядра
Насколько я понимаю, модуль можно взять из ядра, можно из пакета. Я взял их ядра.
Linux Kernel Configuration: Поддержка ATA over Eth |
Device Drivers ---> [*] Block devices ---> <M> ATA over Ethernet support |
Серверная часть
Установить пакет vblade:
Конфигрурация пакета предельно простая - 1 файл: /etc/conf.d/vblade
config_vblade0="0 1 eth0.15 /dev/sde"
В моем примере eth0.15 это vlan на котором я буду "шарить" реальный физический диск (можно файл вместо диска)
Собственно, на этом этапе настройка сервера завершена. Никакой авторизации не предусмотрено - соблюдать осторожность.
Параметры очевидны
- {SHELF} – логический «номер» сервера, на котором установлен vblade (пишут что от 1 и выше, но у меня работает с 0 )
- {SLOT} – логический «номер» блочного устройства для экспорта
- {NETIF} – интерфейс для экспорта, например, eth или vlan
- {FILE} – обычный файл или блочное устройство, которое будет экспортироваться в Ethernet.
Ну и естественно стартовать процесс:
Если нужно расшарить более 1 диска то нужно будет сдалать симлинки ln -s /etc/init.d/vblade.vblade0 /etc/init.d/vblade.vblade1
Клиентская часть
тут чуть сложнее чем со стороны сервера: Установить софт:
Добавляю в udev файлик, иначе устройства придется создавать руками: 99-aoe.rules Файлик лежит /path/to/linux-X.X.xx/Documentation/aoe/udev.txt
# aoe char devices SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k", GROUP="disk", MODE="0440" SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" # aoe block devices KERNEL=="etherd*", NAME="%k", GROUP="disk"
Добавляю параметры для модуля:
alias aoe aoe aoe_maxsectors=4096 aoe_deadsecs=180 aoe_maxout=32 aoe_iflist=br0
Я нашел такое описание параметров:
- «aoe_maxsectors» – в его описании написано только «Специально для GPFS» :) Уточнив у разработчика что он значит, пишу сюда – максимальное количество секторов за одну IO операцию, т.е. размер блока будущей файловой системы в байтах, деленный на 512. Я поставил здесь 4096.
- «aoe_deadsecs» – таймаут ответа от vblade-сервера, после которого выдается «IO Error». Мне по душе пришлось значение в 5 секунд вместо дефолтных три минуты. UPDATE: Саппорт мне настойчиво порекомендовал оставить здесь дефолтные 180 минут
- «aoe_iflist» – интерфейс(ы) на котором aoe будет сканировать девайсы. Чем разделяются интерфейсы хз – я использую всего один.
- «aoe_maxout» – загадочный, по словам саппорта, ключевой параметр. Сюда нужно поставить целое число, которое высчитывается по алгоритму: 500/NUM_AOE/SLOTS_PER_SHELF. NUM_AOE – суммарное количество AOE клиентов, SLOTS_PER_SHELF – сколько в среднем слотов на один шелф (а-ля сколько винтов в тазике). Саппорт сказал, что занижение этого числа будет приводить к тормозам, а завышение – у меня кернел матерился на eth0 txqueuelength.
(http://www.pentarh.com/wp/2008/07/15/cheap-san-using-aoe/)
Далее пробую загрузить модуль:
(Обратить внимание -я по ошибке указал влан, который у меня - сабинтерфейс в бридже, и как следствие, сервера я не увидел:)
aoe-stat тоже ничего не показывал.
Однако интерфейс можно изменить на лету, и пересканировать:
И отсканировав сеть, вижу свое устройство:
Ну и соответственно с диском можно делать все что и с локальным: hdparm -t /dev/etherd/e0.1
/dev/etherd/e0.1:
Timing buffered disk reads: 174 MB in 3.02 seconds = 57.56 MB/sec
Правда iostat показывает странную загрузку :)
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util etherd!e0.1 0.00 0.00 17729.00 0.00 141832.00 0.00 8.00 0.00 2.36 2.36 4178.60 09.01.2012 22:29:24 avg-cpu: %user %nice %system %iowait %steal %idle 12.06 0.00 38.69 15.08 0.00 34.17 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util etherd!e0.1 0.00 0.00 17586.00 0.00 140688.00 0.00 8.00 0.00 2.40 2.40 4214.10 09.01.2012 22:29:25 avg-cpu: %user %nice %system %iowait %steal %idle 4.50 0.00 32.00 12.50 0.00 51.00 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util etherd!e0.1 0.00 0.00 11702.00 0.00 93616.00 0.00 8.00 0.00 2.58 2.58 3015.50