Echten Linux Server mit Proxmox ersetzen

Warum?

Mein alter Home-Server – ein normaler Celeron ist jetzt 10 Jahre alt.
Daraus ergeben sich folgende Probleme:

  • Alter:
    Die Gefahr, dass jetzt etwas ausfällt steigt langsam auf ein kritisches Maß an, egal ob SSD, Festplatten, Motherboard usw.
  • Komplexität:
    Alles auf einer Maschine, mit gewachsen und inzwischen superkomplexen Konfigurationen, so dass jede Änderung zu einem Abenteuer wird. Vor allem Upgrades auf neuere Linux Versionen kosten immer mehrere Tage bis alles wieder läuft.
  • Stromkosten:
    Als der Server aufgebaut wurde waren Stromkosten kein großes Thema. Wenn eine Platte voll war, kam eine neue Platte dazu. Und natürlich waren die wichtigen Daten auf einem Raid1. Das summierte sich alles auf 60-70 Watt im Leerlauf.

Der Plan:

  • Neuen Rechner kaufen mit folgenden Anforderungen:
    • möglichst mit Mobilprozessor (wegen dem geringeren Stromverbrauch)
    • mindestens einem Schacht für eine 3,5′ Festplatte.
    • am Besten einen generalüberholten gebrauchten Mini PC für um die 100€
  • Alle Funktionen sollen virtualisiert laufen.
    Jeder Dienst der auf dem Rechner läuft soll in einem eigenen Container laufen, das minimiert
    • die Komplexität,
    • den Konfigurationsaufwand,
    • den Wartungsaufwand
    • die Backups

Ich habe einen Dell für 99€ mit einer 250GB SSD gefunden. Die 250GB sind zu wenig, also eine 1TB SSD für das System und eine 12TB Platte für die Daten in das Gehäuse geschraubt und los geht’s. Der Rechner läuft mit 17W.

Setup:

Schritt 1: Installation der Virtualisierungsumgebung Proxmox

Das geht ganz einfach und ist schnell gemacht

Alles was wir jetzt machen findet auf der Shell von den neu installierten Proxmox-Server statt.
Es macht keinen Unterschied ob via ssh (cooler) oder dem Proxmox Web-Interface).

Schritt 2: Einrichtung von LVM auf einer Festplatte

WICHTIG: sdX = Das X müsst Ihr durch die Nummern eurer Platte(n) ersetzen. (df -h)

Dazu brauchen wir erst mal ein LVM („Logical Volume Manager“). Das ist eine zusätzliche Abstraktionsschicht zwischen physikalischen Datenspeichern und dem Betriebssystem, die eine flexible Aufteilung und nachträgliches Größe ändern erlaubt. (Mehr Infos: wikipedia/LVM)
Weiter im Text: Die Schritte zur Einrichtung von LVM auf der Festplatte mit den entsprechenden Befehlen und einer kurzen Erklärung für jeden Schritt:

  1. Partitionierung der Festplatte:
   sudo fdisk /dev/sdX

fdisk, um die Datenplatte /dev/sdX zu partitionieren. Partitionen für jeden Bereich erstellen, bei mir (Dokumente, Backups, Filme).

  1. Erstellen von physischen Volumes (PVs):
sudo pvcreate /dev/sdX1
# Falls man das LVM über mehrere Platten spannen will:
# sudo pvcreate /dev/sdX1 /dev/sdX2 /dev/sdX3

Mit pvcreate erstellt man das physische Volumes auf der Partition.
Falls man das LVM über mehrere Platten spannen will, müssen die anderen erstellten Partitionen zB /dev/sdX1, /dev/sdX2 und /dev/sdX3. auch angegben werden.
Diese physischen Volumes dienen als Basis für das LVM.

  1. Erstellen einer Volume Group (VG):
   sudo vgcreate myvg /dev/sdX1 /dev/sdX2 /dev/sdX3

vgcreate erstellt eine Volume Group namens “myvg” und fügt die zuvor erstellten physischen Volumes hinzu. Die Volume Group ist der Pool, aus dem logische Volumes erstellt werden.

  1. Erstellen von logischen Volumes (LVs):
   sudo lvcreate -L 20G -n documents myvg
   sudo lvcreate -L 30G -n backups myvg
   sudo lvcreate -L 50G -n movies myvg

