Swap Datei/Image erstellen

Prüfen, ob eine Swap Partition existiert

swapon --show

Wenn kein Swap Speicher auf deinem System konfiguriert ist, ist die Ausgabe leer.

Swap Speicher als Swap Datei/Image hinzufügen

Die Swap Datei/Image legen mir mit dem Kommando dd an. Es ist nicht empfehlenswert fallocate oder cp zum Erstellen dieser Datei zu verwenden!

Wir erstellen eine 2GB Swap Datei:

dd if=/dev/zero of=/swap.img bs=1MiB count=$((2*1024))

Stelle sicher, dass die Datei geschrieben wurde:

ls -l /swap.img

Dateirechte setzen

Die Swap Datei wird nur vom OS verwendet. Daher sollte die Datei nicht von anderen Benutzer außer dem Root änderbar sein.

chmod 600 /swap.img

Swap Datei aktivieren

mkswap /swap.img

Ausgabe

Der Swap Speicher wurde korrekt angelegt. Jetzt kann man ihn aktivieren:

swapon /swap.img

Nach einem Neustart vergisst Linux die Aktivierung des Swap Speichers.

Dauerhaft Swap Speicher aktivieren

vi /etc/fstab

Folgenden Eintrag ergänzen:

/swap.img none swap defaults 0 0

reboot

Ort der Swap-Datei ermitteln

cat /proc/swaps

Empfohlene Swap Größen unter Linux

RAM im System Empfohlene Swap Größe
2 GB oder weniger 2 mal die Größe vom RAM
2 GB bis 8 GB RAM 1 mal die Größe vom RAM
8 GB bis 64 GB RAM 0,5 mal die Größe vom RAM
64 GB oder mehr in Abhängigkeit von der Workload

Linux Leistungsverbesserungen

Swappiness

Wenn sich Linux in einer Desktop-Umgebung langsam anfühlt, z.B. beim Entpacken von großen Dateien oder wenn man an den laufenden Computer zurück kehrt und es eine Weile dauert, bis sich jede Anwendung wieder schnell verhält.

Die Ursache des Problems hat wenig mit der tatsächlichen Leistung des Rechners zu tun, sondern mit dem Festplatten-Caching.

Wenn zu wenig Arbeitsspeicher zur Verfügung steht, kann der Blockcache mit Anwendungen um den übrigen RAM kämpfen. Und der Blockcache kann zusätzlich mit dem Inode/Dentry Cache konkurrieren.
Auf einem Rechner mit wenig RAM versucht Linux aggressiv den Speicher zu leeren, um den Cache zu vergrößern. Dies geschieht normalerweise, indem nicht verwendete Teile von Anwendungen auf die Festplatte ausgelagert werden. Das ist nicht gut, weil Festplatten langsam sind.

Für Datenbank-Workloads (MySQL, MariaDB, …) ist der Swap-Speicher von der Festplatte ebenfalls weitaus langsamer als der direkte Zugriff auf den RAM.

Optimieren über Swappiness

Linux verfügt über eine Swappiness-Einstellung, die das Gleichgewicht zwischen dem Auslagern von Seiten (Speicherblöcken) aus dem RAM in einen vorkonfigurierten Swap-Bereich auf der Festplatte bestimmt.

Die Einstellung liegt zwischen 0 und 100, wobei niedrigere Werte eine geringere Wahrscheinlichkeit des Austauschs bedeuten. Der Standardwert ist normalerweise 60. Dies kann mit folgendem Kommando überprüft werden:

sysctl vm.swappiness

Auf Datenbankservern wie MySQL/MariaDB etc. ist es empfehlenswert, das Auslagern auf den niedrigsten Wert zu setzen, indem man swappiness auf 1 setzt.
Dazu setzt man die Variable vm.swappiness in der Datei sysctl.conf (normalerweise in /etc/sysctl.conf) auf 1.

vm.swappiness=1

Dies wird normalerweise erst nach einem Neustart wirksam. Man kann den Wert ohne Neustart wie folgt ändern:

sysctl -w vm.swappiness=1

Eine komplette Deaktivierung von swappiness ist nicht empfehlenswert, weil das Risiko von OOM (Out-Of-Memory) steigt. OOM tritt auf, wenn die Anforderung an RAM größer ist als der freie Speicher + Swap.

Cache Pressure

