gPXE - bootowanie systemu z dysku iSCSI

Sun 14 March 2010 by admin

Po kilku tygodniowej przerwie w publikacji wpisów  tym razem postaram się udzielić odpowiedzi na pytanie,  w jaki sposób sprawić, żeby system operacyjny wystartował z urządzenia blokowego udostępnionego po tradycyjnej sieci LAN...

Korzyści płynące z pozbawienia maszyn fizycznych dysków twardych i przeniesieniu ich na redundantną szybką macierz są znaczące:

  • przeniesienie dysku z jednej maszyny do drugiej nie wymaga fizycznej ingerencji
  • łatwość replikacji całego storage'u
  • wykonywanie migawek/snapshot'ów bez względu na system operacyjny maszyny fizycznej
  • szybkość instalacji nowego systemu (clone, template)
  • lepsze wykorzystanie przestrzeni dyskowej (tj. maszyna potrzebująca np. dysku 30GB - trudno dostępne fizyczne dyski o tej pojemności)

do wad zaś zaliczyć można:

  • większy koszt wdrożenia - patrz karty iSCSI HBA, switche
  • storage jako SPoF (single point of failure) - zapewnienie replikacji storage

Dla przykładowego wdrożenia takiej architektury w warunkach testowych użyłem środowiska wirtualnego oraz następujących narzędzi:

  • sieciowego bootloader'a gPXE [1]
  • jako iSCSI target - użyłem systemu CentOS wraz z iSCSI Enterprise Target [2]
  • serwera DHCP [3]
  • instalowany system to MS Windows 2008

W pierwszej kolejności pobrałem odpowiedni obraz gPXE  [4] dla zainstalowanej w maszynie wirtualnej karcie sieciowej. Pobrany obraz podpiąłem do wirtualnego napędu FDD bootującego się w pierwszej kolejności.  Instalacja ietd (iSCSI Enterprise Target)  sprowadza się do ściągnięcia źródeł oraz ręcznej kompilacji, gdyż nie znajduję się ona w paczce rpm dla dystrybucji CentOS. Kompilacja wymagała instalacji: kernel-devel openssl-devel gcc rpm-build. Reszta już przebiegała w-g ustalonego schematu: make, make install. Po zainstalowaniu należy przystąpić do konfiguracji, podstawowa konfiguracja targetu z jednym LUN'em jako fizyczny dysk /dev/sdb prezentuje się następująco:

Target iqn.2010-03.com.witlab:iscsiboot
  Lun 0 Path=/dev/sdb,Type=fileio

Konfiguracja serwera DHCP wymaga dodania opcji bootloader'a gPXE bądź to do sekcji globalnej lub do sekcji konkretnego host'a. Preferuje podział na konfigurację wspólną w sekcji globalnej oraz konfigurację samego target'u/LUN'a w sekcji dla host'a. Przykładowa konfiguracja może wyglądać następująco:

ddns-update-style  interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {

# --- default gateway
 option routers     192.168.0.2;
 option subnet-mask     255.255.255.0;
 option nis-domain      "domain.org";
 option domain-name     "domain.org";
 option domain-name-servers 192.168.1.1;

 option time-offset     -18000; # Eastern Standard Time

 range dynamic-bootp 192.168.0.129 192.168.0.254;
 default-lease-time 21600;
 max-lease-time 43200;

 host testgpxe {
 hardware ethernet 00:0c:29:5b:1c:b1;
 fixed-address 192.168.0.200;
# adres ip iscsi target oraz iqn iscsi
 option root-path "iscsi:192.168.0.128::::iqn.2010-03.com.witlab:iscsiboot";
 }
}
 option space gpxe;
 option gpxe-encap-opts code 175 = encapsulate gpxe;
 option gpxe.keep-san code 8 = unsigned integer 8;

 filename "";
 option gpxe.keep-san 1;

Teraz wystarczy zboot'ować nową maszynę z obrazu gPXE, operacja ta w przypadku nowo zainstalowanego czystego dysku iSCSI się nie powiedzie, system w drugiej kolejności powinien wybrać start z napędu CD/DVD. Instalator Windows'a 2008 automatycznie odkryje target iSCSI i w oknie wyboru dysku pojawi dysk iSCSI. Po pomyślnej instalacji system będzie automatycznie startował z wybranego dysku iSCSI:

c:\devcon.exe listclass diskdrive

Listing 1 device(s) for setup class "DiskDrive" (Disk drives).
SCSI\DISK&VEN_IET&PROD_VIRTUAL-DISK\1&1C121344&0&000000

IET VIRTUAL-DISK SCSI Disk Device

[1] http://etherboot.org/wiki/

[2] http://iscsitarget.sourceforge.net/

[3] http://isc.org/products/DHCP/

[4] http://rom-o-matic.net/gpxe/gpxe-1.0.0/contrib/rom-o-matic/


Comments