null

iSCSI "NAS" или чем плох Intel Rapid Storage контроллер

Залетела к нам как-то SuperMicro cse813mtq под бэкапную хранилку. Вроде как NAS на сервере делать дешевле, чем презентовать полку виртуалке.
Да и диски в нём простые -- SATA 7200 6 Tb каждый. Собраны в raid5.
На сервере работает Windows 2012r2, на SuperMicro было решено ставить Linux и поднимать на нём iSCSI по двум путям, через две сетевушки.
Дальнейшие решения уже были предоставлены на усмотрение инженеров.
После прогрузки в винду сначала запустилось штуки три тестовых приложения, нагружающие CPU и диски -- прикол от дистрибьютора.
У поциента на борту 16 Гб ОЗУ, Intel Core i3 и "диск С:" на 15 Тб, очевидно, презентованный контроллером.
В качестве дистрибутива для установки был выбран Debian 8.5 (религиозно-рациональный выбор), после загрузки которого вместо наблюдаемого всюду луна, в системе обнаружилась md группа.
После некоторых телодвижений оказалось, что эту группу потрогать не получается, fdisk её видит крайне криво, как и разметку входящих в неё дисков.
На этот монстроузный лун был даже натравлен установщик Debian, ArchLinux а затем и SLES. Во славу последнего, кстати, он хоть его увидел как raid.
Чтение документации привело к мысли, что замечательный Rapid Storage -- не что иное, как обёртка над mdraid. Очень своеобразная обёртка.
Собственно, сам контроллер, "на глаз" не отличим от high-end enterprise собратьев (кликабельно, 2 Мб):

В конечном итоге, было принято решение превратить raid в jbod и собрать софтовый raid.
Выбор пал на тот же mdraid. Поверх которого был накачен LVM, чтобы впоследствии было чуть проще управлять iSCSI томами, если вообще понадобится.
Собрав "на колене" разметку, каждый диск получил по 256 Мб BIOS Boot разделу и разделу под mdraid.
На этой md группе был поднят LVM, сделано три тома: root (64 Гб), swap (4 Гб) и data (порядка 16 Тб).
Установщику debian-а крайне не понравилось ставить загрузчик на ЭТО, на что он вернул Fatal error.
Пришлось ручками установить grub на /dev/sda.
Конфиг, правда, как оказалось, не создался по причине 'failed to get canonical path of "/dev/mapper/vg0-lv--root"'.
Выяснилось это, правда, уже после перезагрузки. Загружаться с образа было как-то лениво, поэтому ручками загрузили ядро, благо grub2 уже (давно) умеет lvm и mdraid:

set root=(lvm/vg0-lv--root)
linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/mapper/vg0-lv--root
initrd /boot/initrd.img-3.16.0-4-amd64
boot

Для мультипасинга накидался такой вот конфиг:

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manaul

auto bond0
iface bond0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.1
    slaves eth0 eth1
    bond-mode balance-rr
    bond_miimon 100
    bond_downdelay 200
    bond_updelay 200	

auto bond0:0
iface bond0:0 inet static
	address 192.168.0.3/24

Со стороны свитча настройка выглядит так:

port-channel load-balance src-dst-ip
!
interface FastEthernet0/1
 description bakstrg01-1
 channel-group 1 mode on
!
interface FastEthernet0/2
 description bakstrg01-2
 channel-group 1 mode on
!
interface FastEthernet0/3
 description vmsrv01-1
 channel-group 2 mode on
!
interface FastEthernet0/4
 description vmsrv01-2
 channel-group 2 mode on
!
interface Port-channel 1
 switchport access vlan 13
!
interface Port-channel 2
 switchport access vlan 13
!
interface Vlan13
 ip address 192.168.0.254 255.255.255.0

Наблюдательный читатель погрузится во фрустрации на тему balance-rr и src-dst-ip, но этот вопрос, полагаю, лучше оставить за рамками.
С той оговоркой, что так работает вполне неплохо, а проц^WCore i3 со стороны хоста нагружать вообще не хотелось.
После этого перешли к настройке системы. Создали конфигурацию grub, установили его на все диски, установили iSCSI target и пакет для работы агрегации каналов:

# grub-mkconfig -o /boot/grub/grub.cfg
# dpkg-reconfigure grub-pc
# apt-get install ifenslave iscsitarget
# cat >/etc/iet/ietd.conf <<@
IncomingUser iqn.1991-05.com.microsoft:Zeratul KeJ48HSK2jhdf
Target iqn.2007-01.org.debian.7n:data
        IncomingUser iqn.1991-05.com.microsoft:Zeratul KeJ48HSK2jhdf
        MaxConnections 2
        Lun 0 Type=blockio,BlockSize=4096,Path=/dev/mapper/vg0-lv--data
@
# sed -i. /ENA/s/false/true/i /etc/default/iscsitarget
# systemctl enable iscsitarget
# systemctl restart iscsitarget

Перед перезагрузкой можно полюбоваться на /proc/mdstat. Синхронизировать данные наш Rapid друг будет ещё около десяти часов.
Если всё прошло успешно, то перейдём к конфигурированию iSCSI инициатора.
Как уже упоминалось, инициатор работать будет на нормальной операционной системе, поэтому: "Пуск -> Инициатор iSCSI".
Переходим на вкладку "Обнаружение". Жмём "Обнаружить портал", вводим IP и нажимаем "Дополнительно...".
Ставим галочку напротив "Разрешить вход CHAP" и вводим секрет -- "KeJ48HSK2jhdf". Аналогичным образом добавляем портал указав второй IP-адрес.
Перейдя обратно на вкладку "Конечные объекты" и нажав "Обновить" мы увидим наш таргет. Можно к нему и подключиться.
Открыв окно его свойств с помощью соответствующей кнопки, можно будет добавить второй путь: нажимаем внизу окна кнопку с надписью "MCS" -> "Добавить" и добавляем вторую сессию.
Окно добавления сессии подозрительно похоже на окно обнаружения портала. Надо лишь не забыть в нём вручную указать другой "IP адрес назначения".
Всё, теперь можно зайти в "Система -> Управление дисками" и нажать "Форматировать" для свежеявленного диска. К слову, "быстрое форматирование" в NTFS заняло около 15-ти минут.
Если сейчас открыть tcpdump, то мы радостно увидим пакетики, летящие через оба интерфейса.
Вот оно, какое, оказывается, iSCSI в роли NAS.

korg

 

Коротко о себе

Работаю в компании Tune-IT, администрирую инфраструктуру компании и вычислительную сеть кафедры Вычислительной ТехникиСПбНИУ ИТМО.

Интересы: администрирование UNIX и UNIX-like систем и активного сетевого оборудования, написание shell- и perl-скриптов, изучение технологий глобальных сетей.
Люблю собирать GNU/Linux и FreeBSD, использовать тайлинговые оконные менеджеры и писать системный софт.