">

Скиба Виктор Евгеньевич

Факультет компьютерных наук и технологий

Кафедра компьютерной инженерии

Специальность «Компьютерные системы и сети»

Исследование и разработка оптимальных запросов при выборке многосвязных данных больших объемов в реляционных базах данных. Разработка АРМ «Нагрузка по кафедре» в рамках АСУ ДонНТУ.

Научный руководитель: к.т.н., доц. Краснокутский Владимир Алексеевич

Загрузка ПК на сервер без использования HDD
Введение в тематику раздела

В личном индивидуальном разделе я хотел бы рассказать о своем опыте в исследовании и практике по загрузке персонального компьютера (ПК) без использования 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 серверов на стороне сервера

Поизучав некоторые материаллы в интернете по настройке 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)