Используем ISCSI протокол

iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами. В своей работе использует среду Ethernet (1Gb/s, 10Gb/s) для передачи данных

То есть по сути: мы имеем хранилище в сети и хотим быстро обмениваться с ним данными. Для этого можно FTP/HTTP, но этот протокол новее и лучше.

Неплохой обзор для Linux описан здесь.

Тестовый стенд: Solaris 10/11.

Примечание.

Установка ISCSI осуществляется ТОЛЬКО В ГЛОБАЛЬНОЙ ЗОНЕ. Если попробовать в неглобальной зоне, то получим такое сообщение:

pkgadd: ERROR: The package <SUNWiscsir> may only be installed by the global zone administrator

Отдельно расскажу об установке на версии 10 и 11, так как установка и настройка отличаются.

Solaris 10

1) Установка пакетов.

Для нормального функционирования нам потребуются такие пакеты: SUNWiscsir, SUNWiscsitgtr, SUNWiscsitgtr, SUNWiscsiu.

После установки добавится 2 службы, одна из который будет не запущена:

# svcs -a | grep -i iscsi
disabled 7:02:49 svc:/network/iscsi_initiator:default
online 19:21:01 svc:/system/iscsitgt:default

2) Создание файловой системы

Создадим файловую систему для нового iscsi-диска

#zfs create rpool/test_iscsi
#zfs set shareiscsi=on rpool/test_iscsi
#zfs set mountpoint=/test_iscsi rpool/test_iscsi

3) Создания ресурсов.

Теперь создадим iscsi-диск

#iscsitadm modify admin -d /test_iscsi/
#iscsitadm create target --size 2g test-iscsi

и запустим службу:

# svcadm enable svc:/network/iscsi_initiator:default
# svcs -a | grep iscsi
online 14:25:11 svc:/network/iscsi/initiator:default
online 14:28:25 svc:/system/iscsitgt:default

посмотрим список iscsi-ресурсов на текущем сервере:

# iscsitadm list target -v test-iscsi
Target: test-iscsi
iSCSI Name: iqn.1986-03.com.sun:02:e237557f-657d-e0ce-d674-f4e74f5f078b.test-iscsi
Connections: 1
Initiator:
iSCSI Name: iqn.1986-03.com.sun:01:2a85def5ffff.4eb429b5
Alias: skel-solaris
ACL list:
TPGT list:
LUN information:
LUN: 0
GUID: 600144f04ecb956800000c2905c9a700
VID: SUN
PID: SOLARIS
Type: disk
Size: 2.0G
Status: unknown

Теперь посмотрим на клиенте, список ресурсов на сервере 10.10.10.10 с клиента

# iscsiadm add isns-server 10.10.10.10:3205
# iscsiadm modify discovery --static enable
# iscsiadm list discovery-address -v
Discovery Address: 10.10.10.10:3260
Target name: iqn.1986-03.com.sun:02:e237557f-657d-e0ce-d674-f4e74f5f078b.test-iscsi
Target address: 10.10.10.10:3260, 1
Target name: iqn.1986-03.com.sun:02:e237557f-657d-e0ce-d674-f4e74f5f078b.test-iscsi
Target address: 10.10.10.10:3260, 1

Solaris 11

1) Установка пакетов.

В 11 версии теперь iscsi является частью пакета storage-server (который в себя включает Samb’y, X11, ruby и другие) и отдельно поставить нельзя.

#pkg install storage-server SUNWiscsit

2) Создание файловой системы

Создаём файловую систему:

#zfs create -V 2g rpool/iscsi

Запустим сервис:

# svcs -a | grep stmf
disabled 18:55:03 svc:/system/stmf:default
# svcadm enable stmf
# svcs -a | grep stmf
online 18:56:30 svc:/system/stmf:default

Создаём LUN

# stmfadm create-lu /dev/zvol/rdsk/rpool/iscsi
Logical unit created: 600144F0515DC30000004EDE49830001
# stmfadm list-lu
LU Name: 600144F0515DC30000004EDE49830001
# stmfadm add-view 600144F0C49A050000004CC84BE20001
# stmfadm list-view -l 600144F0C49A050000004CC84BE20001
View Entry: 0
    Host group   : All
    Target group : All
    LUN          : 0
