linux
Sonderzeichen im Dateinamen
Ich bin mal wieder über ein Problem mit Sonderzeichen im Dateinamen auf Windows-Systemen gestolpert:
Konkret kommt man da drauf, wenn man z.B. die Error-Files von LDAP ansehen möchte, die nach diesem Muster aufgebaut sind:
server.name.tld:port.rej
Aber auch bei iSCSI-Definitionen kommen Doppelpunkte im Dateienamen vor.
Auf herkömmlichen Linux- oder Unix-Dateisystemen sind diese Zeichen aber erlaubt:
# ls -l total 16 drwxr-xr-x 2 root root 4096 Dec 30 12:19 : drwxr-xr-x 2 root root 4096 Dec 30 12:19 < drwxr-xr-x 2 root root 4096 Dec 30 12:19 > drwxr-xr-x 2 root root 4096 Dec 30 12:19 ? -rw-r--r-- 1 root root 0 Dec 30 12:19 |
Fazit: Auch wenns erlaubt, vermeide Sonderzeichen in Dateinamen!
dd optimieren
dd ist ein Tool um Dateien und Geräte blockweise zu kopieren. Erst kürzlich kam eine Anfrage zu mir, wie denn die Geschwindigkeit von dd gesteigert werden könnte. Im konkreten Fall ging es auch noch darum, die Daten übers Netzwerk zu übertragen.
1) Komprimierung verwenden
dd if=/dev/sdX bs=1024 count=1024 | gzip -9 | ssh root@192.168.XXX.XXX "gunzip | dd of=/tmp/testfile"
2) Blockgröße einstellen
Die Auswirkung der Blockgröße habe ich mal etwas durchprobiert. In diesem Diagramm, sieht es so aus, als würde die Blockgröße nicht viel bringen. Der default Wert auf dem Test-System war genau ein Block der Festplatte mit 512 Byte. Das anheben der Blockgröße auf deutlich über 1MB bringt je nach Test 30 – 60 % mehr Geschwindigkeit.
Wait I/O
Wait I/O wird immer dann angezeigt, wenn ein Prozess auf die Festplatte warten muss. …
Was kann man gegen Wait I/O tun?
Neben den offensichtlchen sachen, wie z.B. schnellere Festplatten, performantere RAID Levels oder gleich einer SSD gibt es noch eine, zugegeben nutzlose Möglichkeit, den Wait I/O zu reduzieren.
Mit einer leeren Schleife pro CPU Kern, wird die Nutzung so gewandelt, dass sie statt I/O-lastig plötzlich CPU-lastig ist:
while true; do true; done
Abra Ka Kosmetik – die Wait I/O ist verschwunden 😉
PS: Macht das nicht zu Hause (auf einem Produktiv-System) nach…
Speicherauslastung und Swap
Wird der RAM in einem Linux-System zu wenig, wird auch der Swap-Bereich benutzt. Woher kommt es aber, dass manchmal noch Speicher frei ist, aber trotzdem schon Swap benutzt wird?
Laut Thorsten Robers, LPI 301, S. 306 gibt es zwei Bedingungen, wann Speicher in den Swap-Bereich ausgelagert wird:
Steht nicht genügend RAM zur Verfügung oder geht der Betriebssystemkern davon aus, dass der Prozess in nächster Zukunft nicht weiter ausgeführt werden muss, lagert der Kernel diese Daten in den Swap-Speicher aus.
Das bedeutet, dass der Kernel bereits präventiv den Swap-Bereich benutzt, um mehr Speicher für die tatsächlich aktiven Prozesse und den Platten-Cache frei zu haben.
Im Idealfall wird dieser (Anm: der Swap-Speicher) kaum genutzt, wobei nicht die Verwendung der [sic] Swap-Speichers per se auf einen Engpass hinweist. Erst wenn der Kernel Swap-Speicher exzessiv zur Auslagerung von Prozessen und Daten nutzt, wirkt sich das negativ auf die Gesamtperformance des Systems aus.
Das Verhalten "wie gerne" ein System den Auslagerungsspeicher benutzt, kann eingestellt werden unter der Bezeichnung swappiness:
# cat /proc/sys/vm/swappiness 60
60 ist der Default-Wert, 0 würde bedeuten, dass gar nichts mehr in den Swap-Bereich kommen soll.
Dateinamen aus einer Liste extrahieren
Hier die Liste:
# cat test.lst X:KRIS KRISTOFFERSONKRIS KRISTOFFERSON - HELP ME MAKE IT THROUGH THE NI - SINGLE - 1980 - COUNTRY - 0.MP3|TAG|KRIS KRISTOFFERSON|HELP ME MAKE IT THROUGH THE NI||SINGLE|1980|0|COUNTRY|MP3|0|141296|0|327680|0|0|-1|0|0|0|3|192|10|-1|0|0|0|-1472508263|0||0|-1|-1| X:ENGLISCHCCARLENE CARTERCARLENE CARTER - EVERY LITTLE THING - SINGLE - 1980 - DANCE - 0.MP3|TAG|CARLENE CARTER|EVERY LITTLE THING||SINGLE|1980|0|DANCE|MP3|0|192992|0|327680|0|0|-1|0|0|0|3|128|10|-1|0|0|0|804889938|0||0|-1|-1| X:TOM ASTOR UND WOLFGANG PETRY - TAKE ME HOME - FOX.MP3|TAG|TOM ASTOR UND WOLFGANG PETRY|TAKE ME HOME|FOX||2006|||MP3|0|177972|0|327680|0|0|-1|0|0|0|3|192|10|-1|0|0|0|-1510661211|18||43283610|-1|-1| X:TEXAS COUNTRYTEXAS COUNTRY - HEARTACHE COUNTY.MP3|TAG|TEXAS|COUNTRY||- HEARTACHE COUNTY|1999|TRACK|COUNTRY|MP3|0|178364|0|327680|0|0|-1|0|0|0|3|128|10|-1|0|0|0|-742867055|0||0|-1|-1|
Aufgabe: Extrahiere den Dateinamen:
# cut -d"|" -f1 test.lst | awk -F '' '{ print $NF }' KRIS KRISTOFFERSON - HELP ME MAKE IT THROUGH THE NI - SINGLE - 1980 - COUNTRY - 0.MP3 CARLENE CARTER - EVERY LITTLE THING - SINGLE - 1980 - DANCE - 0.MP3 TOM ASTOR UND WOLFGANG PETRY - TAKE ME HOME - FOX.MP3 TEXAS COUNTRY - HEARTACHE COUNTY.MP3
Howto: Screen
Screen ist ein kleines Programm, welches einen eigenen "Bildschirm" öffnet. Dieser läuft auch nach dem ausloggen der Shell weiter und kann in einer anderen Sitzung wieder übernommen werden.
Screen starten:
screen
Wieder ausloggen: [Strg + a]; d(etatch)
Vorhandene Screen-Sitzungen auflisten:
server:~ # screen -list There is a screen on: 27272.pts-4.server (Detached) 1 Socket in /var/run/screens/S-root.
Eine Sitzung forsetzten
screen -r(esume) [PID]
PID ist nur notwendig, wenn bereits mehr wie eine Sitzung läuft.
Howto: Patch
Patch einspielen ganz einfach:
In der Ordner mit dem Source-Code wechseln:
cd /usr/src/linux
Patch anwenden
patch -p 1 < /path/to/patch/patch.patch
"-p 1" steht dafür, dass der erste Ordner aus den Patch-Files weggelassen wird!
Fertig!
Speichertest über Netzwerk starten
Vorausgesetzt es arbeitet schon ein Linux-Server im lokalen Netzwerk, ist PXE Boot für z.B. Speichertests leicht einzurichten.
Im DHPC wird definiert, dass übers Netzwerk gebootet werden soll. Infos gibt's unter www.syslinux.org
/etc/dhcp.conf
host hostname { hardware ethernet 00:XX:XX:XX:XX:XX; fixed-address 192.168.XX.XX; option routers 192.168.XX.XX; filename "pxelinux.0"; }
In der PXE Config lädt man einfach den Speichertest.
/tftpboot/pxelinux.cfg/default
LABEL MEMTest MENU LABEL Speichertest KERNEL memtest
Master-Master Replikation
Warum es keinen Sinn macht in einer Multi-Master-Replikation auf mehrere Master schreibend zuzugreifen. Und ich behaupte mal, dass das nicht nur für Mysql sonder auch für andere Datenbanken oder Dateiserver gilt:
One of the most seductive traps to fall into is to believe that you gain anything by making more than one server in a replication topology writeable. The usual thought traps are, "I'll get more write performance" or, "All nodes will be equal and failover will be easier." Both are false.
You do not gain performance by writing to both masters in a master-master setup. All writes are sent through replication and must be repeated on every node, so it doesn't matter where they originate.