Seite wählen

Software-RAID-Reparatur bei Hetzner

Debian_logo-black

Manchmal passiert es und eine Festplatte im RAID-Verbund steigt aus, davor ist kein Server gefeit – Glück gehabt, wenn man einen entsprechend gespiegelten RAID-Verbund hat und das Monitoring früh genug Alarm geschlagen hat.

Natürlich hat Hetzner für den Festplattentausch eine Anleitung, was aber, wenn man das Wichtigste vergessen hat: den Bootloader neu schreiben. Das System fährt nicht mehr hoch und langsam bricht Panik aus – völlig unbegründet! Ruhe bewahren und das Rescue-System von Hetzner booten – dann folgen ein paar einfache Schritte zum Erfolg.


Überprüfung des RAID-Verbunds

Mit einem einfachen cat /proc/mdstat prüfen wir den Zustand des RAID-Verbunds. Eine saubere Ausgabe sollte ungefähr so aussehen:

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 nvme1n1p1[1] nvme0n1p1[0]
      523264 blocks super 1.2 [2/2] [UU]

md1 : active raid1 nvme1n1p2[1] nvme0n1p2[0]
      499449152 blocks super 1.2 [2/2] [UU]
      bitmap: 3/4 pages [12KB], 65536KB chunk

unused devices: <none>

Ist hier alles in Ordnung, der Verbund synchron und alle Partitionen sauber eingebunden, schreiben wir den Bootloader nun neu.

Bootloader-Reparatur

Mit folgenden Befehlen schreiben wir den Bootloader auf beide Festplatten bzw. SSDs. Natürlich müssen eventuell die Gerätenamen (/dev/sda, /dev/sdb) angeepasst werden – wie immer gilt: nichts einfach nur kopieren, sondern vorher nachdenken und verstehen!

mount /dev/md2 /mnt
mount /dev/md1 /mnt/boot
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
mount -t proc /proc /mnt/proc
cp /proc/mounts /mnt/etc/mtab
chroot /mnt /bin/bash
grub-install /dev/sda
grub-install /dev/sdb
grub-install --recheck /dev/sda
grub-install --recheck /dev/sdb
mkdir /run/lock
cp /proc/mounts /etc/mtab
update-grub

Nach einem Neustart sollte das System nun wieder sauber starten. Falls das System noch immer nicht sauber startet, kontaktieren Sie mich gerne!

Alles neu macht der Mai

Rund 8 Jahre nach dem letzten Redesign meiner Website ist es mal wieder an der Zeit gewesen, den alten Staub zu entfernen und neuen Wind ins Design zu bringen – immerhin ist es doch ein Unterschied, ob wir 2013 oder 2021 haben…

Ich darf euch und Ihnen also nun heute präsentieren: dominicpratt.de 2021!

Ich denke, mit diesem Relaunch inklusive Umstrukturierung ist meine Website klarer und übersichtlicher geworden. Natürlich bleiben alle bestehenden Beiträge erhalten und werden nicht deaktiviert, damit das Wissen, die Tipps, Tricks und Tutorials darin nicht verloren gehen.

Ich wünsche euch und Ihnen eine gesunde Zeit und freue mich auf weitere, spannende Projekte.

Proxmox 6: Subscription-Popup entfernen

proxmox_logo_standard_hex_400px

Diese Anleitung wurde getestet bis einschließlich Proxmox-Version 6.4-6.

Die hier gezeigte Vorgehensweise kann auch bei neueren Proxmox-Versionen funktionieren.

Diese Anleitung wurde getestet bis einschließlich Proxmox-Version 6.4-6.

Die hier gezeigte Vorgehensweise kann auch bei neueren Proxmox-Versionen funktionieren.

Nachdem mein Beitrag über das Entfernen des Subscription-Popups für Proxmox Version 4 und 5 noch immer oft aufgerufen wird, möchte ich das Ganze mal für Proxmox 6 aktualisieren.

Zur Erinnerung: beim Login im Webinterface erhält man ohne Subscription folgende Meldung:

You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.

Das Popup kann man unter Version 6 mit folgendem Befehl per SSH entfernen:

sed -Ezi.bak "s/(Ext.Msg.show({s+title: gettext('No valid sub)/void({ //1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

Das kann man natürlich – um es auch nach Updates automatisch entfernen zu lassen – auch als Cronjob laufen lassen.

Nextcloud via WebDAV einbinden

Nextcloud Logo

Um meine wichtigsten Daten immer griffbereit zu haben nutze ich eine eigene Nextcloud-Instanz mit End-to-End-Verschlüsselung.

Natürlich stellt sich hier irgendwann auch die Frage nach einer ordentlichen Backup-Strategie. Im Prinzip hat man ja eh auf jedem synchronisierten Gerät eine Sicherung, darauf verlassen wollte ich mich aber nicht unbedingt.

