Dienstag, 18. Juni 2013

SLES 11 SP2 SMT Server - Howto

SLES 11 SP2 SMT Server - Howto

Einleitung

Der SMT Server ist eine freie Software zur einfachen Systemverwaltung von SUSE Linux Enterprise Servern (SLES10, SLES11). Er dient primär zur lokalen Verwaltung von den von SUSE zur Verfügung gestellten Reposiories um Netzwerktraffic zu sparen und einen besseren Überblick über seine Systemlandschaft zu gelangen. Neben den von SUSE zur Verfügung gestellten Repositorys können aber auch noch eigene hinzugefügt werden. 
Ein weiterer Vorteil des SMT ist die Möglichkeit ein Stageing von z.B. Test und Produktivumgebungen in der eigenen Serverlandschaft darzustellen. 
Neben diesen Funktionen bietet er auch die Möglichkeit Scripte zentral vom SMT aus auf den Clients auszuführen.

In diesem Howto beschreibe ich, wie ich den SMT nutze und wie am Ende die Ausgaben auszusehen haben. Bei der Installation verweise ich dabei auf die recht gute und ausgearbeitet SUSE Dokumentation.

Voraussetzung

NCC Zugang (Novell Customer Center)

Mindestens 3 Aktive Subscriptions für SLES 11 SP2

Einen Server

Name: server-smt
Betriebssystem: SLES 11
Netzwerkadapter:
eth0: 192.168.1.200
LVM Volume:
/dev/VolGroup00/smt 80 GB -> /var/lib/smt

Pakete:
SLES: smt

Anzahl Clients

Name: client1
Betriebssystem: SLES 11
Netzwerkadapter: eth0: 192.168.1.201

Name: client2
Betriebssystem: SLES 11
Netzwerkadapter: eth0: 192.168.1.202


Installation/Konfiguration

Das Subscription Management Tool steht frei zur Verfügung und kann bei SUSE https://download.suse.com/index.jsp in der Suche unter dem gleichnamigen Begriff runtergeladen werden. Die Installation läuft unter einer normal installierten SLES Instanz.

Unter der SLES Installation kann das runtergeladene Addon in YaST2 unter dem Punkt "Software" - "Add-On Product" hinzugefügt werden. Hierbei wird als Installationquelle die CD ausgewählt und die Installation nach Bestätigung der Lizenzvereinbarungen gestartet.

Eine ausführliche Installationsanleitung gibt es von SUSE unter dem folgenden Link:
Bei der Konfiguration ist drauf zu achten, dass der Domainname incl. Domain (FQND)  im ganzen Netzwerk erreichbar ist, da es sonst zu Problemen mit den vom SMT erstellten SSL Zertifikaten kommt.

Sobald die Server Konfiguration durchgeführt wurde geht es daran die Clients an das System anzubinden. Mit der folgenden Befehlsreihenfolge bin ich bisher immer gut gefahren:


Kopieren des Scripts clientSetup4SMT.sh auf die Clients:
[root@<server-smt> ~]# scp -rp /usr/lib/suseRegister/bin/clientSetup4SMT.sh root@client01: 
[root@<server-smt> ~]# scp -rp /usr/lib/suseRegister/bin/clientSetup4SMT.sh root@client02: ↵

Löschen der vorhandenen Repositories, dies verhindert, dass der Server noch auf die lokal Konfigurierten CD/DVSs zugreift, die häufig nicht mehr eingebunden sind:
[root@<client1> ~]# rm -rf /etc/zypp/repos.d/* ↵

Konfiguration des Clients:
[root@<client1> ~]# ./clientSetup4SMT.sh https://server-smt.bludau.home/center/regsvc ↵

Sollten eigene nicht zertifizierte Repositories mit eingebunden werden helfen noch folgende Befehle weiter, welche noch einmal nachfragen, ob nicht zertifizierte Pakete zugelassen werden.
[root@<client1> ~]# suse_register --restore-repos
[root@<client1> ~]# zypper ref

Anwendung

Im folgenden Absatz werden die wichtigen Befehle gelistet um den SMT Server zu benutzen.

