Страница 1 из 2

Нужна помощь в без дисковой загрузке

Добавлено: 26 ноя 2013, 10:11
WShade
Всем привет!

Появилась необходимость перевести парк машин в офисе на без дисковую загрузку. Погуглив понял что самый, на мой взгляд, нормальный вариант это использовать iscsi. Немного разобравшись с технологией и получив представление как это можно реализовать, приступил к работе.
Что сейчас сделано:
Собрал сервак на Debian, в качестве хранилища использую raid 10. На сервак поставил isc-dhcp-server, tftpd-hpa-server и iscsitarget.

В общем идея такая:
На серваке массива raid делю на куски, ну скажем по 50 Гб. С помощью iscsitarget привязываю каждый кусок к iscsi интерфейсу. Через tftp сервер отдаю клиентам ipxe.pxe файл, который выступает в роли загрузчика. При загрузке клиентской машины монтирую iscsi диск. Этот смонтированный диск в системе будет использоваться вместо физического HDD.

Сейчас это работает так:
1. Клиентская машина грузиться через PXE;
2. DHCP дает ей IP адрес и IP tftp сервера;
3. Загружает файл ipxe.pxe через tftp;
4. Монтируется iscsi диск;
5. Ставлю установку set keep-san 1, чтобы при неудачной загрузке диск оставался в системе(по дефолту, при неудачной загрузке диск автоматически отмонтируется);

Вот собственно и все. Так все должно работать, НО. Всегда есть какое-то НО Very Happy

В общем клиент нормально получает данные от DHCP, файл ipxe.pxe успешно загружается. Далее монтируется iscsi диск. Пытается загрузиться с него, но так как там не системы загрузка не получается. Диск остается смонтированным. И вот тут у меня появилась проблема. Вместо того чтобы загрузиться со следующего устройства, как установлено в биосе, вылетает сообщение "PRESS A KEY TO REBOOT".

Если кто-то может объяснить в чем проблема, помогите пожалуйста.

Делал все по официальному мануалу: http://etherboot.org/wiki/pxechaining

Далее привожу конфиги:

Конфиг ietd.conf:
[spoiler]

Код: Выделить всё

Target iqn.2013-11.loc.domain.storage:iscsiboot 
        Lun 0 Type=blockio,Path=/dev/sda5 
[/spoiler]
Конфиг dhcp:
[spoiler]

Код: Выделить всё

ddns-update-style none; 

option domain-name "netboot.uilim.ru"; 
option domain-name-servers 91.219.136.4, 91.219.137.4; 

default-lease-time 600; 
max-lease-time 7200; 

log-facility local7; 

#iPXE config options 
  option space ipxe; 
  option ipxe-encap-opts code 175 = encapsulate ipxe; 
  option ipxe.priority code 1 = signed integer 8; 
  option ipxe.keep-san code 8 = unsigned integer 8; 
  option ipxe.skip-san-boot code 9 = unsigned integer 8; 
  option ipxe.syslogs code 85 = string; 
  option ipxe.cert code 91 = string; 
  option ipxe.privkey code 92 = string; 
  option ipxe.crosscert code 93 = string; 
  option ipxe.no-pxedhcp code 176 = unsigned integer 8; 
  option ipxe.bus-id code 177 = string; 
  option ipxe.bios-drive code 189 = unsigned integer 8; 
  option ipxe.username code 190 = string; 
  option ipxe.password code 191 = string; 
  option ipxe.reverse-username code 192 = string; 
  option ipxe.reverse-password code 193 = string; 
  option ipxe.version code 235 = string; 
  option iscsi-initiator-iqn code 203 = string; 
  # Feature indicators 
  option ipxe.pxeext code 16 = unsigned integer 8; 
  option ipxe.iscsi code 17 = unsigned integer 8; 
  option ipxe.aoe code 18 = unsigned integer 8; 
  option ipxe.http code 19 = unsigned integer 8; 
  option ipxe.https code 20 = unsigned integer 8; 
  option ipxe.tftp code 21 = unsigned integer 8; 
  option ipxe.ftp code 22 = unsigned integer 8; 
  option ipxe.dns code 23 = unsigned integer 8; 
  option ipxe.bzimage code 24 = unsigned integer 8; 
  option ipxe.multiboot code 25 = unsigned integer 8; 
  option ipxe.slam code 26 = unsigned integer 8; 
  option ipxe.srp code 27 = unsigned integer 8; 
  option ipxe.nbi code 32 = unsigned integer 8; 
  option ipxe.pxe code 33 = unsigned integer 8; 
  option ipxe.elf code 34 = unsigned integer 8; 
  option ipxe.comboot code 35 = unsigned integer 8; 
  option ipxe.efi code 36 = unsigned integer 8; 
  option ipxe.fcoe code 37 = unsigned integer 8; 
  option ipxe.vlan code 38 = unsigned integer 8; 
  option ipxe.menu code 39 = unsigned integer 8; 
  option ipxe.sdi code 40 = unsigned integer 8; 
  option ipxe.nfs code 41 = unsigned integer 8; 
  #option no proxy 
  option ipxe.no-pxedhcp 1; 

  #option space ipxe; 
  #option ipxe-encap-opts code 175 = encapsulate ipxe; 

