Ubuntu 12.04 Precise: Kernel 3.8 mit LTS Support

Ubuntu 12.04.3 wird den Kernel 3.8 aus Quantal enthalten. Noch ist 12.04.3 nicht verfügbar, aber das Meta Package existiert schon:

sudo apt-get install linux-generic-lts-raring

Damit hat man auf seiner Ubuntu Longterm einen aktuellen Kernel (u.a. mit mdadm TRIM Support).

Eine Sache ist mir aber noch aufgefallen. Es scheint so zu sein, dass neuere Kernel-Header keine version.h mehr enthalten. Dadurch gibt es dann z.B. noch Probleme beim Bauen von Kernel-modulen (z.B. drbd8) mit module-assistant. Es kommt dann die Meldung dass die Kernel Header des aktuellen Kernels fehlen würden. Folgendes hat mir dann geholfen:

cp /usr/include/linux/version.h /usr/src/linux/include/linux/

mdadm Softraid on SSD with TRIM

Seit Kernel 3.7 unterstützt das mdadm Softraid den TRIM Befehl.

SSDs benötigen Idealerweise Raum für ihren Wear leveling Algorithmus. Da das mdadm RAID aber die gesamte Partition als „belegt“ beansprucht, hat der SSD Controller wenig Ausweichmöglichkeiten und die Schreibperformance geht in den Keller. Da kann man nur die Spare Area mit hdparm vergrößern – verschenkt aber damit wertvollen Platz. Dateisysteme (z.B. ext4) verstehen schon länger den TRIM Befehl (Mountoption „discard“) – aber dies nützt(e) nichts wenn das Dateisystem auf einem Softraid liegt.

Bis Kernel 3.7 bekam man nur folgendes zu sehen:

root@node:~# fstrim /
fstrim: /: FITRIM ioctl failed: Operation not supported

Ab Kernel 3.7 sieht es dann besser aus:

root@node:~# fstrim -v /
/: 12858519552 bytes were trimmed

MySQL: Convert dump from MySQL4 to MySQL5

Convert an old MySQL V4 Dump to MySQL V5. In my case the old database was in Latin1/ISO format and the db-engine was MyISAM.

# on the old server (mysql4x)
mysqldump --default-character-set latin1 testdb > testdb.sql
 
# on the new server (mysql5x)
# tweak ENGINE
sed -i -e 's/TYPE=MyISAM/ENGINE=MyISAM/' testdb.sql
mysql --default-character-set latin1 -D testdb < testdb.sql

Not sure if there are other SQL syntax changes from V4 to V5, in my case (simple database) it worked.

Libvirt QEMU/KVM VM migration/upgrading

Wenn man VMs (und deren Definitionsdatei) von einem älteren KVM System umzieht oder den Hypervisor upgraded sollte man nicht vergessen im XML-file den Maschinentyp zu checken. Ansonsten kann es nach Live-Migrationen zu unerwarteten Effekten kommen. Bei mir hing z.B. bei einigen Systemen die Real-Time-Clock – was oft einen Totalabsturz zur folge hat. Der Bug ist hier beschrieben.

Für eine aktuelle QEMU-KVM Version sieht dies so aus (entscheidend ist das „pc-1.0“):

<!-- /etc/libvirt/qemu/vm-01.xml -->
<type arch='x86_64' machine='pc-1.0'>hvm</type>

Damit man nicht händisch sämtliche XML Dateien anpassen muss, liefert Libvirt ein praktisches, aber wohl eher unbekanntes Script mit:

libvirt-migrate-qemu-machinetype -a

Damit werden direkt alle VMs auf die jeweils aktuelle Einstellung angepasst. Sehr schön. Damit die Einstellung greift muss man die VMs allerdings neu starten (soweit ich weiß).

DRBD 8.4.3 on Ubuntu 12.04/12.10

DRBD 8.4.3 has some great speed improvements. To take advantages of it use the following steps to build and upgrade the ubuntu packages (thanks to icamargos repository).

apt-add-repository ppa:icamargo/drbd
apt-get update
apt-get upgrade drbd8-utils
apt-get install drbd8-module-source
module-assistant auto-install drbd8

after reboot you should see the new version:

root@nas4-1:~# cat /proc/drbd 
version: 8.4.3 (api:1/proto:86-101)

Update: Hint for using this module with acutal kernel releases.

PDF komprimieren

Ghostscript Kommando zum komprimieren von PDF Dateien (natürlich im wesentlichen die enthaltenen Bilder). Muss ich mir merken:

#!/bin/bash
 