Dateisystem-Caches sind wichtiger als alle anderen Caches, daher wollen wir Linux sagen, dass wir Inode/Dentry Caches vor anderen Caches bevorzugen wollen. Es handelt sich dabei um einen prozentualen Wert.

Standardmäßig ist der Wert auf 100%. Umso geringer der Wert, desto mehr zieht der Kernel es vor, Inode/Dentry-Caches im RAM beizubehalten und nicht auszulagern. Beim Wert 0 wird gar kein Speicher/RAM mehr freigegeben, das kann allerdings zu einem Out-of-Memory Problem werden. Man kann den Wert auch erhöhen. Wenn der Wert über 100 angehoben wird, erhöht es das Zurückfordern von Inode/Dentry-Caches so, dass es einen negativen Einfluss auf die Systemleistung haben kann.

Optimieren des VFS Cache Pressure

Wenn man den Inode/Dentry Cache bevorzugen möchte, setzt man den Wert vfs_cache_pressure in der Datei sysctl.conf auf 50.

vm.vfs_cache_pressure=50

Um den Wert zur Laufzeit ohne Neustart anzupassen, führt man folgendes Kommando aus:

sysctl -w vm.vfs_cache_pressure=50

Speichercaches leeren

Pages/Seiten, die über einen Eintrag auf der Festplatte verfügen, werden im schnelleren RAM vorgehalten. Mit der Hilfe von Dentry/Inode-Caches wird ein Dateisystem im Speicher abgebildet. Siehe vfs.txt.

Page-Cache leeren:

echo 1 > /proc/sys/vm/drop_caches

Inode/Dentry-Caches leeren:

echo 2 > /proc/sys/vm/drop_caches

Page-/Dentry-/Inode-Cache leeren:

echo 3 > /proc/sys/vm/drop_caches

Das top-Tool zeigt diese speziellen Caches nicht gesondert an, aber im htop kann man schön sehen, wie viel gerade belegt ist (die Anzeige beim Speicher, h drücken für die Hilfe).

TFTP Server in Debian/Ubuntu installieren

TFTP = Trival File Transfer Protocol.

Debian bietet 3 verschiedene TFTP Server:

  • atftpd – Advanced TFTP Server
  • tftpd-hpa – H. Peter Anvin’s TFTP Server
  • libnet-tftpd-perl – Perl Erweiterung für Trivial File Transfer Protocol

Meine Empfehlung ist H. Peter Anvin’s TFTP Server.

Installation:

apt install tftpd-hpa

Konfiguration liegt in /etc/default/tftpd-hpa:

vi /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/srv/tftp”
TFTP_ADDRESS=”0.0.0.0:69″
TFTP_OPTIONS=”-4 –secure -vvv”

-4 bedeutet, nutze nur IPv4 Netzwerkadressen.
-vvv loggt alle TFTP Operationen in syslog

Weitere Informationen im Handbuch oder auf der Konsole via man in.tftpd.

Nach Änderung der Konfiguration:

systemctl restart tftpd-hpa.service

 

 

Installation der VirtualBox Guest Addition / Gasterweiterung für Debian 10 Buster

Die Gasterweiterung von VirtualBox bietet folgende Features:

  • Integration der Maus
  • Gemeinsame Ordner (Shares) zum Austausch von Dateien zwischen Host und Gast (VM)
  • Verbesserte und beschleunigte Grafikleistung
  • Nahtlose Windows-Integration
  • Zeitsynchronisation zwischen Host- und Gastsytem
  • Gemeinsame Zwischenablage zwischen Host und Gast (VM)
  • Automatisierte Anmeldungen
  • Kommunikationskanäle zwischen Host und Gast, mit der die VM gesteuert und verwaltet werden kann

Mehr dazu im Handbuch von VirtualBox: Handbuch

Gasterweiterung einlegen

Um die Gasterweiterung (ISO-Datei) einzulegen (mounten), startet man die virtuelle Maschine. Im Menü der VirtualBox klickt man auf “Geräte -> Gasterweiterung einlegen“.

Auf der Konsole binden wir nun das Laufwerk ein:

mount /media/cdrom0

Bevor man mit der Installation beginnt, werden noch weitere Debian Packages benötigt:

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

Wir starten die Installation:

sh /media/cdrom0/VBoxLinuxAdditions.run

Anschließend starten wir das System neu, um die Module des Kernels neu zu laden

reboot