Инициализатор iscsi windows 10 не видит. Подключение и настройка iSCSI в Windows Server. Установка роли iSCSI Target Server

Всем привет сегодня расскажу как установить ISCSI сервер в Windows Server 2008 R2. По умолчанию данная служба не идет в комплекте Windows Server 2008 R2 и скачивается отдельно как компонент. Сам ISCSI сервер, состоит из iscsi target windows, который будет выступать в роли цели к кому будет подключаться встроенный компонент Windows инициатор iscsi, и с помощью них будет производиться настройка iSCSI-хранилища.

Напомню что такое ISCSI протокол (англ. Internet Small Computer System Interface) - протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами. iSCSI описывает: Транспортный протоколдля SCSI, который работает поверх TCP. Благодаря ему вы можете создать дисковое хранилище средствами Windows и подключить его через вашу локальную сеть ethernet, скорость конечно будет зависеть больше от вашего сетевого парка, но вам не придется тратиться на дорогостоящие FC свитчи, а если у вас есть 10 и более гигабитные ISCSI свитчи то вообще все будет шикарно, так как они уже мало чем проигрывают FC, плюс их проще внедрять в существующую инфраструктуру.

Для того чтобы наш iscsi сервер работал скачаем Microsoft iSCSI Software Target 3.3 . Запускаем скачанный дистрибутив

Через browse указываем куда хотим выгрузить установочный файл

видим Microsoft iSCSI Software Target 3.3 успешно извлечен.

Переходим в директорию в которую извлекались файлы, нас будет интересовать папка x64, запускаем iscsitaget_public

откроется мастер установки жмем сразу next.

Соглашаемся с лицензионным соглашением

при желании можно изменить каталог установки

начнется установка

Протокол iSCSI разработан для работы в сетях хранения данных и представляет собой способ доступа к блочным устройствам по протоколу SCSI поверх TCP/IP. Это дает возможность организации недорогих сетей хранения данных (SAN) при помощи обычных Ethernet-сетей. Эта возможность широко используется при построении систем высокой доступности и мы будем рассматривать в рамках этого цикла именно решения на основе iSCSI-хранилищ. Сегодня мы рассмотрим создание такого хранилища на платформе Windows Server 2008 R2.

Сначала пару слов о принципиальных отличиях iSCSI от иных сетевых систем хранения данных. Cети хранения данных - SAN (Storage Area Network ) предусматривают передачу данных в сети в "сыром" виде по протоколу SCSI, также, как если бы они передавались между системой и локальным диском на низком уровне. iSCSI устройства воспринимаются системой практически также, как локальные диски - перед использованием на них нужно создать разделы и отформатировать.

В тоже время привычные всем сетевые хранилища - NAS (Network Area Storage) обеспечивают доступ на уровне файловой системы, используя протоколы передачи файлов, такие как SMB или NFS.

Проще говоря: NAS - это привычные всем общие сетевые папки, SAN - подключаемые по сети диски. Из этого следует второе важное отличие. Сетевая папка может обслуживать множество клиентов. Устройство SAN может быть подключено к единственному клиенту, точно также как обычный HDD может быть подключен только к одному ПК. Исключение - кластеры, когда к одному SAN-устройству имеют доступ сразу несколько нод, в этом случае используется дополнительный уровень абстракции - кластерная файловая система, например Microsoft Cluster Shared Volumes (CSV) или VMware VMFS .

Перед тем, как приступать к практическому освоению данной технологии, следует познакомиться с принятой терминологией:

  • Инициатор iSCSI (iSCSI Initiator) - клиентская часть, направляет запросы цели iSCSI, может быть выполнена программно, в виде драйвера или аппаратно, в виде iSCSI-адаптера;
  • Цель iSCSI (iSCSI Target, таргет ) - серверная часть, принимает подключения от инициатора и предоставляет ему доступ к связанным с ним блочными устройствами - виртуальными дисками, LUN. Может быть реализован как программно, так и в виде аппаратной СХД.

Одна цель iSCSI может быть связана с несколькими блочными устройствами, которые будут доступны подключившемуся к цели инициатору. Один инициатор может быть подключен к нескольким целям и использовать все связанные с ними устройства. Одна цель также может принимать подключения от нескольких инициаторов, но каждое отдельное устройство может быть доступно только одному из инициаторов.

Еще один момент, теперь уже связанный с практической реализацией iSCSI-хранилищ. Для SAN крайне желательно выделить отдельную сеть, изолированную от сети предприятия.

Это необходимо для обеспечения достаточной пропускной способности в сети хранения данных и избежать перегрузки обычной сети iSCSI-трафиком. Также нет смысла организовывать iSCSI в сетях с пропускной способностью ниже чем 1 Гбит/сек.

В состав Windows Server 2008 R2 роль цели iSCSI не входит и для ее развертывания необходимо скачать Microsoft iSCSI Software Target . Распаковываем его и устанавливаем пакет iscsitarget_public.msi из папки x64. Установка предельно проста и мы не будем заострять на ней внимание.