# sbdadm list-lu
Found 1 LU(s)

              GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f0515dc30000004ede49830001  2147483648           /dev/zvol/rdsk/rpool/iscsi
# stmfadm list-lu -v
LU Name: 600144F0515DC30000004EDE49830001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/rpool/iscsi
    View Entry Count  : 0
    Data File         : /dev/zvol/rdsk/rpool/iscsi
    Meta File         : not set
    Size              : 2147483648
    Block Size        : 512
    Management URL    : not set
    Vendor ID         : SUN
    Product ID        : COMSTAR
    Serial Num        : not set
    Write Protect     : Disabled
    Writeback Cache   : Enabled
    Access State      : Active
LU Name: 600144F0C49A050000004CC84BE20001
    Operational Status: unregistered
    Provider Name     : unregistered
    Alias             : -
    View Entry Count  : 1

Запустим службу и создадим iscsi-target

#svcadm enable -r svc:/network/iscsi/target:default
#itadm create-target
Target iqn.1986-03.com.sun:02:f5de6642-3611-ed59-c3d1-811b39cf571d successfully created

# itadm list-target
TARGET NAME                                                  STATE    SESSIONS
iqn.1986-03.com.sun:02:f5de6642-3611-ed59-c3d1-811b39cf571d  online   0

Но лучше поставить защиту, что бы к target’y нельзя было подключиться кому-угодно:

# itadm create-target -l alias_name -a chap
# itadm create-initiator -s -u username iqn.1986-03.com.sun:01:e00000000000.83647254

где iqn.1986-03.com.sun:01:e00000000000.83647254iqn нашего initiatora. При это будет запрошен пароль.

Примечание.

(Спасибо одному из наших постоянных читателей)

Если ваша материнская плата поддерживает VT-d (IOMMU IO виртуализация), то нужно его выключить и переходить сразу ко 2-му этапу (это баг, который oracle не спешит исправлять). Если же не поддерживается — тогда обязательно следует выполнить 1-ый этап, а за ним 2-ой.

Что бы перевести порт в режим, например, target’a делаем это в 2 этапа:

— первый этап

# update_drv -a -i '/pci@0,0/pci1002,5a1f@b/pci1077,138@0,1/fp@0,0' qlt
devfsadm: driver failed to attach: qlt
Warning: Driver (qlt) successfully added to system but failed to attach.

где путь берётся из вывода команды (luxadm -e port) и/pci@0,0/pci1002,5a1f@b/pci1077,138@0,1/fp@0,0 – путь относительно каталога /devices.

Ошибка значит лишь то, что в данный момент оно не может выгрузить драйвер – он будет выгружен при ребуте.

После изменения выполним

# init 6

— второй этап

# update_drv -d -i 'pciex1077,2432' qlc
Cannot unload module: qlc
Will be unloaded upon reboot.
# update_drv -a -i 'pciex1077,2432' qlt
devfsadm: driver failed to attach: qlt
Warning: Driver (qlt) successfully added to system but failed to attach

и ребут

# init 6

Вот теперь они правильно переведутся в режим Target’a. проверяем:

# fcinfo hba-port
HBA Port WWN: 21000024ff2f301c
        Port Mode: Target
        Port ID: 10600
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: QLE2462
        Firmware Version: 5.2.1
        FCode/BIOS Version: N/A
        Serial Number: not available
        Driver Name: COMSTAR QLT
        Driver Version: 20100505-1.05
        Type: F-port
        State: online
        Supported Speeds: 1Gb 2Gb 4Gb
        Current Speed: 4Gb
        Node WWN: 20000024ff2f301c
HBA Port WWN: 21000024ff2f301d
        Port Mode: Target
        Port ID: 0
        OS Device Name: Not Applicable
        Manufacturer: QLogic Corp.
        Model: QLE2462
        Firmware Version: 5.2.1
        FCode/BIOS Version: N/A
        Serial Number: not available
        Driver Name: COMSTAR QLT
        Driver Version: 20100505-1.05
        Type: unknown
        State: offline
        Supported Speeds: 1Gb 2Gb 4Gb
        Current Speed: not established
        Node WWN: 20000024ff2f301d

3) Подключение target’ов на initiator’e.

