Lebensdauer von Flashdrives unter Debian/Raspbian/Openmediavault verbessern

Nachdem ich mittlerweile etliche Flashdrives, SSDS & SD-Karten in meinen PIs & Server verschlissen habe, dachte ich mir nun, dass es wohl Sinn macht, mich dem Thema mal etwas genauer anzunehmen.

Nach einigen Recherchen im Internet, gibt es grundsätzlich 2 verschiedene Ansätze. Zum einen den, das Haupt OS generell schreibgeschützt aufzusetzen, oder den, verschiedene Verzeichnisse nur in eine Ramdisk zu legen. Ich habe mich für den 2ten Weg entschieden. Und mein OpenMediaVault dementsprechenden gemoddet.

Ich setzte dabei das Paket fs2ram ein. Dieses ist ähnlich der fstab aufgebaut. Im Gegensatz zu einem normal tmpfs mount, können hier Struktur & Daten gesichert werden. Das Paket ist nicht im Standard Repository, und muss manuell geladen und installiert werden.

Für /tmp sollte der Eintrag in /etc/fstab wie folgt schon vorhanden sein, wenn nicht einfach einfügen zudem auch noch das “defaults,noatime” bei dem Root-Device einrichten:

/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
tmpfs          /tmp           tmpfs      defaults,noatime            0     0

Installation von fs2Ram auf allen Platformen (ARM, X32 & X64)

wget --no-check-certificate "https://miami.tschoerner.eu/deb/all/fs2ram_0.3.12_all.deb" -O fs2ram_0.3.12_all.deb
sudo dpkg -i fs2ram_0.3.12_all.deb

Dies ist meine fs2ram.conf von OpenMediaVault:

#
# In case you want to make /var/lock or /tmp available as ram
# filesystems, it is preferable to set the variables RAMTMP, RAMLOCK
# from /etc/default/tmpfs.
#
#<file system>  <mount point>   <script>                <script option> <type>  <options>
#tmpfs            /var/log        keep_file_content       -               tmpfs
#tmpfs            /var/cache      keep_file_content       -               tmpfs
#tmpfs            /var/tmp        keep_file_content       -               tmpfs
tmpfs            /var/log        keep_file_content       -               tmpfs
tmpfs            /var/cache      keep_file_content       -               tmpfs
tmpfs            /var/tmp        keep_file_content       -               tmpfs
tmpfs           /var/lib/openmediavault/rrd     keep_file_content       -               tmpfs
tmpfs           /var/spool                      keep_file_content       -               tmpfs
tmpfs           /var/lib/rrdcached/             keep_file_content       -               tmpfs
tmpfs           /var/lib/monit                  keep_file_content       -               tmpfs
tmpfs           /var/lib/php5                   keep_folder_structure   -               tmpfs

Nach den Änderungen sollte man das System einmal durchstarten.

Falls Ihr eine Disk im System als Root-Disk habt, könnt Ihr noch mit “hdparm” herumspielen.

#aktuelle Disk status
root@London:~# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  active/idle

#Disk schlafen schicken
root@London:~# hdparm -y /dev/sdc

/dev/sdc:
 issuing standby command

#status prüfen
root@London:~# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  standby

#Disk nach 5 Minuten automatisch herunterfahren
root@London:~# hdparm -S 60 /dev/sdc

DDWRT und anonyme OpenVPN Provider

Ab und zu ist es notwendig seine Herkunft zu verschleiern 😉 Es gibt verschiedene bezahl und auch kostenlose VPN Dienstleister. Über die Sicherheit kann man hier auch diskutieren, aber ich denke, dass man selber das Produkt bei kostenlosen Providern ist und ich somit eher zu einem Paid Service raten würde. Ich persönlich nutze den Service von BOXPN.

Falls man sich für einen kostenlosen Dienst entscheidet, muss man pro-aktiv etwas für die Sicherheit der heimischen Netzes tun. Mit einer personal Firewall auf Windows, wird man das Ganze nicht absichern können.