После установки перейдем к консоли управления iSCSI: Пуск - Администрирование - Программная цель iSCSI . Прежде всего создадим новую цель (таргет) . Для этого щелкнем правой кнопкой на Цели iSCSI - Создать цель iSCSI .

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

Следующим шагом нам надо указать идентификаторы инициаторов iSCSI которым будет разрешен доступ к цели. Идентификатор IQN - это специальное имя формата iqn..: , которое является уникальным для каждого iSCSI-устройства в сети хранения данных. Где:

  • year-mo - год регистрации доменного имени;
  • reversed_domain_name -доменное имя, записанное наоборот;
  • unique_name - уникальное имя устройства, например таргет здесь будет содержать указанное вами имя, а инициатор имя хоста.

Например, в программных решениях Microsoft IQN по умолчанию имеет формат iqn.1991-05.com.microsoft:unique_name .

Чтобы узнать IQN перейдем на инициатор iSCSI, в нашем случае это сервер под управлением Windows Server 2012, но алгоритм действий будет одинаков для любых иных версий Windows. Переходим в Панель управления - Инициатор iSCSI , на предложение задать ее автоматический запуск отвечаем утвердительно:

Затем в открывшемся окне переходим на закладку Конфигурация , где находится искомый идентификатор:

Можно скопировать его и указать при настройке цели, но есть другой способ. Для этого перейдите на закладку Конечные объекты , в поле Объект введите имя сервера с установленной Программной целью iSCSI и нажмите Быстрое подключение .

Понятно, что пока мы ни к чему не подключимся, но сейчас у нас иная задача. Возвращаемся обратно на сервер цели и жмем на странице указанием идентификатора инициатора кнопку Обзор .

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

На этом создание цели завершено и мы можем создать и привязать к ней один или несколько дисков. Для этого переходим к пункту Устройства и в меню правой кнопки мыши выбираем Создать виртуальный диск .

Откроется следующий мастер, в котором указываем расположение и имя виртуального диска, обратите внимание, что указывать нужно полное имя файла, вместе с расширением .vhd .

Затем укажем желаемый размер в МБ

И цель iSCSI (таргет) к которой будет привязан данный виртуальный диск.

На этом настройка диска также будет завершена. В результате этих несложных действий мы получили настроенную цель iSCSI с привязанным к ней виртуальным диском. Теперь снова перейдем на инициатор. Можно воспользоваться быстрым подключением и автоматически присоединить диски с обнаруженных целей. Но следует помнить, что наша цель не только подключить диски, но и разделить сеть хранения данных и локальную сеть предприятия.

Поэтому переходим на закладку Обнаружение и нажимаем Обнаружить портал , затем вводим имя сервера с ролью цели iSCSI.

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

В открывшемся окне в поле IP-адрес конечного портала выбираем адрес принадлежащий вашей сети хранения данных:

Возвращаемся обратно и нажимаем Подключить . Присоединенные устройства можно обнаружить в оснастке Управление дисками .

Дальнейший алгоритм работы с ними ничем не отличается от работы с обычным диском: подключаем, размечаем, форматируем.

В данном материале мы рассмотрели самый простой вариант настройки хранилища. В наших последующих материалах мы будем возвращаться к отдельным настройкам, не затрагивая общей темы создания хранилища.

  • Теги:

Please enable JavaScript to view the

Настройка iSCSI хранилища в Windows Server 2012

Internet Small Computer System Interface (iSCSI) — это протокол передачи данных, предназначенный для обмена данными между серверами и системами хранения данных (Storage Area Network, SAN). iSCSI представляет из себя комбинацию протокола SCSI и стека протоколов TCP/IP и предназначен для передачи блоков данных через сети Ethernet. Управляющие команды SCSI передаются внутри IP-пакетов, а протокол TCP обеспечивает управление потоком и надежность передачи данных.

При использовании iSCSI данные между сервером и системой хранения передаются блоками, в необработанном виде. Это позволяет использовать SAN практически так же, как если бы они были подключены к серверу напрямую, а не по сети. Хост-система может создавать на SAN логические разделы, форматировать их и использовать как обычные локальные жесткие диски. В этом заключается основное отличие SAN от сетевых хранилищ (Network Area Storage, NAS), которые работают на уровне файловой системы и используют протоколы передачи файлов, такие как SMB или CIFS.

Технология iSCSI была разработана как более дешевая альтернатива Fibre Channel (FC). Системы на базе iSCSI поддерживают стандартные протоколы и могут быть построены на базе любой существующей сетевой инфраструктуры, поддерживающей протокол IP. Для работы iSCSI может использовать самые обычные сетевые устройства (коммутаторы, маршрутизаторы, сетевые адаптеры и т.п), тогда как для FC требуются специальные HBA-адаптеры, оптические кабеля и прочее дорогостоящее оборудование.

Архитектура iSCSI является клиент-серверной и включает в себя следующие компоненты:

iSCSI Initiator — клиентский компонент, который отправляет запросы на подключение компоненту iSCSI Target, находящемуся на стороне сервера. Инициатор может быть реализован программно, в виде драйвера, либо аппаратно, в виде специального iSCSI адаптера.

