Infiniband und VLAN-IDs

Moin,

lange ist es her aber ich hatte soviel um die Ohren das ich leider nicht zum schreiben kam. In den letzten Wochen habe ich ein sehr schönes Projekt angefangen. Ich habe mit Infiniband experimentiert und zwar als Ersatz für Fibre Channel.

Vorteil ist ja das ich Infiniband im Gegensatz zu FibreChannel auch als Netzwerk verwenden kann um Daten zwischen den Maschinen auszutauschen. Ich werde in den nächsten Tagen noch mehr darüber berichten. Aber eine Frage die sehr oft aufkommt in Foren ist, wie man unter Infiniband mit VLANS umgehen kann. Nun dazu muss man wissen das Infiniband mit Partitionen arbeitet. Diese kann man als VLANS im Ethernetbereich ansehen. Damit der Subnetmanager den TCP Header richtig auswerten kann muss man eine Partition mit der selben HEXZAHL erstellen wie die VLAN-ID. Also aus einem VLAN mit der ID 1080 wird dann eine Partition 438. Und schon werden die VLANS sauber durchgeleitet. Bei mir unter VMWARE ESXi läuft das Super.

In den nächsten Tagen werde ich noch einige dinge zu unserem neuem Projekt schreiben. Hier haben wir Infiniband unter ESXi mit SRP an unsere Solaris Stroageserver angebunden. Der Wahnsinn in Geschwindigkeit und Latenz.

MfG

Thomas

 

VMWare OVA export verkleinern…

Mir ist es nun schon häufiger passiert das ich ein schönes VM Image erstellt habe und der export zu einer OVA auf einmal riesig wurde. Mein aktuelles Beispiel, die /root Partition war im System 3,3 GB groß und der export war auf einmal 15 GB groß.
Ich hatte hier einige Dateien vom System gelöscht die aber anscheinend im Dateisystem nur markiert wurden. So das der Export diese noch als existent betrachtete.
Ein kleiner Trick schafft hier Abhilfe, wir überschrieben einfach den gesamten Speicherplatz mit Zeros. Unter Linux genügt dort ein

dd if=/dev/zero of=/zerofile
sync
rm -rf /zerofile

Das System sollte damit relativ schnell voll werden. Am besten den gesamten leeren Speicher auffüllen und dann löschen.

Unter Windows kann man dafür das tool nullfile.exe oder sdelete.exe verwenden.
Wenn man nun das System exportiert wo ist der Unterschied schon gewaltig. Vorher 15 GB nun noch grademal 1,2 GB durch Kompression.

Schon witzig das man erst etwas richtig voll machen muss um es dann kleiner zu bekommen ^^

ZFS-Volume und ISCSI / FC Target LUN erweitern

Ich musste heute bei uns im RZ mal wieder ein Volume vergrößern, da ein Kunde mehr Speicher nutzen wollte. Nun dacht eich mir ich poste hier mal kurz wie das sehr einfach geht. Wenn man bei google schaut sieht man immer nur wie man weitere Platten in einen POOL bringen kann um diesen zu erweitern. Jedoch hat man manchmal einfach nur das Volume für das ISCSI oder FibreChannel Target zu klein gewählt. Das Beispiel hier läuft unter allen gängigen Solaris Versionen und mit COMSTAR mit ZFS als Dateisystem.

In meinem Beispiel lautet der Name des POOLS backup und das Volume backup1

Zuerst ein paar Daten für uns vom ZFS System

zfs get volsize,available backup/backup1
NAME PROPERTY VALUE SOURCE
backup/backup1 volsize 1,76T local
backup/backup1 available 2,87T -

Hier sieht man das unser ZFS-Volume 1760GB hat und wie auf dem POOL insgesamt 2870GB nutzen können.

Nun erweitern wir unser ZFS-Volume:

zfs set volsize=2830G backup/backup1

und überprüfen unseren Befehl:

root@storage3:# zfs get volsize,available backup/backup1
NAME PROPERTY VALUE SOURCE
backup/backup1 volsize 2,76T local
backup/backup1 available 2,87T -

Hier kann es zu typischen rundungsdifferenzen kommen.

Nun haben wir unser ZFS-Volume erweitert. Jedoch hat dies noch nicht unsere LUN mitbekommen. Wie wir hier sehen können…

root@storage3:# sbdadm list-lu

Found 1 LU(s)

GUID DATA SIZE SOURCE
-------------------------------- ------------------- ----------------

600144f0e8154d00000050ba48140001 1610612736000 /dev/zvol/rdsk/backup/backup1

Dies erweitern wir jetzt online:

