FreeNAS als XenServer Storage einrichten

Ziel dieses Artikels ist es, eine halbwegs Quick’n’Dirty Anleitung zu bieten, wie man mit FreeNAS auf Basis einer VM ein NFS-Share und ein iSCSI-LUN bereitstellt und an XenServer ankoppelt. Dies kann im Training zur Demonstration der XenServer-Storage-Anbindung genutzt werden oder um eigene Skills zu schärfen. Für Schulungsteilnehmer ist dies sicherlich von grösserem Wert als der konfuse Umgang mit den NetApp Simulatoren…

Los geht’s!

Zuallererst das FreeNAS ISO von www.freenas.org herunterladen. Für dieses Blog und als tragbares LAB verwende ich VirtualBox von Oracle (Ex-Sun) auf einem Notebook. Hier lässt sich eine neue VM als Operating System “BSD”, Version “FreeBSD” erstellen. 512 MB Ram sollten der VM mindestens konfiguriert werden, wer ernsthaft mit FreeNAS arbeiten will, sollte besser 1 GB einplanen – offiziell sind sogar 4GB Ram als Minimalanforderung genannt. Aus Platzgründen läuft die VM bei mir mit 512 MB.

Harddisks? Gerne. Bitte beachten, dass eine dedizierte Installationsplatte benötigt wird. Diese Festplatte kann später nicht Bestandteil eines Raid werden oder anderweitig Daten beinhalten, hier wird nur FreeNAS wohnen. Die Minimalanforderung ist hier 2 GB und sollte auch nicht unterschritten werden.

Um später aber tatsächlich Storage bereitstellen zu können, sollten noch ein bis zwei weitere Hardddisks zusätzlich zur VM hinzugefügt werden. Eine einzelne Disk würde reichen, dann lässt sich allerdings nicht mit den Raid-Optionen experimentieren, ich wähle daher drei Festplatten mit einer Grösse von jeweils 12 GB (dies wird genug für meine kargen Lab-Bedürfnisse sein). Alle drei Festplatten hänge ich in der VM an einen virtuellen SCSI Controller vom Typ Lsilogic.

Dann wird von der FreeNAS 8 ISO gebootet. Im Setup wähle ich die Option 1 zur Installation.

image

Danach wähle ich die 2 GB Festplatte als Installationsziel aus – man beachte, dass aufgrund der FreeBSD Plattform hier nicht die Linux-typischen Festplattenbezeichnungen /dev/sda etc auftauchen!

image

Nach der obligatorischen Warnmeldung über möglichen Datenverlust auf dem Zieldatenträger startet die Installation. Nach knapp einer Minute kommt die Erfolgsmeldung und die Bitte um einen Reboot. Die Installations-CD kann nun wieder ins Archiv verbannt werden.

Nach dem Reboot wird zunächst die Netzwerkkarte konfiguriert – die weitere Konfiguration erfolgt dann über den Webbrowser (habe übrigens bislang nur schlechte Erfahrungen mit dem IE 9 an dieser Stelle gemacht, Firefox 4 hingegen funktioniert durchgehend).

Also nach dem Reboot erstmal Option 1 wählen:

image

Ich lege die IP Adresse auf 192.168.88.30 fest, diese Adresse wird später zur weiteren Konfiguration per HTTP angesprochen.

image

Ende des Text-basierten Setups, weiter geht es im Browser – als Logon kann der Benutzer admin mit dem Kennwort freenas verwendet werden.

Nun wird der Storage vorbereitet, dazu im Hauptmenü erst einmal das Storage-Icon anklicken:

image

Dann auf das linke Icon (create volume) klicken:

image

UFS und ZFS bieten unterschiedliche Optionen an, abhängig von der Anzahl der ausgewählten Festplatten. Um es hier etwas simpler zu halten (und weil sich bei mir in Wahrheit sowieso alles auf der Notebookplatte abspielt) wähle ich die drei x 12 GB Disks aus, entscheide mich für Suns ZFS (welches Raid-Funktionen ins Dateisystem integriert) und wähle Raid-Z als Raid-Level aus. Danach mit “Add Volume” bestätigen. ACHTUNG! Es gibt keine weitere Warnung vor dem Löschen der ausgewählten Festplatten.

2011-08-24 22h24_20

Der neue Zustand sollte nun wie folgt aussehen:

2011-08-24 22h27_47

Wer fragt sich nun, warum aus 3 x 12 GB nur knapp 20 GB netto-Platz resultieren? Raid-Z bietet ähnlich wie Raid5 die Speicherung von Prüfsummeninformationen, daher verliere ich die Kapazität einer Festplatte. Zudem verliere ich 2 GB pro Disk als Swap-Space an das System (einstellbar unter System, Settings, Advanced => Swap Size).

Als nächster Schritt kommt nun die Anlage eines Datasets (bei ZFS so üblich, soll hier nicht weiter thematisiert werden. Wem es hilft: wäre ZFS vergleichbar mit LVM, dann haben wir soeben eine VolumeGroup angelegt (heisst bei ZFS Pool), und legen nun ein Logical Volume an (heisst bei ZFS Dataset).

image

Ich benenne das Dataset als “dataset1”, alle anderen Optionen bleiben auf dem Ausgangswert stehen.

2011-08-24 22h45_31

Nun werden wir die NFS Share für den XenServer einrichten. Dazu bitte Sharing, Unix und “Add Unix Share” anklicken:

image

Das Comment-Feld ist lediglich ein Bezeichner, mit dem man seine Shares auf dem FreeNAS hinterher leichter verwalten kann. XenServer benötigt später den Volume-Path für den Zugriff. Als “Maproot User” sollte hier “root” eingetragen werden, und bitte nicht den Haken bei “All Directories” vergessen, sonst kann das Storage Repository zwar von XenServer angelegt aber nicht benutzt werden.

2011-08-24 23h01_52

Mit OK bestätigen, danach ist die Share / der Export eingerichtet. Nun müssen wir noch den NFS-Dienst starten, dies geschieht in der Kategorie “Services”:

2011-08-24 23h13_14

Dieser NFS-Export (“Share”) kann ab jetzt vom XenServer benutzt werden. Szenenwechsel: XenCenter, New Storage, NFS VHD

2011-08-24 23h09_10

Als ShareName ist in diesem Fall 192.168.88.30:/mnt/vol1/dataset1 anzugeben. Voilà, unser NFS Storage ist fertig.

Wer noch nicht zu müde ist, kann im weiteren Verlauf noch ein iSCSI LUN einrichten. Sämtliche Optionen hierzu sind allerdings nicht wie erwartet unter dem Menüpunkt “Sharing” sonder unter “Services” untergebracht.

2011-08-24 23h39_39

Hier ist der iSCSI Dienst zunächst einzuschalten und dann mit dem Schraubenschlüssel-Symbol daneben zu bearbeiten.

Als erstes legen wir ein Portal an, auf dem dann später nach Targets und LUNs gesucht werden kann.

image

Wer mehrere Netzwerkkarten besitzt und konfiguriert hat, kann durch die IP 0.0.0.0 auch eine Bindung des Portals an alle IPs des Systems erreichen. Ich gebe stattdessen die konfigurierte IP der VM an.

2011-08-24 23h44_37

Nun fehlt die Definition der “Initiators”, die später auf unsers “Targets” zugreifen dürfen, streng genommen sind hier nun die IQNs (=iSCSI-Namen) der XenServer gefragt (können im XenCenter auf der General-Lasche der jeweiligen Hosts eingesehen und verändert werden). Mir reicht für Trainingszwecke der freie Zugriff für alle (ALL).

image

2011-08-24 23h49_16

Nun legen wir zwei Dinge an, zunächst unabhängig voneinander, später werden sie miteinander verknüpft: ein Target und ein “extent”, also eine LUN. Zuerst das Target:

image

Das Target braucht vor allem einen Namen (target1 bei mir), einen Typ (disk) und die Zuordnung zu einem Portal, über das sich das Target ansprechen lässt. Ausserdem wird hier geregelt, welche iSCSI Geräte (initiators) sich mit dem Target verbinden dürfen (Alle, wie oben geregelt).

2011-08-24 23h52_42

So, nun fehlt noch der Speicherplatz, den wir über dieses Target als iSCSI LUN zur Verfügung stellen wollen. FreeNAS nennt das hier “extent”:

image

Das Extent bekommt einen Namen zugewiesen, bei dem Pfad zum extent handelt es sich in Wahrheit um eine Datei innerhalb eines Dataset, die dann von aussen wie eine LUN angesprochen werden kann.

Als Pfad gebe ich somit das zuvor erstellte Dataset an, ergänzt um den gewünschten Dateinamen des extents, alternativ kann für iSCSI auch ein eigenes Dataset erstellt werden. Bei der Grössenangabe können die gebräuchlichen Abkürzungen wie MB/GB/TB benutzt werden.

2011-08-24 23h59_10

Nun kommt schon fast der Schlussstein, extent und target werden zusammengebracht:

image

ACHTUNG: Laut einem Hinweis im Readme zur Version 8 (stand 24.08.2011) hat FreeNAS noch Probleme damit, mehr als eine LUN/extent pro Target zu präsentieren. Man ist also halbwegs auf der sicheren Seite, wenn man pro LUN/extent ein eigenes Target anlegt.

2011-08-25 00h02_08

Szenenwechsel: Im XenCenter kann nun der bereitgestellte Speicherplatz als iSCSI Storagerepository angelegt werden. Der Weg hierhin ist XenCenter, New Storage, Software iSCSI

image

Hier ist nun unter Punkt 1 die Adresse der FreeNAS VM anzugeben (dies ist das konfigurierte Portal), über Discover IQNs (Punkt 2) können wir dann das Target finden (oder mehrere), sowie über Discover LUNs (Punkt 3) die konfigurierten extents auswählen. Sofern dieser Storage noch nie in Benutzung durch XenServer war, erscheint noch eine Meldung, die abfragt, ob die LUN formatiert werden darf. ACHTUNG, auch hier droht Datenverlust, wenn man eine falsche LUN gewählt hat…(irrelevant in unserem kleinen heile-Welt-Szenario).

Presto! XenServer verfügt nun über ein weiteres Storage Repository.

Kommentare

Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

Auf NFS Shares mit Windows zugreifen

Citrix Default Passwords

Lokales ISO Repository im XenServer anlegen