iSCSI Target — серверный компонент, слушающий клиентские запросы и обеспечивающий установку соединения между клиентом и сервером iSCSI. Кроме того, таргет связан с виртуальными дисками iSCSI, и после установки соединения все виртуальные диски, связанные с этим таргетом, становятся доступны через инициатор. В качестве iSCSI Target может выступать как специализированная СХД, так и обычный Windows сервер с установленной ролью iSCSI Target.

Виртуальные диски iSCSI — используются для разбиения дискового пространства на логические разделы (Logical Unit Number, LUN). В Windows Server 2012 iSCSI LUN представляют из себя обычные виртуальные диски формата VHD\VHDX. Кстати, в Windows Server 2012 для iSCSI поддерживался только формат VHD, что ставило ограничение в 2ТБ на максимальный размер LUN. В Windows Server 2012 R2 используется формат VHDX, что позволяет создавать LUN-ы размером до 64ТБ.

А теперь остановимся и уточним некоторые моменты:

На каждом iSCSI сервере может быть один или несколько iSCSI Target;
Каждый iSCSI Target может быть подключен к одному или нескольким виртуальным дискам;
Каждый iSCSI Target может обслуживать одно или несколько подключений от iSCSI Initiator;
В свою очередь, каждый iSCSI Initiator может подключаться к одному или нескольким iSCSI Target и, следовательно, к одному или нескольким виртуальным дискам.

Кроме того, в Windows Server 2012 поддерживается loopback-конфигурация, в которой и Target и Initiator могут находиться на одном и том же сервере.

В операционных системах Microsoft поддержка iSCSI появилась довольно давно. Первая версия Microsoft iSCSI Initiator устанавливалась в качестве отдельного компонента в Windows 2000, Windows XP SP2 и Windows Server 2003 SP1, а начиная с Windows Server 2008 и Vista iSCSI Initiator был встроен в операционную систему.

Что касается iSCSI Target, то изначально он входил в специальную версию серверной ОС Windows Data Storage Server 2003, которая была предназначена для построения систем хранения и поставлялась только в предустановленом виде. Однако с 2011 года компонент Microsoft iSCSI Software Target 3.3 стал доступен для загрузки и установки на Windows Server 2008R2, а в Windows Server 2012 он полностью интегрирован в систему и устанавливается в качестве роли сервера.

На этом закончим теоретическую часть и приступим к практике. Для настройки возьмем самый простой вариант, в качестве подопытных используем два сервера с установленной Windows Server 2012 R2: SRV2 для роли iSCSI Target и SRV3 для iSCSI Initiator.

Запуск службы iSCSI Initiator

Для начала проверим состояние службы инициатора на SRV3. Для этого открываем Server Manager и в меню «Tools» выбираем пункт «iSCSI Initiator».

Как видите, по умолчанию служба не запущена. Нажав на «Yes» в диалоговом окне, мы стартуем службу iSCSI Initiator и поставим ее в режим автоматического запуска.

Затем в окне свойств переходим на вкладку «Configuration» и запоминаем значение IQN, оно пригодится нам при настройке сервера.

IQN (iSCSI qualified name) — это уникальный идентификатор, назначаемый для каждого iSCSI Target и Initiator. IQN формируется из даты (месяц и год) регистрации домена, официального имени домена, написанного в обратном порядке и любого произвольного имени, например имени сервера. Получается примерно так: iqn:1991-05.com.microsoft:srv3.contoso.com

Стартовать сервис iSCSI Initiator и установить режим его запуска можно и из консоли PowerShell, следующими командами:

Start-Service msiscsi
Set-Service msiscsi -StartupType automatic

Установка роли iSCSI Target Server

Теперь перейдем на SRV2 и приступим к настройке серверной части. Первое, что нам надо сделать — это установить на сервер роль iSCSI Target. Открываем Server Manager, переходим по ссылке «Add roles and features»

И выбираем роль «iSCSI Target Server», которая находится в разделе File and Storage Services\File and iSCSI Services.

Либо воспользуемся командой PowerShell:

Install-WindowsFeature -Name FS-iSCSITarget-Server

Подготовка диска

Теперь подготовим физический диск, который будет использоваться для хранения виртуальных iSCSI дисков. Специально для этой цели к серверу подключен новый жесткий диск размером 120Гб. На данный момент диск неактивен (Offline). Для его активации в Server Manager переходим в раздел File and Storage Services -> Disks, кликаем на диске и переводим его в Online.

Теперь на этом диске надо создать новый раздел (или том), для чего в контекстном меню выбираем пункт New Volume.

Выбираем физический диск, на котором будет создаваться том

указываем размер тома

и выбираем букву диска.

Затем выбираем для диска файловую систему, размер сектора и указываем метку тома. Здесь напомню, что виртуальные диски iSCSI можно создавать только на томах NTFS, новая файловая система ReFS (Resilient File System) не поддерживается.

