Kleine und große Linux AHAs
ubuntuusers.de
Home NAS mit iSCSI – Initiator (Teil 2/3)
06. Apr
In Teil I (hier) hatten wir die Einrichtung des Servers inkl. iSCSI-Target gezeigt. Teil II zeigt die Einrichtung des Initiators – des Clients.
Pakete
Wir gehen von einem Ubuntu Karmic (9.10) aus. Um iSCSI nutzen zu können wird das Paket open-iscsi benötigt.
apt-get install open-iscsi
Konfiguration
Nach der Installation findet sich ein neues Verzeichnis unter /etc/ -> iscsi – dort befinden sich die Konfigurationsdateien …
initiatorname.iscsi
Dort steht quasi der Name des Initiators. Unter Debian wird bei der Installation eine ID generiert, die eindeutig ist. Möchte man den Client jedoch eindeutig zuordnen können, so sollte man den Namen in etwas “sprechendes” anpassen.
iscsid.conf
In dieser Datei werden die Defaults definiert, die von dem Daemon am Ende genutzt werden. Um mit unserer Serverseitigen Konfiguration zu arbeiten funktioniert die folgende:
node.startup = automatic node.conn[0].startup = automatic node.session.auth.authmethod = CHAP node.session.auth.username = linux-aha node.session.auth.password = secret node.session.auth.username_in = linux-aha node.session.auth.password_in = password discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = linux-aha discovery.sendtargets.auth.password = secret node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.login_timeout = 15 node.conn[0].timeo.logout_timeout = 15 node.conn[0].timeo.noop_out_interval = 5 node.conn[0].timeo.noop_out_timeout = 5 node.session.err_timeo.abort_timeout = 15 node.session.err_timeo.lu_reset_timeout = 20 node.session.initial_login_retry_max = 8 node.session.cmds_max = 128 node.session.queue_depth = 32 node.session.iscsi.InitialR2T = Yes node.session.iscsi.ImmediateData = No node.session.iscsi.FirstBurstLength = 262144 node.session.iscsi.MaxBurstLength = 16776192 node.conn[0].iscsi.MaxRecvDataSegmentLength = 131072 discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768 node.session.iscsi.FastAbort = Yes
Damit ist die Konfiguration bereits erledigt.
Discover
Um das ganze ans Rennen zu bringen muss man einen sog. Discover ausführen. Das ist vergleichbar mit einem SCSI Busscan. Da wir die Default Konfiguration für open-iscsi bereits angepasst haben, kann man den Discover Befehl auf das nötigste reduzieren:
root@machine$: iscsiadm -m discovery -t sendtargets -p <iSCSI Targethost> iqn.2008-04.local.home:SecureISCSI
So oder so ähnlich sollte der Output aussehen. Es sollte also – vergleichbar mit einem SCSI Busscan ein Device gefunden werden.
Mit dem Discover wurde nun unterhalb von /etc/iscsi/nodes die Konfiguration für dieses Device angelegt. Dadurch ist das Device dem Daemon bekannt und kann beim Systemstart gesucht und ggf. verbunden werden. Nach dem Discover genügt ein restart des Daemons um das Device im System verfügbar zu machen.
/etc/init.d/open-iscsi restart
Platte da ?
Nach dem restart sollte die neue Platte vorhanden sein. Am einfachsten hilft ein “fdisk -l” dabei, die neue Platte zu finden.
Home NAS mit iSCSI – Server & iSCSI Target (Teil 1/3)
05. Apr
Zuhause in irgendeiner Art ein System zu haben um Daten zu speichern, ist mittlerweile nichts besonderes mehr. Die einen nutzen diese Speicher um der Familie gemeinsamen Zugriff zu gewähren, die anderen um Daten – beispielsweise vom Laptop – zu sichern. Wenn das NAS dann auch gespiegelte Festplatten besitzt dürfte eigentlich nicht viel passieren.
Man sollte sich wirklich einmal Gedanken darum machen was los ist, wenn man die Daten des Laptops oder des Rechners zu Hause verliert – zum Beispiel durch einen Festplattendefekt. Also mir persönlich ist das keine angenehme Vorstellung. Deshalb habe ich mir auch das System aufgebaut, welches hier beschrieben wird. Ich finde es wirklich einfach zu benutzen und es erfüllt seinen Zweck mehr als manche gekauften Lösungen.
Warum überhaupt iSCSI ?
Wenigstens unter Linux (mit anderen OSs kenne ich das nicht) hat das ganze den Charme, das man die per iSCSI an gereichte Festplatte (oder das Volume) als normale Festplatte sieht – als Blockdevice. Das ist ein Unterschied zu beispielsweise NFS oder Samba. Des Weiteren ist iSCSI, sofern man eine passende Netzwerkgeschwindigkeit hat, auch recht schnell. Um das ganze recht performant nutzen zu können sollte man also wenigstens über Gigabit Ethernet verfügen. Damit ist auch schon ein weiterer Vorteil von iSCSI angesprochen, der es gerade auch in Firmen interessant macht – man benötigt “nur” Netzwerk. Keine spezielle Verkabelung oder ähnliches. In Firmen würde man allerdings das iSCSI Geschäft über zwei (redundante) dedizierte Netzwerkinterfaces laufen lassen.
Der “Server”
Der “Server” besteht aus einem PC, der mit mindestens zwei Festplatten ausgestattet ist. Server schreibe ich in Anführungszeichen, da die Hardware natürlich keine Serverhardware ist und mein System auch nur dann läuft, wenn es gebraucht wird. Des Weiteren ist an dem PC ein USB Stick angeschlossen, der mit >4GB das Betriebssystem beherbergt. Der USB Stick deshalb, da man auf diese Weise die beiden vorhandenen Festplatten komplett für das Raid nutzen kann und nicht einen Teil für das OS verliert. Man kann es natürlich auch anders machen – ich habs halt so gemacht.
OS
Auf dem USB Stick wird das OS installiert. Dazu bootet man beispielsweise mit einer Ubuntu Live CD (ich habe den Ubuntu Server genommen) und installiert anstatt auf die Platten auf den Stick. Da wir lediglich die eingebauten Festplatten als iSCSI bereitstellen möchten, sind während der Installation keine besonderen Pakete nötig – einfach ein Minimalsystem installieren. Auf die Installation an sich gehe ich hier nicht weiter ein.
Raid
Nachdem das System installiert ist und erfolgreich von dem USB Stick bootet, kann man das Raid Device erstellen. Dazu müssen die Tools installiert werden:
apt-get install mdadm
Nach der Installation kann mit Hilfe von
mdadm --create /dev/md0 --level=1 raid-devices=2 /dev/sda1 /dev/sdb1
das Raid Device angelegt werden. In dem Beispiel würde das Device aus /dev/sda1 und /dev/sdb1 bestehen. Damit auch bei Problemen nichts falsch läuft, sollte man die Raid Konfiguration in die /etc/mdadm/mdadm.conf eintragen. Das sieht beispielsweise so aus:
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=1bc8e95a:40e106f6:7756543e:82c7b110 devices=/dev/sda1,/dev/sdb1
Bereits nach dem …create Befehl beginnt das System die Platten zu synchronisieren. Diesen Vorgang sollte man abwarten, bevor man die Platten benutzt.
iSCSI Target
Um iSCSI nutzen zu können, muss das Paket iscsitarget installiert werden.
apt-get install iscsitarget
Nach der Installation findet sich unter /etc/ eine neue Konfigurationsdatei -> ietd.conf. Diese ist für die Konfiguration des iSCSI Target (-> Server) verantwortlich. Um unseren Server einzurichten verwenden wir einfach folgende Konfiguration:
Target iqn.2008-04.local.home:SecureISCSI IncomingUser linux-aha secret OutgoingUser linux-aha password Lun 0 Path=/dev/md0,Type=fileio Alias SecureISCSI MaxConnections 1 InitialR2T Yes ImmediateData No MaxRecvDataSegmentLength 8192 MaxXmitDataSegmentLength 8192 MaxBurstLength 262144 FirstBurstLength 65536 DefaultTime2Wait 2 DefaultTime2Retain 20 MaxOutstandingR2T 8 DataPDUInOrder Yes DataSequenceInOrder Yes ErrorRecoveryLevel 0 HeaderDigest CRC32C,None DataDigest CRC32C,None Wthreads 8
Mit dieser Konfiguration ist iscsitarget fertig konfiguriert und nach einem reload des Dienstes steht die Platte zur Verfügung.
Wie man sieht gibt es unter iSCSI auch eine – naja – Authentifizierung. Das ganze als sicher zu bezeichnen würde ich mich nicht wagen, allerdings ist es besser als nichts und man kann sich damit auch ein wenig vor Fehlern schützen, in dem man verschiedene Benutzer und Passwörter vergibt.
Im nächsten Teil geht es dann um den Initiator – den Client.
Winbind und idmap_rid
31. Mrz
Ich weiß nicht warum, aber die ganze Welt schimpfen auf Winbind. Ist aber meiner Meinung nach oft zu unrecht, denn es kann einem viel Arbeit beim AD/LDAP/ID Mapping ersparen. Wer Winbind noch nicht kennt, Winbind mappt die Windows SIDs auf lokale Linux UIDs und GIDs, sodass man unter Linux mit den Active Directory Benutzern und Gruppen arbeiten kann.
Meist wird winbind aber nicht eingesetzt, da es im nicht konfiguriertem Zustand zu einer Windows SIDs auf verschiedenen Servern unterschiedliche UIDs bzw. GIDs zurück liefert. Das ist in einer professionellen Umgebung natürlich inakzeptabel.
Die Lösung, die komischerweise nur wenige kennen hier, ist idmap_rid. Mit diesem Winbind Backend werden auf allen Linux Servern die selben UIDs zu Windows SIDs generiert.
Hier unsere Konfiguration mit idmap_rid in Kurzform (wer noch mehr wissen möchte einfach mich anschreiben).
Zunächst die Kerberos Konfiguration:
/etc/krb5.conf:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = <SUBDOM.DOMAIN.DE>
dns_lookup_realm = true
dns_lookup_kdc = yes
ticket_lifetime = 24h
forwardable = yes
[realms]
<SUBDOM.DOMAIN.DE> = {
default_domain = <subdom.domain.de>
}
[domain_realm]
.<subdom.domain.de> = <SUBDOM.DOMAIN.DE>
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Die nsswitch nicht vergessen:
/etc/nsswitch.conf:
... passwd: files winbind shadow: files winbind group: files winbind ...
Und hier die Einträge in der smb.conf:
/etc/samba/smb.conf
[global] workgroup = <WORKGROUPNAME> security = ads realm = <SUBDOM.DOMAIN.DE> password server = * wins server = load printers = no printcap name = /etc/printcap idmap domains = DLD idmap config DLD:backend = rid idmap config DLD:range = 40000-1000000 winbind separator = / template shell = /bin/bash winbind enum users = yes winbind enum groups = yes winbind use default domain = yes acl group control = yes [test] comment = Test Share for domain users only path = /smbdata read only = yes valid users = @"DOM/domain users" write list = "DOM/testy"
Die wichtigen Zeilen sind hier die drei idmap Einträge. Hier habe ich als backend, für die Berechnung der Linux UIDs und GIDs das Modul “rid” angegeben sowie eine Range für die IDs von 40.000 – 1.000.000 reserviert, sollte reichen…
Nachdem einem
net ADS join -U <username>
kann mit
wbinfo -t
die Winbind Konfiguration getestet werden. Ist hier alles OK sind die AD SIDs dem Linux bereits bekannt.
Prüfen:
getent passwd | grep testy testy:*:65435:78221:USERNAME:/home/DOM/testy:/bin/bash
Der Benutzer testy hat bei dieser Konfiguration auf allen Linux Servern die uid 65435.
Nun dürfen alle Benutzer aus der AD Gruppe “domain users” auf die Samba Freigabe test zugreifen und testy darf zusätzlich schreiben.
Das ganze funktioniert übrigens auch mit mehreren Domains! Die Manpage “man idmap_rid” hilft weiter.
Einziger Nachteil ist hier, dass man jedem dieselbe Shell zuweisen muss. Das benötigt man ja aber eh nur, wenn sich der Benutzer auch direkt am System anmelden möchte.
Also: Winbind ist nicht nur böse! Nicht immer drauf rumhacken!
CPU Flags: Was will mir der Künstler damit sagen ?
17. Mrz
Manchmal ist es interessant zu wissen, was eine CPU wirklich kann. Kann meine CPU 64bit? Kann sie Virtualisierung?
Unter Linux bekommt man die Informationen mit Hilfe von
[root@hanswurst ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz stepping : 10 cpu MHz : 1998.000 cache size : 6144 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx smx est tm2 cx16 xtpr lahf_lm bogomips : 5670.45
Interessant dabei ist der Eintrag “flags”. Beispielsweise bedeutet “lm” 64bit (Long Mode) – ist ja auch quasi direkt ersichtlich
– “ht” -> Hyper Threading oder “vmx” ist die Virtualisierung.
Aber was bedeuten all die anderen flags ?
(sorry, das ganze Ding wollte ich nicht übersetzen)
| flag | meaning |
|---|---|
| 3DNOW | A multimedia extension created by AMD for its processors, based on / almost equivalent to Intel’s MMX extensions |
| 3DNOWEXT | 3DNOW Extended. Also known as AMD’s 3DNow!Enhanced 3DNow!Extensions |
| APIC | Advanced Programmable Interrupt Controller |
| CLFSH/CLFlush | Cache Line Flush |
| CMOV | Conditional Move/Compare Instruction |
| CMP_Legacy | Register showing the CPU is not Hyper-Threading capable |
| Constant_TSC | on Intel P-4s, the TSC runs with constant frequency independent of cpu frequency when EST is used |
| CR8Legacy | ? |
| CX8 | CMPXCHG8B Instruction. (Compare and exchange 8 bytes. Also known as F00F, which is an abbreviation of the hexadecimal encoding of an instruction that exhibits a design flaw in the majority of older Intel Pentium CPU). |
| CX16 | CMPXCHG16B Instruction. (CMPXCHG16B allows for atomic operations on 128-bit double quadword (or oword) data types. This is useful for high resolution counters that could be updated by multiple processors (or cores). Without CMPXCHG16B the only way to perform such an operation is by using a critical section.) |
| DE | Debugging Extensions |
| DS | Debug Store |
| DS_CPL | CPL qualified Debug Store (whatever CPL might mean in this context) |
| DTS | Could mean Debug Trace Store or Digital Thermal Sensor, depending on source |
| EIST/EST | Enhanced Intel SpeedsTep |
| FXSR | FXSAVE/FXRSTOR. (The FXSAVE instruction writes the current state of the x87 FPU, MMX technology, Streaming SIMD Extensions, and Streaming SIMD Extensions 2 data, control, and status registers to the destination operand. The destination is a 512-byte memory location. FXRSTOR will restore the state saves). |
| FXSR_OPT | -unknown- |
| HT | Hyper-Transport. Note that the same abbreviation might is also used to indicate Hyper Threading (see below) |
| HTT/HT | Hyper-Threading. An Intel technology that allows quasi-parallel execution of different instructions on a single core. The single core is seen by applications as if it were two (or potentially more) cores. However, two true CPU cores are almost always faster than a single core with HyperThreading. This flag indicates support in the CPU when checking the flags in /proc/cpuinfo on Linux systems. |
| HVM | Hardware support for virtual machines (Xen abbreviation for AMD SVM / Intel VMX) |
| LAHF_LM | Load Flags into AH Register, Long Mode. |
| LM | Long Mode. (64bit Extensions, AMD’s AMD64 or Intel’s EM64T). |
| MCA | Machine Check Architecture |
| MCE | Machine Check Exception |
| MMX | It is rumoured to stand for MultiMedia eXtension or Multiple Math or Matrix Math eXtension, but officially it is a meaningless acronym trademarked by Intel |
| MMXEXT | MMX Extensions – an enhanced set of instructions compared to MMX |
| MON/MONITOR | CPU Monitor |
| MSR | RDMSR and WRMSR Support |
| MTRR | Memory Type Range Register |
| NX | No eXecute, a flag that can be set on memory pages to disable execution of code in these pages |
| PAE | Physical Address Extensions. PAE is the added ability of the IA32 processor to address more than 4 GB of physical memory using Intel’s 36bit page addresses instead of the standard 32bit page addresses to access a total of 64GB of RAM. Also supported by many AMD chips |
| PAT | Page Attribute Table |
| PBE | Pending Break Encoding |
| PGE | PTE Global Bit |
| PNI | Prescott New Instruction. This was the codename for SSE3 before it was released on the Intel Prescott processor (which was later added to the Pentium 4 family name). |
| PSE | Page Size Extensions. (See PSE36) |
| PSE36 | Page Size Extensions 36. IA-32 supports two methods to access memory above 4 GB (32 bits), PSE and PAE. PSE is the older and far less used version. For more information, take a look at [1]. |
| SEP | SYSENTER and SYSEXIT |
| SS | Self-Snoop |
| SSE | Streaming SIMD Extensions. Developed by Intel for its Pentium III but also implemented by AMD processors from Athlon XP onwards |
| SSE2 | Streaming SIMD Extensions 2. (An additional 144 SIMDs.) Introduced by Intel Pentium 4, on AMD since Athlon 64 |
| SSE3 | Streaming SIMD Extensions 3. (An additional 13 instructions) introduced with “Prescott” revision Intel Pentium 4 processors. AMD introduced SSE3 with the Athlon 64 “Venice” revision |
| SSSE3 | Supplemental Streaming SIMD Extension 3. (SSSE3 contains 16 new discrete instructions over SSE3.) Introduced on Intel Core 2 Duo processors. No AMD chip supports SSSE3 yet. |
| SSE4 | Streaming SIMD Extentions 4. Future Intel SSE revision adding 50 new instructions which will debut on Intel’s upcoming “Nehalem” processor in 2008. Also known as “Nehalem New Instructions (NNI)” |
| SVM | Secure Virtual Machine. (AMD’s virtualization extensions to the 64-bit x86 architecture, equivalent to Intel’s VMX, both also known as HVM in the Xen hypervisor.) |
| TM | Thermal Monitor |
| TM2 | Thermal Monitor 2 |
| TSC | Time Stamp Counter |
| VME | Virtual-8086 Mode Enhancement |
| VMX | Intel’s equivalent to AMD’s SVM |
| XTPR | TPR register chipset update control messenger. Part of the APIC code |
Ubuntu: Neues “light” Theme unter Karmic
08. Mrz
Mit Ubuntu 10.04 (Lucid) kommt ein neues “Look & Feel”. Mittlerweile sieht Ubuntu seit ca. 6 Jahren gleich aus – abgesehen von dem ein oder anderen facelift. Im großen und ganzen haben wir uns an das bräunliche Theme mit den orangen Icons gewöhnt.
Der Frühling steht vor der Tür und damit auch eine neue Ubuntu Version. Warum also nicht mal alles ein wenig hübsch machen ? Also los.
So sieht Ubuntu dann wohl bald aus:
Ich finde es ganz gut gelungen und modern. Was auffällt ist, dass die Fensterfunktionen (minimieren, maximieren, schließen) auf die linke Seite gewandert sind. Das ganze ist zu “korrigieren” – da würde ich mich nicht umgewöhnen wollen; ist aber Geschmackssache.
Das Theme unter Karmic
Es sollte niemanden wundern, dass es bereits möglich ist das Theme auch unter Karmic zu installieren und zu nutzen. Wie ? So !
sudo add-apt-repository ppa:nilarimogard/webupd8sudo apt-get update && sudo apt-get install gtk2-engines-murrine ubuntu-mono light-themes
( Quelle: http://www.webupd8.org/2010/03/ubuntu-lucid-light-themes-radiance-and.html )
Nach der Installation findet man unter den Themes zwei neue: Radiance und Ambiance -> auswählen und glücklich sein (um die neue Engine nutzen zu können musste ich mich erst neu anmelden (nicht neu starten !)).
minimieren, maximieren & schließen nach rechts !
Wer emerald nutzt wird das Problem nicht haben – den interessiert die neue Einstellung für Metacity nicht. Wer jedoch auf den standard Gnome Fenstermanager Metacity setzt, der wird mit dem neuen Theme die Fensterbuttons (ich komme auf keinen vernünftigen Begriff dafür) auf der linken Seite sehen. Dem kann man abhelfen:
gconftool-2 --type string --set /apps/metacity/general/button_layout "menu:maximize,minimize,close"
Damit sollten die Buttons wieder da sein, wo sie hingehören.
Bash: suchen & ersetzen
05. Mrz
Die Bash ist mächtig. So mächtig, dass wahrscheinlich niemand alle Funktionen kennt. Also hier wieder ein kleines Schmankerl, was nicht jeder kennt.
Wir haben einen String und möchten einen Teil ersetzen:
TEST="tra-tri tra-tra, die Post ist da"
echo $TEST
--> tra-tri tra-tra, die Post ist da
echo ${TEST/-tri/-ri} # ersetzen des ersten Treffers
--> tra-ri tra-tra, die Post ist da
echo ${TEST//-tr/-r} # ersetzen aller Treffer
--> tra-ri tra-ra, die Post ist da
Ubuntu: MS Natural Ergonomic Keyboard 4000 v1 & Nummernblock
04. Mrz
Also wohl ist mir nicht dabei, auf einer Tastatur von MS zu schreiben – täglich. Aber es gibt halt Dinge die nur schwierig anders zu machen sind. Ich bin es gewöhnt auf einer “ergonomischen” Tastatur zu schreiben. Die Auswahl an diesen Tastaturen ist nicht besonders groß und die von Logitech verliert leider, da der Tastenblock mit einfg/entf … nicht so angeordnet ist, wie bei allen anderen Tastaturen.
Kurz und knapp benutze ich die oben genannte Tastatur und hatte schon seit längerer Zeit das Problem, dass der Nummernblock nicht funktionierte. Ich hatte immer wieder mal versucht andere Tastaturtypen einzustellen aber keine hat funktioniert. Es geht mir dabei noch nicht einmal um die “Special Keys” – die brauche ich nicht, wobei die normalen z.B. für die Lautstärke eh funktionieren.
Also folgendes ist zu tun, wenn man ebenfalls die Probleme mit dem Nummernblock hat:
- gnome-at-properties aufrufen
- -> Tastatur-Barrierefreiheit
- -> Reiter “Maustasten”
- -> den Haken bei “Mauszeiger per Tastatur steuern” entfernen
Fertig.
Warum das ganze enabled war ? Keine Ahnung. Ich habe mir das bei Sascha angeschaut und bei ihm ist der Haken nicht drin. Anscheinend wird das bei der Erkennung der Tastatur gesetzt, da ich bisher bei allen Installationen das Problem hatte und den Haken nicht selbst gesetzt habe.







