ich bin derzeit dabei, den Grafana Agent für die Erfassung von Telemetriedaten zur Analyse und Überwachung über den Grafana-Stack (Grafana, Loki, Mimir, Tempo und Prometheus) zu testen.
Leider wurde der Support für ARMv6 eingestellt,, worunter auch ein Raspberry Pi fällt. Glücklicherweise ist das offizielle Repository gut dokumentiert, sodass es relativ einfach ist, das aktuelle stabile Release auch für meinen Raspberry Pi 4 zu kompilieren.
Ein virtuelles Gerät (virtual device, vdev) ist ein Verbund aus blockorientierten Geräten (LinuxWiki: Block-Device) welche zu einem (virtuellen) Gerät zusammengefasst werden.
Pool
Ein Pool umfasst ein oder mehrere vdevs, welche unterschiedlich konfiguriert (verschiedene RAID-Typen) sein können und ein paar globale Einstellunngen, welche auf alle enthaltenen vdevs zutreffen (deduplizierung, kompression uvm.).
RAIDZx
N = Anzahl Festplatten
Stripe
Mirror
RAIDZ1
RAIDZ2
RAIDZ3
Min. Festplatten
1
2
2
4
5
Fehlertolleranz
0
N-1
1
2
3
Größe Parität
0
(N-1)/N
1
2
3
Die Parität wird über alle Festplatten verteilt.
ARC – Lesecache im RAM
Der Adaptive Replacement Cache (https://www.usenix.org/legacy/events/fast03/tech/full_papers/megiddo/megiddo.pdf) wird von ZFS im RAM abgelegt und enthält häufig angefragten Daten. Demnach sollte der RAM im Hostsystem so groß wie möglich sein. Empfohlen wird ZFS nicht mit weniger als 32GB RAM zu verwenden. Im Detail kann dies jedoch je nach Anwendungsfall variieren.
L2ARC – Lesecache auf SSDs
Level-2-ARC ist eine Lösung für kleine Budgets oder besondere Anforderungen. Dabei wird ein Teil der Daten aus dem ARC, wenn dieser voll ist, in den L2ARC geschoben. Es sollte klar sein, dass ausschließlich enterprise ssds als L2ARC verwendet werden sollten, da es sonst zu einer überaus schlechteren Performance führen kann, als ohne L2ARC und vollem ARC. Stichwort: Latenz
ZIL / LOG – Schreibcache auf SSDs
Um sicherzustellen, dass ein Schreibvorgang abgeschlossen ist, wird jeder Vorgang nach Abschluss bestätigt. Sobald bspw. das Betriebssystem nach einem Schreibvorgang eine solche Bestätigung erhält, ist wohldefiniert, dass die geschriebenen Daten an der vorgegeben Stelle vorhanden sind.
Dieses verhalten führt aber zu Problemen bei Festplatten. Da die Latenz einer Festplatte (Signalweg, Bewegung Lese-/Schreibkopf etc.) sehr hoch ist, kann es bei vielen paralellen Vorgängen dazu führen, dass das Hostsystem im sogenannten „iowait“ einfriert.
Als Antwort auf das Problem bietet ZFS die Möglichkeit, einen Schreibcache zu konfigurieren. Diese fängt alle Schreibvorgänge ab und muss immer schneller als der „echte“ Pool aus (wahrscheinlich) Festplatten. Da der ZIL nur mit SSDs eingerichtet werden sollte, ist klar, dass durch die verringerte Latenz es zu wesentlich weniger iowait kommt.
Bei der Umsetzung sollte jedoch darauf geachtet werden, dass der ZIL immer als Mirror betrieben werden muss, die SSDs PLP besitzen und das Hostsystem über eine UPS verfügt. Da die Daten im ZIL noch nicht auf den Pool geschrieben wurden, würde es ansonsten bei einem Stromausfall oder Hard-reset zu Datenverlust kommen.
schon seit Jahren setze ich auf Nextcloud als freie Alternative zu Google Drive, iCloud und OneDrive, doch meine Sammlung von 15 Jahren an Fotos zwang bisher jeden Managed Nextcloud Provider in die Knie. Also bleibt mal wieder nur, es in die eigenen Hände zu nehmen 💪
Da ich Nextcloud genau auf meine Bedürfnisse anpassen wollte, habe ich bei 0 begonnen und nicht das vorgefertigte Docker Image von Nextcloud verwendet. Mal davon abgesehen, dass die Beispielkonfiguration nicht mal stabil ist!
da ich seit gut 2 Jahren auf meinem Laptop (XPS 9360) Fedora am laufen habe und dies einen Releasezyklus von 6 Monaten hat, kam vor ein paar Wochen ein Upgrade auf Version 31. Dabei habe ich in den Releasenotes “übersehen”, dass jetzt cgroups-v2 zum Einsatz kommen.
vor einiger Zeit schon habe ich eine Mail von OVH erhalten, dass für meinen VPS jetzt auch eine IPv6 Adresse zur Verfügung steht. Damals hatte ich keine Zeit/Lust mich darum zu kümmern, was ich aber heute geändert habe. Nachfolgend nur eine kleine Dokumentation zur Umsetzung.
da ich seit ein paar Tagen an einem Projekt in Go arbeite, wo ich viel mit Bilder hantieren muss, wollte ich das Rad nicht neu erfinden und OpenCV benutzen. Dabei bin ich auf das Projekt gocv.io gestoßen, welches bindings für Go bereitstellt. Deren Dokumentation ist zwar nicht die Beste, enthält aber eigentlich alles was man braucht. Dabei liefert das Projekt direkt eine eigene Installationroutine mit, welche direkt auch OpenCV 3.4.2 installiert. Komischerweise schlug dies bei mir immer fehl, auch nachdem ich opencv über dnf installiert habe, ohne es direkt zu compilen. Deswegen habe ich OpenCV dann von Hand gebuildet, womit nun jetzt auch alles funktioniert und wie ich das gemacht habe, wollte ich hier kurz zusammenfassen.
Befasst man sich etwas länger mit dem Thema eines eigenen Servers oder arbeitet mit diesen, stößt man irgendwann auf Proxmox VE oder auf einen seiner bekannteren Kollegen wie Xen. Proxmox dient zur Server-Virtualisierung, aber es ist kein reines Verwaltungs-Tool für die Virtualisierung mit KVM und OpenVZ, sondern eher ein Rundum-sorglos-Paket mit vielen nützlichen Features. Zwei zusätzliche Features sind z.B. HA und Live Migration. Aber nun zum eigentlichen Thema: Möchte man aus seinem Dedicated Server alles herausholen, oder möchte bestimmte Funktionen (Mail-Server, Web-Server, Bouncer etc) oder kritische Anwendung voneinander und/oder zum Internet abschirmen, kann man dies wunderbar mit Virtualisierung lösen. Was ist aber nun, wenn man aus welchem Grund auch immer nur 2 IPs für seinen Server zur Verfügung hat aber man n VMs benötigt? Wenn man bei Google danach sucht, findet man viele Blogeinträge oder Threads in diversen Foren. Mit den dort angebotenen Lösungen, kommt man auch zum Ziel, jedoch finde ich die meisten Lösungen “unschön”. In diesem Post möchte ich auf arno-iptables-firewall eingehen, welches ich für das Umsetzen des oben angesprochenen Problems nutze. Das Ziel ist es eine Bridge aufzusetzen und den VMs über NAT eine private IP zuzuweisen zusätzlich zeige ich noch, wie man dafür sorgt, dass die VMs von außen erreichbar gemacht werden und wie der Host von den VMs “getrennt” wird.