Смотрим суммарную информацию, и если все правильно, то жмем «Create», запуская создание тома.

Те же действия можно проделать с помощью PowerShell. Находим нужный диск:

Get-Disk | where {$_.OperationalStatus -eq ″Offline″}

Переводим его в online:

Set-Disk -Number 1 -IsOffline $false

Инициализируем:

Initialize-Disk -Number 1

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

New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter D

И форматируем его в NTFS:

Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel ″iSCSI Storage″

Создание виртуальных дисков iSCSI

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

Выбираем том, на котором будет храниться виртуальный диск.

Даем диску имя и описание.

Указываем размер виртуального диска и его тип. Выбирать можно из трех вариантов:

Fixed size (фиксированного размера) — создаваемый диск сразу занимает весь выделенный объем. Это наиболее производительный, но наименее экономичный вариант;
Dynamically expanding (динамически расширяемый) — изначально создается диск минимального размера, который затем динамически изменяется в зависимости от количества записанных на него данных. Наилучший вариант в плане использования дискового пространства;
Differencing (разностный) — в этом варианте нужно указать расположение родительского диска, с которым будет связан создаваемый диск. Разностный диск может быть как фиксированным, так и динамическим, в зависимости от типа родителя. У этого типа дисков есть свои преимущества, но использовать их для iSCSI лично я особого смысла не вижу.

Теперь нужно указать iSCSI Target, к которому будет подключен данный диск. Поскольку на сервере не создано ни одного таргета, выбираем «New iSCSI target».

Даем таргету имя и описание.

И указываем сервера, которые могут получить к нему доступ.

При выборе серверов можно воспользоваться двумя способами. Если инициатор находится на Windows Server 2012 или Windows 8, то можно просто нажать «Browse» и выбрать нужный сервер из списка. Для более старых систем надо вручную ввести идентификатор сервера. В качестве идентификатора можно указать IQN инициатора, DNS имя или IP-адрес сервера, либо MAC-адрес сетевого адаптера.

Идем дальше. На следующей странице можно настроить аутентификацию по протоколу CHAP между серверами. CHAP (Challenge Handshake Authentication Protocol) — это протокол для проверки подлинности партнера по подключению, основанный на использовании общего пароля или секрета. Для iSCSI можно задействовать как одностороннюю, так и двухстороннюю (reverse) проверку подлинности CHAP.

Проверяем правильность настроек и запускаем создание диска.

Попробуем сделать все то же с помощью PowerShell. Создадим еще один виртуальный iSCSI диск на 20ГБ командой:

New-IscsiVirtualDisk -Path D:\iSCSIVirtualDisks\iSCSI2.vhdx

Обратите внимание, что по умолчанию создается динамический диск, для создания VHD фиксированного размера надо воспользоваться ключом -UseFixed .

Теперь создаем второй iSCSI Target c именем iscsi-target-2 и в качестве сервера доступа укажем IQN SRV3:

New-IscsiServerTarget -TargetName iscsi-target-2 -InitiatorIds ″IQN:iqn.1991-05.com.microsoft:srv3.contoso.com″

И проверим результат командой:

Get-IscsiServerTarget | fl TargetName, LunMappings

Подключение

Возвращаемся на SRV3, открываем окно свойств инициатора, переходим на вкладку Discovery и жмем кнопку Discover Portal.

Вводим имя или IP-адрес портала и жмем ОК.

По умолчанию iSCSI использует все доступные IP-адреса, и если вы хотите, чтобы трафик iSCSI шел только через определенный сетевой интерфейс, то надо перейти в расширенные настройки и в поле «Connect using» указать нужный IP.

Теперь переходим на вкладку Targets, где должны отобразиться все доступные для подключения iSCSI Target. Выбираем нужный таргет и жмем «Connect».

Не забудьте отметить чекбокс «Add this connection to the list of Favorite Targets», который обеспечивает автоматическое подключение к таргету при выключении или перезагрузке машины.

Подключение состоялось, и если открыть оснастку управления дисками, то там появится новый диск. Дальше с этим диском поступаем так же, как с обычным жестким диском, подключенным локально — переводим в Online, инициализируем, создаем на нем разделы и форматируем.

То же самое можно выполнить с помощью PowerShell. Выводим список доступных таргетов:

Get-IscsiTarget | fl

И подключаемся к нужному:

Connect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -IsPersistent $true

Ключ -IsPersistent $true обеспечивает автоматическое подключение при выключении или перезагрузке.

Ну и для отключения можно воспользоваться командой Disconnect-IscsiTarge, вот так:

Disconnect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -Confirm:$false

Заключение

На этом настройка завершена. Как я говорил, это самый простой, базовый вариант настройки хранилища. В iSCSI имеется еще много интересных возможностей. Например, можно использовать службу имен iSCSI (iSNS) для простоты управления, многопутевой ввод-вывод (MPIO) для обеспечения отказоустойчивости, а для безопасности настроить аутентификацию по протоколу CHAP и шифрование трафика с помощью IPSec. О некоторых из этих фич я планирую написать в следующих статьях.