# iscsiadm add static-config iqn.1986-03.com.sun:02:f5de6642-3611-ed59-c3d1-811b39cf571d,1.2.3.4

где UID-берём из target’a, ip — соответственно IP-target’a.

Смотрим, что получилось:

# iscsiadm list static-config
Static Configuration Target: iqn.1986-03.com.sun:02:f5de6642-3611-ed59-c3d1-811b39cf571d,1.2.3.4:3260

Если вы у вас подключено несколько iSCSI и подключаете ещё новые, то разобраться, где какой просто так не получится. Что бы решить эту проблему, посмотрите в /var/adm/messages и увидите такие строки:

Sep 23 13:31:40 sr600 iscsi: [ID 559844 kern.info] NOTICE: iscsi session(49) iqn.1986-03.com.sun:02:a476023a-d971-ea8a-9c0a-95282fc52ddc online
Sep 23 13:31:40 sr600 scsi: [ID 583861 kern.info] sd43 at scsi_vhci0: unit-address g600144f054bc4800000052403c400001: f_tpgs
Sep 23 13:31:40 sr600 genunix: [ID 936769 kern.info] sd43 is /scsi_vhci/disk@g600144f054bc4800000052403c400001
Sep 23 13:31:40 sr600 genunix: [ID 408114 kern.info] /scsi_vhci/disk@g600144f054bc4800000052403c400001 (sd43) online
Sep 23 13:31:40 sr600 genunix: [ID 483743 kern.info] /scsi_vhci/disk@g600144f054bc4800000052403c400001 (sd43) multipath status: degraded: path 10 iscsi0/disk@0000iqn.1986-03.com.sun:02:a476023a-d971-ea8a-9c0a-95282fc52ddc0001,0 is online
Sep 23 13:32:36 sr600 iscsi: [ID 559844 kern.info] NOTICE: iscsi session(54) iqn.1986-03.com.sun:02:1965e5d0-d6c5-c58c-f4e4-837afee50606 online
Sep 23 13:32:36 sr600 scsi: [ID 583861 kern.info] sd44 at scsi_vhci0: unit-address g600144f0d825cd00000052403d520001: f_tpgs
Sep 23 13:32:36 sr600 genunix: [ID 936769 kern.info] sd44 is /scsi_vhci/disk@g600144f0d825cd00000052403d520001
Sep 23 13:32:36 sr600 genunix: [ID 408114 kern.info] /scsi_vhci/disk@g600144f0d825cd00000052403d520001 (sd44) online
Sep 23 13:32:36 sr600 genunix: [ID 483743 kern.info] /scsi_vhci/disk@g600144f0d825cd00000052403d520001 (sd44) multipath status: degraded: path 11 iscsi0/disk@0000iqn.1986-03.com.sun:02:1965e5d0-d6c5-c58c-f4e4-837afee506060001,0 is online

Теперь можно понять, кто есть кто: наши target’ы увидятся как 600144f054bc4800000052403c4, 600144f0d825cd00000052403d52 через команду format или iostat -En

Вот пример, когда работает подключение через iSCSI(запускаем команду на target’e):

# stmfadm list-target -v
Target: iqn.1986-03.com.sun:02:314701c8-2d45-4530-c0c5-c96bf790241d
    Operational Status: Online
    Provider Name     : iscsit
    Alias             : -
    Protocol          : iSCSI
    Sessions          : 1
        Initiator: iqn.1986-03.com.sun:01:e00000000000.4eefe7ae
            Alias: -
            Logged in since: Mon Oct 14 21:01:38 2013
Target: wwn.21000024FF2EB9F9
    Operational Status: Online
    Provider Name     : qlt
    Alias             : qlt1,0
    Protocol          : Fibre Channel
    Sessions          : 0
Target: wwn.21000024FF2EB9F8
    Operational Status: Online
    Provider Name     : qlt
    Alias             : qlt0,0
    Protocol          : Fibre Channel
    Sessions          : 0

Multipathing

Пару слов хочется сказать о multipathing: это механизм, который предоставляет системе несколько путей до устройства с применением технологии отказоустойчивости и балансировки . Устройством может быть как хранилище, так и сетевое устройство (например, удалённый сервер).

При настройке разного рода FC/iSCSI очень желательно настроить и multipathing.

Очень неплохой tutorial по multipathing описан здесь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *