Nach dem Artikel zum Fujitsu Celsius Q700 NAS, war bei mir seit langem der „auch-haben-wollen“ Trieb geweckt. Ausserdem suche ich schon etwas länger nach einer Storage, Backup, Media-Streaming Lösung.Und diefertigen NAS die in etwa die Leistung für ein On-the-fly FullHD Re-Encoding mit Plex Media Server hätten, sind irgendwie doch sehr teuer (>1000 CHF). Darum kommt der Eigenbau wieder in Frage. Und da ich jetzt auch weiss was ich brauche und was nicht Fujitsu Celsius sei dank) könnte dieses mal aus der Theorie doch noch etwas passieren.

Leider sind meine aktuellen Consumer Hardware Kenntnisse etwas eingerostet, so musste ich zuerst einmal herausfinden, was aktuell überhaupt geht und was z.B. ein Sockel 1155 ist. 🙂 und bin noch nicht fertig. Da macht sich gerade ein kleines Parallel-Universum auf –> ITX, HTPC, Home-NAS, Low-Power PC …. ei ei ei …

Als ToDo Liste, Vergleichsliste und zur späteren Erinnerung und Erfolgskontrolle wird dieser Eigenbau-Versuch nun dokumentiert. Wenn’s jemandem hilft, ich freue mich über Feedback.

Hier mal ein paar Gedanken… Alles weitere dann in ein paar neuen Beiträgen.

  • Javascript Stromrechner
  • Idle unter 20 Watt
  • Sandy Bridge Celeron d530 oder 540 oder i3?
  • Atom d530
  • Plex FullHD Re-Encoding
  • Snapshot
  • Dedup
  • Raid
  • Backup
  • Afp
  • Smb
  • Timemachine
  • iTtunes und iPhoto
  • Webserver
  • Mysql
  • Nachtabschaltung
  • Wol
  • Dhcp
  • Dns
  • Bonjour
  • Webmin
  • Externes Backup
  • Printer sharing
  • Trunk
  • Mailserver
  • Caldav
  • Carddav
  • Owncloud
  • Zarafa
  • Plex media server
  • Jdownloader
  • Sparkelshare mit git
  • Web filemanager
  • Gui

 

Eigentlich müsste der Beitrag schon seit einem Jahr erstellt sein. Ich habe schon LAAAAANGE nach einer Lösung gesucht und diese vor einem Jahr gefunden.

Um was gehts? Früher war mein Traum, einen bootbaren USB Stick zu besitzen, auf dem verschiedene ISO Dateien von z.B. Linux Distributionen, liegen. Beim Boot von USB kommt dann ein Auswahl Menü der einzelnen ISOs und das Gewählte wird dann gestartet. So ging das aber leider nicht. Es gibt Lösungen um aus verschiedenen Linux ISOs einen Multi-Boot Stick zu bauen, dabei werden die verschiedenen Bootloader und Files zusammen auf den Stick gelegt. Das schafft aber noch keine ESX, Linux und Windows koexistenz, da sehr unterschiedliche Bootloder vorhanden sind.

Ich habe dann noch ultimatedeployment gefunden, eine PXE ISO boot Appliance. Diese extrahiert automatisch die Bootloader der unterschiedlichen OS und legt ein übersichtliches PXE Menü an. Teilweise können auch gleich noch unattended.xml hinterlegt werden.

Dann wurde ich zufällig Zeuge, wie ein Techniker bei uns im Haus folgendes Uber-Gadget eingesetzt hat: iOdd’s VirtualRom. Das ist ein kleines externe 2,5″ HDD Gehäuse mit mini Display und eSATA/USB Anschluss. Wenn in einem definierten Ordner ISO Dateien liegen, können diese über das Display ausgewählt und „gemounted“ werden. Dann meldet sich das Gerät wahlweise nur als USB CD ROM, USB HDD und CD ROM oder nur USB HDD. Genial. ESX und andere OS lassen sich super schnell installieren, und das Hantieren mit CD’s entfällt.