Mit lvcreate erstellen wir jetzt logische Volumes innerhalb der Volume Group “myvg”. Jedes logische Volume erhält eine bestimmte Größe (-L) und einen Namen (-n). In diesem Fall haben wir “documents”, “backups” und “movies” als Namen gewählt.

  1. Dateisysteme erstellen und mounten:
   sudo mkfs.btrfs /dev/myvg/documents
sudo mkfs.btrfs /dev/myvg/backups
sudo mkfs.btrfs /dev/myvg/movies

sudo mkdir /mnt/documents /mnt/backups /mnt/movies
sudo mount /dev/myvg/documents /mnt/documents
sudo mount /dev/myvg/backups /mnt/backups
sudo mount /dev/myvg/movies /mnt/movies

mkfs.btrfs formatiert die logischen Volumes mit dem btrfs-Dateisystem. Dann werden Verzeichnisse erstellt, um die logischen Volumes zu mounten, und gemountet.

Diese Schritte ermöglichen es dir, LVM auf deiner Festplatte einzurichten und den verfügbaren Speicherplatz dynamisch in verschiedene Bereiche aufzuteilen, die separat verwaltet werden können. Durch die Verwendung von logischen Volumes kannst du die Größe der Bereiche bei Bedarf anpassen, ohne die anderen Bereiche zu beeinträchtigen.

Schritt 3: Festplatte in einen LXC Container mounten

Um die Festplatte in den LXC zu mounten bedarf es leider der Console (zumindest habe ich keine Möglichkeit über das Frontend gefunden). Die Anleitung hierfür findet man unter https://pve.proxmox.com/wiki/Linux_Container#_bind_mount_points (Danke an Georg für’s herausfischen).

# Syntax: pct set lxc_id -mpX /quelle_auf_host,mp=/mountpoint_im_lxc

pct set 200 -mp0 /mnt/documents,mp=/documents
pct set 200 -mp1 /mnt/backups,mp=/backups
pct set 200 -mp2 /mnt/movies,mp=/movies

# Wichtig: Der Container muss dazu gestoppt sein sonst erhält man folgende Fehlermeldung:
pct set 200 -mp1 /mnt/backups,mp=/backups
400 Parameter verification failed.
mp1: unable to hotplug mp1: failed to move 'mp1' into container hierarchy: Permission denied

Dateifreigabe im Netzwerk mit Samba konfigurieren

Samba installieren

sudo apt install samba

dann die Samba Konfig editieren

 sudo nano /etc/samba/smb.conf

und um folgende Zeilen erweitern:

[movies]
comment = Filme
path = /movies
writable = yes
create mask = 0666
directory mask = 0770
guest ok = yes
[daten]
comment = Daten
path = /daten
valid users = hagen, @family
writable = yes
create mask = 0660
directory mask = 0770
guest ok = no
inherit acls = Yes

[backup]
path = /backup
valid users = hagen
writable = yes
create mask = 0660
directory mask = 0770
guest ok = No

danach Samba neu starten

sudo service smbd restart

TL;DR:

lvcreate -L 800G -n daten myvg
lvcreate -L 2000G -n daten myvg
lvcreate -L 2000G -n backup myvg
lvcreate -L 2000G -n medien myvg


mkdir /mnt/daten
mkdir /mnt/backup
mkdir /mnt/movies
mkdir /mnt/audio

mkfs.btrfs /dev/myvg/audio

touch /mnt/audio/audio_UNmounted

mount /dev/myvg/audio /mnt/audio

pct set 200 -mp1 /mnt/daten,mp=/daten
pct set 200 -mp1 /mnt/backup,mp=/backup
pct set 200 -mp2 /mnt/movies,mp=/movies
pct set 200 -mp3 /mnt/audio,mp=/audio

pct enter 200
reboot

pveam available
pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst


lvs
lvextend -L 1T /dev/mapper/myvg-backup
lvextend -L 3T /dev/mapper/myvg-backup

btrfs filesystem resize max /mnt/backup/
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert