Zielstrebig Artikel Zeigt, Wieadmins Damitflexiblere Undschnellere Fileserver Aufsetzen
Total Page:16
File Type:pdf, Size:1020Kb
05/2011 Das modulare Multiprotocol Storage Target im Linux-Kernel Sysadmin Zielstrebig I-SCSI 66 Mit Version 2.6.38 hält ein modular aufgebautes I-SCSI Storage Target Einzug in den offiziellen Kernel. Dieser Artikel zeigt, wie Admins damit flexiblere und schnellere Fileserver aufsetzen. Kai-Thorsten Hambrecht www.linux-magazin.de (FC), Fibre Channel over Zu den Fabric Modules als Protokolltrei- Ethernet (FCoE) oder Infi- ber des Framework gehören neben dem niband (IB) und eignet sich namengebenden I-SCSI unter anderem damit zum Einrichten flexi- auch FCoE, Fibre Channel mit Host Bus bler Storage Area Networks Adaptern (HBA) der Qla2xxx-Serie von (SAN). Qlogic, Infiniband oder ein Loopback- Seine Leistungsfähigkeit stellt Modul. Die I-SCSI-Implementierung ist das Lio-Target in Storage-Ap- bereits erfolgreich für VMware ESX 4.0 pliances von Netgear, QNAP und VMware V-Sphere 4.0 zertifiziert, oder Synology unter Beweis. funktioniert aber auch bestens mit dem Der folgende Workshop gibt nativen Initiator von Virtualbox. einen Überblick über Archi- tektur, Installation sowie die Einzug in den Kernel Konfiguration und lässt sich am besten mit der virtuellen Den Anfang im SCSI-Subsystem des Ker- Maschine auf der Linux-Ma- nels 2.6.38 [6] macht zunächst das Tar- gazin-DVD nachvollziehen get Core Module (TCM, [7]). Mit 2.6.39 (siehe Kasten „Lio-I-SCSI“). sollen die Protokolltreiber für I-SCSI, FC für Qlogic HBA sowie FCoE folgen. Da- Lio-Framework mit ersetzt langfristig das Lio-Target das bereits im Kernel enthaltene STGT (SCSI Lio ist modular aufgebaut Target Framework). und besteht aus dem Target Zur Konfiguration nutzen TCM und die Core Module (TCM), das zum zugehörigen Protokolltreiber das mit © Jeff Crow, 123RF.com Crow, © Jeff einen mit der Generic Tar- Kernel 2.6.15 im Rahmen von OCFS2 get Engine die grundlegende eingeführte Config-FS. Es stellt über das Um Storage-Systeme kostengünstig an- SCSI-Funktionalität implementiert und Dateisystem eine Konfigurationsschnitt- anzubinden, hat sich I-SCSI [1] längst eta- die Schnittstelle zu den Fabric Modules bliert, fast alle modernen Betriebssysteme bereitstellt, zum anderen mit der Storage Lio-I-SCSI bringen Clients dafür mit. Auf Server- Management Engine die Verwaltung der Auf der DELUG-DVD dieses Ma- DELUG-DVD Seite, also bei den I-SCSI-Zielen (Targets), physikalischen Speicherobjekte über- gazins findet sich ein knapp 1 GByte großes hat der Linux-Admin die Wahl zwischen nimmt (Abbildung 1). Mehr Details zum gepacktes Image einer Fedora 13 für 64-Bit- mehreren Lösungen, zum Beispiel den Aufbau liefert das Lio-Wiki [4]. Systeme. Darin haben die Autoren des Linux- altbewährten Net-BSD-Userland-Targets Die Generic Target Engine entspricht den Magazins die Developer-Tools installiert und oder dem I-SCSI Enterprise Target IET SPC-3- und SPC-4-Standards (SCSI Pri- einen passenden Kernel (2.6.34.8) kompi- liert. Lio-Sourcecode, Lio-utils und Kernel- [2]. Eine weitere Variante hat sich in mary Commands, [5]) und bietet mit module liegen ebenfalls vorkonfiguriert und letzter Zeit zu einem ausgewachsenen Persistent Reservations (PR) und Asym- zusätzlich als RPMs auf der DVD. Multiprotocol Storage Target entwickelt: metric Logical Unit Assignment (ALUA) Das Image beinhaltet neben LVM auch ein die Implementierung von Linux-iscsi.org auch Funktionen, die für Admins hoch- lokales Verzeichnis, ein separates Blockde- - kurz Lio [3]. verfügbarer Clustersysteme relevant sind. vice und eine generische SCSI-Platte zum Dieses Framework ist ab Kernel 2.6.38 In der Storage Management Engine sor- Testen. Mit dem Shellskript »rtsadmin.create. vollständig im Kernel enthalten und be- gen die Backstore-Plugins (Kasten „Lio- template« konfiguriert der Admin sein I-SCSI- herrscht über seine Fabric Modules unter Backstore-Plugins“) für die eigentlichen Target, ein detailliertes Readme dazu liegt anderem Protokolle wie Fibre Channel physikalischen Speicherobjekte. auch auf der DVD. 066-070_i-scsi.indd 66 03/21/11 15:19:18 05/2011 Sysadmin [10], das auch Tools zur Konfiguration Image auf der DELUG-DVD basieren auf Lio-Backstore-Plugins beinhaltet. Den aktuellen Source code Fedora 13 mit dem Kernel 2.6.34.8 sowie In Lio verwaltet die Storage Management des Lio-Kernels lädt anschließend der den fertigen Lio-utils. Engine die physischen Speicherobjekte und folgende Befehl herunter: stellt folgende Backstore-Plugins bereit: I-SCSI Fileio: Eine reguläre Datei auf einem ge- git clone git://git.kernel.org/pub/scm/U Installation mounteten Dateisystem. linux/kernel/git/nab/lio-core-2.6.git Iblock: Ein beliebiges Blockdevice, zum Bei- Für ein erfolgreiches Kompilieren des spiel IDE- oder SATA-Disks, LVM-Volumes, MD- Danach folgt die übliche Prozedur zum Target sind neben den üblichen Verdäch- 67 Raid oder auch DRBD-Devices. Bau eines eigenen Kernels. Die Lio-Mo- tigen »make« und »gcc« auch das »ker- Pscsi: Jedes Diskdevice, das SCSI-Komman- dule verbergen sich hinter »Device Dri- nel-devel«-Paket sowie Git nötig. Ein dos (die Command Descriptor Blocks, CDB) vers | Generic Target Core Mod (TCM) ohne weitere SCSI-Emulation versteht, also git clone git://risingtidesystems.com/U and Config-FS Infrastructure«, darunter www.linux-magazin.de lio-core-backports.git beispielsweise SCSI- oder SAS-Festplatten. die Module der verschiedenen Backstores Ramdisk: Im Hauptspeicher angelegte virtu- sowie die Fabric Modules. erzeugt eine lokale Kopie des Backports- elle Ramdrives. Für die ersten I-SCSI-Gehversuche sollte Repository, das der Admin später bei Be- der Admin seinen Kernel mit folgenden darf mit »git pull« aktualisiert. stelle für Kernelobjekte bereit. Durch Moduloptionen kompilieren und instal- Nach einem Wechsel in das Verzeich- Anlegen, Verändern und Löschen von lieren: nis des lokalen Repository lassen sich Dateien und Verzeichnissen innerhalb die Kernelmodule für TCM- und I-SCSI- CONFIG_TARGET_CORE=m des Config-FS konfiguriert der Admin das CONFIG_TCM_IBLOCK=m Transport als Root mit »make« gefolgt von TCM und die Fabric Modules. Mit den CONFIG_TCM_FILEIO=m »make install« für den laufenden Kernel quelloffenen Lio-utils [8] steht dafür eine CONFIG_TCM_PSCSI=m der eigenen Distribution übersetzen und Reihe von Python-Skripten bereit. CONFIG_LIO_TARGET=m installieren. Die Module befinden sich Wer sich keinen eigenen Kernel bauen dann in »/lib/modules/Kernel/extra/«. Kernel 2.6.39 kann oder will, findet bei der Firma Ri- Ältere Kernel vor Version 2.6.27 bekom- sing Tide [11], die das Projekt maßgeblich men so auch gleich das notwendige Con- Das in 2.6.38 enthaltene Target trägt vorantreibt, ein Backports-Repository auf fig-FS passend nachgerüstet. die Versionsnummer 4.0.0-rc7. Wenn in Basis der stabilen Release 3.5.2 des Tar- Selbstverständlich lassen sich die Kernel- 2.6.39 dann auch die ersten Fabric Modu- get für diverse Standardkernel der Distri- module auch als RPM- und Deb-Pakete les hinzukommen, dürfte das Framework butionen [12]. Damit kann er das TCM bauen, allerdings hakt das zuständige auf Version 4.1.0 klettern. Wer gerne auf nebst I-SCSI-Fabric-Modulen problemlos Skript (zumindest unter Fedora) und ver- der Bleeding-Edge-Welle reitet, checkt aus für Kernel ab Version 2.6.18 nachrüsten. langt ein wenig Starthilfe: dem Repository des Projekts von [9] den Passende Lio-utils gibt es bereits fertig mkdir -p /usr/src/redhat/SPECS aktuellen Entwicklungsstand des Kernels paketiert für Open Suse/ SLES 11 [13], mkdir /usr/src/redhat/SOURCES nebst Lio-Framework aus. Für die Lio- RHEL 6 [14] und Fedora 13 [15]. Die ln -s /usr/src/redhat /root/rpmbuild utils gibt es dort ein eigenes Repository weiteren Beispiele wie auch das virtuelle make kernel_rpms Die fertigen Pakete liegen anschließend I-SCSI FCoE FC IB Loop unter »/root/rpmbuild/RPMS/Architek- Fabric Modules tur/«. Ein beherztes »modprobe iscsi_tar- get_mod« lädt das I-SCSI-Modul nebst den darunterliegenden »target_core_ mod« und »configfs«. Das Kommando initialisiert auch gleich die im TCM ein- Generic Target Engine kompilierten Backstore-Plugins. Wer – wie oben beschrieben – den aktu- ellen Entwicklerkernel kompiliert hat, muss die Backstore-Plugins, die in die- Storage Management Engine sem Fall mit den restlichen Modulen un- ter »/lib/modules/Kernel/kernel/drivers/ tar get« liegen, separat nachladen. Der Target Core Module (TCM) Fileio Iblock Pscsi Ramdisk Config-FS-Aktivierung dient: mount -t configfs configfs /sys/kernel/U config Abbildung 1: Die modulare Architektur von Lio enthält das Storage-Management und eine Generic Target Damit sind die Verzeichnisstrukturen un- Engine mit zahlreichen Fabric Modules zum Anbinden von Clients. terhalb des »configfs«-Mountpoint sicht- 066-070_i-scsi.indd 67 03/21/11 15:19:18 05/2011 Sysadmin es für das Anlegen der I-SCSI-LUN noch eines eindeutigen I-SCSI-Node-Namens, den Iscsi-name nennt: I-SCSI iscsi-name iqn.2003-01.org.linux-iscsi.fedora13.x86:U sn.307c94a3c58e 68 Den zuvor angelegten HBA nebst Device weist der Admin jetzt bei einem I-SCSI- Target mit dem angegebenen Node Name einer Target Portal Group (TPG) 1 als www.linux-magazin.de LUN 0 mit dem Alias »lunfile« zu: lio_node --addlun iqn.2003-01.org.linuxU -iscsi.fedora13.x86:sn.307c94a3c58e 1 0U Abbildung 2: Statusausgabe des RC-Skripts für ein konfiguriertes I-SCSI-Target. lunfile fileio_0/myfileio bar und der Admin kann das Target darü- »chkconfig --add target« das RC-Skript in Die TPG stellt dabei eine Kombination ber konfigurieren, allerdings funktioniert die Runlevel. aus LUNs auf der einen Seite und Netz- das etwas umständlich. Mit dem Kompilieren und Starten der