root@storage3:# sbdadm modify-lu -s 2830g 600144f0e8154d00000050ba48140001

Und schon ist unsere LUN in der richtigen Größe vorhanden

root@storage3:/home/storage# sbdadm list-lu

Found 1 LU(s)

GUID DATA SIZE SOURCE

-------------------------------- ------------------- ----------------

600144f0e8154d00000050ba48140001 3038689361920 /dev/zvol/rdsk/backup/backup1

Aber ACHTUNG nicht jedes Dateisystem mag so etwas und die Verkleinerung ist nie eine gute Idee. Wir haben auf unseren LUNS VMFS Systeme laufen von VMWARE welche das ganze verkraften. Hier muss dann noch dem System die Erweiterung beigebracht werden.

Aber generell gilt auch hier, immer mit VORSICHT und mit sauberen BACKUP vorher.

Bei fragen könnt ihr euch gerne melden…

FibreChannel Target unter Solaris 11

Solaris ist ein wirklich gutes Enterprise System welches super stabil läuft. Jedoch muss man sich erst an die Konfiguration gewöhnen. Das System bietet aber die super Möglichkeit ein einen Server als FC-Target laufen zu lassen. Ein FC-Target ist dabei der Anbieter von Speicher. In Kombination mit Multipath kann man damit ein schnelles ausfallsicheres Storagesystem erstellen. Durch ZFS ( wie ich finde eines der besten Dateisysteme ) ist dieses Storage in meinen Augen gleichwertig mit vielen teuren Lösungen. Wer die shell nicht scheut kann sich so ein sehr preiswertes System aufbauen.

Ich finde ja das einige Storageanbieter die Preisschraube doch etwas zu heftig einsetzen. Ich habe wie hier beschrieben mehere Systeme im Rechenzentrum bei uns im Einsatz und die Installation hat nur ca. 1 Stunde gedauert. Die Server stellen Speicher für einen großen VMWARE-Cluster und mehrere Hosts zur Verfügung. Bis heute mehr als stabiel und schön schnell.

Als erstes muss man sich für eine Solaris Version entscheiden. Leider gibt es opensolaris nicht mehr wirklich aktuell und die Express Versionen sind von Oracle eingestampft. Daher kann man openindiana nehmen. Dies wird übrigens in leicht veränderter Form auch bei vielen kommerziellen Storageanbietern genutzt. Zum testen könnt ihr jedoch auch direkt Solaris 11 von Oracle nehmen.

Meine Konfiguration besteht aus:

Supermicro SC846 24 Einschubgehäuse mit SAS Anschluss und SAS Expander

1-2 Emulex FC Enterprise Adapter. Ich Verwende immer gerne den LPe11002 dieser läuft sehr gut und ist schon sehr Preiswert bei Ebay zu bekommen. Man kann jedoch auch Qlogic Adapter nehmen. Dies habe ich persönlich aber noch nicht gemacht. Die Kompatibilität zu COMSTAR muss gegeben sein. Dies ist das System welches unseren FC Adapter zu einen Target macht.

LSI M1015 Raidcontroller im IT Modus ( Ist für ZFS ideal sowas und als IBM Version die man umflashen kann sehr preiswert bei Ebay zu bekommen )

Supermirco X8DT3-LN4F (schönes Mainboard mit IPMI Schnittstelle und 4 Lanbuchsen. Damit kann man dann auch mal ISCSI schön anbieten ) Auch mit Onboardraid welches man nehmen kann da auch IT Modues unterstützt wird.

48 GB Ram und eine Intel 5620 CPU. Dazu dann noch 2 SSD Platten a 30 GB für das System und nochmal 2 x 256GB M4 Cruacial SSD’s als cacheplatten. Als Tipp bitte bei RAM-Speicher nicht geizen. Und als 2ter Tipp mehr RAM. Es gibt nicht besseres als ordentlich Speicher bei ZFS. Dann haben wir noch 24 TB Raidplatten von WD genommen. Macht euch selbst die Freude und investiert die Paar mehr Euro in eine Raidedition. Diese Platten beherrschen ein paar sinnvolle Optionen die Consumer Platten nicht besitzen, ausserdem sind diese für den Dauereinsatz zugelassen. Bei den Setup hier reichen SATA Platten da diese nur an einen Raidcontroller angeschlossen werden. Ich habe auch Systeme mit 2 Raidcontrollern im Einsatz nur muss hier auf SAS Platten gesetzt werden um 2 Pfade aufbauen zu können. Dies kann halt SATA nicht!!! Ok lasst uns loslegen…

