gPXE - bootowanie systemu z dysku iSCSI
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:
:::text
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:
:::text
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/
powered by Hugo and Noteworthy theme