Skip to content

dd vs. fallocate vs. truncate ...

linux

Gerade bei Virtualisierung kommt man nicht darum herum, Filesystem-Container in einer bestimmten Grösse anzulegen, wenn man nicht komplette Devices übergeben kann oder möchte.

Der Standardweg war bisher, einen solchen Container bzw. eine solche Datei mit dem Kommando dd zu erzeugen. Das kann zuweilen schon einmal einige Zeit benötigen, wie hier auf einem Testserver zu sehen ist:

dirk@testserver:~$ sync ; time (dd if=/dev/zero of=10gig.dd bs=1024 count=10485760 ; sync)
10485760+0 records in
10485760+0 records out
10737418240 bytes (11 GB) copied, 20.7891 s, 516 MB/s

real    1m42.645s
user    0m0.942s
sys     0m19.807s

Die Dauer resultiert daher, dass dd jeden einzelnen Block schreibt (bzw. kopiert) und 10 GiB schreiben, dauert ein wenig ...

Insbesondere ist spannend zu sehen, dass das dd-Kommando bereits nach etwa 21 Sekunden fertig ist, es aber weitere 80 Sekunden dauert bis alles auf der Festplatte ist.

Ein Arbeitskollege wies mich jetzt auf fallocate hin, was ich bisher noch nicht kannte.

dirk@testserver:~$ sync ; time (fallocate -l 10G 10gig.fallocate ; sync)

real    0m0.165s
user    0m0.000s
sys     0m0.013s

Das Programm ist so schnell, weil nicht 10 GiB an Daten geschrieben werden, sondern nur der Platz für die Datei reserviert wird. Das ist völlig ausreichend für nahezu alle Anwendungsfälle.

Die Filesysteme, die fallocate unterstützt sind btrfs, ext4, ocfs2 und xfs.

Das dritte Programm im Bund ist truncate.

dirk@testserver:~$ sync ; time (truncate -s 10G 10gig.truncate ; sync)

real    0m0.087s
user    0m0.000s
sys     0m0.007s

Es ist noch ein wenig schneller als fallocate, weil es mogelt. Es erzeugt ein "sparse file" und gaukelt dem Betriebssystem vor, dass dort eine Datei mit lauter Nullen zu finden ist. Spätestens wenn man eine bestimmte Position in der Datei springen oder etwas verändern will, werden die I/O-Operationen durchgeführt, die man anfänglich vermieden hat.

Aus Sicht des Nutzers sehen alle drei Dateien gleich aus.

dirk@testserver:~$ ls -lah 10gig.*
-rw-r--r--. 1 dirk dirk 10G Jan 10 15:46 10gig.dd
-rw-r--r--. 1 dirk dirk 10G Jan 10 15:48 10gig.fallocate
-rw-r--r--. 1 dirk dirk 10G Jan 10 15:50 10gig.truncate

Die Empfehlung ist aber, in jedem Fall fallocate zu nutzen und nicht dd oder truncate oder anders ausgedrückt, Ihr solltet wissen, was die drei Programme tun und dann das passende für Euren Zweck auswählen.

Git-Server auf CentOS ...

centos

Eigentlich ist "Git-Server" etwas hoch gegriffen, da als Server-Komponente SSH zum Einsatz kommt. Nichtsdestowenigertrotz ist das Endergebnis ein Git-Repository-Server, den man sehr bequem nutzen kann.

Für den Server habe ich einen User git (UserID 600) angelegt, mit dem die Repositories verwaltet werden sollen und das Homeverzeichnis soll unter /srv/git liegen:

groupadd -g 600 git
useradd -u 600          \
        -g 600          \
        -d /srv/git     \
        -m -s /bin/bash \
        git

Eine Besonderheit unter CentOS ist, dass dort SELinux läuft und wir dem System bekanntgeben müssen, dass es sich bei /srv/git um ein Homeverzeichnis handelt. Die einfachste Methode ist, den Kontext eines bestehenden Homeverzeichnisses auf das neue Verzeichnis zu übertragen.

semanage fcontext -a -e /home/dirk /srv/git
restorecon -R -v /srv/
ls -Zd /srv/git

Zu SELinux gibt es reichlich Dokumentation, ich verweise hier einmal auf den SELinux User's and Administrator's Guide bei RedHat. SELinux kann man auch abschalten, wenn einem der Aufwand zu hoch ist.

Der Rest ist relativ einfach und geht strikt nach der gitolite-Anleitung.

Den eigenen Public-Key (wird benötigt, um gitolite zu verwalten) in das Verzeichnis /srv/git kopieren, für mich hat sich dafür das Format user-host.pub bewährt (ich habe auf jedem Host einen separaten SSH-Key und nutze nicht überall den gleichen).

git clone git://github.com/sitaramc/gitolite
mkdir -p ${HOME}/bin
gitolite/install -to ${HOME}/bin
export PATH=${HOME}/bin:${PATH}
echo 'PATH=${HOME}/bin:${PATH}' >> ${HOME}/.bashrc
gitolite setup -pk user-host.pub

Fertig!

Die restliche Konfiguration läuft über das admin-Repository, das man auschecken muss und dann bearbeitet. Die neue Konfiguration ist direkt nach einem git push aktiv.

git clone git@host:gitolite-admin.git gitolite-admin-host.git

Dort finden sich im keydir-Verzeichnis alle Public Keys von Usern, die Zugriff auf irgendeines der Repositories haben sollen und im Verzeichnis conf liegt die gitolite.conf mit einem Beispiel-Repository.

Viel Spass!

Taskserver auf CentOS 7 ...

centos

Im Rahmen meines privaten Migrationsprojektes habe ich natürlich mit Hürden gerechnet, manchmal tauchen die Herausforderungen allerdings an unerwarteten Stellen auf.

Taskserver lässt sich nach Dokumentation relativ leicht installieren. Allerdings läuft bei CentOS 7 ein firewalld mit, der eingehende Verbindungen blockt, was meiner Meinung nach sinnfrei ist, wenn es nur ein Netzwerkinterface hat, aber gut.

Mittels

firewall-cmd --zone=public --add-port=53589/tcp

lässt sich der firewalld überzeugen, eingehende Taskserver-Verbindungen zu akzeptieren.

Kein guter Start ...

fedora

Wie schon vor längerer Zeit angekündigt, wollte ich meinen Hauptrechner auf Fedora umstellen. Interessanterweise hat weder bei der Installation noch danach das Kabel gebundene Netzwerk funktioniert. Das hatte ich bei Linux unabhängig von der Distribution tatsächlich noch nie.

Allerdings war schon spannend, dass ich das WLAN nach der Installation nutzen konnte. Nachdem die Updates eingespielt waren, funktionierte auch Netz über Kabel. Verrückt!

Es wäre klasse, wenn die Installationsmedien entsprechend angepasst würden.

Nachtrag: In den Common F21 bugs, habe ich den Eintrag IP address discovery via DHCP does not work gefunden.

Privates Migrationsprojekt ...

linux

Bezogen auf Linux denke ich gerade über einen Wechsel im grossen Stil nach. Beruflich habe ich neben kommerziellen Unixen (momentan zu 100% Solaris) nahezu ausschliesslich mit Red Hat Enterprise Linux zu tun.

Dem möchte ich gerne privat Rechnung tragen. Die Server sollen auf das "Community Enterprise Operating System" CentOS migriert werden und der Desktop auf Fedora. Das passiert nicht "von Heute auf Morgen", ich habe vorher noch dringendere Arbeiten zu erledigen.

Axel schrieb ja schon einmal:

Irgendwie werde ich das Gefühl nicht los, dass Dirk nie lange bei einer Distribution bleiben wird. Marcus scheint da ähnlich zu ticken. Wirklich verstanden wieso, habe ich bisher nicht.