И в заключение важные моменты, которые надо учесть при организации системы хранения iSCSI:

Развертывать iSCSI желательно в быстрой сети, не ниже Gigabit Ethernet;
Сетевой трафик iSCSI рекомендуется отделить от остального трафика и вынести в отдельную сеть, например с помощью VLAN или физического разделения на подсети;
Для обеспечения высокой доступности на сетевом уровне необходимо использовать технологию MPIO, либо сеансы с несколькими подключениями (MCS). Объединение сетевых адаптеров (NIC Teaming) для подключения к устройствам хранения iSCSI не поддерживается;
При использовании технологии Storage Spaces можно хранить виртуальные диски iSCSI на Storage Spaces, но нельзя использовать LUN-ы iSCSI для создания Storage Spaces;
Для хранения виртуальных дисков iSCSI нельзя использовать общие кластерные тома CSV (Cluster Shared Volume).

Я довольно часто использую бесплатный гипервизор hyper-v от Microsoft. Бесплатная редакция основана на core версии сервера. Это доставляет некоторые неудобства в решении стандартных задач, о которых даже не задумываешься во время работы на полноценной версии сервера с графическим интерфейсом. Одной из таких задач было добавление диска через iSCSI.

Онлайн-курс Data Engineer – для разработчиков, администраторов СУБД и всех, кто стремится повысить профессиональный уровень, освоить новые инструменты и заниматься интересными задачами в сфере работы с большими данными. Курс не для новичков – нужно пройти.

В стандартной версии сервера с GUI это делается просто через панель управления. Там есть отдельный раздел для этого.

Есть еще в разделе администрирования оснастка для этих же целей. А что делать, если у вас нет GUI? Решение есть и достаточно простое.

Первым делом нам надо запустить службу Microsoft iSCSI Initiator Service и установить тип запуска «Автоматически»

Делается это с машины, на которой настроены оснастки управления Hyper-V. Подробнее об этом читайте в статьях:

Принцип настройки один и тот же в обоих случаях. После этого подключаемся к гипервизору по rdp и запускаем в командной строке:

Iscsicpl

Откроется оснастка управления iSCSI Initiator .

Дальше стандартным образом подключаете источник и работаете с ним. Чтобы инициализировать подключенный диск, необходимо использовать оснастку управления дисками. Запускаете ее с того же компьютера, на котором стоят оснастки управления Hyper-V.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.

Написанию данного поста предшествовало сбор информации по частям и многочасовое курение как русскоязычных, так и англоязычных ресурсов в сети интернет в поиске сравнительно простых способов реализации бездисковой загрузки ПК.

Предпосылкой к изучению данного вопроса стало наличие в сети компьютера, с вышедшем из строя дисковым накопителем. Необходимо было запустить на данном ПК «полноценную» 64-битную операционную систему Windows 7 без использования Linux-сервера, ограничившись только имеющимися в локальной сети Windows системами. Приводимые в данном посте программные продукты распространяются бесплатно и могут работать как на серверных, так и на пользовательских версиях Windows.

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

Для понимания происходящего определимся немного с терминологией:

  • iSCSI (англ. Internet Small Computer System Interface) - протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами;
  • iSCSI Target: (Цель iSCSI) - программа или аппаратный контроллер (HBA), осуществляющие эмуляцию диска и выполняющие запросы iSCSI;
  • iSCSI Initiator: (Инициатор iSCSI) - клиентская программа или аппаратный контроллер, который взаимодействует с iSCSI Target;
  • IQN: (iSCSI Qualified Name) - уникальный идентификатор (имя) iSCSI Target’a или iSCSI Initiator’а;
  • LUN: (Logical Unit Number) - адрес блочного устройства в диапазоне 0-127;
  • DHCP (англ. Dynamic Host Configuration Protocol - протокол динамической настройки узла) - сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP;
  • TFTP (англ. Trivial File Transfer Protocol - простой протокол передачи файлов) используется главным образом для первоначальной загрузки бездисковых рабочих станций.

Введение

Современные операционные системы Windows 7, Windows Server 2008 и всё, что старше, умеют подключаться напрямую на iSCSI target. Проблема только в том, как инициализировать удаленное блочное устройство при включении ПК.

Вспомним, что почти все современные сетевые карты умеют загружаться по технологии PXE. А вот с iSCSI дружат в основном только дорогостоящие серверные сетевые карты, например Intel. Однако, существует как минимум два open source проекта gPXE и iPXE позволяющий при загрузке ПК подключаться iSCSI устройствам. Последний, к слову, форк первого, с немного доработанной системой вывода ошибок и дополнительными опциями.

Есть много способов, как загружаться через gPXE и iPXE. В данном посте мы будем рассматривать загрузку с использованием iPXE и подключением для него необходимых скриптов в процессе загрузки.

Суть такова - при запуске компьютера сетевая карта получает необходимые настройки через DHCP сервер и загружает PXELINUX. Далее загрузчик PXELINUX подключает необходимый скрипт и загружает iPXE, который, в свою очередь, выступает iSCSI инициатором и передает управление диску. До момента инициализации блочного устройства передачу файлов по сети обеспечивает протокол TFTP.