Leider war es SEHR schwierig ein solches Gehäuse zu importieren oder überhaupt zu erhalten (Ausser man kennt jemand der jemand kennt der schon einige hat… 😀 ). Mittlerweile hat Zalman das Produkt bei sich aufgenommen und es ist über die meisten gängigen Distributoren erhältlich. Eventuell ist die Lieferfrist noch etwas hoch.

Ich würde sagen: Geek-Traum! Kann ich uneingeschränkt weiterempfehlen! Hier noch der Link zu Zalman.

Ich hatte den ehrvollen Auftrag, für meinen Verwandten eine Ein-Mann-KMU-Storage Lösung zu evaluieren. Da seine Dropbox vollläuft und die Daten doch lieber Zentral liegen sollen, habe ich mich auf die Suche nach einer geeigneten Lösung gemacht. Bei PCP.ch wurde ich zuerst fündig, die hatten ein Netgear ReadyNAS als Aktion. Soweit ich im Netz Infos finden konnte, wäre das sicher keine schlechte Wahl gewesen. Ich wollte mich aber Vor-Ort noch kurz schlau machen, bevor eine solche Investition getätigt wird. Und siehe da, aktuell haben Sie ein NAS von Fujitsu im Angebot. Ich wusste ehrlich gesagt bis zu diesem Zeitpunkt nicht das es von Fujitsu ein solches Produkt gab. Ich habe mich kurz im Netz informiert und wollte es wagen. Schien mir ein gutes Angebot zu sein. Nun, war es auch.

Darf ich Vorstellen, das Fujitsu Kelvin Q700 NAS. Mehr Infos auf der Produktseite.

Hat eine ARM CPU mit 1.2 GHz, 1 LAN, 512 MB DDR2 RAM und ist sehr leise. Hat aber einen Lüfter (Der selten bis nie läuft?). Dazu einen Front-USB mit Taste für eine definierte Aktion und zwei USB Anschlüsse an der Hinterseite.

Mit einer SAMSUNG 2 TB SATA Festplatte (Spinpoint) braucht das NAS zwischen 11 Watt und 17 Watt. Das wirklich tolle war dann, als ich diesen Artikel gefunden habe: Link QNAP Forum

Hier wird genauestens beschrieben, wie durch ein Firmware Downgrade die Original Firmware eines QNAP TS-219 NAS installiert werden kann. Und danach kann auf jede beliebige neuere Version von QNAPs Firmware aktualisiert werden. TADA! Und jetzt hat man für wenig Geld ein TS-219 von QNAP. Was ist der Vorteil? Fujitsu brandet die Firmware von QNAP. Die Firmware von QNAP ist meistens etwas aktueller als die von Fujitsu. Man kann alles QPKG (Erweiterungspakete) von QNAP verwenden. Wer sich per SSH auf das NAS traut, kann dort noch weitere tolle Dinge tun.

Jetzt zurück zum Ausgang, günstiges Storage für KMU mit Backup. Dafür habe ich mir folgende Lösung überlegt:

RAID 1 ist KEIN Backup! Nochmals: KEIN Backup! Nur Ausfallschutz! Trotzdem nützt mir mein Backup oder meine Daten nichts, wenn diese nicht vor einem Festplattenausfall geschützt sind. Darum ist meine Strategie folgende:

Im NAS werden im Endausbau zwei 2 TB Festplatten im RAID 1 ihren Dienst tun. Damit ist ein Hardware-Ausfall abgefangen. Fürs Backup verwende ich das tolle Linux Tool rsnapshot. Kurze Beschreibung was das Tool macht:

rsnapshot is a filesystem snapshot utility for making backups of local and remote systems.

Using rsync and hard links, it is possible to keep multiple, full backups instantly available. The disk space required is just a little more than the space of one full backup, plus incrementals.

Macht Snapshots und nutzt dazu rsync und Hardlinks. Das heisst, es werden nur geänderte Daten geschrieben, die unveränderten werden bei jedem Snapshot nur als Hardlink verknüpft.

