Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
1
11:37, 23 августа 2014

Установка и базовая настройка iSCSI LIO Target на CentOS 7

Blog post image

В записке будет рассказано про установку и базовую настройку iSCSI LIO таргета на CentOS 7. Начиная с версии CentOS 6.2 он стал доступен в системе по умолчанию. Он нужен для организации СХД - системы хранения данных.

Что дает установка LIO Target:

- это доступ по протоколу iSCSI до хранилище данных

- популярность такого решения

- предоставление блочного устройства по протоколу iSCSI

- простая установка и настройка Target'a

 

Простыми словами о хранилище данных iSCSI: Все знают что у каждого компьютера должен быть жесткий диск, допустим есть компьютер [Таргет] который имеет 10 Тбайтовый диск. Помимо компьютера с 10 Тбайтным жестким диском, в локальной сети также есть другой компьютер [Инициатор], с диском маленького объема - 80 Гбайт, на котором стоит только операционная система.

И вот, в один прекрасный день, понадобилось, чтобы на компьютере [Инициаторе] с 80 Гбайтовым жестким диском, размешались общие папки с данными сотрудников. Понятно что винчестер с малым объемом, не сможет содержать столь большие данные. Чтобы не добавлять дополнительный жесткий диск для общих папок к этому ПК, у нас с технологией iSCSI, появляется возможность использования места, из большого 10 Тбайтного жесткого диска другого компьютера (таргета) локальной сети, так как будто на компьютере с 80 Гбайтным HDD появился новый жесткий диск/раздел (lun) большого объема. Через iSCSI (протокол) можно легко получать по сети доступ к дисковому пространству другого компьютера (сервера). Таким образом получается, что компьютер с мизерным объемом винчестера, может выступать в качестве сервера для общих папок, не имея физически подключенного жесткого диска достаточного объема, при этом, используя требуемое место в виде раздела по сети, с сервера (таргета) который обладает необходимым дисковым пространством.

Обычно под Таргетом понимается сервер с аппаратным рейд контроллером и быстрыми жесткими или твердотельными дисками. В добавок у такой машины должны быть быстрые сетевые адаптеры 10Гбит и выше.

А под Инициатором подразумевается любой сервер которому требуется дисковое место, это может быть например почтовый сервер, сервер виртуализации, веб сервер и т.д.

Для повышения отказоустойчивости, обычно, в компаниях настраивают два хранилище данных iSCSI вместо одного. Потому что, одно хранилище может в любой момент дать сбой, и работа всех сервисов прекратится. При использовании двух серверов для хранения данных, такой проблемы можно избежать. Такая связка использует синхронизацию данных в реальном времени между двумя СХД.

И конечно же, помимо двух СХД для повышения отказоустойчивости, вам потребуется стекируемые свичи, несколько сетевых карт (multipath), настройка фэнсинга и т.д.

Основные понятия:

1. Таргет - это хранилище данных из которого берется дисковое место

2. Инициатор - это тот кто использует место которое предоставляет Таргет

3. Lun - это раздел который предоставляется Таргетом для Инициатора, чтобы последний писал и считывал данные с него.

 

Blog post image

- Сервер 1 - 10.0.100.2 / CentOS / Target

- Сервер 2 - 10.0.100.1 / Windows / Iniciator

Примечание: На картинке два сервера, первый с лева - это машина с гипервизором KVM на ОС Linux CentOS, вторая машина с права - это хранилище данных на ОС CentOS, где установлен ISCSI LIO Target.

Я покажу пример когда будет использован SCSI LIO Target на CentOS в связке с инициатором на ОС Windows. По сути нет никакой разницы в плане разности ОС, будь хоть Linux или Windows. Все современные операционные системы поддерживают протокол iSCSI, так как это промышленный стандарт.

Краткое содержание записки

 

1. Установка targetcli

2. Настройка iSCSI target

2.1. Очищаем конфигурацию

2.2. Создание хранилище данных

2.3. Отключаем авторизацию

2.4. Создаем wwn

2.5. Создаем Lun

2.6. Создаем acl

2.7. Создаем portal

2.8. Сохраняем настройки в конфигурационный файл

2.9. Ставим в автозагрузку targetcli

3. Настраиваем инициатор

3.1. Запускаем встроенный инициатор на Windows 2008

Начнем с самого главного - настроим iSCSI Target на операционной системе CentOS 7. После чего, приступим к настройке инициатора на системе с Windows Server 2008.

1. Установка и запуск targetcli

Я буду делать все операции из под учетной записи Администратора - root.

Начнем сразу с установки LIO:

