У записці буде розказано про установку і базове налаштування 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 - це розділ який надається Таргет для Ініціатора, щоб останній писав і зчитував дані з нього.
- Сервер 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.7. створюємо portal
2.8. Зберігаємо налаштування в конфігураційний файл
2.9. Ставимо в автозавантаження targetcli
3. Налаштовуємо ініціатор
1. Установка і запуск targetcli
Я буду робити все операції з під облікового запису Адміністратора - root.
Почнемо відразу з установки LIO:
# Yum install targetcli -y
# Systemctl enable target
# Systemctl start target
Відключення selinux і firewalld
До початку тестування, попередньо були відключені selinux і firewalld.
# Systemctl disable firewalld
# Systemctl stop firewalld
# Systemctl status firewalld | grep Active
Active: inactive (dead)
Якщо налаштовуєте Firewall, то відкрийте порт 3260.
2. Налаштування iSCSI target
Тут буде описана настройка підлеглого пристрою - цілі. Підлеглий пристрій буде віддавати місце ініціатору.
2.1. очищаємо конфігурацію
# Targetcli clearconfig confirm = true
2.2. Створення сховище даних
Для прикладу, буде відданий цілий жорсткий диск.
Дивимося які диски є в системі:
# Fdisk -l | grep sd
Disk / dev / sda: 8589 MB, 8589934592 bytes, 16777216 sectors
/ Dev / sda2 1026048 16777215 7875584 8e Linux LVM
Disk / dev / sdb: 87.0 GB, 86976561152 bytes, 169876096 sectors
Бачимо що є наш диск / dev / sdb. Його і будемо використовувати для прикладу.
> Cd / backstores / block
> Create hdd_block1 / dev / sdb
Created block storage object hdd_block1 using / dev / sdb.
| 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- 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
/ Iscsi> set discovery_auth enable = 0
Parameter enable is now 'False'.
wwn - це унікальний ідентифікатор, який визначає конкретне цільове пристрій (таргет).
o- iscsi. [Targets: 1]
o- portals. [Portals: 0]
Примітка: Зазвичай його обзивають ставлячи поточну дату, ім'я компанії і в кінці вказують номер таргета або хост, ось приклад - iqn.год-месяц.com.названіе компанії: t1
/iscsi/iqn.20. 5b94cfd9bd9a> cd tpg1 / luns
/iscsi/iqn.20. d9a / tpg1 / luns> create / backstores / block / hdd_block1
Все, ми створили перший LUN.
Примітка: При наборі команд можна використовувати клавішу TAB, це полегшує роботу.
/iscsi/iqn.20. d9a> cd tpg1
/iscsi/iqn.20. d9a / tpg1> cd acls
Created mapped LUN 0.
2.7. створюємо portal
/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 /
Last 10 configs saved in / etc / target / backup.
Configuration saved to /etc/target/saveconfig.json
3. Налаштовуємо ініціатор
В цьому розділі запустимо ініціатор, налаштуємо доступ до LUN яка розташована на CentOS 7.
Тому щоб налаштувати доступ до сховища даних не треба ставити додаткового ПЗ.
Ми прописали в CentOS що доступ до LUN має хост - node01, на якому у нас встановлена Windows.
Ім'я хоста можна налаштувати через властивості "Мій комп'ютер" -> далі у вкладці "Ім'я комп'ютера" натиснути кнопку змінити і там задати ім'я хоста.
Йдемо у вкладку - Targets:
Тут натискаємо - Done.
Все - тепер у нас в системі з'явився жорсткий диск з розміром в 80 Гбайт.
Його треба відформатувати і використовувати.
Якщо у вас глюк, і diskmgmt.msc пише що диск оффлайн - "the disk is offline because of policy set by an administrator", виконайте наступне:
Введіть в командному рядку послідовно:
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, щоб подивитися які диски є:
Бачимо диск Disk1 з об'ємом в 81GB, його ми отримали від CentOS через локальну мережу.
Після цих операцій, можна працювати з диском від CentOS як зазвичай :)