ATAoE: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Linux]] |
||
+ | [[Категория:ATAoE]] |
||
=ATA over Ethernet= |
=ATA over Ethernet= |
||
Строка 39: | Строка 41: | ||
*{NETIF} – интерфейс для экспорта, например, eth или vlan |
*{NETIF} – интерфейс для экспорта, например, eth или vlan |
||
*{FILE} – обычный файл или блочное устройство, которое будет экспортироваться в Ethernet. |
*{FILE} – обычный файл или блочное устройство, которое будет экспортироваться в Ethernet. |
||
+ | |||
+ | Ну и естественно стартовать процесс: |
||
+ | {{Root|<nowiki> /etc/init.d/vblade.vblade0 start</nowiki>}} |
||
+ | |||
+ | Если нужно расшарить более 1 диска то нужно будет сдалать симлинки ln -s /etc/init.d/vblade.vblade0 /etc/init.d/vblade.vblade1 |
||
==Клиентская часть== |
==Клиентская часть== |
||
+ | тут чуть сложнее чем со стороны сервера: |
||
+ | ===Установить софт=== |
||
{{Root|<nowiki>sys-block/aoetools</nowiki>}} |
{{Root|<nowiki>sys-block/aoetools</nowiki>}} |
||
+ | |||
+ | ===udev=== |
||
+ | Добавляю в udev файлик, иначе устройства придется создавать руками: 99-aoe.rules |
||
+ | Файлик лежит /path/to/linux-X.X.xx/Documentation/aoe/udev.txt |
||
+ | <PRE> |
||
+ | # 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" |
||
+ | </PRE> |
||
+ | ===Загрузка модуля=== |
||
+ | Добавляю параметры для модуля: |
||
+ | <PRE> |
||
+ | alias aoe aoe aoe_maxsectors=4096 aoe_deadsecs=180 aoe_maxout=32 aoe_iflist=br0 |
||
+ | </PRE> |
||
+ | |||
+ | |||
+ | ===Параметры модуля=== |
||
+ | Я нашел такое описание параметров: |
||
+ | |||
+ | * «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/) |
||
+ | |||
+ | Далее пробую загрузить модуль: |
||
+ | {{Root|<nowiki>modprobe aoe aoe_iflist="eth0.15"</nowiki>}} |
||
+ | (Обратить внимание -я по ошибке указал влан, который у меня - сабинтерфейс в бридже, и как следствие, сервера я не увидел:) |
||
+ | {{Root|<nowiki>dmesg |
||
+ | [387742.118836] aoe: AoE v47 initialised.</nowiki>}} |
||
+ | aoe-stat тоже ничего не показывал. |
||
+ | <BR> |
||
+ | Однако интерфейс можно изменить на лету, и пересканировать: |
||
+ | {{Root|<nowiki>#aoe-interfaces br0 |
||
+ | #aoe-interfaces |
||
+ | br0 |
||
+ | #</nowiki>}} |
||
+ | И отсканировав сеть, вижу свое устройство: |
||
+ | {{Root|<nowiki> |
||
+ | #aoe-discover |
||
+ | #aoe-stat |
||
+ | e0.1 250.059GB br0 up </nowiki>}} |
||
+ | |||
+ | {{Root|<nowiki>dmesg |
||
+ | [388723.464726] aoe: 001676d8bb22 e0.1 v4013 has 488397168 sectors |
||
+ | [388723.465748] etherd/e0.1: p1 p2 p3</nowiki>}} |
||
+ | |||
+ | ===Работа с диском=== |
||
+ | {{Root|<nowiki>fdisk -l |
||
+ | Disk /dev/etherd/e0.1: 250.1 GB, 250059350016 bytes |
||
+ | 255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors |
||
+ | Units = sectors of 1 * 512 = 512 bytes |
||
+ | Sector size (logical/physical): 512 bytes / 512 bytes |
||
+ | I/O size (minimum/optimal): 512 bytes / 512 bytes |
||
+ | Disk identifier: 0x3f5b2f4d |
||
+ | |||
+ | Device Boot Start End Blocks Id System |
||
+ | /dev/etherd/e0.1p1 * 63 2008124 1004031 82 Linux swap / Solaris |
||
+ | /dev/etherd/e0.1p2 2008125 80148284 39070080 83 Linux |
||
+ | /dev/etherd/e0.1p3 80148285 488392064 204121890 83 Linux</nowiki>}} |
||
+ | |||
+ | Ну и соответственно с диском можно делать все что и с локальным: |
||
+ | {{Root|<nowiki> |
||
+ | hdparm -t /dev/etherd/e0.1 |
||
+ | |||
+ | /dev/etherd/e0.1: |
||
+ | Timing buffered disk reads: 174 MB in 3.02 seconds = 57.56 MB/sec |
||
+ | </nowiki>}} |
||
+ | |||
+ | Правда iostat показывает странную загрузку :) |
||
+ | <PRE> |
||
+ | |||
+ | 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 |
||
+ | |||
+ | </PRE> |
Текущая версия на 15:28, 28 сентября 2012
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
Добавляю в 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 тоже ничего не показывал.
Однако интерфейс можно изменить на лету, и пересканировать:
И отсканировав сеть, вижу свое устройство:
Работа с диском
Ну и соответственно с диском можно делать все что и с локальным:
Правда 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