Bei einem Linux unter VMware im laufenden Betrieb eine Festplatte einbinden

Oft ergibt sich die Notwendigkeit auf einem Server mit Linux im laufenden Betrieb eine neue Festplatte anzuschließen. Z.B. wenn der Server virtuell unter VMware läuft und man diesem eine neue Festplatte zuordnet hat und diese ohne Neustart des Servers einbinden möchte.

Um dies bei einem Server mit Linux zu machen benötigt man als erstes die Nummer des HBA (Host Bus Adapter). Diese findet man am besten über das sysfs raus.  Jeder HBA hat ein Verzeichnis unterhalb des Ordners /sys/class/scsi_host/.  Der HBA mit der Nummer 0 hat somit den Ordner /sys/class/scsi_host/host* usw.. In jedem dieser Ordner existiert eine Datei mit dem Namen proc_name. In dieser befindet sich der name des Treibers des jeweiligen HBA. Mit dem Wissen das der Treiber für den LSI Controller von VMware mptspi heißt, muss man jetzt nur noch den HBA, der einen Treiber mit diesem Namen hat. Um nicht in allen Dateien von Hand nachzusehen, kann man dies am besten den Befehl grep fürs ich erledigen lassen. Mit dem folgten Befehlt erhält man eine Ausgabe aller HBA, die die Buchstabenfolge mpt enthalten.

grep mpt /sys/class/scsi_host/host*/proc_name

Wenn die Ausgabe wie folgt aussieht, hat der HBA die Nummer 32.

/sys/class/scsi_host/host32/proc_name:mptspi

Nachdem man die Nummer des HBA rausgefunden hat, muss man den HBA seine Geräte neu scannen lassen. Mit dem folgenden Befehl bittet man den HBA mit der Nummer 32, seine Geräte im laufenden Betrieb neu zu scannen.

echo "- - -" > /sys/class/scsi_host/host32/scan

Danach sollte man mit dmesg sich die Kernelmeldungen ausgeben lassen. Ganz unten bei der Ausgabe sollte der Fund der neuen Festplatte gemeldet werden. Wenn die letzten Zeilen z.B. wie folgt aussehen, ist die Festplatte als Device /dev/sdb von Linux erkannt worden.

Mar  1 14:52:07 portal kernel: [ 1287.033631] scsi 32:0:1:0: Direct-Access     VMware   Virtual disk     2.0  PQ: 0 ANSI: 6
Mar  1 14:52:07 portal kernel: [ 1287.033641] scsi target32:0:1: Beginning Domain Validation
Mar  1 14:52:07 portal kernel: [ 1287.034017] scsi target32:0:1: Domain Validation skipping write tests
Mar  1 14:52:07 portal kernel: [ 1287.034020] scsi target32:0:1: Ending Domain Validation
Mar  1 14:52:07 portal kernel: [ 1287.034046] scsi target32:0:1: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 127)
Mar  1 14:52:07 portal kernel: [ 1287.034346] sd 32:0:1:0: [sdb] 104857600 512-byte logical blocks: (53.7 GB/50.0 GiB)
Mar  1 14:52:07 portal kernel: [ 1287.034422] sd 32:0:1:0: [sdb] Write Protect is off
Mar  1 14:52:07 portal kernel: [ 1287.034425] sd 32:0:1:0: [sdb] Mode Sense: 61 00 00 00
Mar  1 14:52:07 portal kernel: [ 1287.034444] sd 32:0:1:0: [sdb] Cache data unavailable
Mar  1 14:52:07 portal kernel: [ 1287.034447] sd 32:0:1:0: [sdb] Assuming drive cache: write through
Mar  1 14:52:07 portal kernel: [ 1287.034908] sd 32:0:1:0: Attached scsi generic sg2 type 0
Mar  1 14:52:07 portal systemd-udevd[1657]: Process '/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'' failed with exit code 2.
Mar  1 14:52:07 portal kernel: [ 1287.042034] sd 32:0:1:0: [sdb] Attached SCSI disk

Wenn die Festplatte als /dev/sdb erkannt wurde, können wir mit dem einrichten einer Partition weiter machen. Dazu muss zunächst eine Partitionstabelle auf der Festplatte angelegt und dann eine Partition erstellt werden. Dies kann man für die Festplatte /dev/sdb aus unserem Beispiel z.B. mit dem folgenden Befehlt erreichen.

cfdisk /dev/sdb

