Настройка iSCSI-initiator и разделов больше 2 TB

Операционки на базе Unix
Ответить
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Настройка iSCSI-initiator и разделов больше 2 TB

Сообщение Raven » 22 дек 2011, 10:28

Появилась задачка - зацепить iSCSI-диск за сервер с FreeBSD 7.4 под капотом. Если с импортом диска особых проблем обычно не возникает, то вот с размером диска была запара - стандартные средства FreeBSD (fdisk и bsdlabel) не приучены работать с дисками больше 2 TB. А у меня 4 TB...

Цепляем диск!
Есть 2 способа заставить бестию понимать iSCSI:
1. Пересобрать ядро:

Код: Выделить всё

# cd /usr/src/sys/amd64/conf
 # cp GENERIC MYKERN
 # ee MYKERN
добавляем в конфиг строчку:

Код: Выделить всё

device iscsi_initiator
и собираем ведро и грузимся в него:

Код: Выделить всё

 # cd /usr/src
 # make buildkernel KERNCONF=MYKERN
 # make installkernel KERNCONF=MYKERN
 # reboot
2. Если поддержка iSCSI уже включена в систему модулем ядра нам нужно просто его подгрузить:

Код: Выделить всё

# kldload -v iscsi_initiator.ko
Чтобы модуль грузился во время запуска системы в /boot/loader.conf нужно дописать сл. строчку:

Код: Выделить всё

iscsi_initiator_load="YES"
Итак, с драйвером мы разобрались, перейдем к подключению раздела. Просканируем цели:

Код: Выделить всё

# iscontrol -v -d targetaddress=192.168.50.200 initiatorname=iqn.server
В выхлопе команды ищем нашу цель, записываем куда-нибудь targetnames/targetadresses, ибо запомнить это будет имхо сложновато. Создаем конфиг /etc/iscsi.conf

Код: Выделить всё

 # cat > /etc/iscsi.conf
myiscsi  {
        authmethod      = CHAP # Метод авторизации на сервере iSCSI-target
        chapIName       = <логин_таргет-сервера> # Имя пользователя для подключения к iSCSI-target
        chapSecret      = <пароль_таргет-сервера> # Пароль для подключения к iSCSI-target
        initiatorname   = iqn.2011.myiscsiinit # Идентификатор инициатора
        TargetName      = iqn.blah-blah-blah #  Имя LUN (здесь и ниже пишем то, что пару минут назад лихорадочно переписывали на бумажку)
        TargetAddress   = 192.168.1.100:3260,1 # IP-адрес сервера, ID LUN
   }
Пробуем зацепиться:

Код: Выделить всё

 # iscontrol -c /etc/iscsi.conf -n myiscsi
Смотрим выхлоп dmesg и ls /dev - если все сделано правильно, должно появиться новое устройство /dev/daX, где "Х"-порядковый номер устройства. Как стартовать все это хозяйство автоматом - тут я вам не советчик - мое решение этой проблемы не очень красиво :-[

Создаем разделы.
Как уже было сказано выше стандартные утилиты FreeBSD не могут работать с дисками более 2 Тб, в сети все советуют использовать ZFS, но лично меня то-то эта соляркина отрыжка не вдохновляет последние пару лет, тем более, что стандартная файловая система FreeBSD UFS2 была успешно опробована мной на разделе в 16 Tб.

Для создания разделов воспользуемся gpt (8). Различия MBR и GPT не стану расписывать - в гугле полно этой информации.
У меня на диске была таблица разделов GPT созданая под LInux - она мне не нужна - удаляем)))

Код: Выделить всё

# gpt destroy da0
Создаем новую таблицу разделов GPT:

Код: Выделить всё

# gpt create -f da0
(ключ -f - затирать MBR даже если она есть.)

Создаем разделы:

Код: Выделить всё

# gpt add -t swap -s 4051896 da0 # изначально моей системе я выделил маловато пространства для свопинга ввиду малого обьема жесткого диска машины. исправим этот недостаток путем создания своп-раздела на внешнем диске))) -s 4051896 - размер раздела в секторах.
# gpt add -t ufs -s 2025948 da0 # Размер как видите не указан - используется все доступное пространство


Проверим что получили в итоге:

Код: Выделить всё

# ls /dev | grep da
da0
da0p1
da0p2
dazuko
Мы видим что у нас помимо da0 появились еще 2 устройства - da0p1 и da0p2 (dazuko вообще из другой оперы). Исходя из порядка создания приходим к выводу что da0p1 это у нас своп, а da0p2 - это наш раздел под данные (в случае чего можно проверить командой gpt show da0, в колонке Index).

Форматируем раздел:

Код: Выделить всё

# newfs -U /dev/da0p2
Попробуем смонтировать:

Код: Выделить всё

# mount /dev/da0p2 /mnt/big_disk
Все ОК! Включаем своп:

Код: Выделить всё

# swapon /dev/da0p1
Тоже ОК.

Придумываем как нам все это стартовать при запуске системы и идем пить пЫво %)
Я не злопамятный, я просто часто ковыряю логи
Ответить

Вернуться в «Unix»