Андрей Смирнов
Время чтения: ~17 мин.
Просмотров: 47

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

Системное администрированиеСетевые технологииХранение данных Из песочницы Написанию данного поста предшествовало сбор информации по частям и многочасовое курение как русскоязычных, так и англоязычных ресурсов в сети интернет в поиске сравнительно простых способов реализации бездисковой загрузки ПК. Предпосылкой к изучению данного вопроса стало наличие в сети компьютера, с вышедшем из строя дисковым накопителем. Необходимо было запустить на данном ПК «полноценную» 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? Но обо всем по порядку. Начнем с установки и настройки в системе 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, имеющий следующий вид:693d8d93efcd4eac802d9565c548dc66.jpg При необходимости мы можем создавать необходимое количество 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 следующего содержания: Думаю излишнем писать подробный комментарий к данному файлу, рассмотрим только две последние строчки: KERNEL IPXE.KRN — указывает на ядро iPXE, которую нужно загрузить. INITRD win7.ipxe — указывает на файл скрипта с параметрами iPXE Указанных настроек PXELINUX вполне достаточно для использования дефолтной конфигурации и можно перейти к дальнейшей настройке iPXE, поэтому остающуюся часть текста решил убрать под спойлер.Создание отдельного загрузочного меню для каждого ПКЕсли в сети существует несколько бездисковых рабочих станций, и нужно чтобы каждый ПК имел доступ только «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, то нам нужно будет создать несколько файлов с загрузочным меню для каждого ПК. При получении файла конфигурации от TFTP сервера клиент ищет подходящую для себя в следующем порядке: Здесь 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 следующего содержания: Строка dhcp net0 данного скрипта указывает, что необходимо получить настройки через DHCP сервер в сети. Строка set keep-san 1 указывает, что подключение к iSCSI Target-у необходимо сохранить даже если загрузка с данного устройства не удалась (этот параметр необходим, когда нужно устанавливать операционную систему с накопителей CD/DVD). Если в iSCSI Target настроена CHAP-аутентификации клиентов, то нужно раскомментировать строку #login, которая будет выводит форму для ввода логина и пароля. Последняя строка непосредственно подключает указанный iSCSI Target, инициализирует удаленный диск и передает процесс дальнейшей загрузки на данное устройство. Синтаксис подключения будет таким iscsi:<Айпи iSCSI target>:::::. Добавление дополнительных пунктов в загрузочное меню

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