Wichtig: Bitte beim Einsatz von ZFS niemals einen Raidcontroller nehmen und ein Raid darauf einrichten!!! ZFS ist optimiert selber sog. RAIDZ einzurichten und zu betreuen. Durch den Einsatz des Raidcontrollers gehen viele sehr nette Funktionen nicht mehr richtig.

Als erstes installieren wir also Solaris, dabei konfigurieren wir gleich das Netzwerk mit. Bei der installation kann man leider kein (Software) Raid einrichten. Dies muss danach erfolgen. Ich verwende immer ssd Platten da wir wenig Speicherplatz benötigen und wir dort keine beweglichen Teile haben. Das System wird immer auf einen Pool namens rpool installiert. Diesen rpool kann man sehr einfach in ein Raid umwandeln siehe:

http://docs.oracle.com/cd/E19963-01/html/821-1448/gjtuk.html oder http://constantin.glez.de/blog/2011/03/how-set-zfs-root-pool-mirror-oracle-solaris-11-express

Nun ist das System ausfallsicher. Bitte achtet darauf immer den Grub ( Bootloader ) auch auf die 2te Platte zu schreiben. Geht ganz einfach z.B über

installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c7t1d0s0

So nun installieren wir noch einige Pakete um unser System in ein Storage umzuwandeln. Wir benötigen hier vorallem das Paket COMSTAR. Dies ermöglicht uns das Setup als FC Target oder aber auch als ISCSI Target. Leider wird dies nicht mehr so aktiv weiterentwickelt.

pkg install storage-server

Nun haben wir alle Pakete installiert. Kommen wir zum konfigurieren des FC-Adapters zum Target-Device.

nano /kernel/drv/emulex.cfg

Dort suchen wir die Zeilen

target-mode=0; und ändern diese nach target-mode=1; 

ddi-forceattach=0 und ändern diese nach ddi-forceattach=1

nun aktivieren wir den COMSTAR Service

svcadm enable stmf

Nun ist guter Zeitpunkt das System neu zu starten.

shutdown -y -i6 -g0

Nach dem neutstart solltet ihr bei der eingabe von

fcinfo hba-port

etwas ähnliches wie folgendes sehen, je nach Anzahl der Anschlüsse auch einige mehr:

HBA Port WWN: 10000000c97b5ea4
Port Mode: Target
Port ID: 611500
OS Device Name: Not Applicable
Manufacturer: Emulex
Model: A8003A
Firmware Version: 2.82a4 (Z3F2.82A4)
FCode/BIOS Version: none
Serial Number: MY10826ECA
Driver Name: emlxs
Driver Version: 2.60k (2011.03.24.16.45)
Type: F-port
State: online
Supported Speeds: 1Gb 2Gb 4Gb
Current Speed: 4Gb

Wichtig ist hier der Port Mode, dieser muss auf Target stehen. Sollte dies nicht der Fall sein, so müsst ihr nochmal den Adapter checken ob dieser auch mit COMSTAR läuft. Solltet ihr mehrere FC/Raidadpater oder mehrere Anschlüsse haben so lohnt es sich Multipath zu aktivieren. Dazu einfach folgendes eingeben:

multipath aktivieren  stmsboot -e ( Achtung Systemneustart!!! )

Nicht wundern danach dauert das booten etwas länger ^^

So nun ist das schlimmste schon eigentlich hinter uns. Wir erstellen nun einen ZPOOL.  In meinem Beispiel wird es ein POOL namens tank.

zpool create -f tank mirror c7t1d0 c7t2d0 mirror c7t3d0 c7t4d0 spare c7t5d0

Ich verzichte hier jetzt mal auf die Eigenschaften von ZPOOL und Co. Da gibt es wirklich super Anleitungen im Web. Solltet ihr es jedoch unter VMWARE wie ich einsetzen. So kann ich wirklich empfehlen ein mirror pool zu erstellen. Der macht am meisten Spass. Ok wenn ihr den POOL erstellt habt erstellen wir nun ein ZFS-Volume drauf.

zfs create -V 1000G tank/lun_0

Nun erstellen wir uns eine LUN mit der wir das Volume tank/lun_0 ansprechen können.

sbdadm create-lu /dev/zvol/rdsk/tank/lun_0
Created the following LU:

GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f0e8efcb000000dfds2bcc60001  10737418240          /dev/zvol/rdsk/tank/lun0

Ab jetzt gibt es 2 mögliche Wege diese LUN zur Verfügung zu stellen. Einmal alles Manuel mit mehr Möglichkeiten der Rechtevergabe wer was wo sehen darf. Oder halt der sehr sehr einfache weg allen einfach alles zu erlauben über

stmfadm add-view 600144f0e8efcb000000dfds2bcc60001

Beim anderen ( von mir empfohlene Weg ) brauchen wir noch die WWN von unseren Adaptern um eine Targetgroup zu bilden.

fcinfo hba-port | grep "HBA Port WWN"
HBA Port WWN: 10000000c97b5ea4
HBA Port WWN: 10000000c95fb27c

Durch eine Targetgroup geben wir welche Adpater unsere LUN anbieten dürfen.

stmfadm create-tg targetgroup1

Nun fügen wir unsere Adapter der Targetgroup zu…

stmfadm add-tg-member -g targetgroup1 wwn.10000000c97b5ea4
stmfadm add-tg-member -g targetgroup1 wwn.10000000c95fb27c

Sollte es hier zu einer Meldung kommen wie „stmfadm: STMF target must be offline“ muss man den Dienst kurz ausschalten:

svcadm disable svc:/system/stmf:default

und die Adapter nochmals hinzufügen. Danach den Service wieder neu starten:

svcadm enable svc:/system/stmf:default

Jetzt erstellen wir uns noch eine Hostgruppe. Dies sind die Clients denen es erlaubt ist auf die LUN zuzugreifen.

 stmfadm create-hg hostsgruppe1

Nun kommen in diese Hostgruppe noch die Hosts. Die WWNs der Adapter müsst ihr über den Host oder den Switch rausbekommen.

# stmfadm add-hg-member -g hostgruppe1 wwn.2100001b32da0003

Jetzt kommen wir zum Finale. Wir erstellen eine View die alles zusammensetzt und regelt welche Hostgruppe auf welche LUN’s zugreifen darf usw…

# sbdadm list-lu

Found 1 LU(s)

GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f0e8efcb0000004e52bcc80001  107374182400          /dev/zvol/rdsk/tank/lun_0

Die GUID ist das was wir jetzt benötigen um das View zu erstellen:

stmfadm add-view -h hostgruppe1 -t targetgruppe1 600144f0e8efcb0000004e52bcc80001

Dies bedeutet sozusagen das alle Hosts aus hostgruppe1 über die Adapter in der targetgruppe1 auf die LUN 600144f0e8efcb0000004e52bcc80001 zugreifen dürfen.

Nun ist das Target für alle sichtbar und kann eingehangen werden. Die Rechtevergabe ist zwar generell etwas aufwändiger macht jedoch schon bei mittleren installationen durchaus sinn.

Als letzten Schritt können wir nun noch das Bootenviroment sichern. Damit haben wir immer einen Snapshot unserer Installation.

beadm list
beadm create -e solaris11 solaris-storageserver

Das wars dann auch schon. Ich hoffe ich konnte euch etwas helfen. Ich finde halt FC besser geeignet für VM Umgebungen als ISCSI wenn viele VMs darauf laufen. Jedoch kann man hier auch noch darauf zurückgreifen.

Über ein Feedback euererseits würde ich mich freuen.

Hier noch ein paar nette Links wo man noch gute Infos herbekommt:

http://www.juhonkoti.net/2012/01/02/building-a-85tb-cheap-storage-server-with-solaris-openindiana ( Sehr nett mit diskpy )

http://constantin.glez.de Nette Seite mit vielen Infos zu ZFS und Co…

Zur Info:

1. Bei einigen internen Tests habe ich Probleme mit Solaris 11.1 und VMWARE. Hier bricht der Durchsatz irgendwann extrem ein und läuft nur noch im KB Bereich. Es scheint als Wenn die LUN ein falschen Befehl bekommt.

2. Am Switch muss unser Storage im F Mode gefahren werden!!! Sonst wird es nicht erkannt…

VSphere 5 ESXi Server patchen/updaten

Oft vergessen oder nicht drum gekümmert, das einspielen von Patches unter einem ESXi Server. Bis zur Version 4 konnte man das ganze sehr schön mit dem UpdateManager erledigen. Ab 4.1 muss dies per „Hand“ passieren. Hier eine kurze Beschreibung wie man das ganze unter ESXi 5 machen kann. Dies ist ein Weg, jedoch gibt es mehrere Möglichkeiten, wie so oft 😉

1. Vorbereitung

Zuerst muss überprüft werde ob es Patches gibt. Dazu geht man auf http://www.vmware.com/patchmgr/findPatch.portal und sucht dort für seine Version die letzte Version vom Patch, da sie kumulativ sind. Dieser kann jetzt runtergeladen werden und muss auf einen Datastore des ESXi Hosts gelangen. Als Tipp von mir, man kann sich auch den LINK kopieren und auf der SSH-Konsole per wget direkt downloaden… Dazu muss jedoch das https entfernt werden. Für einen Server noch gut verwendbar, jedoch langwierig.

WICHTIG: Versetzen Sie Ihren VMWare ESXi 5.0.0 in den Wartungsmodus. Das geschieht mittels Rechtsklick auf den Host-> „In den Wartungsmodus wechseln“.

Updates einspielen

Nun können wir uns per ssh mit dem Server verbinden, wenn nicht bereits erledigt und geben dort folgenden Befehl ein:

esxcli software vib update --depot /vmfs/volumes/ds1/patch.zip

Der Pfad zum Debot muss hier natürlich noch an eure Umgebung angepasst werden. Der Befehl hie Rist sehr mächtig und hat noch weitaus mehr Funktionen die sehr interessant sind. So kann man den Host automatisch in den Wartungsmodus bringen usw… Bei den meisten Updates muss man den Host danach neu starten. Nach dem Neustart muss nur noch der Wartungsmodus beendet werden und die virtuellen Maschinen neu gestartet.

Unter Umständen ist es nun nötig die VMWare Tools von Hand zu aktualisieren. Dies sollte auch zeitnah passieren, da diese sonst Probleme verursachen könnten.

 

Wie bereits erwähnt ist dies nur ein Weg um Patches/Updates auf einen ESXi Server zu bringen. Man kann auch die VMWare vSphere CLI  installieren und spart sich so den Umweg über die SSH Konsole. Der eine mag es so der andere so… Ich nehme halt immer meine gute alte SSH Konsole…^^

 

 

 

Public key auth auf VMWare ESXi 4

Ich nutze sehr gerne SSH Scripte um Aktionen auf unseren Servern auszuführen.

Jedoch ist dafür ein Zugang ohne Passwort nötig, der ESXi 4 Server sieht dafür von Haus aus jedoch keine Möglichkeit vor. Nach einem Neustart hat er die Einstellungen vergessen.

Mit einem kleinen Trick kann man ihm es jedoch beibringen. Auf den nächsten Zeilen erfahrt ihr auch wie es geht.

Zuerst muss man natürlich den SSH Dämon auf dem ESXi Server aktivieren. Bitte meldet euch danach gleich per SSH und Passwort auf dem Server an.

Das Homeverzeichnis vom Benutzer root ist nicht wie üblich unter /root zu finden sondern liegt direkt im root des Dateisystems, also / selbst.

Man könnte das Homeverzeichnis von root auch umlegen, dazu muss die Datei /etc/passwd editiert werden. Solltet ihr dies machen so ändert bitte die Pfade bei euch um.

Wir brauchen ein Verzeichnis für die Authkeys. Standardmässig ist dies im .ssh Verzeichnis des Benutzers zu finden. Also erstellen wir für root dieses und erstellen auch gleich eine Datei namens authorized_keys.

mkdir /.ssh
touch /.ssh/authorized_keys
vi /.ssh/authorized_keys

Hier könnt ihr nun die Schlüssel eingeben welchen es erlaubt sein soll sich per AuthKey zu verbinden. Ihr könnt sie aber auch einfach kopieren. Ich nutze auf meinem Debian System immer ssh-copy-id.

Damit der ESXi Server diese Einstellung auch nach einem Systemneustart beibehält kommt nun der anfangs erwähnte Trick zu tragen. Wir erstellen ein kleines Archiv mit unseren Einstellungen und auch noch zusätzlich von den Homeverzeichnissen der Benutzer die einen SSH-Key bekommen sollen. Standardmässig haben die Benutzer die der ESXi erstellt kein Homeverzeichnis, dies muss jedesmal in der /etc/passwd angepasst werden! Wir geben nun folgendes auf der Konsole ein:

tar -C / -czf "/bootbank/home.tgz" /.ssh /home

Danach editieren wir ‚/bootbank/boot.cfg‘ und fügen den Parameter „— home.tgz“

vi /bootbank/boot.cfg

Die Datei ‚/bootbank/boot.cfg‘ sollte dann ungefähr so aussehen:


kernelopt=
modules=vmk.gz — sys.vgz — cim.vgz — oem.tgz — license.tgz — mod.tgz — home.tgz
build=4.0.0-208167
updated=1
bootstate=0

Bitte beachtet, das wenn ihr neue Schlüssel hinzufügt oder neue Benutzer einen SSH-Key erhalten, ihr das home.tgz neu erstellen müsst!!!