gs	-q -dNOPAUSE -dBATCH -dSAFER \
	-sDEVICE=pdfwrite \
	-dCompatibilityLevel=1.3 \
	-dPDFSETTINGS=/screen \
	-dEmbedAllFonts=true \
	-dSubsetFonts=true \
	-dColorImageDownsampleType=/Bicubic \
	-dColorImageResolution=96 \
	-dGrayImageDownsampleType=/Bicubic \
	-dGrayImageResolution=96 \
	-dMonoImageDownsampleType=/Bicubic \
	-dMonoImageResolution=96 \
	-sOutputFile=$1_shrinked.pdf \
	 $1

Quelle: ubuntuusers.de.

Screen: named sessions

Screens sind ja sehr nützlich; aber ab einer gewissen Anzahl wird es unübersichtlich:

root@vm:~$ screen -r
There are several suitable screens on:
	31176.pts-0.deploy1	(Detached)
	17565.pts-0.deploy1	(Detached)
	16079.pts-0.deploy1	(Detached)

Aber das Screen wäre nicht Screen wenn es nicht auch dafür eine Lösung hätte: Session-Namen.

Methode 1: Setzen direkt beim start des Screens

  • screen -S backup

Methode 2: Setzen aus einem laufenden Screen heraus (aktuelle Session)

  • Screen Prompt öffnen: STRG+A : (STRG und A dann doppelpunkt)
  • sessionname backup (danach Enter)
  • Screen ganz normal verlassen mit STRG+A d

Das Ergebnis sieht dann schon viel übersichtlicher aus:

root@vm:~$ screen -r 
There are several suitable screens on:
	31176.backup	(Detached)
	17565.testing	(Detached)
	16079.watch	(Detached)

Mit „screen -r backup“ wechselt man jetzt schnell in die richtige Session.

neuer Homeserver/NAS

Mein „altes“ Gehäuse und die enthaltene noch ältere CPU nebst Board haben einen Nachfolger erhalten. Der VDR und damit die TV Karte wird nicht mehr benötigt – daher muss es auch nicht mehr unbedingt ein HTPC Formfaktor sein. Der Server dient bei mir hauptsächlich als NAS und VDSL Router.

Folgend die Einkaufsliste:

  • Lian-Li PC-Q18 (4xSATA HotSwap Backplane)
  • ASUS P8H77-I Mini-ITX (2xSATA3 + 4xSATA2!)
  • INTEL Core i3-2120T 2600MHz 3M BOX
  • KINGSTON HyperX 16GB DDR3 1600MHz 2x8GB
  • 1x SAMSUNG SSD 830 64GB SATA 2,5z SATA III
  • 2x WD Desktop Green 3TB SATA 6Gb/s
  • 2x WD Desktop Green 2TB SATA 6Gb/s (aus der alten Kiste)
  • extra Gigabit Ethernet PCIe („Router“)
  • BeQuiet BN103 (300W)

Das Board ist meines Wissens z.Zt. eines der ganz wenigen mit 6 SATA Ports (davon 2 mit SATA3 6GB/s, für die SSD). Das Gehäuse ist sehr gut verarbeitet und glänzt mit der eingebauten SATA Backplane. Da sich das Gehäuse „schraubenlos“ öffnen lässt ist ein schneller Plattenwechsel kein Problem (wenngleich er auch hoffentlich selten vorkommt).

Auf dem Server läuft jetzt ein Ubuntu Server 12.04 und mittels KVM Virtualisierung ein Firewall/Router (derzeit Astaro UTM9 Home).

SATA Backplane. Die SSD befindet sich ganz unten (unter dem 3,5″ HDD)
das Board
the Front

 

dd: Ende der Platte löschen

Um z.B. eine (Soft-)RAID-Signatur von einer Festplatte zu entfernen reicht es meist (je nach RAID Typ) die letzten Bytes der Platte zu löschen, da sich die Signatur meist am Ende einer Partition befindet. So erspart man sich ein langwieriges Löschen der kompletten Platte.

Einen Weg der ohne Rechnerei und viel Script auskommt habe ich so schnell nicht gefunden, daher nutze ich diese Methode:

sudo blockdev --getsz /dev/sda
250069680 # anzahl der Blöcke (512Byte)
 
sudo dd if=/dev/zero of=/dev/sda bs=512 seek=250060000

Nicht sonderlich elegant – ich nulle die letzten Bytes der Blockgrösse damit diese übersprungen werden und lasse dann dd bis zum Ende der Platte laufen. dd bricht dann mit „no space on device“ ab – aber die letzten Bytes wurden dabei sauber geleert ;-)

Duplicity meldet „sshbackend Failed“

Wenn Duplicity foglendes meldet:

Import of duplicity.backends.sshbackend Failed: No module named paramiko"
UnsupportedBackendScheme: scheme not supported in url: scp://root@backu...

Dann fehlt noch das Paket „python-paramiko“:

sudo apt-get install python-paramiko