In meinem Aufbau nutze ich ein DDWRT geflashten Cisco E3200 als VPN Router und Accesspoint.

Hier nun ein Howto, wie Ihr DDWRT konfiguren müsst. Eure Firmware muss zunächst OpenVPN unterstützen. Ich habe mich für das mega build entschieden.

ddwrt1

 

Unter Services –> VPN muss zunächst OpenVPN aktiviert werden. und wie gezeigt konfiguriert werden.

Teil 1:
ddwrt2

Teil 2:
ddwrt3

Wichtig ist hier der Punkt Firewall Protection!

Bein Additional Options muss folgendes eingefügt werden:

persist-key
pull
route-delay 2
redirect-gateway
ns-cert-type server
cipher BF-CBC

Wobei einige Konfigurationen zwischen den Providern differieren.

Hier gehts noch zu VPNBook & FreeVPN.

 

 

 

Openmediavault Disk IO on Linux and Windows vBox Guest

Da man ja bekanntlich ;D zwischen den Jahren nicht viel zu tun hat, habe ich heute die Kernel Logs meines NAS auf Basis von OpenMediaVault geprüft. Mir fiel dabei auf, dass der aktuelle Kernel von Wheezy keine optimale Unterstützung für die von mir eingesetzte j1900 CPU (Intel ARK).

Nachdem ich mit einen “Custom” Kernel genaut habe, passen jetzt auch die non-free treiber zum j1900. Dieser unterstützt jetzt auch im Burst-mode 2.4 Ghz.

root@London:~# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Bitte melden Sie Fehler an cpufreq@vger.kernel.org.
analysiere CPU 0:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 0
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 0
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.33 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 1:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 1
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 1
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.33 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 2:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 2
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 2
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.34 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 3:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 3
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 3
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.35 GHz  (verifiziert durch Nachfrage bei der Hardware).
root@London:~#

Wenn jetzt also die Treiber besser passen, dachte ich mit, teste ich noch schnell mal den IO auf mein internes RAID5 (3x WD RED). Eine einfache Messung habe ich auf der Konsole mittels dd durchgeführt.

Test 1: 8k Länge & Anzahl 256k

Test 2: 8K Länge & Anzahl 512k

root@London:/media# dd if=/dev/zero of=/media/3e0a8081-0482-4a84-8e05-ae2106117e16/test/output.img bs=8k count=256k
262144+0 Datensätze ein
262144+0 Datensätze aus
2147483648 Bytes (2,1 GB) kopiert, 7,72799 s, 278 MB/s
root@London:/media# dd if=/dev/zero of=/media/3e0a8081-0482-4a84-8e05-ae2106117e16/test/output.img bs=8k count=512k
524288+0 Datensätze ein
524288+0 Datensätze aus
4294967296 Bytes (4,3 GB) kopiert, 17,2436 s, 249 MB/s

In einem VirtualBox Windows Gast habe ich eine Messung mit Cristal Mark gemacht. Auch hier war ich mit der Leistung durchaus zufrieden.

cristal_mark_LYON_TerminalServer_VM_test2

Als Vergleich noch mein Laptop mit SSD & HDD:

SSD:

SSD_c-Drive

HDD:

HDD_D-Drive

Mit der Disk-Performance meines NAS Server kann ich wohl ganz zufrieden sein.

Fighting the SPAM

Heute habe ich eine Benachrichtigung von einem meiner Server bekommen, dass mein “Warn” Threshold in der mailq erreicht wurde. Da ich so gut wie kein Mail Verkehr über meine Server leite, war ich etwas verwundert.

Ein Blick in die Mailq zeigt mir 500 “outstanding Mails”, der Absender war immer www-data. Was bedeutet das? Ein Skript auf meinem Server ist unsicher, oder ein Skript wurde eingeschleust um Mails zu senden.

Zunächst habe ich einmal die Queue komplett geleert:

 postsuper -d ALL

Anschließen habe ich etwas gewartet, bis wieder neue Mails in der Queue waren. Eine dieser Mails habe ich dann mit folgendem Befehl angeschaut:

 postcat -q BD63E29200F2

Hier konnte ich den Absender der Email identifizieren, und somit das Web des versendenden Benutzers überprüfen.

ffmpeg selber bauen unter Debian Wheezy

Um eine neue Version … die Neueste … von ffmpeg zu bauen, geht Ihr wie folgt vor.

apt-get update
apt-get build-dep ffmpeg
mkdir /root/ffmpeg
cd /root/ffmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg/
./configure --enable-avresample && make && make install

Kaffee trinken und warten 😉

Ich arbeite im Moment noch einer ffmpeg Version, welche das Hardware Beschleunigte trans codieren mittel Intels Quick Sync Technology erlaubt…

TvHeadend, libiconv unter Wheezy

Da die libiconv nicht von Debian mit ausgeliefert wird, diese aber gerne genutzt wird  im TvHeadEnd hier eine quick Guide zu selber kompilieren:

mkdir /root/libiconv/
cd /root/libiconv/
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
tar xvzf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure && make && make install

Das sollte es gewesen sein, jetzt meckert auch TvHeadEnd nich mehr rum.

Drucken von Überall

Wie bereits in meinem vorherigen Post angekündigt, habe ich mich entschieden die Lage zu Wechseln. Nachdem meine besser Hälfte bereits in den Club der Androiden gewechselt hat, ist jetzt auch mein Xperia da. Ein Mako, was es bei Versionen <=4.3 gab war das Thema drucken. Nicht für jeden ein Business-Case aber wir drucken ganz gerne mal Pdf’s oder ähnliches direkt vom Smart Phone.

In meiner aktuelle Landschaft gibt es einen Cups Printserver, der meine Drucker in Netz announced. On top, arbeitet ein AirPrint Dienst, welche für die bestehenden Geräte & Macs die Drucker freigibt.

Um schnell drucken zu können kann man das App Let’s Print Droid nutzen. Hier werden auch direkt die AirPrint Drucker angeboten. Unschön an der Lösung sind 2 Aspekte. Zum eine muss mander zu druckenden Inhalt immer an die App senden, anstatt eines Eintrages “drucken” zu haben. Zum anderen erscheint mir die Qualität nicht so gut zu sein. Auf der anderen Seite kann man mit AirPrint leider nur in lokalen Netzen drucken.

Das Pendant von Google/Android heist CloudPrint. Wie der Name schon sagt liegt hier der Spooler in der Cloud und ist somit weltweit erreichbar. Der Drucker polled dann regelmäßig auf die Queue und arbeitet die Jobs ab. Leider habe ich lediglich einen Drucker, welcher nativ CloudPrint unterstützt, was also nun tun? Diesmal habe ich es mir einfach gemacht un habe auf die “stabilerer” Windows Lösung gesetzt und den “CloudPrint” listerner auf meinem Terminal Server installiert. Jetzt übernimmt der Windows-Server das Jobhandling und ich kann “weltweit” zu Hause drucken.

OpenVPN und OpenMediaVault

Wenn Ihr OpenMediaVault im Einsatz habt und auch OpenVPN nutzt, werdet Ihr schnell auf das Problem stoßen, dass Euer Netzwerk nicht erreichbar ist. Abhilfe schaft das aktivieren der Paketweiterleitung und das Maskieren der Pakete:

/etc/sysctl.conf:
net.ipv4.ip_forward = 1

sysctl -p /etc/sysctl.conf

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

 

Thinkpad Fingerprint unter Ubuntu einrichten

Als fauler Mensch brauche ich unbedingt einen Fingerprintreader als Authentifizierungssystem 🙂

Bei meinem T60 & T61 war das eine Sache von 5 Minuten.

sudo add-apt-repository ppa:fingerprint/fingerprint-gui
sudo apt-get update
sudo apt-get install libbsapi policykit-1-fingerprint-gui fingerprint-gui

Danach einfach “Fingerprint-GUI” aufrufen und fertig ist man.

Weitere Infos zum Thema ThinkPad & Ubuntu findet Ihr hier.