Im deutschen QNAP Club Forum findet man ein fertiges Paket mit einer eigenen Web-Oberfläche für rsnap. Genial! rsnap lässt sich so konfigurieren, dass wenn auf der Festplatte ein Share der mit „HDDIntern“ beginnt existiert, auch ein Backup auf der selben Disk gemacht werden kann. Damit hat man das Backup und die Daten auf der selben Disk, in zwei unterschiedlichen Shares. Durch die RAID 1 Absicherung ist das Backup und die Daten bei einem Disk-Ausfall noch vorhanden.

Der Aufmerksame Leser merkt das hier noch was fehlt. Genau: Offsite-Backup, sprich ein Backup an einem anderen Ort. Dafür bietet das NAS von Haus aus mehrere Möglichkeiten. Backup zur AMAZON S3 Cloud, rsync auf ein Remote-System (z.B. zweites NAS?), und Backup (Synchronisation) auf eine angeschlossene USB Festplatte. Somit kann hier frei gewählt werden was einem passt.

rsnap kann mit stündlichen, täglichen, wöchentlichen und monatlichen Snapshots konfiguriert werden. Hier habe ich zuerst 48 stündliche Snapshots definiert. Sobald diese 48 existieren werden diese bei jedem weiteren Snapshot rotiert, der älteste Snapshot wird gelöscht. Dazu habe ich noch 5 mal Daily eingerichtet. Sobald 48 stündliche Snapshots existieren, wird zum definierten Zeitpunkt ein daily.0 angelegt. Danach noch 5 mal wöchentlich und 60 mal monatlich und somit ist ein Backup auf 5 Jahre konfiguriert. Geht natürlich nur bei moderaten Datenmengen oder geringem Zuwachs.

Hier noch ein Link als Erinnerung zu einem kleinen Bug in rsnap, damit die Logs des Cron-Jobs auch im Fronten angezeigt werden.

Wer noch wissen will wie die QNAP Weboberfläche aussieht und was sie sonst noch alles bietet (Eine Menge!!!) findet hier eine Online-Demo.

Diese Übersicht ist aus den Blog-Beiträgen von ubuntuverse.at. Sie stammt ausdrücklich nicht von mir. Aber ab und zu vergisst das Internet doch was, darum hier meine Notiz. Ich habe die für mich nützlich erscheinenden Befehler drin gelassen. Mehr findet man in den Beiträgen im Link.

  1. Befehlsübersicht

    Um alle Tools und Programme die in den Pfaden der Umgebungsvariable PATH sich befinden, anzeigen zu lassen reicht 2 mal Tabulator und ein y (oder j) in der Konsole.

  2. Online GeoIP Daten einer IP abfragen. Zurück kommt ein json-formatierter String.
    curl -s "http://geoip.pidgets.com?ip=212.69.178.148&format=json"
  3. Eine ganz bestimmte Zeile einer Datei anzeigen lassen.
    head -n 23 /etc/passwd | tail -n 1

    oder mit sed

    sed -n 23p /etc/passwd
  4. Eine Datei in mehrere aufteilen. Neue Dateien enthalten jeweils 10 Zeilen und beginnen mit dem
    Namen neu-.


    split --lines 10 /etc/passwd neu-
  5. Dateien rekursiv durchsuchen mit grep und nur Dateinamen wo etwas gefunden wurde ausgeben.
    grep -r -l suche-nach *
  6. Fortschritts-Anzeige (progress bar) bei Dateien abgleichen mit rsync.
    rsync -avx --progress --stats "/pfad/original/" "/pfad/kopie/"
  7. Eingebauten CPU Namen ermitteln.
    grep "model name" /proc/cpuinfo |uniq
  8. Mit diff Unterschiede zwischen zwei Verzeichnissen anzeigen.
    $ diff folder1 folder2

    Das ganze geht auch über zwei per ssh erreichbare Server.

    $ diff <(ssh server01 "ls /tmp/") <(ssh server02 "ls /tmp/")
    1,8d0
    < lost+found
    < mysql.sock
    < orbit-root
    
  9. Mit time ist es möglich die Zeitdauer eines Befehls oder Skripts anzuzeigen (benchmark).
    $ time ruby script.rb
    
    real    0m0.017s
    user    0m0.008s
    sys     0m0.004s
    
  10. Datum in timestamp umwandeln.
    $ date --utc --date "2009-09-09 09:09:09" +%s
    1252487349
    
  11. Das gesamte interne Netzwerk nach erreichbaren IPs durchsuchen. nmap versucht dabei auch den Hersteller der Netzwerkkarte zu ermitteln.
    $ sudo nmap -sP 192.168.0.0/24
    
    Starting Nmap 4.76 ( http://nmap.org ) at 2009-09-03 18:28 CEST
    Host 192.168.1.122 appears to be up.
    MAC Address: 00:12:52:73:85:4C (Apple)
    Host 192.168.1.181 appears to be up.
    MAC Address: 00:0E:A8:D0:87:DE (Cisco Linksys)
  12. Wissenswerte Tastenkürzeln

    CTRL + l Leert den gesamten Bildschirm, das selbe wie der Befehl clear.

    CTRL + w Löscht nach links einzelne Wörter ab der Cursorposition.

    CTRL + r Inkrementelle Suche durch die Liste der letzt ausgeführten Befehle (bash history).

    ! ! Den letzten Befehl wiederholen.

    CTRL + d Um die Sitzung zu beenden, das selbe wie der Befehl exit.

  13. Wenn der letzte Befehl einen einfachen Schreibfehler hat wie hier eine “3? wo ein “e” sein sollte, so ist es möglich eine Korrektur vorzunehmen:
    $ echo "F3hler"
    F3hler
    
    $ ^3^e
    echo "Fehler"
    Fehler
    
  14. Herausfinden welcher Prozess (Id) auf Port 31337 lauscht.

    $ sudo fuser 31337/tcp
    31337/tcp:           29883
    
  15. Dateien umbennen mit rename. Als Beispiel werden alle .htm zu .html Dateien umbenannt.
    $ rename htm html *htm
  16. Dateiinhalte von unten nach oben anzeigen lassen, ein verkehrtes cat eben :)
    $ tac datei.txt
  17. Einen SSH key auf den Server kopieren muss nicht unbedingt ein langwieriger Prozess sein, das geht auch mit einem Kommando.
    ssh-copy-id user@host
  18. Wieder mal genervt von Programmen die immer eine Eingabeaufforderung brauchen? Noch dazu immer ein Y Enter?
    Dann hilft das Programm yes, das nicht mehr macht als ein “Y” gefolgt von einen Enter zu senden.



    yes | nervende_anwendung
  19. Rar Datei mit einem Passwort öffnen.
    unrar e datei1.rar -pmeinpasswort
  20. Den Computer um Mitternacht runterfahren lassen. Hier wird der Befehl at verwendet der im Gegensatz zu cron nur einmalig gilt.
    sudo halt | at midnight

    Eine Alternative von HogBeard:

    sudo shutdown -hP 00:00
  21. Stresstest für einen Web-Server mit dem Apache Benchmarking Programm ab.

    -n : Anzahl der Anfragen (requests) pro Session.
    -c : Anzahl der multiplen Anfragen pro Durchgang.

    ab -n 1000 -c 1000 http://localhost
  22. Festplatten oder USB sticks sicher Überschreiben mit Nullen, sd23 bitte mit Laufwerknamen ersetzen.
    dd if=/dev/urandom of=/dev/sd23
  23. Um die man pages mit Farbe zu versehen, können Farbwerte für less, am besten in der ~./bash_rc angegeben werden:
    export LESS_TERMCAP_mb=$'E[01;35m'
    export LESS_TERMCAP_md=$'E[0;34m'
    export LESS_TERMCAP_me=$'E[0m'
    export LESS_TERMCAP_se=$'E[0m'
    export LESS_TERMCAP_so=$'E[01;44;33m'
    export LESS_TERMCAP_ue=$'E[0m'
    export LESS_TERMCAP_us=$'E[0m'
    
  24. Port von anderen Rechner auf lokalen Rechner weiterleiten (SSH Tunnel). Habe das die Woche gebraucht weil ich am Server eine Postgres Datenbank laufen habe, aber lokal mit einem Datenbankbrowser arbeiten wollte.
    ssh -L 54321:meinserver.at:5432 -N -f user@meinserver.at

    Danach konnte ich die Datenbank in pgadmin3 über localhost auf Port 54321 ansprechen.

  25. Menschen die sich an elektronischen Tönen erfreuen, können mal ausprobieren Dateiströme, wie ein cat auf syslog an /dev/dsp zu senden.
    cat /var/log/syslog > /dev/dsp

    und das erinnert ja schon ganz schön an Weißes Rauschen.

    cat /dev/urandom > /dev/dsp
  26. Testen ob Internetverbindung besteht.
    if ping -c2 google.at >/dev/null 2>&1; then echo "online"; fi;

    Der Tipp kommt von Willie; damit wird auch gleich angezeigt welche externe IP man verwendet.

    if ping -c2 google.com >/dev/null 2>&1; then 
    echo "Deine derzeitige IP ist: "`wget -q -O – http://showip.spamt.net/`; fi;
  27. Vier Zeilen einer Datei, hier von /etc/passwd per Zufall auslesen.
    shuf /etc/passwd -n 4
  28. Immer wieder tauchen Base64 enkodierte Dateien auf, mit OpenSSL können sie einfach en/dekodiert werden:decode:
    openssl enc -base64 -in in_file -d

    encode:

    openssl enc -base64 -in in_file -e
  29. Website-Mirror ziehen:
    wget -m -k -K -E http://url/of/web/site
  30. Alle verwendeten IP Adressen anzeigen.
    ifconfig | ruby -n -e 'puts $1 if /addr:(S+)/'
    192.168.1.4
    127.0.0.1
    
  31. ~/.bashrc editieren, abspeichern und sofort ausprobieren:
    source ~/.bashrc
  32. Nur die Struktur (Schema) ohne Daten von einer MySQL-Datenbank erstellen.
    mysqldump -u user -ppasswort --no-data datenbankname > database_backup.sql
  33. Mit grep nach “foo” rekursiv in Dateien suchen ohne Unterordner von Subversion.
    grep foo -R  --exclude-dir='.svn' *
  34. Suche nach einem Text in allen Dateien inkl. Unterordner
    find . -name * -exec grep -i 'TEXT' '{}' ';'
  35. Zuletzt geänderten Datein rekursiv im aktuellen Ordner anzeigen.
    find . -printf "%T@ %pn" | sort -n | tail
  36. Nachschauen welches Programm den Port 1234 in Verwendung hat. Nützlich wenn man sich nicht sicher ist was da eigentlich läuft.
    netstat -plantu | grep :1234
  37. Vergleichen, mit vimdiff von einer lokalen (local.txt) und einer am Server (remote.txt) liegenden Datei.
    vimdiff local.txt scp://meinname@meinserver/remote.txt
  38. Nur bestimmtes Kommando für Benutzer auf Server über eine ssh-Verbindung zulassen.
    In ~/.ssh/authorized_keys wird vor den Schlüssel des Benutzers command und das Kommando eingetragen.


    command="/bin/ls -al" ssh-rsa AA...PmQ== benutzer@host
    

    Der Benutzer darf jetzt am Server, über ssh nur mehr ein ls -al ausführen.

  39. Einen Ordner via ssh mittels rsync clonen:
    rsync -avz -e 'ssh -p portnummer' user@host /Quellordner /Zielordner

    Wird der Quellordner ohne abschliessenden / angegeben, so wird der Quellordner selbst kopiert. Ansonsten nur der Inhalt

  40. Datenbank von einem anderen Server via ssh übernehmen:
    ssh user@host mysqldump -u dbuser_server -p dbpwd_server databasename 
    --lock-tables | mysql --verbose -u dbuser_local -p dbpwd_local