# yum install targetcli -y

# PYTHONPATH=../scripts/targetcli

# systemctl enable target

# systemctl start target

--------------------------------------

Отключение selinux и firewalld

--------------------------------------

До начала тестирования, предварительно были отключены selinux и firewalld.

selinux:

# vi /etc/selinux/config

SELINUX=disabled

# setenforce 0

firewalld:

# systemctl disable firewalld

# systemctl stop firewalld

# systemctl status firewalld | grep Active

Active: inactive (dead)

Если настраиваете Firewall, то откройте порт 3260.

 

2. Настройка iSCSI target

 

Здесь будет описана настройка подчиненного устройства - цели. Подчиненное устройство будет отдавать место инициатору.

Я буду использовать свободный жесткий диск установленный дополнительно в системе. Его объем всего 80 Гбайт, в CentOS ссылка на него хранится как - /dev/sdb. За место жесткого диска можно использовать RAM диск, LVM раздел, монтированный файл или PSCSI.

 

2.1. Очищаем конфигурацию


# targetcli clearconfig confirm=true

 

2.2. Создание хранилище данных


Для примера, будет отдан целый жесткий диск.

Смотрим какие диски есть в системе:

# fdisk -l | grep sd

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors

/dev/sda1   *        2048     1026047      512000   83  Linux

/dev/sda2         1026048    16777215     7875584   8e  Linux LVM

Disk /dev/sdb: 87.0 GB, 86976561152 bytes, 169876096 sectors

Видим что есть наш диск /dev/sdb. Его и будем использовать для примера.

# targetcli

> cd /backstores/block

> create hdd_block1 /dev/sdb

Created block storage object hdd_block1 using /dev/sdb.

Проверяем, вводим:

> ls /

/> ls /

o- / ..................................................................... [...]

o- backstores .......................................................... [...]

| o- block .............................................. [Storage Objects: 1]

| | o- hdd_block1 ................ [/dev/sdb (81.0GiB) write-thru deactivated]

| o- fileio ............................................. [Storage Objects: 0]

| o- pscsi .............................................. [Storage Objects: 0]

| o- ramdisk ............................................ [Storage Objects: 0]

o- iscsi ........................................................ [Targets: 0]

|   o- tpg1 ........................................... [no-gen-acls, no-auth]

|     o- acls ...................................................... [ACLs: 0]

|     o- luns ...................................................... [LUNs: 0]

|     o- portals ................................................ [Portals: 0]

o- loopback ..................................................... [Targets: 0]

/>

Видим что появился наш жесткий диск sdb.

Здесь в примере отдан целый жесткий диск, чтобы отдать раздел или файл, сделайте например так:

> cd /backstores/fileio/

> create shareddata /opt/shareddata.img 100M

Или если LVM раздел:

> cd backstores/block/

> create block1 /dev/vg/lv_iscsi

 

2.3. Отключаем авторизацию


# targetcli

/> cd /iscsi

/iscsi> set discovery_auth enable=0

Parameter enable is now 'False'.

Вообще, в реальной сети, лучше включите авторизацию. Это поможет дать доступ к LUN только определенному гипервизору. Аутентификация происходит по протоколу CHAP. При настройке такого доступа, вы будете задавать логин/пароль.

 

2.4. Создаем wwn

 

wwn - это уникальный идентификатор, который определяет конкретное целевое устройство (таргет).

# targetcli

/> cd /iscsi

/iscsi> create

Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.5b94cfd9bd9a.

Created TPG 1.

/iscsi> ls

o- iscsi .......................................................... [Targets: 1]

o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.5b94cfd9bd9a ..... [TPGs: 1]

o- tpg1 ............................................. [no-gen-acls, no-auth]

o- acls ........................................................ [ACLs: 0]

o- luns ........................................................ [LUNs: 0]

o- portals .................................................. [Portals: 0]

/iscsi>

Примечание: Обычно его обзывают ставя текущею дату, имя компании и в конце указывают номер таргета или хост, вот пример -  iqn.год-месяц.com.название компании:t1

 

2.5. Создаем Lun


Lun - это адрес диска (в ранних версиях) или дискового устройства в сетях хранения (современное использование).

# targetcli

/> cd /iscsi

/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.5b94cfd9bd9a/

/iscsi/iqn.20....5b94cfd9bd9a> cd tpg1/luns

/iscsi/iqn.20...d9a/tpg1/luns> create /backstores/block/hdd_block1

Created LUN 0.

Все, мы создали первый LUN.

Примечание: При наборе команд можно использовать клавишу TAB, это облегчает работу.

 