Nach eingäbe dieses Befehlt wird man zunächst gefragt welche Partitionstabelle man anlegen möchte. Ich empfehle die neuere und modere gpt anstelle der älteren dos zu wählen. Danach kann man in einem kleinen Menü eine neue Partition anlegen und speichern. Auf dieser Partition kann man dann mit mkfs ein Dateisystem anlegen und dieses kann man dann mit dem Befehlt mount in das laufende Linux einbinden. Und voilà, die neue Platte steht ohne Neustart zur verfügung.

Überprüfen der Festplattenauslastung bei Linux

Bei Servern will ab und zu die Festplattenauslastung überprüfen. Gerade wenn auf einem Server mehrere virtuellen Gäste laufen, ist es sehr interessant zu erfahren wie ausgelastet ein Controller bzw. die Festplatten an diesem sind. Um die Auslastung zu überprüfen eignet sich unter Linux meiner Meinung nach sehr gut das Programm iostat. Dies ist unter Debian/Ubuntu in dem Paket sysstat enthalten und lässt sich mit dem folgenden Befehl installieren.

apt-get install sysstat

Ich verwende meistens die Parameter d und x, gebe also den folgenden Befehl ein.

iostat -dx

Der Befehl erzeugt dann eine Tabelle mit den Daten zu allen IO-Devices aus der man die wichtigsten Infos über die Auslastung ablesen kann. Die Ausgabe sieht ungefähr wie folgt aus.

Linux 3.2.0-32-generic (ubuntu05)       26.10.2012      _x86_64_        (16 CPU)
 
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
scd0              0,00     0,00    0,00    0,00     0,00     0,00     8,00     0,00   58,46   58,46    0,00  58,46   0,00
sda               0,00     5,97    0,00   11,19     0,02   520,12    92,98     1,77  158,44   36,01  158,48  11,82  13,22
sdb               0,02     0,64    1,24    3,31   109,92   322,72   190,03     0,09   20,04    2,74   26,54   1,59   0,72
dm-0              0,00     0,00    1,26    3,94   109,90   322,66   166,38     0,10   18,51    2,90   23,52   1,39   0,72
dm-1              0,00     0,00    0,00    0,02     0,01     0,07     8,00     0,00   47,59    3,78   56,58   1,80   0,00

Nur kleine Buchstaben bei Datei- und Verzeichnisnamen

Mit dem folgenden Befehl kann man alle großen Buchstaben bei Datei- und Verzeichnisnamen durch kleine ersetzen. Achtung der Befehl bezieht auch alle Unterverzeichnisse mit ein!

find -type f | while read i; do j="`echo $i | tr [[:upper:]] [[:lower:]]`"; [ "$j" != "$i" ] && { mv "$i" "$j" || echo "ERROR: $i"; } ; done

Installation einer Advantage Database unter Ubuntu 10.04

Bei der Installation einer Advantage Database unter einem Ubuntu 10.04 mit 64 Bit gibt es neben der normalen Installationsanleitung noch zwei weitere Punkte zu beachten:

  1. Bei einem Ubuntu mit 64 Bit müssen für die Installation auch die 32 Bit Bibliotheken installiert werden. Dies geschieht mit dem Befehlt
    apt-get install ia32-libs

    .

  2. Da Linux bei Dateinamen zwischen großen und kleinen Buchstaben unterscheidet, sollte man in der Datei
    /usr/local/advantage/ads.conf

    den Wert LOWERCASE_ALL_PATHS auf 1 setzen. Dies bringt dieAdvantage Database dazu nur kleine Buchstaben für Datei- und Verzeichnisnamen zu verwenden. Danach sollte man natürlich darauf achten, dass die Verzeichnisse und Dateien auf dem Server auch keine großen Buchstaben mehr enthalten. Einen Befehl für die Konvertierung der Datei- und Verzeichnisnamen findet man hier.

Klonen ohne Norton Ghost

Fast jeder kennt das Programm Norton Ghost® als ultimatives Programm zum klonen von PC’s. Inzwischen gibt es aber auch Clonezilla als alternatives OpenSource Programm auf Linuxbasis. Cloenzilla basiert auf den OpenSource Programmen DRBL, Partition Image, ntfsclone, partclone und udpcast. Es kann inzwischen mit den Dateisystemen ext2, ext3, ext4, reiserfs, xfs, jfs of GNU/Linux, FAT, NTFS, und HFS+ umgehen und unterstützt in der Clonezilla SE (Server Edition) sogar das simultane klonen von mehreren PC’s.