В личном индивидуальном разделе я хотел бы рассказать о своем опыте в исследовании и практике по загрузке персонального компьютера (ПК) без использования HDD на базе операционной системы Windows.
Смысл данного действия заключается в подключении персонального компьютера (или нескольких) по локальной сети к серверу, на котором при помощи технологии iSCSI создается виртуальный диск, «поднимается» DHCP и TFTP сервер, заменяется загрузчик ПК и далее он загружается по сети на виртуальный диск на сервере.
Эксперимент правда проводился не с использованием сервера, а при помощи виртуальной машины и созданной в ней виртуальной сети, которая в польной мере моделирует реальную локальную сеть между ПК и сервером. Но обо всем по порядку.
iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами [1].
iSCSI описывает:
• Транспортный протокол для SCSI, который работает поверх TCP.
• Механизм инкапсуляции SCSI команд в IP сети.
• Протокол для нового поколения систем хранения данных, которые будут использовать «родной» TCP/IP.
iSCSI представляет из себя комбинацию протокола SCSI и стека протоколов TCP/IP и предназначен для передачи блоков данных через сети Ethernet. Управляющие команды SCSI передаются внутри IP-пакетов, а протокол TCP обеспечивает управление потоком и надежность передачи данных.
Архитектура iSCSI является клиент-серверной и включает в себя следующие компоненты [2]:
• 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ТБ.
Также опишем основные термины и средства, которые будут использоваться:
•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 — простой протокол передачи файлов) используется главным образом для первоначальной загрузки бездисковых рабочих станций.
Основное назначение TFTP — обеспечение простоты реализации клиента. В связи с этим он используется для загрузки бездисковых рабочих станций, загрузки обновлений и конфигураций в «умные» сетевые устройства, записи статистики с мини-АТС (CDR) и аппаратных маршрутизаторов/файрволов.
Подробно останавливаться на описании протоколов DHCP и TFTP не буду, вся полезная информация далее по ссылкам: DHCP, TFTP.
PXE (англ. Preboot eXecution Environment, произносится пикси) — среда для загрузки компьютера с помощью сетевой карты без использования локальных носителей данных (жёсткого диска, USB-накопителя и т.п.). Для организации загрузки системы в PXE используются протоколы IP, UDP, BOOTP и TFTP.
Поизучав некоторые материаллы в интернете по настройке DHCP и TFTP сервера было принято решение использовать программу Tftpd32. Самое главное в настройках программы чтобы адреса серверов совпадали с IP адресом сетевой карты сервера.
Рисунок 1 - Свойства сетевой карты, созданной виртуальной машиной.
Из информации изображенной на рисунке 1 нам необходим IP адрес виртуальной сетевой карты, который в дальнейшем будет использован для настройки Tftpd32.
Рисунок 2 - Настройки программы Tftpd32
Все файлы, которые необходимо будет использовать, например файл загрузчика, необходимо будет разместить в папке, куда установлена Tftpd32, так как в настройках параметр «Base Directory» указана «.», что означает родительскую папку, где размещен исполняемый файл программы.
В качестве загрузчика будет использован PXELINUX, который находится в свободном распространении и который довольно легко можно настроить.
Для успешной загрузки ПК на сервер необходимо чтобы было куда загружаться. Для этого, необходимо создать виртуальный диск, именуемый iSCSI target. В системе Windows Server есть возможность создания target'а, но в моем случае необходимо использовать стороннее ПО.
Наиболее подходящим продуктом является Starwind Virtual Sun, в котором необходимо создать виртуальный сервер, указал все тот же IP-адрес, который был использован ранее.
В созданном сервере нужно создать виртуаньный диск, имя которого нужно будет подключить к системным носителям, указать это имя в загрузчике и можно пытаться загрузиться.
Рисунок 3 - Сервер Starwind и созданный виртуальный диск.
На рисунке 3 изображены готовые настройки сервера и готовый виртуальный диск. Как имя диска, я использован имя образа, с которого собираюсь установить систему.
Для того, чтобы не заморачиваться по поводу носителей с системой для установки, можно разделить диск на несколько разделов, разместить на одном разделе установочные файлы и сделать его активным.
При необходимости мы можем создавать необходимое количество iSCSI Target-ов и на каждый из них подключить необходимое количество iSCSI дисков.
Далее проведем настройку загрузчика PXELINUX.
Файл pxelinux.0 является загрузчиком, который передается клиентскому ПК DHCP сервером, а файл menu.c32 отвечает за построение загрузочного меню. Распакованные файлы размещаем в папку, куда установлена программа Tftpd32 (куда указывает путь в поле Base Directory в настройках TFTP).
Далее необходимо в папке с Tftpd32 создать папку с названием pxelinux.cfg, а в ней файл с названием default и прописать в нем следующий скрипт [3]:
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
Далее необходимо скачать сам загрузчик, достать из образа IPXE.KRN и поместить в папку с Tftpd32, там же создать файл win7.ipxe и прописать в нем следующее:
#!ipxe
dhcp net0
set keep-san 1
#login
sanboot iscsi:192.168.72.1::::iqn.2014-11.home:win7-64bit
Строка dhcp net0 данного скрипта указывает, что необходимо получить настройки через DHCP сервер в сети.
Строка set keep-san 1 указывает, что подключение к iSCSI Target-у необходимо сохранить даже если загрузка с данного устройства не удалась (этот параметр необходим, когда нужно устанавливать операционную систему с накопителей CD/DVD).
Последняя строка непосредственно подключает указанный iSCSI Target, инициализирует удаленный диск и передает процесс дальнейшей загрузки на данное устройство. Синтаксис подключения будет таким iscsi:<Айпи iSCSI target>:::::< IQN цели >.
Проверим, загружается ли виртуальная машина на указанный в загрузчике iSCSI target.
Рисунок 4 - Попытка первой загрузки.
Из результатов, изображенных на рисунке 4 видно, что загрузчик определил виртуальный диск на стороне сервера, попытался загрузится на него, но выдал сообщение что операционная система не найдена.
Теперь можно приступить к установке Windows на виртуальный диск.
При установке можно использовать либо установочный диск, либо способ с размещением установочных файлов в выделенном разделе на диске, как было предложено ранее. Я использовал именно второй метод, так как виртуальная машина с загрузочного диска не видит виртуальный из-за отсутствия на диске драйверов.
После успешной установки Windows 7 на виртуальную машину, зайдем в диспетчер устройств и убедимся, что система установлена именно на виртуальный диск.
Рисунок 5 - Результаты проведенного эксперимента.
На рисунке 5 видно, что единственным дисковым носителем в системе является STARWIND SCSI диск, который был создан на стороне сервера и к которому было успешно произведено подключение по сети.
Вот таким образом мной была исследована технология для загрузки ПК без использования дискового носителя.
1. iSCSI [Электронный ресурс] // Материал из Википедии — свободной энциклопедии, URL: https://ru.wikipedia.org/wiki/ISCSI (дата обращения: 09.04.16)
2. Настройка iSCSI хранилища в Windows Server 2012 [Электронный ресурс] // Заметки о Windows, 2011-2016 гг., URL: http://windowsnotes.ru/windows-server-2012/nastrojka-iscsi-xranilishha-v-windows-server-2012/ (дата обращения: 09.04.16)
3. Настройка PXE Boot меню с мемтестом и паролями [Электронный ресурс] // howitmake.ru, 2010-2016 гг., URL: http://howitmake.ru/blog/ubuntu/140.html (дата обращения: 09.04.16)