Mit alien ist es möglich, RPM Pakete ins DEB Format zu konvertieren. Unter anderem. Es gibt noch ein weitere unterstütze Typen die bei der Konvertierung unterstüzt werden.

Zitat von der Homepage:

Alien is a program that converts between the rpm, dpkg, stampede slp, and slackware tgz file formats. If you want to use a package from another distribution than the one you have installed on your system, you can use alien to convert it to your preferred package format and install it.

tracert & ping in einem Tool. Sagt schon alles oder? Sonst gibt es hier noch einen Wiki-Eintrag.

So sieht das in der Linux Konsole aus:

                             My traceroute  [v0.71]
            example.lan                           Sun Mar 25 00:07:50 2007
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                       Packets                Pings
Hostname                            %Loss  Rcv  Snt  Last Best  Avg  Worst
 1. example.lan                        0%   11   11     1    1    1      2
 2. ae-31-51.ebr1.Chicago1.Level3.n   19%    9   11     3    1    7     14
 3. ae-1.ebr2.Chicago1.Level3.net      0%   11   11     7    1    7     14
 4. ae-2.ebr2.Washington1.Level3.ne   19%    9   11    19   18   23     31
 5. ae-1.ebr1.Washington1.Level3.ne   28%    8   11    22   18   24     30
 6. ge-3-0-0-53.gar1.Washington1.Le    0%   11   11    18   18   20     36
 7. 63.210.29.230                      0%   10   10    19   19   19     19
 8. t-3-1.bas1.re2.yahoo.com           0%   10   10    19   18   32    106
 9. p25.www.re2.yahoo.com              0%   10   10    19   18   19     19