Eine Liste aller angebundenen Clients und deren aktuellen Status gibt der Befehl smt-client aus. Der Status sollte möglichst auf Up-to-date sein, dies ist aber nicht immer realsierbar.


[root@server-smt ~]# smt-client ↵
.-----------------------------------------------------------------------------------------------.
| GUID                             | Hostname              | Patch Status | Patch Status Date   |
+----------------------------------+-----------------------+--------------+---------------------+
| 12345678901234567890123456789012 | client1               | Up-to-date      | 2013-06-17 12:17:31 |

12345678901234567890123456789013 | client2               | Critical     | 2013-06-17 12:15:07 |
'----------------------------------+-----------------------+--------------+---------------------'
[root@server-smt ~]#

Der SMT Server bietet die Möglichkeit einen Report zu generieren, in dem dargestellt wird, wie viele Subscription man aktuell hat und wie lange diese noch gültig sind.
[root@server-smt ~]# smt-report

Um den SMT Mirror auf den aktuellen Stand zu bringen reicht es aus den folgenden Befehl auszuführen. Sollen die Updates ständig eingespielt werden, kann dieser Befehl auch als Cronjob gestartet werden.
[root@server-smt ~]# smt-mirror


Sonntag, 16. Juni 2013

iscsi Basis - Howto

iscsi Basis - Howto

Einleitung

In diesem Howto beschreibe ich den Grundaufbau einer minimalen iscsi Umgebung. Hierbei handelt es sich um den Aufbau eines iscsi Servers und die Anbindung von einem Client an den zur Verfügung gestellten Pfad.

Vorraussetzungen

Einen Server

Name: server

Zwei Netzwerkadapter
eth0: 192.168.1.200
eth1: 192.168.201.200

LVM Volume:
/dev/VolGroup00/iscsi 1 GB

Pakete:
RedHat: scsi-target-utils

Zwei Clients

Name: client1

Zwei Netzwerkadapter
eth0: 192.168.1.201
eth1: 192.168.201.201

Pakete:
RedHat: iscsi-initiator-utils.x86, sg3_utils-1.28-4.el6.x86_64, lsscsi-0.23-2.el6.x86_64

Howto

Konfiguration Server

Auf dem Server wird nach der Installation der benötigen Pakete die Konfigurationsdatei target.conf angepasst. In Ihr werden als target Name ein eindeutiger iqn (iSCSI Qualified Name) benötigt. dieser befindet sich in dem <target> Tag. 
Der zur Verfügung stehenden Speicherplatz wird mit dem Parameter backing-store festgelegt. Hier bietet es sich an ein freies Blockdevice zu nehmen. Im Fall des Howtos ein frisch angelegtes LVM Device.
Mit dem Parameter initiator-address werden die definierten IP Adressen freigegeben und der Parameter scsi_sn legt die SCSI Seriennummer fest, welche später über udev ausgelesen werden kann.

[server ~]# cat /etc/tgt/targets.conf ↵
default-driver iscsi
# Target ist ein eindeutiger Name
<target iqn.2013-06-01.home.bludau:iscsi>

  backing-store /dev/VolGroup00/iscsi # LUN1

  initiator-address 192.168.1.200     # server
  initiator-address 192.168.201.201     # client1
  scsi_sn iscsi-seriennummer # SCSI Seriennummer

</target>
[server ~]#

Nach dieser Konfiguration muss der Dienst tgtd gestartet und als Service eingetragen werden.

[server ~]# service tgtd start 
[server ~]# chkconfig tgtd on 

Nach dieser Konfiguration kann mit dem folgenden Befehl überprüft werden, ob auch alle Konfigurationen wie gewünscht übernommen wurden.


[server ~]# tgt-admin -s 
Target 1: iqn.2013-06-01.home.bludau:iscsi
 ...
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: iscsi-seriennummer
            Size: 1074 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/VolGroup00/iscsi
            Backing store flags: 
    Account information:
    ACL information:
        192.168.1.200
        192.168.201.201
[server ~]# 

Hinter dem Target-Namen ist die iqn gelistet unter welcher das iscsi Device zur Verfügung steht. Backing Store gibt den auf dem Server genutzten Pfad aus und die ACL Informationen geben die IP Adressen zurück, für welche die iSCSI Targets freigegeben sind.

Konfiguration Clients

Um einen Client anzubinden ist die Konfiguration vom iscsi Daemon notwendig. Dieser kann mit folgenden Befehlen automatisch gestartet werden:
[client1 ~]# chkconfig iscsid on 
[client1 ~]# service iscsid start 

Danach ist die Anbindung vom Client an das iscsi Target vom Server notwendig. Um sich alle Freigaben anzeigen zu lassen hilft das Programm iscsiadm weiter, welches mit den Parametern "-m discovery -t sendtargets -p 192.168.201.200" vom Server her alle Targets gelistet bekommt.

Diese Freigabe wird dann genutzt um das Target an das System zu binden.

Anbinden des iscsi Targets bei dem Client client1:

[client1 ~]# lsscsi ↵
...
[client1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.201.200 ↵
192.168.201.200:3260,1 iqn.2013-06-01.home.bludau:iscsi
[client1 ~]# iscsiadm -m node -T iqn.2013-06.home.bludau:iscsi -p 192.168.201.200 --login ↵
[client1 ~]# lsscsi ↵
...
[6:0:0:0]    storage IET      Controller       0001  -       
[6:0:0:1]    disk    IET      VIRTUAL-DISK     0001  /dev/sda 
...
[client1 ~]#

Ausgabe aller Informationen die unter UDEV ausgelesen werden können, dazu gehören unter anderem auch die Seriennummer:
[client1 ~]# udevadm info -q all -n /dev/sda ↵
...

Das ganze funktioniert auch um das Device wieder zu entfernen. Hierbei ist bei dem zweiten Commando aber darauf zu achten, dass anstelle des login Parameters logout angegeben wird. Zusäztlich sollte man vorher unbedingt darauf achten, dass die darauf erstellen Filesysteme ausgehängt wurden.

Entfernen von des iscsi Device von dem Client client1:

[client1 ~]# lsscsi ↵
...
[6:0:0:0]    storage IET      Controller       0001  -       
[6:0:0:1]    disk    IET      VIRTUAL-DISK     0001  /dev/sda 
...
[client1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.201.200 ↵
192.168.201.200:3260,1 iqn.2013-06-01.home.bludau:iscsi
[client1 ~]# iscsiadm -m node -T iqn.2013-06.home.bludau:iscsi -p 192.168.201.200 --logout ↵
[client1 ~]# lsscsi ↵

Legende

Benutzer Root
[<Servername> <Pfad>]# <Befehl> <Dateiname> ↵
Ausgabe

Benutzer
[<user>@<Servername>]$ <Befehl> <Dateiname> ↵
Ausgabe

Tastenkombinationen:
Strg+a

Einzelne Tasten:
a

Samstag, 4. Mai 2013

Datenrettung von CD/DVDs mithilfe von PhotoRec/TestDisk

In meinem Blogeintrag "Datenrettung bei I/O Fehlern mit ddrescue" habe ich bereits geschrieben wie man Daten von einer Festplatte sichern kann.

Heute habe ich eine CD bekommen, welche mit I/O Fehlermeldungen Meldungen unter Linux und Windows ausgestiegen ist. Leider konnte ich sie nicht mal öffnen, da mir mitgeteilt wurde, dass das Filesystem beschädigt war.

Da ich wusste, das die Daten (Bilder) auf der CD vorhanden sind, habe ich nach einer Lösung gesucht um diese wieder herzustellen.

Über ein ddrescure habe ich den Großteil der CD auf meiner Platte gespeichert. (dd if=/dev/sr0 of=/home/thomas/sr0.img) und dann versucht darüber zu mounten. 


mount: wrong fs type, bad option, bad superblock on /dev/sr0,
       missing codepage or helper program, or other error
       Manchmal liefert das Syslog wertvolle Informationen – versuchen
       Sie  dmesg | tail  oder so

Leider hat dieser Versuch auch mit der gleichen Fehlermeldung geendet wie bei dem Versuch die CD direkt einzubinden.

Über einige Suche nach UDF Restore bin ich dann über den Befehl photorec gestossen, welcher ein Teil des Ubuntu-Packges testdisk ist.

Über eine menügesteuerte Übersicht konnte ich einen Großteil der Daten von meinem zuvor erstellten dd Image sichern.

Die Optionszeile lautet wie folgt:
photorec [/log] [/debug] [/d recup_dir] [device|image.dd|image.e01]

Durch die Eingabe des folgenden Befehls konnte ich meine Daten über das Menü wieder herstellen. Die Bilder befanden sich danach in dem Verzeichnis daten.1 :

# photorec /d daten sr0.img

In den folgenden Bildern werden die von mir durchgeführten Schritte noch im Programm grafisch dargestellt:


Als Auswahl des Filesystem hat es hier völlig ausgereicht Others auszuwählen.


Mittwoch, 27. Februar 2013

chgrp - Howto Grundlegende Systembefehle


Heute habe ich mich nach mehrmonatiger Abstinenz mal wieder die Zeit für einen neuen Eintrag in meinem Blog gefunden.

Weiter mache ich mit dem mehrteiligen Teil der "Grundlegenden Systembefehle". Durch die alphabetische Abarbeitung ist diesmal der Befehl chgrp an der Reihe.


chgrp

chgrp ändert die Gruppenberechtigungen für Dateien. Der Befehl setzt sich aus dem englischen "change group" zusammen.

Wichtig zur Benutzung:

Über den Befehl chgrp kann der Gruppenbesitzer einer Datei geändert werden. Dies ist im einfachsten Fall zur Änderung einer Datei oder Ordnerberechtigung wie folgt möglich:
chgrp <Gruppe> <Dateiname/Pfad>


Beispiel:
# chgrp users /home/thomas

Wir gehen hierbei davon aus, dass die Gruppe "users" eine Gruppe für alle Anwender ist und die Gruppe "meinegruppe" eine Gruppe nur für den Benutzer "thomas" ist. Gesetzt ist im Vorfeld die Gruppe "meinegruppe"

Das Ergebnis sieht nach dem Ausführen des Befehls oben wie folgt aus:
root@desktop:/home# ls -lah
...
drwxr-xr-x 63 thomas   users    16K Feb 26 22:59 thomas
root@desktop:/home# 

Um die Gruppberechtigung wieder nur dem ursprünglichen Benutzer zuzuweisen wird der Befehl wieder wie folgt ausgeführt:
# chgrp meinegruppe /home/thomas

Ergebnis:

root@desktop:/home# ls -lah
...
drwxr-xr-x 63 thomas   meinegruppe  16K Feb 26 22:59 thomas
root@desktop:/home#


Bisher haben wir nur dein Ordner ohne die Inhalte geändert. Um rekursive Änderungen über ganze Verzeichnisbäume durchzuführen hilft der Parameter -R weiter.

Achtung: Der folgende Befehl ändert die Gruppenzugehörigkeit aller Dateien und Unterordner im Verzeichnis /home/thomas auf den Gruppenbenutzer "users"
# chgrp -R users /home/thomas

Nice to Know

Die Parameter -v & -c zeigen beim Ausführen an, welche Dateien geändert wurden. Bei -v werden alle Dateien angezeigt, welche von chgrp benutzt werden. -c zeigt nur die Dateien an, welche auch wirklich geändert werden.

Besteht der Bedarf bei einer Rekursiven Änderung auch alle Ordner welche in dem Verzeichnis verlinkt sind zu verändern helfen der Parameter -L oder -H weiter. 

-L Ändert nur die Berechtigung für das Verzeichnis.
-H Ändert auch alle Dateien in dem unterliegendem Verzeichnis.


Hier ist allerdings Vorsicht angebracht, wenn man im Vorfeld nicht überprüft hat, wohin die Links führen. Standardmäßig werden die Dateien und Ordner hinter Links über den chgrp Befehl nicht mehr beachtet.



cat chgrp chmod chown cp date dd df dmesg echo false
hostname kill ln login ls mkdir mknod more mount mv ps
pwd rm rmdir sed sh stty su sync true umount uname

Weitere Informationen zum Thema grundlegende Systembefehle:

http://goo.gl/HxZ1N