Для чего мы загружаем PXELINUX?

Некоторые могут спросить - а для чего загружать PXELINUX? Во первых, через PXELINUX загрузчик iPXE получает необходимый скрипт для инициализации нужного iSCSI target-а. Во вторых, чтобы можно было построить удобное меню с выбором различных вариантов загрузки. В третьих, если в сети существует несколько бездисковых рабочих станций, то нужно чтобы каждый ПК подключался «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, а значит их нужно как то отделять друг от друга, например, по MAC-адресам. Для этих целей будет использоваться двухстадийная загрузка с использованием PXELINUX.


Но обо всем по порядку. Начнем с установки и настройки в системе Windows необходимого софта для реализации DHCP, TFTP и iSCSI Target-а. Для этого я использовал бесплатно распространяемые программные продукты Tftpd32 и StarWind Virtual SAN . Программа Tftpd32 используется как в роли DHCP сервера, так и в роли TFTP сервера, ну а StarWind Virtual SAN соответственно будет использоваться в роли iSCSI target-а. Скачать данные программы можно на сайте разработчиков, ссылки которых указанны в их названиях. Для скачивание программы StarWind Virtual SAN необходимо будет выбрать на сайте Free версию программы и пройти процесс регистрации, с указанием корпоративного почтового адреса. На указанный вами почтовый адрес придет лицензионный ключ и ссылка на скачивание самой программы.

Настройка программы Tftpd32

Данная программа довольно простая и интуитивно понятная, поэтому приведу просто скриншоты своих настроек:


На вкладке «GLOBAL» у меня отмечены галочкой сервисы TFTP Server, Syslog Server и DHCP Server. На вкладке TFTP в поле Base Directory указана точка, которая означать, что в качестве корневой директорией будет использоваться папка, куда установлена сама программа Tftpd32. На вкладке DHCP в поле Boot File указан название загружаемого файла, которую мы рассмотрим дальше в настройках PXELINUX. На вкладке SYSLOG настройки не требуются.

Цель iSCSI. Настройка программы StarWind Virtual SAN

При установке программа никаких настроек не запрашивает, единственное может дополнительно запустить установку.NET Framework 4, если она еще не установлена в системе. После установки программа запускает свои службы и сразу готова к работе. На рабочем столе создается ярлык StarWind Management Console для управления.

Открываем StarWind Management Console, жмем кнопку Add Server и создаем новый сервер с IP-адресом 192.168.0.1. Имеющийся по умолчанию сервер с IP-адресом 127.0.0.1 можно удалить.
Далее выбираем созданный нами сервер и нажимаем ссылку Add Target. В появившемся окне можем указать свое название IQN цели, активировав галочку Target Name. В частности я указал iqn.2014-11.home:win7-64bit.
Далее выбираем созданный нами Target и нажимаем ссылку Add Device.
В появившейся окне выбираем Hard Disk Device, далее выбираем Virtual Disk, указываем расположение и объем создаваемого диска, задаем объем и параметры кэширования, и создаем дисковое устройство нажатием кнопки Create.

В итоге получаем настроенный и готовый к работе iSCSI Target, имеющий следующий вид:


При необходимости мы можем создавать необходимое количество iSCSI Target-ов и на каждый из них подключить необходимое количество iSCSI дисков. А также обеспечить безопасности доступа к iSCSI Target-ам с использованием CHAP-аутентификации клиентов, нажав по ссылке Add Permission.

Настройка PXELINUX

PXELINUX входит в комплект программ syslinux. Поэтому идем на сайт www.syslinux.org/wiki/index.php/Download , нажимаем на ссылку Download и загружаем zip архив с набором загрузчиков syslinux. Открываем загруженный архивный файл и распаковываем файлы pxelinux.0 из директории core и menu.c32 из директории com32/menu. Файл pxelinux.0 является загрузчиком, который передается клиентскому ПК DHCP сервером, а файл menu.c32 отвечает за построение загрузочного меню. Распакованные файлы размещаем в папку, куда установлена программа Tftpd32 (куда указывает путь в поле Base Directory в настройках TFTP).

В папке программы Tftpd32 создаем вложенную папку pxelinux.cfg, а в нем создаем файл default следующего содержания:
default menu.c32
gfxmenu /erdpxe
prompt 0

MENU TITLE Boot Menu (select the OS to boot)
MENU AUTOBOOT Windows 7 64bit in # seconds
TIMEOUT 50
TOTALTIMEOUT 3000

LABEL Windows 7 64bit
MENU DEFAULT
KERNEL IPXE.KRN
INITRD win7.ipxe

Думаю излишнем писать подробный комментарий к данному файлу, рассмотрим только две последние строчки:
KERNEL IPXE.KRN - указывает на ядро iPXE, которую нужно загрузить.
INITRD win7.ipxe - указывает на файл скрипта с параметрами iPXE