Und für Windows gibts ebenfalls was, mit GUI: http://winmtr.sourceforge.net/

Mit DPKG eine Liste der Installierten Software in eine Datei speichern:

dpkg –get-selections > /backup/software.log

Für den Restore:

dpkg –set-selections < /backup/software.log

Jetzt kann mit dselect die Liste der ausgewählten Programme angezeigt werden und mit i installiert werden.

dselect

Zuerst muss das CD-Laufwerk gemountet werden:

mount -t iso9660 -o ro /dev/cdrom /cdrom

Dann die VMware Tools ins Temp Verzeichniss kopieren:

cd /cdrom

cp VMwareTools-7.8.5-156735.tar.gz /tmp/

Danach kann das CD-ROM wieder deaktiviert werden:

umount /cdrom

Jetzt mit folgenden Befehlen die Build-Tools installieren und die Kernel-Header Sourcen:

aptitude install gcc cpp make automake autoconf binutils psmisc
aptitude install linux-headers-$(uname -r)

Jetzt in das tmp Verzeichniss wechseln und das File entpacken:

tar -xf /tmp/VMwareTools-7.8.5-156735.tar.gz

Jetzt kann die Installation der VMware Tools gestartet werden mit:

cd /tmp/vmware-tools-distrib/

./vmware-install.pl

Nach dem Start werden einige Fragen gestellt die alle mit den Standard-Vorgaben bestätigt werden können. Danach unbedingt neu starten. That’s it!

Damit ich es immer wieder finde, ein Auszug aus der Installationsanleitung von webmin.com:

If you like to install and update Webmin via APT, edit the /etc/apt/sources.list file on your system and add the line :

deb http://download.webmin.com/download/repository sarge contrib

You should also fetch and install my GPG key with which the repository is signed, with the commands :

cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

You will now be able to install with the commands :

aptitude update
aptitude install webmin

All dependencies should be resolved automatically.

Eigentlich sind es nur ein paar wenige Befehle. Wenn ich Zeit habe, mach ich daraus ein kleines Shell-Script. (TODO!)