Eine Lösung musste her… was bietet sich mehr an, als meinen persönlichen Nextcloud-Ordner per WebDAV read-only auf einem meiner Server einzubinden und von dort mit Borgmatic zu sichern? Gesagt, getan und so begann eine kleine Odyssee…

Einbinden der Storage-Box

Diese simple Aufgabe habe ich vermutlich schon tausendfach erledigt in meiner Laufbahn. Kurz umreißen möchte ich dennoch, was genau ich getan habe, um die Nextcloud automatisch zu mounten.

Zuerst installieren wir dav2fs und erstellen einen Ordner, in dem die Nextcloud später erreichbar ist…

apt-get install davfs2
mkdir /mnt/nextcloud

Um die Freigabe automatisch mounten zu können, müssen wir unsere Zugangsdaten in der Datei /etc/davfs2/secrets hinterlegen. Falls ihr die Zwei-Faktor-Authentifizierung aktiviert habt, könnt ihr unter Einstellungen -> Sicherheit ein so genanntes App-Passwort erstellen – genau das habe ich auch getan.

In die oben genannte Datei fügen wir nun unsere Zugangsdaten ein.

https://nextcloud.example.org/remote.php/dav/files/USERNAME/	USERNAME	APP-PASSWORT

Abschließend tragen wir den gewünschten Mountpoint in die /etc/fstab ein.

https://nextcloud.example.org/remote.php/dav/files/USERNAME/ /mnt/nextcloud	davfs	user,ro,auto	0	0

Nun können wir mit

mount /mnt/nextcloud

unsere Nextcloud read-only mounten.

Der Stolperstein

Ich musste am Tag darauf meinen Server neustarten und beim starten begrüßte mich diese Meldung:

Give root password for maintenance (or press Control-D to continue)

Nach einem beherzten Druck auf Control-D lief der Start aber problemlos weiter und ich konnte mich einwandfrei anmelden. Alles sah okay aus, im Log gab es allerdings einen Eintrag, dass /mnt/nextcloud nicht gemounted werden konnte.

Das war der Moment, als es mir wie Schuppen von den Augen fiel. Die Einträge in der /etc/fstab werden regelmäßig vor’m Start des Netzwerkinterface ausgeführt, dann ist natürlich die Nextcloud „nicht erreichbar“ und der Systemstart wird blockiert.

Natürlich kann man das Problem, wie einige Blogeinträge im Netz es empfehlen, über ein noauto in der /etc/fstab und einen Eintrag in die /etc/rc.local umgehen… eleganter ist aber das Einfügen der Option _netdev in die /etc/fstab/, sodass der Eintrag so aussieht:

https://nextcloud.example.org/remote.php/dav/files/USERNAME/ /mnt/nextcloud	davfs	user,ro,_netdev	0	0

Die Option _netdev sorgt dafür, dass der entsprechende Mount erst nach dem Start der Netzwerkgeräte ausgeführt wird:

The filesystem resides on a device that requires network access (used to prevent the system from attempting to mount these filesystems until the network has been enabled on the system).

Genau das, was wir wollen – ohne Umweg über die rc.local! Jetzt kann ich damit beginnen, meine Nextcloud zu sichern… und ihr auch!

Zabbix: ISPConfig-Mounts ausblenden

Quelle: Zabbix

Ich überwache mit meiner Zabbix-Instanz mehrere Kundenserver, auf denen ISPConfig zur Verwaltung des Hostings genutzt wird. Leider hat ISPConfig die Angewohnheit, die Logfile-Ordner als Bind-Mount einzubinden – die Standard Discovery-Regel von Zabbix zur Erkennung von Dateisystemen legt also für jeden Bind-Mount mehrere Items an.

Mir bringt das keinen Mehrwert, weil die Parameter der Festplatten und Partitionen sowieso überwacht werden. Die Ordner möchte ich deshalb in der Discovery-Rule ignorieren.

Falls nicht jeder weiß, wovon ich spreche, hier ein Beispiel:

/var/www/clients/client1/web3/log

Wir beginnen damit, im Zabbix einen neuen Regulären Ausdruck zu hinterlegen.

Administration -> General -> Regular expressions

Konfiguration des regulären Ausdrucks

Name: Exclude FS
Expression type: Result is FALSE
Expression: ^/var/www/clients/client[\d]{1,4}/web[\d]{1,4}/log$

Weitere Optionen sind hier nicht notwendig. Wir wechseln zum Template – z.B.

Configuration -> Templates -> Template OS Linux -> Discovery rules -> Mounted filesystem discovery -> Filters

und hinterlegen dort unseren gerade angelegten regulären Ausdruck.

Konfiguration des Filters

Type of calculation: And
Macro: {#FSNAME}
Regular expression: @Exclude FS

Das Ganze wiederholen wir für das Template Template OS Virtual Linux und alle weiteren betroffenen Templates. Je nach Discovery- und Cleanup-Intervall werden die betroffenen Items nun von Zabbix deaktiviert und danach auch entfernt.