Перед началом установки Windows 7 на бездисковую станцию открываем его BIOS и настраиваем порядок опроса загрузочных устройств следующим образом: 1) Hard Disk 2) Network 3) CD/DVD 4) остальные устройства Если на ПК имеется установленный жесткий диск, то на время установки Windows его желательно отключить, чтобы компьютер не пытался с него загружаться. Далее размещаем в приводе CD/DVD установочный диск Windows 7 и перезагружаем компьютер. Первым делом мы должны увидеть запуск загрузки через PXE. Если этого не произошло то снова заходим в BIOS и разрешаем загрузку компьютера через сетевой адаптер. f67f570d0fd94cf280fcb2dba21f0e9a.jpg Далее на экране появиться загрузочное меню PXELINUX. Если этого не произошло проверяем, запущена ли на другом компьютере программа Tftpd32, правильно ли она настроена и не блокирует ли его работу firewall-ы, антивирусы или другие программы.8d14fac7367a43ac92b5d24a7a6daa32.jpg После выбора необходимого пункта загрузочного меню PXELINUX мы должны увидеть запуск iPXE. В процессе инициализации iPXE должны промелькнут надписи: Registered as BIOS drive 0x80 Booting from BIOS drive 0x80 Это значит, что ПК удачно подключился к iSCSi диску.7ee01d073a2749e1b8e4b9d2ff5fd22c.jpg Затем мы увидим ошибку загрузки через iSCSi диск, после чего компьютер перейдет к опросу следующего загрузочного устройства и запустит установка Windows 7 с привода CD/DVD. При этом подключение к iSCSi диску останется активным — за это отвечает указанная в скрипте строчка set keep-san 1.Для тех, у кого не запускается установка Windows с привода CD/DVDBIOS некоторых компьютеров, после неудачной попытки загрузки с 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 [Keep PXE stack method 1] (.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.633873a998884a4db4fad689fdf0e7d8.jpg В процессе установки Windows, на этапе выбора дискового устройства мы должны увидеть подключенный нами iSCSi диск. Если iSCSi диск в списке отсутствует, значит установщик Windows не смог автоматически подключить необходимые драйвера для сетевой карты. В этом случае скачиваем с сайта разработчика необходимые драйвера сетевой карты и подключаем их установщику Windows. После этого iSCSi диск должен появиться в списке.Если получили сообщение о невозможности установки Windows на выбранный дискc824d64830344240a7c79987bcfe90c3.jpg После выбора дискового устройства начнется установка Windows 7. Дальше никаких трудностей возникнуть не должно. После установки мы получаем «полноценную» операционную систему Windows 7, работающей на iSCSI диске.ecd0aa0259954791a0f497fea37d4889.jpg

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

Не знаю кому как, но мне лично не представляется удобным для каждого установочного образа Windows записывать DVD диск. Мне привычнее распаковать содержимое установочного диска и запустить установку Windows с жесткого диска. К тому же с жесткого диска операционная система устанавливается быстрее. Приведу пример, с использованием стандартного загрузчика bootmgr, имеющегося в любом установочном дистрибутиве Windows. Данный метод подходит также для установки Windows с локальных жестких дисков. Если коротко, то создаем на iSCSI диске небольшой «активный» раздел, копируем туда содержимое установочного диска Windows, и затем настраиваем MBR, для загрузки с диска установщика Windows. Подробности под спойлером.Альтернативный метод установки ОС WindowsИтак, откроем на рабочей Windows системе Панель управления — Администрирование — Инициатор iSCSI. Появиться окно «Свойства: Инициантор iSCSI».6da0b2c836114db8b5fdb5fc8c07e9c4.jpg Переходим на вкладку «Обнаружение» и нажимаем кнопку «Обнаружить портал…». В открывшемся окне вводим IP-адрес нашей цели iSCSI — 192.168.0.1 и нажимаем ОК. Далее переходим обратно на вкладку «Конечные объекты» и увидим все цели с идентификаторами IQN. Выбираем в списке нужную цель и нажимаем кнопку «Подключить». Откроется еще одно окно требующий нашего подтверждения, где также нажимаем ОК. Если в открывшемся окне оставить галочку «Добавить это подключение в список предпочитаемых конечных объектов» то указанная цель будет автоматически подключаться к системе при каждой загрузке. Открываем оснастку «Управление компьютером» и переходим на вкладку «Управление дисками». Тут мы увидим, что в нашей системе появилось еще одно дисковое устройство. Создаем на этом диске «Основной раздел», указав размер диска чуть больше размера нашего установочного образа. Далее форматируем под файловую систему NTFS, подключаем любую букву диска и делаем раздел «активным». Откроем необходимый образ установочного диска программой UltraISO или WinRar и распакуем содержимое образа на созданный в предыдущем пункте раздел диска. Важно, чтобы после распаковки на диске оставалось как минимум 100Мб свободного места (Для Windows 8 рекомендуется 350Мб свободного места). Если свободного места недостаточно, то расширяем выбранный раздел в оснастке «Управление дисками». Затем скачиваем из интернета программу BOOTICE и запускаем (ссылки приводить не буду, сами сможете найти без труда). В программе выбираем нужный нам диск из раскрывающегося списка. В моем случае HD6:c27a68a089134d67b0c12a3dd12813af.jpg Далее нажимаем кнопку «Process MBR» и откроется следующее окно:7ae262f4d286421e9647fad710dd0175.jpg В данном окне выбираем последний пункт «Windows NT 5.x / 6.x MBR» и нажимаем кнопку «Install/Config». На диске будет настроен MBR, загружающий стандартный загрузчик bootmgr из активного раздела диска. Далее можно загружаться на бездисковом ПК с данного iSCSI-диска и сходу устанавливать ОС WIndows. Установка Windows запуститься автоматически. Но рассмотрим еще один момент. Если мы хотим сделать данный раздел скрытым от пользователей и недоступным для операционной системы, то запускаем командную строку от имени администратора и набираем следующие команды: Diskpart List disk Sel disk x (вместо x подставляем номер нужного диска, список которых выводит предыдущая команда) Sel part 1 (при необходимости список разделов можно посмотреть командой List part) Remove Set id=27 После этого данный раздел диска станет технологическим и скрытым. Для этого раздела уже не возможно назначит букву диска и примонтировать его к работающей системе, но устанавливается Windows с данного раздела без проблем. Получится что то типа раздела восстановления) Надеюсь данная статья будет вам полезна. Всем удачи! Ссылки на литературу:

Навигация по статье

Это инструкция по подключению iSCSI диска в Windows Server 2016. При заказе услуги iSCSI хранилище в SIM-Networks вы получите сообщение, подобное приведенному ниже (учтите, что значения чисел в адресе сервера могут отличаться от примера-иллюстрации, а вместо букв X,Y или Z в сообщении будут указаны реальные значения для настройки вашего доступа):

Услуга «iSCSI Backup» активирована.

Параметры доступа:

  • Адрес сервера (iscsi-target): 185.59.101.184
  • Логин: YYY
  • Пароль: ZZZ
  • Доступ к услуге на данный момент ограничен всего одним IP-адресом — XXX.XXX.XXX.XXX

Подключение диска iSCSI

1. Зайдите в «Панель Управления -> Администрирование» и запустите Инициатор iSCSI.

2. В разделе «Свойства» инициатора iSCSI перейдите на вкладку «Обнаружение» и нажмите кнопку «Обнаружить портал».

3. В открывшемся окне заполните поле «IP адрес» сервера iSCSI.

4. Откройте раздел дополнительных параметров подключения к серверу (нажмите кнопку «Дополнительно»). Выберите значения полей «Локальный адаптер» и «IP-адрес инициатора», как на рисунке ниже (где IP-адрес инициатора — это IP вашего локального сетевого адаптера, через который разрешено подключение к серверу iSCSI).

5. Сохраните настройки, убедитесь в получении изображения, подобного приведенному ниже:

6. В разделе «Свойства» инициатора iSCSI перейдите на вкладку «Конечные объекты», выберите появившийся объект с неактивным состоянием и нажмите кнопку «Подключить».

7. В открывшемся окне «Подключение к конечному объекту», нажмите кнопку «Дополнительно…»

8. Заполните поля раздела, как на рисунке ниже. Параметры «Имя» и «Секрет» — это «Логин» и «Пароль» из письма, отправленного вам при активации услуги.

9. Сохраните настройки. Убедитесь, что значение поля «Состояние» обнаруженного конечного объекта – «Подключено», как на рисунке ниже. Выйдите из раздела «Свойства» Инициатора iSCSI, сохранив настройки.

Инициализация и форматирование диска iSCSI

Подключенный iSCSI диск необходимо подготовить к работе (инициализировать и отформатировать).

10. В разделе «Администрирование» откройте вкладку «Управление компьютером».

11. Перейдите в раздел «Управление дисками».

12. Убедитесь, что ваш диск отображается, его состояние – «Вне сети».

13. Выберите из контекстного меню пункт «В сети».

14. Выполните инициализацию диска.

15. Проверьте, что статус диска изменился на «В сети», но на нём отсутствуют разделы и файловая система.

16. Из контекстного меню на не размеченном диске выберите «Создать простой том».

17. После открытия «Мастера создания простого тома» нажмите кнопку «Далее».

18. Укажите в соответствующем поле размер раздела, или оставьте без изменений значение «по умолчанию» (если необходимо использовать весь диск под один раздел).

19. Назначьте букву диска для нового раздела.

20. Выберите тип файловой системы и метку тома.

21. Нажмите кнопку «Готово» и убедитесь в завершении форматирования тома.

Важно! Во время форматирования может возникнуть окно с предложением отформатировать диск. Необходимо игнорировать этот запрос, закрыть окно и дождаться окончания форматирования.

22. Проверьте, что новый том находится в состоянии «Исправен».

23. Убедитесь, что новый том отображается среди дисков в «Проводнике».

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

24. Для проверки тома, перейдите к соответствующему диску в «Проводнике» и создайте, к примеру, текстовый файл, как на рисунке ниже:

25. Убедитесь, что при создании файла проблем не возникло – это означает, что новый том iSCSI подключен, отформатирован и работает исправно.