2.6. Создаем acl


# targetcli

/> cd /iscsi

/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.5b94cfd9bd9a/

/iscsi/iqn.20...d9a> cd tpg1

/iscsi/iqn.20...d9a/tpg1> cd acls

/iscsi/iqn.20...d9a/tpg1/acls> create iqn.1991-05.com.microsoft:node01

Created Node ACL for iqn.1991-05.com.microsoft:node01

Created mapped LUN 0.

Здесь node01 - это имя хоста которому будет даваться доступ к LUN. Авторизация будет идти через ввод строчки - iqn.1991-05.com.microsoft:node01, это типа логин. За место node1, можно ввести "node1.company.local".

Я продемонстрирую в конце записки доступ из Windows 2008 к созданному LUN.

 

2.7. Создаем portal


# targetcli

/> cd /iscsi

/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.5b94cfd9bd9a/

/iscsi/iqn.20....5b94cfd9bd9a> cd tpg1/portals

/iscsi/iqn.20.../tpg1/portals> create

Using default IP port 3260

Binding to INADDR_ANY (0.0.0.0)

Created network portal 0.0.0.0:3260.

Примечание: TPG - расшифровывается как Target Portal Group (Целевая группа портал)

2.8. Сохраняем настройки в конфигурационный файл


/iscsi/iqn.20.../tpg1/portals> cd /

/> saveconfig

Last 10 configs saved in /etc/target/backup.

Configuration saved to /etc/target/saveconfig.json

/> exit

 

3. Настраиваем инициатор


В этом разделе запустим инициатор, настроим доступ  к LUN которая расположена на CentOS 7.

Операционные системы Windows начиная с версии 7 и 2008 Server имеют встроенный инициатор iSCSI.

Поэтому чтобы настроить доступ к хранилище данных не надо ставить дополнительного ПО.

 

3.1. Запускаем встроенный инициатор на Windows 2008


Мы прописали в CentOS что доступ к LUN имеет хост - node01, на котором у нас установлена Windows.

Имя хоста можно настроить через свойства "Мой компьютер" ->  далее во вкладке "Имя компьютера" нажать кнопку изменить  и там задать имя хоста.

Blog post image

Или можно просто ввести строку подключения (iqn.1991-05.com.microsoft:node01) в инициаторе, что на самом деле выглядит правильнее, для этого надо запустить iSCSI Initiator, далее зайти на вкладку Configuration, нажать кнопку - "Change".

Blog post image

Вводим строку авторизации - iqn.1991-05.com.microsoft:node01:

Blog post image

Идем во вкладку - Targets:

Blog post image

Вводим IP адрес машины CentOS7 и нажимаем кнопку - Quick Connect.

Blog post image

Здесь нажимаем - Done.

Все - теперь  у нас в системе появился жесткий диск с размером в 80 Гбайт.

Его надо отформатировать и использовать.

Если у вас глюк, и diskmgmt.msc пишет что диск оффлайн - "the disk is offline because of policy set by an administrator", проделайте следующее:

Введите в командной строке последовательно:

c:\> diskpart.exe

DISKPART> san policy=OnlineAll

DISKPART> list disk

* Disk 1 Offline 80 Gb

DISKPART> select disk 1

DISKPART> ATTRIBUTES DISK CLEAR READONLY

DISKPART> ONLINE DISK

DiskPart successfully onlined the selected disk.

 

Запустим diskmgmt.msc, чтобы посмотреть какие диски есть:

Blog post image

Blog post image

Видим диск Disk1 с объемом в 81GB, его мы получили от CentOS через локальную сеть.

Blog post image

Blog post image

После этих операций, можно работать с диском от CentOS как обычно :)

Полезные ссылки:

1. http://www.mail-archive.com/devel@open-fcoe.org/msg03299.html

2. http://docs.fedoraproject.org/en-US/Fedora/14/html/Storage_Administration_Guide/fcoeconfig.html

3. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/fcoe-config.html

4. http://habrahabr.ru/company/netapp/blog/102059/

5. http://habrahabr.ru/post/97529/

6. http://habrahabr.ru/post/200466/

7. https://wiki.rvijay.in/index.php/Configuring_iSCSI_target_using_'targetcli'

8. http://www.hansneervoort.nl/projects/iSCSI/

9. https://wiki.archlinux.org/index.php/ISCSI_Target#Set_Credentials

10. http://www.certdepot.net/rhel7-configure-iscsi-target-initiator-persistently/

11. http://linux-iscsi.org/builds/docs/LIO-3.0-Users_Reference_Manual.pdf

1
6482
0