Сделай сам: стенд с решениями для виртуализации — настройка узлов кластера для использования общего хранилища

Мы уже установили и настроили необходимое количество серверов, которые будут служить узлами будущего кластера. Осталось добавить к ним последний компонент, который объединит их единую систему и позволит, собственно, настроить клужбу кластеризации. Сегодня речь пойдёт о том, как подключить узлы кластера к общему хранилищу.

Процедура подключения хранилища к узлам кластера состоит из двух основных этапов. Во-первых, потребуется подключить общий диск по протоколу iSCSI. А во-вторых — разметить и отформатировать этот диск. Первый шаг необходимо выполнить последовательно на всех узлах будущего кластера. А второй — только один раз на любом из узлов.

Подключение общего диска с помощью iSCSI Software Initiator 

Этот шаг потребует использования утилиты iSCSIcli. Сразу предупреждаю, что её синтаксис далеко не всегда выглядит очевидным, поэтому будьте внимательны. Для удобства я отдельно выложил полную версию встроенной справки iSCSIcli. Нижеследующие команды можно набирать отдельно — сначала выполнить «iscsicli command1», затем «iscsicli command2» и так далее. А можно воспользоваться интерактивным режимом — набрать просто «iscsicli» и попасть в собственную командную оболочку утилиты.

Я для кратости буду пользоваться вторым вариантом. Вводимые мною команды выделены курсивом. Обычный текст — ответы и подсказки, выводимый утилитой.

C:\Users\Administrator.UNI>iscsicli
Microsoft iSCSI Initiator Version 6.0 Build 6000

[iqn.1991-05.com.microsoft:hyperv-node1.lab.com] Enter command or ^C to exit

Для начала нам потребуется указать инициатору на клиенте адрес Target на сервере.

QAddTargetPortal hyperv-storage.lab.com
The operation completed successfully.

Здесь нужно прерваться и на минуту вернуться к управлению iSCSI Target. После выполнения предыдущей команды наш инициатор предпринял попытку подключения к хранилищу. Однако, он пока что не может получить доступ к дискам, потому что адрес инициатора (IQN) явным образом не проассоциирован с Target. Теперь, после того, как инициатор однажды попробовал подкючиться к серверу, последний добавил IQN инициатора в свой список потенциальных клиентов. И мы можем указать этот IQN в свойствах Target. (Строго говоря, сделать это мы могли и раньше — например, сразу на этапе создания Target. Но тогда нам пришлось бы вручную указывать IQN, что чревато опечатками).

После того, как вы проассоциируете IQN инициатора с тем Target, который содержит нужные виртуальные диски, можно перейти обратно к будущему узлу кластера и продолжить настойку инициатора. Запросим список доступных Targets.

listtargets
Targets List:
iqn.1991-05.com.microsoft:hyperv-storage-cg01-target
The operation completed successfully.

Понятно, что у нас сейчас всего один Target — тот, который мы только что проассоцииовали с IQN инициатора. Настало время подключить его.

QloginTarget iqn.1991-05.com.microsoft:hyperv-storage-cg01-target
Session Id is 0xfffffa8007076018-0x4000013700000006
Connection Id is 0xfffffa8007076018-0x5
The operation completed successfully.

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

PersistentLoginTarget iqn.1991-05.com.microsoft:hyperv-storage-cg01-target t * * * * * * * * * * * * * * * 0
The operation completed successfully.

Я не издеваюсь — здесь действительно надо набрать подряд 15 (пятнадцать) звёздочек, разделённых пробелами. Но на этом обязательная часть настройки iSCSI Software Initiator закончена. Можно только ещё раз убедиться в этом.

ListPersistentTargets
Total of 1 peristent targets
Target Name : iqn.1991-05.com.microsoft:hyperv-storage-cg01-target

    Address and Socket : 192.168.150.134 3260
Session Type : Data
Initiator Name : Root\ISCSIPRT\0000_0
Port Number : <Any Port>
++Security Flags : 0x0
++Version : 0
++Information Specified: 0x20
++Login Flags : 0x8
++Username :

