Бездисковая загрузка по технологии iSCSI

Начну из далека. Как часто вы встречаете организации использующие «Подключение к удаленному рабочему столу» как основной способ работы в офисе? Я стал встречать такие все чаще и мое личное мнение — это удобно! Удобно для сотрудников, удобно для системных администраторов, а самой компании это позволяет сократить IT расходы. А нередко это даже необходимость для комфортной многопользовательской работы в некоторых программах (пример — ПО 1С).

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

Разговор будет о замечательной технологии 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. подробнее

Инициатор iSCSI

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

Однако есть как минимум два знакомых мне open source проекта gPXE и iPXE, последний, к слову, форк первого, с немного доработанной системой вывода ошибок и несколькими дополнительными опциями.

Лично я использую gPXE, я его нашел первым, к тому-же у них на сайте есть очень удобный генератор rom-o-matic

Есть много способов как загрузиться через gPXE. Для рабочего варианта я вшивал её ROM вместо PXE загрузчика в BIOS метеринки. Рисковый вариант, можно остаться без материнки, забегая вперед это позволит уменьшить время загрузки на ~ 10 сек.

Расскажу лучше о простом и безопасном для оборудования способе под названием PXE chainloading подробно (англ.) . Суть такова — с помощью PXE загрузчика загружаем gPXE, который в свою очередь выступает iSCSI инициатором и передает управление диску. Для этого нам нужен TFTP сервер (я не стал прибегать к стороннему софту, сделал как тут) и правильная настройка DHCP сервера.
Вот так выглядит DHCP параметры у меня:



Обратите внимание на параметр «175 gPXE_Options», инкапсулированное значение «08 01 01 ff» означает опцию keep_san = 1, которая заставляет gPXE не удалять регистрацию диска в случае неудачной загрузки с него (это необходимо для установки операционной системы).

В параметре «017 Корневой путь» самый просто синтаксис будет iscsi:<Айпи iSCSI target>:::::<IQN цели>

Настройки iSCSI инициатора на этом закончены.

Цель iSCSI

В качестве цели я использовал Microsoft iSCSI Software Target 3.3

Настройки цели крайне простые и интуитивные.

Создаём новое или импортируем существующий VHD диск:


Далее создаём цель:


Добавляем созданный или импортированный ране диск:


На этом настройка цели почти закончена. Осталось только добавить IQN(или любой другой тип индификатора: MAC, IP) инициатора(ов) который имеет доступ к этой цели.


Если после этого при загрузке клиентского ПК в gPXE промелькнут надписи:
Registered as BIOS drive 0x80
Booting from BIOS drive 0x80
Значит у нас получилось. И можно приступать к установке ОС.

Установка ОС или Epic Fail

Уже с ностальгией вспоминаю тот момент, когда первый раз я дошел до этого этапа и… поначалу меня постигало кучу разочарований. Забегая вперед скажу, что причиной многому была неудачная материнская плата GYGABYTE GA-425TUD.

Что же я увидел когда дошел до пункта выбора диска? Верно. Ничего. Подумал, ага, надо подгрузить сетевые драйвера. Аномально долгий поиск ~ 30 — 40 минут на пустой флешке, куда были переписаны исключительно дрова для нужной сетевухи, заставлял меня думать что ОС виснет и раз 5-10 я так и не дожидался окончания поиска, выключал, перезагружал, менял опции gPXE. Так сложилось, что однажды я таки дождался пока драйвера были найдены, и радовался как ребенок обнаружив что в меню выбора появился так желанный мне диск.
Радость тут-же омрачилась тем что ОС сообщила мне о невозможности установиться на этот диск и любезно попросила меня проверить включен ли в моём BIOS контроллер этого диска.

Решение было найдено довольно быстро вот тут в самом низу. Если коротко то ребята советовали включать/выключать SATA контроллер, менять режим его работы IDE, ACHI и даже попробовать подключить реальный диск на время установки, но установку проводить на iSCSI диск. Для меня сработало подключение реального диска в режиме ACHI. Теперь установка пошла на iSCSI диск без проблем. Однако после перезагрузки ОС (один из этапов установки) я постоянно ловил BSOD на classpnp.sys.

Причина до сих пор мне не совсем понятна.
Большими усилиями была найдена зацепка

Решением стало отключение LWF фильтра в ОС на сетевухе.

Открываем HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
Находим и открываем подпапку для NIC (eg. 0007)
Открывает подпапку Linkage
Редактируем FilterList. Удаляем линию которая ссылается на LWF driver UUID {B70D6460-3635-4D42-B866-B8AB1A24454C}. В моём случае это бала вторая линия.
До:
{158B0494-2576-4DE5-9E32-98DB9E177DD8}-{B5F4D659-7DAA-4565-8E41-BE220ED60542}-0000
{158B0494-2576-4DE5-9E32-98DB9E177DD8}-{B70D6460-3635-4D42-B866-B8AB1A24454C}-0000
После:
{158B0494-2576-4DE5-9E32-98DB9E177DD8}-{B5F4D659-7DAA-4565-8E41-BE220ED60542}-0000

В этом варианте у меня заработало даже на проблемной материнке.
После этого я пробовал еще 2 или 3 материнки, установка проходила гладко изначально (нужно было лишь подгрузить сетевые драйвера).

Тесты


Интересно на сколько будет заметно что мой HDD где-то там в 100 метрах от меня? На глаз вообще не отличить! Но я даже не надеялся что вы поверите моему глазу по этому приведу результаты тестов.

Наши герои:

Seagate ST500DM002 — будет работать локально, как у людей ;D
iSCSI SSD Patriot 128 PYROSE — на сервере, будет работать через iSCSI, сетевой канал 1ГБ.
iSCSI RAID 10 4xSeagate ST500DM002 — на сервере, будет работать через iSCSI, сетевой канал 1ГБ.

(Локальный)Seagate ST500DM002




iSCSI SSD Patriot 128 PYROSE





iSCSI RAID 10 4xSeagate ST500DM002




Свод и выводы




На мой взгляд вполне заслуживающая внимания технология, как видно из тестов даже на 1ГБ сети имеет хороший КПД. При текущих ценах на HDD позволит экономить как минимум 2500р с рабочей станции и облегчает задачу резервирования данных. У меня в организации все сотрудники работают в терминале, еще вот открыли учебный класс на 8 рабочих мест, именно там в качестве теста я и внедрял эту технологию.

С радостью отвечу на вопросы.
Поделиться публикацией

Комментарии 35

    0
    Получается, что для каждого пользователя необходимо создавать свой диск? Поддерживается ли клонирование iSCSI дисков (таргетов)?
      0
      Можно скопировать диск и присвоить ему новый таргет. Это не проблема.
      Меня вот больше интересует то — как будет себя вести сеть, когда все будут активно работать с диском.
      Аплинки на сервере не выдержат, да и если там не будет быстрого рейда — потери производительности будут довольно сильными.
      Для галочки это наверное интересно попробовать, но все же в продакшен удобнее использовать тонкого клиента. имхо.
        0
        Для iSCSI обычно строится отдельная сеть. То есть в клиенте должно быть две сетевые платы — одна для работы файловой системы, другая для сетевых функций.
          0
          Это понятно… А сколько должно быть сетевых у сервера и какой пропускной способностью они должны обладать :)
          В общем всякое решение под свои нужды — iSCSI наверное будет неплох для решения, где сотрудники работают с базовыми программами + интернет. Где нет нагрузки на диск…
            0
            сетевая должна быть 10g
              0
              Вот именно. и свичи уже явно не dlink — выгода в 2500 с рабочего места как-то меркнет
                0
                Конечно меркнет. Это решение подходит для средних организаций для организации корпоративного облака. Но в такой реализации конечно это не очень удобно. Тонкие клиенты гораздо интереснее.

                Вообще говоря, еще интереснее тонкий клиент подключаемый к VPS на сервере. На современном сервере с двумя 6-8 ядерными процессорами E5 и HT и массивом из SAS дисков и памятью в 64-128Гб ОЗУ (средняя цена выйдет в районе 200тыс руб) можно запустить 32 VPS — то есть клиентские машины — по два виртуальный ядра и 4Гб ОЗУ. С быстрыми дисками производительность будет не хуже стандартной машины в офис клиентское место обойдется в 15тыс руб где-то.

                А преимуществ масса. И подключение с любой точки мира и резервное копирование и выделение доп ресурсов по надобности.

                Одним словом некий RDP но с четким разграничением ресурсов.
                  +1
                  2 ядра и 4 гига — это уж очень крутые офисные машинки… Обычно одного ядра и гига оперативки хватает для базовых сотрудников.
                    0
                    Конечно, смотря какие цели просто.

                    Ну и осталось пустить в массы технологию по которой изображение на монитор в «родном» качестве будет попадать. Тогда и дизайнеры смогут обходится такими технологиями.
                      0
                      Дизайнеры уже могут работать в виртуальных рабочих станциях. RemoteFX это уже позволяет. На сервер ставятся видеокарты типа Quadro и в путь.
                        0
                        Профессионалы да. Я имею ввиду всяческих веб-мастеров, начальников, менеджеров, маркетологов которым нужно смотреть видео, правильно видеть отображение цветов, которым нужно качество рабочего места выше среднего. Что-то типа серверной видеокарты с интерфейсом 10g который может раздавать реально изображение прямо на монитор.
                    0
                    > некий RDP но с четким разграничением ресурсов
                    VDI. И коэффициент количество клиентов на сервер куда выше может быть. И пользователи получают полноценные рабочие места, если использовать PCoIP или RDP с RemoteFX.

                    Правда в идеале нужно городить СХД и как минимум пару серверов, так что решение получается очень не бюджетным, но плюсы в некоторых случаях перевешивают.
                      0
                      Да не плохое решение. СХД нужно при больших объемах, а так вполне можно обойтись и без него. 8 дисков SAS в RAID10 потянут очень много. А для работы обычно больше 20-30Гб не нужно.
          0
          Теоретически вы можете использовать один target для сколько угодно initiator'ов, главное пропишите их IQN'ы в соотв. разделе таргета, всё равно что если бы было возможно подключить один HDD к N'ому количеству ПК одновременно. Однако если мы говорим об установленной на этот ISCSI диск операционной системе, понятно, что сразу N инициаторов не смогут загрузить ОС и работать правильно. Для экономии места можно использовать Difference VHD, тогда будет скажем один GOLD образ ОС, который будет честно занимать, скажем, 20 ГБ, а все остальные Difference VHD (которые будет занимать ровно столько на сколько они отличаются от GOLD образа), т.е туда будут записываться только отличия от GOLD образа.
          Вопрос про клонирование не совсем понял. ISCSI диск на хостовой машине представляет собой обычный файл с расширением VHD, копируете его и вот вам клон.
            0
            Сейчас работаю на программе CCBoot, в сети, организованной подобным образом, есть информация о том, можно ли подобное сотворить в вышеуказанной программе? Если нет, возможны ли альтернативы какие-нибудь ей?
            Ещё очень интересует какой-нибудь менеджер этих Difference VHD.
              0
              На сколько я понимаю CCBoot тот-же самый iSCSI таргет, просто в другой оболочке, и платный (Зато работает на не серверной ОС).
              Менеджер VHD? А какие именно задачи должен решать этот менеджер?
                0
                Меня больше всего интересует способ работы с помощью 1 Gold-образа и diffами для каждой машины. Собственно менеджер толком не нужен, но нужно прозрачное управление этими diffам и голд образом, очистка\удаление например диффов для нужных машин, а также обновление голд образа при необходимости методом слияния одного из дифов в голд например, чтобы не нужно было заново ставить систему и делать образ с нуля.
                Как то так. Буду очень признателен за предоставленное решение данной задачи, с использованием упомянутого в статье софта.
                Спасибо)
                  0
                  Удалить какой-то dVHD проблем не вызывает, укаляете как обычный файл а к таргету подключаете какой-то другой dVHD или просто VHD. А вопрос про слияния одного из дифов в голд — самому было бы интересно такое. Первая ссылку гугла привела сюда
                    0
                    Т.е. функционал с dVHD для каждой машины встроен в эту прогу изначально? Не обязательно для каждой машины хранить полный образ?
                      0
                      Если вы говорите про Microsoft iSCSI Target то сама программа не умеет создавать разностные диски но умеет с ними работать. Я создавал разностные диски с помошью vb скрипта который нашел на просторах интернета. Если в таком варианте то да, хранить образ для каждой машины НЕ надо. Нужен голд образ и разностный vhd для каждого клиента.
                        0
                        Не подкините ссылку на статью о разностных и gold vhd образах?
          +1
          Я не вижу преимуществ такого способа перед грамотно настроенными рабочими станциями с автоматической заливкой образов ос по сети, даже не говорю про SCCM. А вот недостатков полно: нужно хорошее сетевое оборудование, мощные сервера и т.д.

          В общем, если исходить из любви к искусству, то идея неплохая. Однако, если говорить о реальном применении, то сразу возникает вопрос: «Но зачем?»

            0
            Для начала для реализации подобного решения ничего дополнительного покупать не придется. Сколько стоит sccm? Тысяч 40 рублей?.. Хорошее сетевое оборудование и мошьный сервер это миф. Да если у вас парк из 50+ пк то возможно вам эта технология не интересна даже. Но на меньшее хватит и обычного гигабитного свича и гигабитных сетевух. И все это без труда обслужит один ssd диск, правда его размера не хватит)
              0
              >Для начала для реализации подобного решения ничего дополнительного покупать не придется.

              Придется. Такая система является SPOF, значит нужна дополнительная надежность от N+1 ==> в любом случае 2 сервера.

              >Сколько стоит sccm? Тысяч 40 рублей?..

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

              >Хорошее сетевое оборудование и мошьный сервер это миф.
              Если не мощный, то хотя бы надежный. Не наколеночный. Тоже денег стоит.

              >Да если у вас парк из 50+ пк то возможно вам эта технология не интересна даже. Но на меньшее хватит и обычного гигабитного свича и гигабитных сетевух.

              Давайте посчитаем. Скорость среднего не-SSD диска возьмем в 100МБ/сек на последовательные чтение и запись. Причем этот диск в монопольном распоряжении рабочей станции, подключен по SATA, следовательно задержки очень малы. Теперь прикинем, на сколько нам хватит 1 гигабитного свитча. Т.к. сервер подключается по гигабитному порту, имеем 1 гигабит на всех. Возможно, этого хватит на 10 машин. Но учтем еще и задержки и прочую сетвевую активность, а также то, что обычный свитч неуправляемый и не обеспечивает приоретизацию трафика, и получим что даже на 10 машинах в некоторых случаях будет тормозить.

              А если машин больше 10? Не верю я в общем про «обычный гигабитный свитч».

              >И все это без труда обслужит один ssd диск, правда его размера не хватит)

              А потом он сломается и привет.

              Итого, какие есть реальные преимущества перед заливкой образов по сети?
                0
                На счет загруженности сети, никто не мешает в сервер поставить хоть 5 сетевух, каждая из которых будет обслуживать по 10 клиентов. Пиковая загрузка сети происходит только во время загрузки ОС, дальше загрузки незначительный или очень кратковременные. Хочу сказать что даже 100 мегабитной сети вполне хватает для комфортной работы по такой технологии, лично сам сидел на таком ТК около месяца. Опять же подчеркиваю что основная работа происходит всё равно через RDP.

                Лично в моём случае указанная вами надежность N+1 мне не нужна. Важную информацию у меня никто не хранит на тонких клиентах, все на сервере. И даже если вылетит диск с VHD'шками, востановить копии из бекапа на другой диск и перепрописать таргеты займет не больше часа.

                Я не совсем понимаю что вы имеете ввиду про заливку образов по сети. Вы имеете ввиду роль
                windows deployment services? Так там ведь без HDD никак
                  0
                  >Лично в моём случае указанная вами надежность N+1 мне не нужна. Важную информацию у меня никто не хранит на тонких клиентах, все на сервере. И даже если вылетит диск с VHD'шками, востановить копии из бекапа на другой диск и перепрописать таргеты займет не больше часа.

                  Надежность в данном случае нужна для доступности, а не для сохранности данных. А то помрет сервер, и вся контора будет стоять пока новый не поставите. N+1 нужна обязательно.

                  >Я не совсем понимаю что вы имеете ввиду про заливку образов по сети. Вы имеете ввиду роль
                  windows deployment services? Так там ведь без HDD никак

                  Ну так и поставить маленькие диски. Если посчитать стоимость второго сервера для надежности, то получится так же или даже дешевле.
                  0
                  Обычный гигабитный свитч вполне потянет. Даже виртуальные инфраструктуры, в которых серверы загружаются по iSCSI и работают по 1Гбит существуют и отлично работают. Потому что пропускная способность не является ограничителем.
                  Другой вопрос, что по IOPSам требования для десяти машин будут куда больше чем у одной.
                0
                Все это я пишу с уклоном на то что роль клиентского пк загрузить ос, почта, серфинг интернета и тд. А остальная работа происходит в терминале.
                +1
                Решение необычное :) Обычно если уж терминалы — так бездисковая загрузка сразу в терминальный клиент, и тогда экономия становится ещё выше. Если же в вашем случае сделать следующий шаг и загружать ОС в виртуальной машине, то получится решение VMware View =)
                  0
                  На счет еще большей экономии с трудом соглашусь. Я купил себе какой-то китайский no-name Multi-User Thin station TS6600, обошелся он мне в районе 55 долларов(доставка была бесплатная), я думаю это одно из самый дешевых устройств на рынке, у него Windows CE. Мало того что он притормаживает в терминале(допустим если включить видео с ютуба в терминале), так он еще больше 24 бит не поддерживает. Да и Windows CE для обычного пользователя выглядит страшным и непривычным. Опять-же к этой штуке нельзя подключить DVD-ROM(разве что USB), а лично у нас люди постоянно смотрят диски 1С ИТС.
                  А Эти компы я собирал сам, первая версия мне обошлась ~161 долларов. Вторая версия на новом Atom D2700 ~175 долларов.
                  ~60 баксов мать
                  ~50 баксов Корпус
                  ~12 баксов память
                  ~39 баксов Windows 7 Starter (Кстати никто не мешает купить Pro и загнать в домен)
                  + Опционально DVD ~ 25 баксов
                  Если будет интересно могу сделать фотки как получилось.

                  Вобщем, аналогичный по функционалу ТК на рынке не найти, на мой взгляд. А более менее именитые бренды типа Acer,Asus,HP будет стоить столько-же, как и мой самосбор, но будут хуже по функционалу.
                    0
                    Ну знаете ли :) Видео в терминале… Разбаловались совсем :) Их обычно для того и ставят, чтобы соблазн смотреть видео отсутствовал. А WinCE пользователю и видеть не надо — включил и сразу в терминальную сессию, без промежуточных вариантов.

                    По поводу компьютеров — на базе мини-itx мы обычно и собираем для такой цели, можно и дешевле (винда в качестве терминального клиента не нужна особо).

                    Вообще терминальные решения обычно лишь сулят дешевизну, но подходить к ним с точки зрения «съэкономить на железе» лучше не стоит, главное это управляемость и унификация.
                      0
                      > Вообще терминальные решения обычно лишь сулят дешевизну, но подходить к ним с точки зрения «съэкономить на железе» лучше не стоит, главное это управляемость и унификация.

                      Полностью соглашаюсь. Экономия на спичках вообще до добра не доводит.
                        0
                        Хорошо, а в интернет зайти пользователям в таком случае как, если сразу RDP идет, а на сервере интернет запрещен для юзеров.
                          +1
                          Разрешить на сервере? :)
                    0
                    Наверняка в комментах есть знающие люди, которые смогут ответить на вопрос, не дающий мне покоя уже несколько лет:

                    Можно ли писать диски на SATA DVD-RW, подключенный к linux-хосту, с ноутбука на Windows XP (непринципиально), подключенного через Wi-Fi? Софт стандартный, интересует именно запись DVD посредством iSCSI.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое