Diskless vékonykliensek bootolása iSCSI targetről, konfiguráció

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen MullerJanos (vitalap | szerkesztései) 2009. december 11., 03:09-kor történt szerkesztése után volt.

Tartalomjegyzék

1 Diskless vékonykliensek bootolása iSCSI targetről, konfiguráció

1.1 iSCSI

1.1.1 Internet Small Computer System Interface

  • IP alapú hálózati kommunikációs szabvány adattárak (storage-ok) összeköttetésére
  • A kliens (initiator) SCSI parancsokat küld (CDB) a SCSI storage-nak (targetek)
    • CDB: Command Descriptor Block
  • Tulajdonképpen az iSCSI külön SCSI merevlemezekhez való kapcsolódást emulál
  • Logical Unit Number (LUN)
    • A logikai egység száma jelenti a külön címezhető logikai SCSI eszközt, amely a targetnek (fizikai SCSI eszköznek) a része.
  • Előnyök:
    • adattár centralizáció
    • a hálózaton keresztül könnyen kioszthatók a merevlemezek, hibaelhárítás
    • Hálózati bootolás (pl.: diskless kliensek számára)
    • olcsó megoldás: nem kell dedikált optikai szálas (Fibre Channel) hálózat, standard hálózaton működik
    • távoli elérhetőség…

1.1.2 iSCSI target létrehozása Solarison

A szerveren futó targetmenedzselő program (daemon) számára létre kell hozni egy könyvtárat. Minden target és logikai egységhez kapcsolódó információt itt tárol majd a daemon.

iscsitadm modify admin -d <directory>

Target létrehozása:

iscsitadm create target ~--size 2g vol10

Az első logikai egység (LU) után a többi is ugyanígy létrehozgató megadva az egység sorszámát: --lun <number>.
Ha az egység létrejött, akkor a Solaris küld egy „Inventory Change” értesítést, és az egység offline-ról online-ra vált.

Információ lekérése az elkészült targetről:

# iscsitadm list target -v vol0
Target: vol0
         iSCSI Name: iqn.1986-03.com.sun:01:00093d12170c.434c5250.vol0
         ACL list:
         TPGT list:
         LUN information:
                 LUN: 0
                         GUID: 010000093d12170c00002a00434c5251
                         VID: SUN
                         PID: SOLARIS
                         Type: raw
                         Size: 0x1400000 blocks


1.2 TFTP

  • Trivial File Transfer Protocol
  • egyszerű megoldás
  • UDP-t használ, 69-es porton
    • kliens küld egy RRQ vagy WRQ parancsot (read/write request) a szervernek a 69-es porton, ez tartalmazza a fájlnevet és az átviteli módot
    • a szerver ACK-kal válaszol a WRQ-ra vagy ha RRQ érkezett, akkor küld egy adatcsomagot (DATA) a kliensnek
    • a kliens minden teljes méretű (512 byte) adatcsomagra ACK-kal válaszol
    • az utolsó adatcsomagnak kevesebbnek kell lennie mint a maximális csomagméret, hogy jelezze ez az utolsó. Ha az átvivendő fájl mérete pont a blokkméret többszörösem, akkor egy 0 byte-os csomagot küld a szerver.
    • Ha az ACK nem érkezik meg, akkor az adatot újraküldik.


1.3 PXE

1.3.1 Preboot Execution Environment

  • Olyan környezet, amely segítségével kliensek hálózaton keresztül operációs rendszer telepítő image-eket vagy akár telepített operációs rendszert tudnak bootolni adattárakról.
  • Szükség van egy boot szerverre, ami DHCP és TFTP segítségével a kezdeti bootstrap program és további fájlok letöltését teszi lehetővé.

1.3.2 PXE boot folyamat

A proxy DHCP megkapja a kliens DHCPDISCOVER kérését, és erre egy broadcast DHCPOFFER-rel válaszol PXE-specifikus adatokkal kiegészítve (68-as UDP portra) a hálózaton belülre. Broadcast, mert nem tudja a kliens IP címét.
DHCPOFFER tartalma:

  • PXE Discovery Control mező
  • PXE Boot Server Type-ok IP címei
  • PXE Boot menü
  • PXE Boot Prompt (felhasználót értesíti, hogy nyomjon F8-at a bootmenühöz)
  • timeout

A Boot Server megkapja a kiválasztott PXE Boot Server Type-ot és PXE Boot Server Layert a klienstől DHCPREQUEST formájában (a szerver daemonja több boot server type-ot is futtathat).
A Boot server DHCPACK csomaggal válaszol, amely tartalmazza:

  • a NBP (Network Bootstrap Program) elérési útját (TFTP)
  • PXE Boot Server Type-ot, PXE Boot Layert
  • multicast TFTP beállításait, ha ezt a megoldást alkalmazzák

Network bootstrap program:
A kliens (ha kell, ellenőrzést követően)a DHCPACK-ban megkapott elérési útról letölti a Network Bootstrap Programot a RAM-jába, és végrehajtja azt.

1.3.3 PXE konfigurálása

DHCP szerver beállítása
Telepítés:

sudo aptitude install dhcp3-server

A DHCP szerver fogja kiosztani az IP-címet a klienseknek, és a tftp szerver elérhetőségét. Ezért módosítani kell a DHCP szerver konfigurációját:

sudo vim /etc/dhcp.conf

Adjuk meg a TFTP szerver címét (ugyanaz a gép is lehet) és a pxelinux.0 fájl elérhetőségét, amit el akarunk küldeni a klienseknek

    next-server 192.168.0.254
    filename "/tftpboot/pxelinux.0";

Ezután újra kell indítani a DHCP szervert:

sudo /etc/init.d/dhcpd restart

TFTP boot image elhelyezése a TFTP szerveren

sudo mkdir /tftpboot/ubuntu9.10
sudo mount –o loop CD.iso /mnt
sudo cp –a /mnt/* /var/www/html/ubuntu9.10
sudo cp /var/www/html/ubuntu9.10/install/netboot/ubuntu-installer/i386/linux /tftpboot/ubuntu9.10
sudo cp /var/www/html/ubuntu9.10/install/netboot/ubuntu-installer/i386/linux /tftpboot/ubuntu9.10
sudo cp /var/www/html/ubuntu9.10/install/netboot/ubuntu-installer/i386/initrd.gz /tftpboot/ubuntu9.10

pxelinux.cfg/default konfigurálása

sudo vim /tftpboot/pxelinux.cfg/default

Ebbe a fájlba írhatjuk bele, hogy a user amikor a boot.msg fájl alapján látott boot menüből kiválasztja a telepítendő operációs rendszert, hol találja meg a hozzá tartozó initrd-t, amit a kliensnek le kell töltenie az initial ram diskjére:

    default 0
    prompt 1
    display msgs/boot.msg
    # begin list of available boot options
    label ubuntu9.10
    kernel ubuntu9.10/linux
    append initrd=ubuntu9.10/initrd.gz

pxelinux.cfg/msgs/boot.msg konfigurálás
Jelen esetben elég ennyit beleírni:

ubuntu9.10 - Select this to install Ubuntu 9.10 over network

TTP server engedélyezése
A TFTP szerver engedélyezéséhez a következő sornak kell lennie a /etc/inetd.conf fájlban

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Telepítés
Ezután az egyik klienst elindítjuk, megjelenik a boot menü, kiválasztjuk, hogy telepíteni akarjuk a Ubuntu9.10-et. Az Ubuntu9.10 telepítője felajánlja, hogy iSCSI targetre akarjuk-e telepíteni, válasszuk ki azt. A rendszer így feltelepül az iSCSI targetre. Azonban mi nem azt akarjuk elérni, hogy hálózaton keresztül fel tudjuk telepíteni a operációs rendszert a kliensekre, hanem azt, hogy a diskless kliensek a tftp szerveren keresztül az iSCSI targetre feltelepített rendszert indítsák el.
Ehhez a iSCSI targetre települt kliens initrd-jét (initrd-ng3.img) és kernelét át kell másolni a tftp szerverre, majd módosítani a pxelinux.cfg fájlt kódrészlethez hasonlóan [belső forrás: Ubuntu forums]

DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE PXE Network boot
TIMEOUT 30

LABEL 1
  MENU LABEL ^Ubuntu Linux 9.10
  MENU DEFAULT
  KERNEL 10.10.0.23::/vmlinuz-2.6.31-14-server
  APPEND ip=bootp root=/dev/sda1 iscsi_initiator=iqn.ubuntu.istgt iscsi_target_name=iqn.2007-09.jp.ne.peach.istgt:disk0 iscsi_target_ip=10.10.0.23 iscsi_target_group=1 iscsi_target_port=3260 initrd=initrd-ng3.img

E szerint a kliens DHCP-n keresztül lekéri az IP-jét, a 10.10.0.23-mon éri el az iSCSI targetet, és betölti az initrd-ng3.img fájlt az initial ram disk-be.

1.4 Felhasznált irodalom

iscsitadm man page
Ubuntu documentation
Ubuntu forums

Személyes eszközök