iSCSI — это сетевой протокол для работы с системами хранения данных (СХД). Он позволяет взаимодействовать по сети с различными системами хранения данных. В упрощенном виде она состоит из следующих частей:

  • iSCSI-target (таргет) — это ресурс, к которому осуществляется доступ посредством протокола iscsi
  • iSCSI-initiator (инициатор) — это хост который инициирует (устанавливает) iSCSI-соединение
  • IQN (iSCSI Qualified Name) — это полный уникальный идентификатор устройства iSCSI, однозначно определяющий данное устройство (есть и у таргета и у инициатора)

Такая система хранения данных может быть организована на практически любой ОС, так как строится на логическом уровне и не требует обязательного наличия специальных устройств хранения данных (дисков, дисковых контроллеров). В большинство ОС эта функция уже включена, и может быть достаточно легко активирована.

Не является исключением и ОС Windows, где компоненты iSCSI являются дополнительными компонентами системы.

Установка iSCSI-таргета.

Для создания таргета нам необходимо через мастер добавления ролей и компонентов диспетчера серверов добавить роль “Сервер цели iSCSI” из раздела “Файловые службы и службы хранилища”.

Для этого необходимо нажать комбинацию клавиш Win-R и в командную строку ввести compmgmt.msc.

1.png

Далее запустить мастер установки ролей и компонентов нажав кнопку “добавить роли и компоненты”.

2.png

Откроется страница приветствия. Можно просто нажать “Вперед”, а также поставить галочку “Пропускать эту страницу по умолчанию”, если вы не хотите постоянно видеть эту страницу при запуске мастера установки ролей и компонентов, так как эта страница чисто информационная.

3.png

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

4.png

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

5.png

Выбираем необходимые из списка ролей сервера. Надо раскрыть Файловые службы и поставить галочку “Сервер цели iSCSI”.

6.png

Установка дополнительных компонентов — добавляем нажатием соответствующей кнопки.

7.png

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

8.png

Установку компонентов можно пропустить, так как они нам в данный момент не нужны, нажав кнопку далее.

9.png

После этого, предупреждение о готовности роли к установке. Нажимаем “Установить”. Можно также поставить галочку “Автоматический перезапуск конечного сервера, если требуется” чтобы не перезапускать сервер вручную. Следует иметь ввиду, что нажатие этой галочки перезапускает конечный сервер после установки без дополнительных предупреждений, поэтому используйте ее с осторожностью.

10.png

После нажатия кнопки установить запустится процесс установки, можно закрыть это окно нажатием соответствующей кнопки. Следует иметь ввиду что это действие не отменяет процесс установки, а только скрывает текущее окно.

Заходим последовательно в “Диспетчер серверов”-”Файловые службы и службы хранилища”-”Тома”-”Диски”.

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

11.png

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

12.png

Задаем имя и по желанию описание нашего диска и жмем далее.

13.png

Вводим размер диска и определяем как будет выделяться под него пространство — сразу или динамически. Доступный размер под iSCSI-диск показан в самом верху.

14.png

Определяем создавать ли новый таргет или присоединить диск к существующему (если они есть).

15.png

Задаем имя и описание нового таргета.

16.png

Выбираем инициаторы которым можно подключаться к данному таргету (может быть переопределено) посредством кнопки “добавить”. Можно добавить инициаторы через поиск, выбрать из кеша, если ранее инициаторы уже подключались или задать вручную через IQN, DNS-имя, ip или mac-адрес. Как минимум один инициатор должен быть задан. Введем например IQN вручную.

17.png

Нам стала доступна кнопка далее.

18.png

Можно включить дополнительную проверку подлинности если это необходимо (например таргет публикуется в сети интернет).

19.png

На последнем шаге выводится сводная информация по таргету. Проверяем и нажимаем “Создать”.

20.png

Начнется процесс создания таргета.

21.png

После этого можно подключаться к данному таргету инициатором, заданным на этапе создания.

Используемые источники:

  • https://m.habr.com/ru/post/244661/
  • https://www.sim-networks.com/wiki/configure-iscsi-windows-server
  • https://oblako.kz/help/windows/nastroika-iscsi-xranilisha-na-windows-server

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации