Rechnerbetriebsgruppe Informatik

MDADM Raid1 wiederherstellen

Wenn Hardware-Raid-controller nicht vorhanden sind oder nicht ausreichend vom System unterstützt werden, sind Software-Raids eine gute Alternative. Ein Vorteil dabei ist, dass bei jedem System und bei jeder Raid-Variante, die gleichen Tools und Kommandos zum Einsatz kommen.

Hier soll es nun um die Wiederherstellung eines Raid1 aus 2 Platten nach einen Ausfall gehen. Los geht es meist mit Lesefehler.

#> dmesg
25704.754673 print_req_error: I/O error, dev sdc, sector 976912
25704.754885 md: super_written gets error=10
25704.755024 md/raid1:md0: Disk failure on sdc2, disabling device.
md/raid1:md0: Operation continuing on 1 devices.

Über das Proc-FS kann man nun mehr Details über den Zustand des Raids bekommen.

#> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[0] sdc2[1](F)
142748672 blocks super 1.2 [2/1] [U_]
bitmap: 1/2 pages [4KB], 65536KB chunk

Die Platte /dev/sdc2 ist als fehlerhaft markiert (F) und muss ersetzt werden. Dazu muss sie zunächst aus dem Raid genommen werden.

#> mdadm /dev/md0 --remove /dev/sdc2
mdadm: hot removed /dev/sdc2 from /dev/md0

#> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[0]
142748672 blocks super 1.2 [2/1] [U_]
bitmap: 1/2 pages [4KB], 65536KB chunk

Die defekte Platte kann nun entfernt werden und durch eine neue Platte mit gleicher Größe ersetzt werden. Diese muss nun erkannt werden (SCSI-Bus scannen und Partitionstabelle einlesen).

#> rescan-scsi-bus
#> partprobe

Falls die Partitionen der beiden Platten nicht übereinstimmen, kann man die Partitionstabelle von der bestehenden Platte kopieren. Danach muss diese wieder neu eingelesen werden.

#> sfdisk -d /dev/sdb | sfdisk /dev/sdc
#> partprobe

Nun kann die neue Platte (Partition) wieder zum Raid hinzugefügt werden.

#> mdadm /dev/md0 --manage --add /dev/sdc2
#> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[2] sdb2[0]
142748672 blocks super 1.2 [2/1] [U_]
[=================>...] recovery = 86.1% (123025920/142748672) finish=7.0min speed=46830K/sec
bitmap: 0/2 pages [0KB], 65536KB chunk

Und weiter geht’s!

20. Juni 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

IT Workshop 2019 – Medientechnik an der HU Berlin

Das Programm zum Workshop findet man auf den Seiten des CMS. Ein Schwerpunkt ist „Räume, Ausstattung und Medientechnik“. Das CMS und die Technische Abteilung (TA) haben technische Richtlinien erarbeitet und eine Umfrage zu didaktischen Szenarien gemacht. Es entstand daraus der 3. AG DLI Report.

Herr Pirr ruft zum Mitwirken bei der AG DLI auf. Es gibt einen entsprechenden Moodle-Kurs. Man soll bei Interesse eine Mail an Herrn Pirr schicken.

Die wichtigsten Punkte des Workshops zusammengefasst:

  • AG DLI erarbeitet Richtlinien zur Medienausstattung von Lehrräumen
  • Zentrale Beschaffung, Wartung und Support in Bezug auf Medientechnik (MT) wird von einigen Teilnehmern gefordert
  • Vorschläge für einfachere Handhabung der MT, Information zu Ansprechpartnern und Anleitungen zur MT wurden diskutiert

21. Mai 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

CUDA-10 unter OpenSuse 15

Nvidias CUDA bietet die Möglichkeit, GPU von Nvdia zu programmieren und zum Rechen zu nutzen. Darauf bauen viele weitere Technologien, Bibliotheken, Frameworks etc. auf. Dazu zählen u.a. OpenCL und Tensorflow.