Указанных настроек PXELINUX вполне достаточно для использования дефолтной конфигурации и можно перейти к дальнейшей настройке iPXE, поэтому остающуюся часть текста решил убрать под спойлер.

Создание отдельного загрузочного меню для каждого ПК

Если в сети существует несколько бездисковых рабочих станций, и нужно чтобы каждый ПК имел доступ только «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, то нам нужно будет создать несколько файлов с загрузочным меню для каждого ПК.

При получении файла конфигурации от TFTP сервера клиент ищет подходящую для себя в следующем порядке:
pxelinux.cfg/01-88-99-aa-bb-cc-dd
pxelinux.cfg/C0A800FE
pxelinux.cfg/C0A800F
pxelinux.cfg/C0A800
pxelinux.cfg/C0A80
pxelinux.cfg/C0A8
pxelinux.cfg/C0A
pxelinux.cfg/C0
pxelinux.cfg/С
И если ничего подходящего нет -
pxelinux.cfg/default

Здесь pxelinux.cfg - сама папка с файлами конфигурации.
01-88-99-aa-bb-cc-dd - файл с названием МАС-адрес клиента, в нижнем регистре, разделенный тире, с префиксом 01-.

Соответственно, для каждой бездисковой рабочей станции нам нужно написать «свое» загрузочное меню и разместить в папке pxelinux.cfg с названием файла 01-mac-адрес клиента, в нижнем регистре. Содержимое этих файлов может отличаться, к примеру, только последней строчкой INITRD win7.ipxe .

Инициатор iSCSI. Настройка iPXE

Итак, далее идем на сайт ipxe.org/download и загружаем iso-образ iPXE загрузчика. Из загруженного iso-образа вытаскиваем файл IPXE.KRN и сохраняем его в папке программы Tftpd32.

В этой же папке создаем файл win7.ipxe следующего содержания:
#!ipxe
dhcp net0
set keep-san 1
#login
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:win7-64bit

Строка dhcp net0 данного скрипта указывает, что необходимо получить настройки через DHCP сервер в сети.

Строка set keep-san 1 указывает, что подключение к iSCSI Target-у необходимо сохранить даже если загрузка с данного устройства не удалась (этот параметр необходим, когда нужно устанавливать операционную систему с накопителей CD/DVD).

Если в iSCSI Target настроена CHAP-аутентификации клиентов, то нужно раскомментировать строку #login, которая будет выводит форму для ввода логина и пароля.

Последняя строка непосредственно подключает указанный iSCSI Target, инициализирует удаленный диск и передает процесс дальнейшей загрузки на данное устройство. Синтаксис подключения будет таким iscsi:<Айпи iSCSI target>:::::.

Добавление дополнительных пунктов в загрузочное меню

Если мы хотим добавить в загрузочное меню еще один пункт, например, для загрузки ОС Windws 8.1, то создаем в StarWind Virtual SAN новый Target с указанием IQN цели iqn.2014-11.home:windows8.1, добавляем в него новое дисковое устройство iSCSI, а затем в файле pxelinux.cfg/default добавляем к примеру такие строчки:
LABEL Windows 8.1
KERNEL IPXE.KRN
INITRD win8.1.ipxe

Установка ОС Windows 7

Перед началом установки Windows 7 на бездисковую станцию открываем его BIOS и настраиваем порядок опроса загрузочных устройств следующим образом:
1) Hard Disk
2) Network
3) CD/DVD
4) остальные устройства

Если на ПК имеется установленный жесткий диск, то на время установки Windows его желательно отключить, чтобы компьютер не пытался с него загружаться.

Первым делом мы должны увидеть запуск загрузки через PXE. Если этого не произошло то снова заходим в BIOS и разрешаем загрузку компьютера через сетевой адаптер.

Далее на экране появиться загрузочное меню PXELINUX. Если этого не произошло проверяем, запущена ли на другом компьютере программа Tftpd32, правильно ли она настроена и не блокирует ли его работу firewall-ы, антивирусы или другие программы.

После выбора необходимого пункта загрузочного меню PXELINUX мы должны увидеть запуск iPXE.
В процессе инициализации iPXE должны промелькнут надписи:
Registered as BIOS drive 0x80
Booting from BIOS drive 0x80
Это значит, что ПК удачно подключился к iSCSi диску.

Затем мы увидим ошибку загрузки через iSCSi диск, после чего компьютер перейдет к опросу следующего загрузочного устройства и запустит установка Windows 7 с привода CD/DVD. При этом подключение к iSCSi диску останется активным - за это отвечает указанная в скрипте строчка set keep-san 1.

Для тех, у кого не запускается установка Windows с привода CD/DVD