The operation completed successfully.

[iqn.1991-05.com.microsoft:hyperv-node1.lab.com] Enter command or ^C to exit
ReportTargetMappings
Total of 1 mappings returned
Session Id : fffffa8007076018-4000013700000006
Target Name : iqn.1991-05.com.microsoft:hyperv-storage-cg01-target
Initiator : Root\ISCSIPRT\0000_0
Initiator Scsi Device : \\.\Scsi3:
Initiator Bus : 0
Initiator Target Id : 0
Target Lun: 0x0 <--> OS Lun: 0x0

The operation completed successfully.

Итак, диск подключен. Как и было обещано, ваш клиент (он же сервер Hyper-V — надеюсь, вы ещё не запутались) теперь воспринимает виртуальный диск, расположенный на сервере iSCSI Target, как обычный локальный диск. Я расчитываю, что для данного эксперимента вы создали новый виртуальный диск, так что сейчас он совсем пуст. Поэтому сейчас потребуется разметить и отформатировать его. Для этого покинем консоль iSCSIcli. Как объясняет каждое новое приглашение этой утилиты, для выхода надо нажать <Ctrl + C>.

Разметка и форматирование общего диска

Для этого мы воспользуемся другой интерактивной утилитой — DiskPart

C:\Users\Administrator>diskpart

Microsoft DiskPart version 6.0.6001
Copyright (C) 1999-2007 Microsoft Corporation.
On computer: HYPERV-NODE1

DISKPART> list disk

  Disk ### Status Size Free Dyn Gpt
-------- ---------- ------- ------- --- ---
Disk 0 Online 410 GB 0 B
Disk 1 Offline 25 GB 25 GB

Вот этот второй диск, который сейчас находится в состоянии «Offline», мы только что подключили по протоколу iSCSI. Дальше я буду приводить команды без подробных пояснений — мне кажется, что синтаксис DiskPart достаточно очевиден. Если у вас возникают здесь затруднения — обратитесь к официальной документации. Благо, её для DiskPart имеется в избытке — в отличие от iSCSIcli. Например:

Итак, 

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> attributes disk clear readonly

Disk attributes cleared successfully.

DISKPART> online disk

DiskPart successfully onlined the selected disk.

DISKPART> create partition primary

DiskPart succeeded in creating the specified partition.

DISKPART> list volume

  Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 D DVD-ROM 0 B No Media
Volume 1 C NTFS Partition 410 GB Healthy System
* Volume 2 RAW Partition 25 GB Healthy

DISKPART> select volume 2

Volume 2 is the selected volume.

DISKPART> assign letter=R

DiskPart successfully assigned the drive letter or mount point.

DISKPART> format fs=ntfs label=cluster01 quick

  100 percent completed

DiskPart successfully formatted the volume.

DISKPART> exit

Leaving DiskPart...

Настройка второго узла кластера

Всё, что описано в этой и предыдущей статьях, напрямую относится к первому узлу вашего будущего кластера. Для всех последующих узлов этого кластера процедура будет незначительно отличаться. Но только в той части, которая касается подготовки общего диска с помощью утилиты DiskPart. Дело в том, что в Windows никакой дисковый ресурс не может быть одновременно доступен для записи одновременно нескольким системам. Следовательно, в каждый момент времени общий диск может находиться в состоянии «Online» только на каком-то одном из узлов. На всех остальных узлах, соответствено, в этот момент данный диск должен находиться в состоянии «Offline». Однако, поскольку вы уже разметили и отформатировали диск в ходе создания первого узла кластера, вам и не потребуется переводить его в состояние «Online» на других узлах.

Есть только одна вещь, которую стоит сделать после подключения диска по протоколу iSCSI (то есть завершения работы с iSCSIcli) на каждом из последующих узлов. Запустите DiskPart, выполните комаднду list disk — и убедитесь, что диск присутствует в системе, но находится в состоянии «Offline». Все остальные проверки выполнит Cluster Validation Tool. О нём мы поговорим в следующей статье.