Am Institut für Informatik sind zum Einen zwei PC-Pools (Berlin, Brandenburg) und ein Server (gruenau9) mit Nvidia-Karten ausgestattet (Geforce 750GTX bzw. TeslaV100).

13. Mai 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

Record my desktop

Im Rahmen von Lehrveranstaltungen ist es durchaus sinnvoll kleine Videos zu erstellen, die bestimmte Abläufe zeigen: Bilder sagen mehr als 1000 Worte.

Das Tool recordmydesktop bietet diesbezüglich die Möglichkeit den gesamten Desktop, Teile davon oder einzelne Fenster als Video aufzunehmen.

Beispiel:

recordmydesktop --fps 6 --width 1120 --height 630

Um einzelne Fenster aufzunehmen, muss die Window-ID benutzt werden. Diese lässt sich bequem über xwininfo ermitteln.

WINDOW_ID=xwininfo -display $DISPLAY | grep 'id: 0x' | grep -Eo '0x[a-z0-9]+'

recordmydesktop --windowid $WINDOW_ID --on-the-fly-encoding --v_quality 50 --s_quality 10 -o outfile.ogv

Beides zusammen gibt es als Skript auf den Linux-Rechnern des Instituts:

record_window.sh [outfile-name]

Nach dem Aufruf muss man das gewünschte Fenster wählen und startet damit auch die Aufnahme. Durch Strg+C wird die Aufnahme beendet. Die Aufnahme wird unter record.ogv abgelegt. Der Dateinahme kann dem Skript mitgegeben werden.

Das dort erstellte Video:

9. Mai 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

ffmpeg mit libx264

Das ffmpeg-Paket einiger Linux-Distributionen (u.a. OpenSuse) enthält keinen Support für x264. Das Programm ffmpeg kann Videos somit nicht ins h264-Format bringen (encoding). Um ffmpeg mit x264-Unterstützung zu haben, muss man beide Pakete selbst kompilieren.

x264

Zunächst muss man die Quellen herunterladen:

git clone https://code.videolan.org/videolan/x264.git

Danach muss x246 gebaut werden:

./configure --enable-shared; make; make install

Das Programm und die Bibliothek werden unter /usr/local installiert.

FFMpeg

Nun kann ffmpeg heruntergeladen, konfiguriert (inkl. x264-Support), gebaut und installiert werden:

  • git clone git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
  • ./configure --enable-gpl --enable-libx264
  • make
  • make install

Testen

Nach der Installation (unter /usr/local/) können die Unterstützten Codecs gelistet werden:

/usr/local/bin/ffmpeg -codecs

Dabei sollte h264 gelistet sein:

DEV.LS h264 H.264 ... (encoders: libx264 libx264rgb h264_v4l2m2m

Diese Version von ffmpeg enthält deutlich mehr Codecs als die OpenSuse-Version und kann auch deutlich mehr Codecs für das Encoding nutzen.

2. Mai 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

DosBox, Windows 3.11 & Games

Mitunter soll ältere Software nochmal zum Laufen gebracht werden. Gründe gibt es mindestens zwei: man will ältere Dokumente lesen und benötigt den entsprechenden Reader oder … „Just4Fun“ …man will nochmal ein altes Spiel von früher Spielen. Ich habe letzteres mit „Mamba“ probiert.

Benötigt wurde dafür Windows 3.11 und ich hatte ein Ubuntu 18.04.

Die Schritte in der Übersicht:

  1. DosBox installieren
  2. Laufwerk anlegen und einbinden
  3. Windows 3.11 installieren
  4. Mamba auf das Laufwerk auf und starten

…und nun die Details…

DosBox installieren

Unter Ubuntu reicht hier ein apt-get install dosbox. Danach muss ein Ordner für evtl. Konfigurationen und das Laufwerk angelegt werden: mkdir ~/.dosbox.

Laufwerk anlegen und einbinden

Für das Laufwerk (c:) muss ein Unterverzeichnis in ~/.dosbox und ein Konfiguration (~/.dosbox/dosbox.conf bzw. ~/.dosbox/dosbox-VERSION.conf) angelegt werden:

mkdir ~/.dosbox/drive_c

Die Datei ~/.dosbox/dosbox.conf muss folgenden Inhalt haben:

[autoexec]
mount c ~/.dosbox/drive_c

Windows 3.11 installieren

Zunächst muss man sich die Windows 3.11-Disketten besorgen. Ich hatte 8 Disketten-Images. Diese habe ich einzeln gemounten und in einen Installationsordner kopiert:

mkdir ~/.dosbox/drive_c/install
for i in `seq 1 8`; do
  sudo mount -o loop Disk0$i.img /mnt
  cp /mnt/* ~/.dosbox/drive_c/install
  sudo umount /mnt
done

Nun „dosbox“ starten und dort ins Laufwerk „c:“ und in den Ordner „c:/install“ wechseln. Jetzt kann mit „setup.exe“ die Win3.11-Installation beginnen.

Mamba auf das Laufwerk auf und starten

Zum Schluss wird Mamba in das Verzeichnis ~/.dosbox/drive_c kopiert. Nun Windows hochfahren, den File Manager öffnen und Mamba starten.

Linkliste

  1. https://www.dosbox.com/
  2. DosBox unter Ubuntu: https://wiki.ubuntuusers.de/DOSBox/
  3. Mounten via Loop Device: https://de.wikipedia.org/wiki/Loop_device
  4. Windows 3.11 im Internet suchen
  5. Mamba
16. April 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

Fileserver für Gluster & co.

Die bisherigen Fileserver basieren meist auf SAN und NFS: Die Server haben mehrere ZPools über SAN und reichen die enthaltenen ZFS per NFS und Samba wieder raus. Sowohl die Größe als auch die Geschwindigkeit könnte natürlich immer gerne grösser und besser sein. Aus diesem Grund wurden 4 Maschinen beschafft und auf diesen soll nun ein verteiltes Dateisystem.

Details zu den 4 Maschinen:

  1. Dell R730 mit 768GB RAM,6 x 8TB HDD, 2 x 120GB SSD, Perc H730P Mini
  2. Dell R740 mit 768GB RAM,6 x 8TB HDD, 2 x 240GB SSD, Perc H740P Mini
  3. 2 x Dell R740xd mit 768GB RAM,6 x 8TB HDD, 2 x 240GB SSD, Perc H740P Mini

Auf allen läuft ein Ubuntu 18.04.

Die SSD werden einzeln ans das Linux gegeben (nicht als Hardware-Raid) und dort unterteilt:

  • 500MB (/boot)
  • 30GB LVM mit 20GB root-fs (SW-Raid1 zwischen beiden SSDs)
  • Rest wird als SW-Raid0 genutzt

Für die HDDs wurden folgende Konfigurationen getestet:

  1. Hardware-Raid50 mit dem Perc und XFS
  2. Software-Raid50 (md) und XFS
  3. ZFS

Die SSD wurden auch als Cache verwenden. Bei XFS lag dazu ein LVM zwischen Raid und XFS.

Das HW-Raid brachte bei den Tests mit fio die besten Ergebnisse (Lesen(seq): 700-800MB/s; Schreiben(seq):  600-700MB/s). Zwischen den Maschinen gibt es teilw. große Unterschiede. Der Cache brachte nichts. der Cache war mit teilw. nur 400MB/s (Lesen) einfach zu langsam. Da der RAM größer als der SSD-Cache ist, ist der fehlende SSD-Cache in dieser Konfiguration zu verschmerzen.

Die Maschinen erhielten die Namen „dfs[1-4]“ (Distributed Filesystem).Auf allen Maschinen wurde dann die Pakete

  • glusterfs-server
  • glusterfs-client

installiert. Ein „glusterfs peer probe dfs2; glusterfs peer probe dfs3; glusterfs peer probe dfs4“ auf dfs1 und schon waren alle verbunden. Auf dfs wurde dann ein FS angelegt, gestartet und gemountet:

  1. gluster volume create distributed dfs1:/home/tmp/glusterfs/brick/ dfs2:/home/tmp/glusterfs/brick/ dfs3:/home/tmp/glusterfs/brick/ dfs4:/home/tmp/glusterfs/brick/
  2. gluster volume start distributed
  3. root@dfs1> mount -t glusterfs dfs1:distributed /mnt

Ein Test mit fio lieferte folgendes Ergebnis:

  • Seq-Read: ~200MB/s
  • Rand-Read: ~300MB/s
  • Seq-Write: ~125MB/s
  • Rand-Write: ~317MB/s

Das Rand-Read besser ist, liegt vermutlich daran, dass durch das Seq-Rand die Daten bei der Quell-Maschine schon im RAM lagen und beim darauf folgendem Rand-Read schneller ausgeliefert werden konnten. Für die Unterschiede beim Schreiben habe ich noch keine Erklärung.

Die Test müssen auch nochmal in systematische Form durchgeführt werden (inkl. Wiederholungen). Es bleibt also spannend…

 

 

10. Januar 2019 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

Limitierung mit cgroups

Um den reibungslosen Ablauf auf den Compute-Nodes sicher zu stellen, sollen cgroups verwendet werden. Die Nutzer sollen in Mitarbeiter & Studierende gruppiert werden, wobei jeder einzelne Nutzer eine eigene Untergruppe erhält. Der Mitarbeiter X soll also in die cgroup „staff/X„. Die einzelnen Nutzer können dann im Ressourcenverbrauch limitiert werden.

Obwohl systemd allerhand mitbringt, soll zunächst das Paket cgroups-tools zum Einsatz unter OpenSuse Leap 15 kommen:

 

Nach der Installation mit „rpm -i …“ stehen die Tools cgcreate, cgdelete etc zur Verfügung. Damit die Nutzer direkt nach dem Einloggen in die entsprechende Gruppe gepackt werden, wird pam_exec verwendet. Folgende Zeile wird in die Datei /etc/pam.d/common-session-pc hinzugefügt:

session optional pam_exec.so /PATH_TO/cgroups_pamlogin.sh

Der Pfad muss entsprechend angepasst werden. Das Skript cgroups_pamlogin.sh erzeugt nun beim Starten einer neuen Session (PAM_TYPE=open_session) die entsprechende Gruppe, wenn diese noch nicht vorhanden ist. Danach werden die entsprechenden Limits gesetzt ( 90% des Speichers und der CPU; 95% für die gesamte Gruppe). Zuletzt wird der PAM-Login-Prozess in die Gruppe verschoben, sodass alle folgenden Kind-Prozesse auch in dieser Gruppe sind:

  • echo $$ >> /sys/fs/cgroup/memory/tasks
  • echo $$ >> /sys/fs/cgroup/cpu/tasks

 

Die gesamte Konfiguration als tar.gz: pam_cgroups.tar.gz

8. November 2018 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

PC-Pools Management: Aus 2 mach eins!

Die ursprünglichen 2 Server kirk und zentrum wurden durch einen neuen Dell-Server (PowerEdge R330) ersetzt. Dieser übernimmt beide Namen, die IPs und sämtliche Dienste (Poolraum-Management):

  • NTP
  • DHCP/BOOTP/TFTP
  • NFS (echip, /usr/local, /usr/local/adm)
  • CUPS
  • Statistiken (DNS,Mail)

 

Der Server ist mit 2x10GBit/s mit dem 21er Netz (PC-Pool) verbunden und mit einer 1GBit/s-Verbindung im 20er Subnetz.

7. November 2018 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein

Erneuerung der PC-Pools

Aus den Mitteln des CIP-Antrages 2017 wurden neue PCs für die Poolräume des Instituts beschafft. Insbesondere wurden die SUN-Rays und Shuttles durch PCs von Dell ersetzt. Genauere Information darüber, welche Rechner jetzt in den einzelnen Räumen stehen, gibt es hier.

25. Oktober 2018 | Veröffentlicht von sombrurx | Kein Kommentar »
Veröffentlicht unter Allgemein