BIOS некоторых компьютеров, после неудачной попытки загрузки с iPXE, останавливает процесс запуска. Соответственно дальнейшая загрузка установщика Windows с привода CD/DVD не происходит. Такое поведение было замечено, например, на ноутбуках компании Hewlett-Packard. В подобных случаях спасает загрузка с использованием gPXE. Для этого:
1) открываем страницу сайта rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/build.php ,
2) в поле Choose an output format выбираем пункт PXE bootstrap loader keep (.kpxe),
3) в самом нижнем поле Embedded Script вводим три строчки нашего скрипта:
dhcp net0
set keep-san 1
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:win7-64bit
4) сохраняем загрузчик gPXE в папку программы Tftpd32 и прописываем название файла на сервере DHCP в поле Boot File,
5) устанавливаем ОС Windows и обратно прописываем название файла pxelinux.0 на сервере DHCP в поле Boot File.



В процессе установки Windows, на этапе выбора дискового устройства мы должны увидеть подключенный нами iSCSi диск. Если iSCSi диск в списке отсутствует, значит установщик Windows не смог автоматически подключить необходимые драйвера для сетевой карты. В этом случае скачиваем с сайта разработчика необходимые драйвера сетевой карты и подключаем их установщику Windows. После этого iSCSi диск должен появиться в списке.

Если получили сообщение о невозможности установки Windows на выбранный диск

Иногда на этапе выбора дискового устройства можно получить сообщение о невозможности установки Windows на выбранный диск и просьбу проверить, включен ли в BIOS контроллер этого диска.

В этом случае первым делом проверьте в BIOS порядок опроса загрузочных устройств. Жесткий диск должен находиться на первой позиции, даже если на компьютере физически не установлен дисковый накопитель.
Если проблема не исчезла, то попробуйте в BIOS-е включать/выключать SATA контроллер, менять режим его работы IDE, ACHI, либо подключить реальный диск на время установки, но установку проводить на iSCSI диск.



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

Установка ОС Windows (альтернативный метод)

Не знаю кому как, но мне лично не представляется удобным для каждого установочного образа Windows записывать DVD диск.
Мне привычнее распаковать содержимое установочного диска и запустить установку Windows с жесткого диска. К тому же с жесткого диска операционная система устанавливается быстрее.

Приведу пример, с использованием стандартного загрузчика bootmgr, имеющегося в любом установочном дистрибутиве Windows.
Данный метод подходит также для установки Windows с локальных жестких дисков.

Если коротко, то создаем на iSCSI диске небольшой «активный» раздел, копируем туда содержимое установочного диска Windows, и затем настраиваем MBR, для загрузки с диска установщика Windows. Подробности под спойлером.

Альтернативный метод установки ОС Windows

Итак, откроем на рабочей Windows системе Панель управления - Администрирование - Инициатор iSCSI.
Появиться окно «Свойства: Инициантор iSCSI».

Переходим на вкладку «Обнаружение» и нажимаем кнопку «Обнаружить портал...».
В открывшемся окне вводим IP-адрес нашей цели iSCSI - 192.168.0.1 и нажимаем ОК.
Далее переходим обратно на вкладку «Конечные объекты» и увидим все цели с идентификаторами IQN.
Выбираем в списке нужную цель и нажимаем кнопку «Подключить».
Откроется еще одно окно требующий нашего подтверждения, где также нажимаем ОК.
Если в открывшемся окне оставить галочку «Добавить это подключение в список предпочитаемых конечных объектов» то указанная цель будет автоматически подключаться к системе при каждой загрузке.

Открываем оснастку «Управление компьютером» и переходим на вкладку «Управление дисками». Тут мы увидим, что в нашей системе появилось еще одно дисковое устройство. Создаем на этом диске «Основной раздел», указав размер диска чуть больше размера нашего установочного образа. Далее форматируем под файловую систему NTFS, подключаем любую букву диска и делаем раздел «активным».

Откроем необходимый образ установочного диска программой UltraISO или WinRar и распакуем содержимое образа на созданный в предыдущем пункте раздел диска. Важно, чтобы после распаковки на диске оставалось как минимум 100Мб свободного места (Для Windows 8 рекомендуется 350Мб свободного места). Если свободного места недостаточно, то расширяем выбранный раздел в оснастке «Управление дисками».

Затем скачиваем из интернета программу BOOTICE и запускаем (ссылки приводить не буду, сами сможете найти без труда).
В программе выбираем нужный нам диск из раскрывающегося списка. В моем случае HD6:

В данном окне выбираем последний пункт «Windows NT 5.x / 6.x MBR» и нажимаем кнопку «Install/Config».
На диске будет настроен MBR, загружающий стандартный загрузчик bootmgr из активного раздела диска.

Но рассмотрим еще один момент. Если мы хотим сделать данный раздел скрытым от пользователей и недоступным для операционной системы, то запускаем командную строку от имени администратора и набираем следующие команды:

Diskpart
List disk
Sel disk x (вместо x подставляем номер нужного диска, список которых выводит предыдущая команда)
Sel part 1 (при необходимости список разделов можно посмотреть командой List part)
Remove
Set id=27

После этого данный раздел диска станет технологическим и скрытым. Для этого раздела уже не возможно назначит букву диска и примонтировать его к работающей системе, но устанавливается Windows с данного раздела без проблем.
Получится что то типа раздела восстановления)


Надеюсь данная статья будет вам полезна. Всем удачи!