allow booting; 
allow bootp; 

subnet 10.222.0.0 netmask 255.255.0.0 
{ 
        range 10.222.0.235 10.222.0.245; 
        option broadcast-address 10.222.0.255; 
        option routers 10.222.0.1; 
        next-server 10.222.0.220; 
} 

host host1 
{ 
        hardware ethernet 1c:16:e6:6b:18:b3; 
        if exists user-class and option user-class = "iPXE" { 
                filename ""; 
                option root-path "iscsi:10.222.0.220::::iqn.2013-11.loc.domain.storage:iscsiboot"; 
                option ipxe.keep-san 1; 
        } else { 
                filename "ipxe.pxe"; 
        } 
} 
[/spoiler]

Конфиг tftpd-hpa:
[spoiler]

Код: Выделить всё

TFTP_USERNAME="nobody" 
TFTP_DIRECTORY="/tftpboot" 
TFTP_ADDRESS="10.222.0.220:69" 
TFTP_OPTIONS="-m /etc/tftpd.remap --secure" 
[/spoiler]

Порядк загрузки в BIOS:
1. LAN
2. HardDisk
3. Disable

В роли HardDisk использую флешку с установщиком Windows 7.

Не уверен что объяснил все понятно. В любом случае, всем кто попытается помочь, огромное спасибо.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 01:14
Raven
Ну, теоретически все правильно - PXE загрузился, поднял загрузчик, а то что не нашел загрузочной записи на диске - это не его траблы. И в биос он уже не вернется, дабы продолжить загрузку с другого устройства, как не продолжается поиск на других устройствах при NTLDR is missing.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 04:56
vovalu
Для начала надо поставить на созданный iscsi диск "Венду", он у же абсолютно пустой поэтому биос "по-чесному" думает что свое основное дело сделал и на другое загрузочное устройство не переходит, как это сделать немного описанно здесь: http://social.technet.microsoft.com/for ... s-7-iscsi- , т.е надо выставить в Bios загрузку с флешки, на которой установочная "Венда" и дрова на сетевуху, а потом добавлять в качестве места назначения устанавливаемой системе iscsi диск, и после перезагрузки снова возвращать в Bios на загрузку по сети.
А так хотелось бы узнать что у вас получилось в конце.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 06:20
WShade
vovalu
vovalu писал(а):надо выставить в Bios загрузку с флешки, на которой установочная "Венда" и дрова на сетевуху, а потом добавлять в качестве места назначения устанавливаемой системе iscsi диск
Не совсем понимаю как это можно сделать. Просто сам iscsi диск монтируется непосредственно при загрузки через gPXE, т.е. если я сразу начну грузить машину с флешки, то куда я буду ставить винду? ведь диск то у меня не будет смонтирован.
Если и что-то недопонимаю, разъясните пожалуйста и ткните носом в ошибку.

А что касательно той статьи что вы привели, то я на ней уже был. Я вообще навреное уже на всех статьях был посвященных этой теме :-( Все делал как-раз вот по этому мануалу http://etherboot.org/wiki/sanboot/win2k8_iscsi_install.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 09:14
WShade
В качестве теста попробовал при запуске iPXE загрузчика сразу нажать Ctrl+B, чтобы войти в командную строку. И ввел команду exit для выхода. Т.е. диск не монтировался. И сразу получаю "PRESS A KEY TO REBOOT". Проблема стало быть в самом загрузчике, как я понимаю.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 11:06
WShade
Нашел статью по теме: http://umvirt.ru/sanboot там в конце статьи, в разделе "Осуществление загрузки" говориться:
1. Настроить на сервере загрузку сначала с пустого образа а потом с образа установочного диска либо через сценарий либо через меню.
Что-то мне подсказывает, что именно в этом у меня и проблема. Как сделать такую настройку, мне пока не понятно.
Дальше по пунктам идет:
2. Загрузить бездисковую станцию с пустого раздела. Загрузки как таковой не произойдет, но в памяти сохранится адрес iSCSI-цели.
3. Загрузка с образа установочного диска позволит осуществить установку в iSCSI-цель.
Пункт 2 это как-раз и есть опция: option ipxe.keep-san 1; которая оставляет диск в системе, даже если загрузка с него не получилась.
Пункт 3 это, в моем случае, загрузка с флешки на которой дистрибутив Win7.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 12:48
Raven
WShade писал(а):vovalu
Просто сам iscsi диск монтируется непосредственно при загрузки через gPXE, т.е. если я сразу начну грузить машину с флешки, то куда я буду ставить винду?
vovalu пытался донести, что в инсталляторе windows имеется возможность установки на сетевые носители. Т.е нужно загрузиться с флешки, удостовериться что сеть работает, указать инсталлятору в качестве целевого диска LUN и ставить, а после ребута загрузить уже с PXE)

Re: Нужна помощь в без дисковой загрузке

Добавлено: 27 ноя 2013, 12:52
Infernal Flame
WShade
а если рассмотреть вариант предварительного монтирования образа системы из той же iso-хи, потом маунт iscsi?
особо в теме бездискового бута не разбирался, но думаю какие-то директивы для pxe должны быть...

Re: Нужна помощь в без дисковой загрузке

Добавлено: 28 ноя 2013, 06:05
WShade
Raven
пытался донести, что в инсталляторе windows имеется возможность установки на сетевые носители. Т.е нужно загрузиться с флешки, удостовериться что сеть работает, указать инсталлятору в качестве целевого диска LUN и ставить, а после ребута загрузить уже с PXE
Ну смысл то я понял, знать бы как это сделать :) Попробую разобраться :)

Infernal Flame
а если рассмотреть вариант предварительного монтирования образа системы из той же iso-хи, потом маунт iscsi?
особо в теме бездискового бута не разбирался, но думаю какие-то директивы для pxe должны быть...
Именно для pxe конечно врят-ли, а вот при установке Win7 возможно да. Тем более что сами микромягкие заявляли что такая возможность есть, видимо надо документацию почитать внимательно.

Re: Нужна помощь в без дисковой загрузке

Добавлено: 28 ноя 2013, 09:34
WShade
В общем есть такая штука как iscsicli, через которую можно подключать iscsi таргеты через командную строку. Как с ней работать я вроде разобрался, но вот как подключить iscsi диск при установке Windows я так и не понял. Эта утилита входит в Windows 7, но при установке командная строка ее не знает, что вполне логично.
Пробовал скопировать эту утилиту, со всеми ее библиотеками на флешку и напрямую запускать из командной строки при установке винды. Успеха эти манипуляции не принесли. В ответ на мои команды, эта утилита возвращает какие-то странные знаки :) Я по началу подумал что проблема, к примеру, с кодировкой. Но на команду ListTargets (выводит список iscsi таргетов) выводятся каждый раз разные значения. Такое чувство, что они вообще рандомно генерируются. Ответы выводятся по 4 символа, причем логики в них вообще никакой. Один раз мне даже выдалось 4 символа, один из них был символ ноты. возможно это был намек на использование бубна? xD