Mir wäre es jedenfalls viel zu mühsam, alle paar Monate meine produktiven Kisten neuzuinstallieren und mich wieder an was neues gewöhnen zu müssen, trotz dass ich die meisten Konfigurationdateien für mein $HOME in Git-Repositories habe. (Ein weiter Grund für Debian: Nie Neuinstallieren, nur alle paar Jahre mal Dist-Upgraden. :-)

Ja, ich habe die für mich ideale Distribution noch nicht gefunden. Nachdem letztlich ein Dist-Upgrade von Squeeze auf Wheezy mal so richtig viel Nacharbeit erfordert hat, hat das Ansehen von Debian bei mir eine deutliche Macke bekommen. Um eventuellen Nachfragen und dummen Kommentaren vorzubeugen: Es kamen keine Fremdrepositories zum Einsatz. Im "Normalbetrieb" kann ich mich nicht beklagen, da tut Debian seinen Dienst sehr gut.

Der Grund, der Axel bewegt bei Debian (für immer) zu bleiben, ist bei mir der Grund zu wechseln, ich möchte mich auch nicht immer an etwas Neues gewöhnen müssen. Der Unterschied ist, dass ich beruflich und privat zwei Welten bediene. Aber letzten Endes ist die Wahl der Distribution zweitrangig und fast nur Geschmackssache. Wie schon häufiger erwähnt, könnte ich meine private und berufliche Arbeit auf nahezu jedem System erledigen.

Eventuell liegt es auch an der Grundeinstellung, ich sehe mich eher als Linuxer als als Vertreter einer bestimmten Distribution. Und das wirklich schöne ist, dass man auch bei einem Distributionswechsel fast alles weiterverwenden kann, die Programme sind ja grösstenteils die gleichen.

Im Job sind die meisten Server nur einer einzigen Aufgabe (oder Webseite) zugeordnet. Privat verwalte ich rund 30 Domains mit entsprechenden Diensten.

Da ich nicht das Debian-Konfigurationsschema auf CentOS portieren möchte, suche ich nach Dokumentation, die gezielt auf Debian-Umsteiger abzielt. Habt Ihr da Tipps?

Bezüglich Fedora brauche ich noch Hinweise auf "non-free" Software, leider für die üblichen Verdächtigen mp3-Support, DVD und Flash. Da scheint RPM Fusion das Mittel der Wahl zu sein. Weitere Tipps nehme ich sehr gerne entgegen.

Bin für jeden Hinweis dankbar.

Jüngster Leser ...

adminbuch

Hier ist das Bild des vermutlich jüngsten Lesers, unseres Adminbuchs, das übrigens Ende des Monats in einer neuen Auflage erscheint. :-)

Danke Arthur!

Und vielen Dank auch, dass ich das Bild verwenden darf.

Linux Überblicksschulung ...

linux

Ich bin mir nicht sicher, ob das für irgendjemanden hilfreich ist.

Die Schulung habe ich vor fast einem Jahr gehalten und ohne meine Erläuterungen helfen die "Folien" vielleicht nicht so viel. Die Firmeninterna, die ich ebenfalls geschult habe, wurden aus der Präsentation entfernt.

Highlights sind vielleicht, die allgemeine Einführung (Seiten 3-10), Überblick Filesysteme (Seiten 29-32), Einführung vi(m) (Seiten 33-43) und Links und Literatur (Seite 92-99).

Euer Feedback ist erwünscht.

linux.pdf (etwa 900 kB, Links sind klickbar)

Debian LTS ...

debian

Jetzt ist es endlich offiziell:

Long term support for Debian 6.0 Announced

Damit wird Debian Version 6 "Squeeze" bis Februar 2016 unterstützt und kommt damit in die Nähe von Ubuntu LTS. Das wird hoffentlich einige Leute bewegen, bei Debian zu bleiben und eröffnet Debian auch neue "Kunden" in Unternehmen. Die kurze Unterstützungszeit war einer meiner Hauptkritikpunkte.

Der Support kommt allerdings nicht direkt vom Debian-Securityteam, sondern von interessierten Entwicklern. Webanwendungen sind wohl ausgeschlossen (die benutze ich allerdings eh direkt vom "Hersteller").

Für meinen Desktop wäre das nichts, aber auf dem Server werde ich jetzt vermutlich eine Version überspringen.

Ubuntu langsam in VirtualBox ...

ubuntu

Für einen Workshop muss ich Screenshots unter Ubuntu erstellen.

Wenn es Euch wie mir geht und die Grafik sich in einer virtuellen Ubuntu-Installation unter VirtualBox unfassbar langsam verhält, dann helfen Euch vielleicht die folgenden Schritte:

/usr/lib/nux/unity_support_test -p

Zeigt vermutlich (unter anderem) die folgenden beiden Zeilen:

Not software rendered:    no
...
Unity 3D supported:       no

Grund dafür ist, dass Unity die 3D-Grafik durch den Hauptprozessor berechnen lässt und nicht durch die Grafikkarte. Die Lösung dafür ist, die VirtualBox-Extensions zu installieren und dann auch zu aktivieren.

sudo apt-get install build-essential linux-headers-$(uname -r)

Dann über das Menü die VirtualBox-Extensions-CD "einlegen". Bei mir "Devices / Insert Guest Additions CD image ..." (wenn mir jemand den deutschen Text schicken kann, dann binde ich den hier auch ein) oder "Gerät / Medium mit Gasterweiterungen einlegen (Host+D)". Wenn das nicht so funktioniert, hilft dieser Artikel vielleicht weiter.

Danach die Erweiterungen installieren (alles in einer Zeile, statt "DIRK" müsst Ihr Euren Usernamen eintragen):

sudo bash /media/DIRK/VBOXADDITIONS_4.3.10-93012/VBoxLinuxAdditions.run

Jetzt muss Ubuntu noch mitgeteilt werden, dass das Modul für die Videounterstützung standardmässig geladen wird.

echo vboxvideo | sudo tee -a /etc/modules

Jetzt Ubuntu sauber herunterfahren und dann in den Einstellungen der virtuellen Maschine bei Display auf "Enable 3D acceleration" oder "Anzeige / 3D-Beschleunigung aktivieren" klicken. (Bin wieder für die deutschen Namen dankbar).

Nach dem erneuten Hochfahren sollte Ubuntu sich deutlich schneller verhalten und das Kommando

/usr/lib/nux/unity_support_test -p

gibt hoffentlich folgendes aus:

Not software rendered:    yes
...
Unity 3D supported:       yes

Hier der Link auf das Kapitel Hardware-accelerated graphics in der Dokumentation.

Zurück zu Debian ...

debian

Vor einem knappen halben Jahr habe ich openSUSE als Betriebssystem für meinen Rechner gewählt.

openSUSE ist ein sehr gutes System, aber viele der Programme, die ich gewohnt bin, habe ich nicht gefunden. Zum Teil habe ich sie selber übersetzt und zum Teil aus "obskuren" Repositories installiert. Das geht auch, hat mich aber nicht zufrieden gestellt.

Interessanterweise hat mich aber KDE ziemlich überzeugt und dabei werde ich (erst einmal) bleiben.

Dazu kann man sich das normale Debian-System installieren und wenn es so weit ist, wählt man nicht Desktop-System aus, sondern installiert sich das Kommandozeilensystem. Nach dem ersten Start geht es dann mit aptitude install task-kde-desktop weiter (bzw. task-german-kde-desktop). Neu starten. Fertig.

Wenn man nicht möchte, dass GTK-Anwendungen mies aussehen, sollten noch die Pakete kde-config-gtk-style, gtk2-engines-oxygen und gtk3-engines-oxygen installiert und unter System Settings / Application Appearance konfiguriert werden. (Den Tipp habe ich auf der KDE-Seite im Debian-Wiki gefunden).

Spamattacke ...

linux

Gestern gab es eine hässliche Spamattacke auf meinen Hauptserver.

Das schöne ist, das nichts abgestürzt ist, das dumme ist, dass die wichtigen Mails nur mit erheblicher Verzögerung zugestellt wurden.

Es hätte schlimmer kommen können ...

Innerhalb kürzester Zeit sind fast 30'000 Mails auf dem Server aufgeschlagen. Wie man an der Abarbeitungsrate sehen kann, bietet die Antiviren- und Spamerkennung noch Optimierungspotential.

Per-Hour Traffic Summary
------------------------
    time          received  delivered   deferred    bounced     rejected
    --------------------------------------------------------------------
...
    0800-0900          18         20       1528          1          3
    0900-1000        4924       4699       4677        644          6
    1000-1100       19486       3275       3394       3257         29
    1100-1200        4569       3257       3010       3244          7
    1200-1300         965       3292       5970        949          3
...

sudo bei openSUSE ...

opensuse

Standard-Einstellungen muss ich manchmal nicht verstehen.

Um openSUSE kompatibel zu anderen sudo-Installationen zu machen, so dass das User-Passwort für sudo verwendet wird, müssen folgende zwei Einstellungen getroffen werden.

Mit /usr/sbin/usermod -G wheel username oder vigr den User zur Gruppe wheel (den historischen Grund für den Namen wüsste ich gerne, drehen die Leute am Rad?) hinzufügen.

Anschliessend mittels visudo die folgenden beiden Zeilen auskommentieren.

# Defaults targetpw   # ask for the password of the target user i.e. root
# ALL   ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

und die die Kommentarzeichen zu Beginn der Zeile

%wheel ALL=(ALL) ALL

löschen.

Nach einer erneuten Anmeldung des User fragt sudo nach dem Userpasswort und nicht mehr nach dem root-Passwort.

Solarized und Konsole ...

opensuse

Solarized hatte ich hier schon einmal als Thema. Dass die Konsole das als Farbschema gleich mitbringt, finde ich prima. Aber leider scheinen einige Farben nicht so zu sein, wie bei anderen Solarized-Implementationen, die ich kenne (Taskwarrior sah einfach doof aus).

Daher bin ich ganz froh auf GitHub das Projekt konsole-colors-solarized gefunden zu haben. Das löst das "Problem".

Monatlicher Debian Stammtisch in Zürich ...

debian

Die folgende Nachricht rauschte gerade in meine Mailbox und ich bin so frei, das hier über das Blog publik zu machen.

Die Mailadressen habe ich herausgenommen.

Das Originalposting findet sich hier.

Wir wollen in Zürich einen regelmässigen Debian-Stammtisch etablieren.

Das erste Treffen findet statt:

Am Dienstag, 2013-Nov-05, ab 19 Uhr (CET)

Im Gloria, Josefstrasse 59, 8005 Zürich

Jeder, der sich für Debian interessiert, ist eingeladen. Eine Anmeldung ist nicht notwendig.

Als regelmässigen Termin visieren wir den ersten Dienstag im Monat an.

E-Mail-Diskussionen zum Stammtisch bitte auf der Debian CH Community Mailingliste, bevorzugt auf Englisch, Deutsch ist aber auch in Ordnung.

Axel und Michael

Dienstag entwickelt sich einmal mehr zu einem echten Stautermin.

Zurück auf den Start ...

opensuse

In der Oktober-Sendung von RadioTux hat Leszek von openSUSE erzählt und mich sehr damit angesprochen. Da ich zusätzlich fand, dass es mal Zeit für einen Taptenwechsel ist, habe ich mein Notebook auf openSUSE migriert und bin gerade mittelschwer begeistert.

Es gefällt mir richtig gut und das, obwohl ich KDE gewählt habe :->

Irgendwann vor 100 Jahren startete meine Linux-"Karriere" mit SUSE und jetzt bin ich wieder zurück. Schauen wir mal.