Synology NAS durch Debian Homeserver ersetzen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 26.01.2020 21:17:52

Vielleicht ist das Tutorial von Aaron Toponce https://pthree.org/2013/01/02/zfs-admin ... roperties/ etwas out of date. Ich habe halt das zum Einlesen und Planen genommen. Dort steht zur Recordsize:

recordsize: Specifies a suggested block size for files in the file system. This property is designed solely for use with database workloads that access files in fixed-size records. ZFS automatically tunes block sizes according to internal algorithms optimized for typical access patterns. The size specified must be a power of two greater than or equal to 512 and less than or equal to 128 KB. Changing the file system's recordsize affects only files created afterward; existing files are unaffected. This property can also be referred to by its shortened column name, "recsize".

Damit wäre doch 1M out of range?

Bei Compression nehme ich lieber das lz4, was auch der default ist. Der Ausblick, dass sich der Default ändert und ich das nicht mitkriege und dann einfach damit automatisch sich was am Pool ändert ist eher nicht so toll.

Bezüglich dedup: das sollte ja auch der default sein, aber klar vlt. nehme ich es zur Sicherheit noch mit rein.

Bezüglich xattr da steht bei Toponce es gäbe nur on und off. Beim Arch-Wiki gibt es da auch dieses sa. dnodesize wird gar nicht thematisiert. Muss ich mir mal durchlesen. Ich habe von xattr vor allem im Zusammenhang mit ACL gelesen, die ich ja eignentlich gar nicht nutzen will.

Vielen Dank fürs Feedback.

Edit: Habe das hier gelesen https://jrs-s.net/2019/04/03/on-zfs-recordsize/ und denke mit Filmen, Musik, Fotos, Scans Textdokumenten usw. kann ich auch global mit -O recordsize=1M das groß setzen und es sollte passen. Die paar asci-Files etc. sollten da dann auch passen.

xattr=sa bringt wohl was für performance, macht aber probleme sollte man mal nicht zol nutzen wollen. Letzteres ist für mich kein Problem.

Damit wäre ich dann bei:
zpool create -o ashift=12 -o autoexpand=on -O recordsize=1M -O xattr=sa -O dnodesize=auto -O compression=lz4 -O dedup=off-O relatime=on pool \
mirror \
cryptbay1 \
cryptbay2 \
mirror \
cryptbay3 \
cryptbay4

Das ich das snapshot tool aus den quellen installieren kann ist super, beim suchen in den Quellen hatte ich nur was von zol und zed gelesen.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Lord_Carlos » 26.01.2020 21:49:43

Hier ein 2019 Eintrag zu recordsize: https://jrs-s.net/2019/04/03/on-zfs-recordsize/

xattr=sa hat kein Nachteil, es sei denn du willst es auf nicht linux systemen mounten.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 26.01.2020 22:10:29

^^ Siehe edit ;).

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 01.02.2020 22:33:57

Die ganze Server-Hardware ist bestellt, langsam wirds ernst :).

Mal ne Frage zur Installation von ZFS. Auf der ZoL Seite wird für Debian vorgeschlagen das so zu machen:
nano /etc/apt/sources.list.d/buster-backports.list
deb http://deb.debian.org/debian buster-backports main contrib
deb-src http://deb.debian.org/debian buster-backports main contrib

nano /etc/apt/preferences.d/90_zfs
Package: libnvpair1linux libuutil1linux libzfs2linux libzpool2linux spl-dkms zfs-dkms zfs-test zfsutils-linux zfsutils-linux-dev zfs-zed
Pin: release n=buster-backports
Pin-Priority: 990

apt update
apt install --yes dpkg-dev linux-headers-$(uname -r) linux-image-amd64
apt-get install zfs-dkms zfsutils-linux

Da wird also ein pinning vorgenommen. Im Wiki wird geschrieben, man solle sich das gut überlegen. Ist das wirklich notwendig oder würde es auch reichen, einfach backports main hinzuzfügen und zfs-dkms und zfsutils-linux zu installieren?

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Lord_Carlos » 01.02.2020 23:30:07

Ich habe nichts mit pinning gemacht. Kenne mich da nicht so aus.
Aber ja, ich benutzte auch backports.

Aber vor wenigen Tagen das hier gefunden. Eigentlich nur dazu damit nicht immer der neuste Kernel installiert wird der ggf nicht mit ZFS zusammen passt.
ZFS wurde von mir auskommentiert.

Code: Alles auswählen

#!/bin/bash

declare -a ZFS KERNEL

#ZFS=(spl spl-dkms zfs-dkms zfsutils-linux libnvpair1linux libuutil1linux libzfs2linux libzpool2linux)

KERNEL=(linux-image-amd64 linux-headers-amd64)

apt-get update

#apt-get install "${ZFS[@]}"
apt-get install "${KERNEL[@]}"

apt-mark hold "${KERNEL[@]}" #"${ZFS[@]}"
ZFS 0.8.3 ist jetzt in Testing :3 Freu mich schon wenn es in Backports ist.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 02.02.2020 17:05:39

Ah ok, ich habe noch mal nachgelesen und anscheinend sorgt das pinning genau dafür, dass bei einem update die entsprechenden Pakete aktuell gehalten werden.

So ganz leicht habe ich auch überlegt, Debian Sid zu nutzen und mir das ganze mit den Backports zu sparen. Mit arch habe ich eigentlich noch keine schlechten Erfahrungen mit RR gemacht. Kann natürlich sein, dass es mit Sid anders ist, weil es nicht als RR gedacht ist, sondern als eine Entwicklungsversion.

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 06.02.2020 13:52:59

Oh man, mir ist aufgefallen, dass ich mich noch nicht wirklich mit ZED befasst habe.
Das wird in vielen Anleitungen auch spärlich behandelt.

Bislang habe ich im Arch Wiki zwei Dinge gefunden, für die ich ZED gebrauchen kann.
1. Das automatische Mounten beim Boot.
2. Für die Email Benachrichtigungen, bei Events.

Beides versuche ich mir gerade zu erschließen.

Ansonsten sollten Morgen oder Übermorgen die letzten Teile kommen und der aktuelle Planungsstand sieht so aus:
ZFS Pools und Datasets: Habe ich, glaube ich, final.
ZED: Habe ich etwas übersehen, wie man sieht.
Benutzer und Gruppen: auch final.
Samba: Hier habe ich einen Entwurf, der durch ein paar Test Dateien und ein paar Test mounts mit verschiedenen Nutzern in kurzer Zeit nach Einrichtung zeigen sollte, ob das funktioniert.
TVHeadend, easyepg und emby: Die Anleitungen für Einrichtungen sind soweit vorhanden und sollten keine großen Probleme machen. Emby Einrichtung definiere ich beim machen aus.
Backups: Ich habe etwas mit Borg rumgespielt und angefangen mir Gedanken über bash Skripte für die Automatisierung zu machen. Da habe ich einige Fragen, aber komme nur schleppend voran. Habe auf Reddit schon mal nach Hilfe gesucht, aber so wirklich rumgekommen ist dabei nichts. Vielleicht mache ich hier noch mal einen Thread auf.
Monitoring: Ich glaube, wenn ich ZED am laufen habe und auch Smartchecks bekomme, reicht mir das fast. Der Schlüssel ist wohl Emailversand hinzubekommen. Meine Backups möchte ich dann auch damit monitoren. Ist aber auch noch recht unklar.
UPS Shutdown: Habe ich auch irgendwie aus den Augen verloren.

Ich hab echt unterschätzt, wie viel Arbeit dahintersteckt und wie viel ausdefiniert werden muss. Aber auch, wenn noch einiges offen ist, habe ich doch schon nen großes Stück geschafft und zumindest so viel geklärt, dass ich das System erst mal installieren und die wichtigsten Komponenten aufsetzen kann. Bis es aber meine NAS wirklich produktiv ersetzen kann und ein kompletter Datentransfer Sinn macht, vergehen wohl noch einige Tage.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Lord_Carlos » 06.02.2020 14:04:58

Unter Debian wird ZFS mit systemd services gemountet.
Aber fuer email Benachrichtigungen bei Scrub oder Fehlern nimmst du ZED. Viel einstellen muss man da nicht.

Man muss aber erstmal Debian dazu bewegen Emails zu versenden. Ich hatte da so meine Probleme, guck mal den letzten Beitrag hier: viewtopic.php?f=8&t=175245&hilit=email#p1221052 (Ich versende via gmail)

Wenn der email kack eingerichtete ist, kannst du den auch fuer SMART benutzten. Da muss nur eine Zeile angepasst werden AFAIK.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 06.02.2020 14:37:50

Und muss ich den mount noch konfigurieren oder wird der automatisch angelegt, wenn ich den Pool anlege, so wie anscheinend auch die Cronjobs automatisch angelegt werden?

Deinen Post zu Emails habe ich nicht vergessen, aber ich will lieber nicht gmail nutzen.
Ich habe hier ne Anleitung gefunden https://www.reddit.com/r/homelab/commen ... s_for_zfs/
Aber bevor ich das einfach kopiere, will ich es noch besser verstehen.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Lord_Carlos » 06.02.2020 14:48:26

Fuer automounts muss du nichts machen wenn ich das richtig in Erinnerung habe.

Exim ist bei Debian schon installiert. Eigentlich musst du es nur beibringen richtige emails zu versenden.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 06.02.2020 16:28:10

Hat exim denn Vorteile gegenüber einfachen SMTP Clients wie msmtp?

Etwas einzurichten, was selbst Mails senden kann, ist wahrscheinlich ein bisschen overkill. Ich habe erst überlegt einfach einen meiner Aliasse zu nehmen bei meinem Emailprovider, aber weil man irgendwo das Passwort speichern muss, nehme ich vlt. lieber irgendeine Wegwerf-Adresse.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Lord_Carlos » 06.02.2020 16:51:10

Ne, aber ich musste am ende nur eine config Datei anpassen.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von jph » 07.02.2020 12:40:13

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
06.02.2020 14:48:26
Exim ist bei Debian schon installiert. Eigentlich musst du es nur beibringen richtige emails zu versenden.
Was nicht weiter schwierig ist, wenn man den Dreh einmal raus hat.

Code: Alles auswählen

# dpkg-reconfigure exim4-config
Du wählst danach „Versand über Sendezentrale (Smarthost); keine lokale Zustellung“. Der Smarthost kann bspw. der SMTP deines Mailaccounts sein. Wie du dich bei dem authentifizierst, kannst du in https://wiki.debian.org/Exim#Smarthost_ ... entication nachlesen.

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 07.02.2020 14:27:42

Hmm irgendwie sehe ich immer noch nicht ganz durch mit exim.
Das ist ein MTA?
Letzten endes brauche ich sowas wie mailx, um Meldungen und logs aus zum Beispiel Scripten zu schicken.
Ich habe das so verstanden, dass ich dafür s-nail nutzen könnte. Wie das aber wieder mit exim zusammen arbeiten kann habe ich weder im Debian noch im arch wiki gefunden.

Ich habe den Verdacht, dass exim vlt. zu viel kann? Ich will halt keinen extra Dienst im Netzwerk anbieten oder ähnliches.

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 07.02.2020 18:19:06

Ich habe für das backup auf meinen Borg-Server schon mal ein nahezu fertiges Skript. Eigentlich fehlt zum testen nur noch die systemd units fertig zu machen und das mal mit lokalen testrepos auszuprobieren. Außerdem fehlt noch das mail Feature.

Code: Alles auswählen

#!/bin/bash
IFS=$'\t\n'

#
# Getting time stamps
#

Day="$(date '+%Y-%m-%d')"
WeekDay="$(date '+%A')"
Time="$(date '+%H:%M:%S')"
TimeStamp=$Day" "$Time
TimeStampName=$Day"T"${Time//":"/"-"}

#
# Setting Variables
#

BorgRepo="ssh://user@myserver:22/repo/path"
export BORG_PASSPHRASE="SuperSecret" #Exporting the passphrase circumvents password check during execution
SnapshotName=$TimeStampName"_borg-BackupServer"
BackupName=$TimeStampName
MountDir="/mnt/backup/BackupServer"
LogFile="backup.log" #Not saved only send via email. Filled via journalctl.

#
# Backup section
#

# Create snapshot and mount it for backup to avoid conflicts and data corruption by changing files during backup
zfs snapshot pool@${SnapshotName}
mount --bind /pool/.zfs/snapshot/$SnapshotName $MountDir

# Create archive of snapshot
borg --show-version -v create --stats --compression lz4 $BorgRepo::$BackupName $MountDir
BackupExit=$?

# Unmount and destroy snapshot
umount $MountDir
zfs destroy pool@${SnapshotName}

#
# Perform a check of repository on Mondays
#


if [ $WeekDay = "Montag" ]; then
	borg -v check $BorgRepo
fi

#
# Pruning section
#

borg -v prune --list $BorgRepo -d 14 -w 6 -m 10
PruneExit=$?

#
# Define globla exit code
#

# Use highest exit code as global exit code
GlobalExit=$(( BackupExit > PruneExit ? BackupExit : PruneExit ))

if [ ${GlobalExit} -eq 0 ]; then
	echo "Backup and Prune finished successfully."
elif [ ${GlobalExit} -eq 1 ]; then
	echo "Backup and/or Prune finished with warnings."
else
	echo "Backup and/or Prune finished with errors."
fi

#
# Report section
#

# Create a log file for this run from journalctl
journalctl --since="$TimeStamp -u backup.service | tee -i $LogFile"
# Send the log via email (Baustelle)
#mailx -a "From: "$HOST" Backup <"$HOST"@meinedomain.tld>" -s "Backup | "$HOST admin@meinedomain.tld < $LOG

export BORG_PASSPHRASE=""
exit ${GlobalExit}

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 07.02.2020 19:39:43

So mit dem folgenden Service und dem passenden Timer läuft das Testweise erst mal durch.

Code: Alles auswählen

[Unit]
Description=Test Borg Script

[Service]
Type=oneshot
ExecStart=/home/user/backup.sh

Code: Alles auswählen

[Unit]
Description=Run Test Borg Script every 10 minutes

[Timer]
OnCalendar=*:0/10
Das einzige, was ich noch nicht testen kann, ist ob die Idee mit dem mount der Snapshots so funktioniert und halt das versenden der Mail ist noch nicht implementiert.

Die Idee ist, das Skript einmal täglich frühs laufen zu lassen.
Es wird dann immer ein Snapshot des ganzen pools erstellt, der dann aus dem .zfs Ordner zum lesen gemountet wird.
Davon erstellt borg dann ein backup und lädt es per ssh auf den Backup Server.
Wenn das fertig ist, wird der Snapshot ausgehangen und gelöscht.
Immer Montags soll dann auch mal ein Check gemacht werden.
Danach läuft dann noch prune über das Repository.
Zum Abschluss werden die journalctl Einträge dieses Durchlaufs in ein logfile gepackt und per Email verschickt.

Durch den Timer sollte es auch kein Problem geben, wenn der Durchlauf länger als einen Tag dauert, was mit chron glaube ich zum Problem geworden wäre. Was mir noch nicht ganz klar ist, was passiert, wenn das Backup abbricht. Ich nehme an, ich kann die zwischenstände nicht nutzen, wenn ich ein neues Archiv anlege beim nächsten Durchlauf. Vielleicht muss man das dann noch um einen test am Anfang erweitern.

Für das Backup auf USB-HDD kann ich denke ich die Vorlage von borgbackup weitestgehend übernehmen.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Lord_Carlos » 07.02.2020 23:16:27

Wenn du nicht die ganze Zeit Daten loescht kannst du die ZFS snapshots auch ein wenig behalten. z.B. zfs auto snapshot so einstellen das es taeglich snapshots macht, und 7 behaelt. Dann kannst du immer einfach 7 Tage zurueck gehen.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 07.02.2020 23:34:43

Das zfs-auto-snapshot möchte ich daneben laufen lassen mit den Standardregeln.
Aber für die Backups dachte ich, es wäre gut unabhängige Snapshots zu nutzen, damit sich lange Backups und das Snapshot Skript nicht in die Quere kommen.

Simaryp
Beiträge: 108
Registriert: 29.11.2019 14:09:49

Re: Synology NAS durch Debian Homeserver ersetzen

Beitrag von Simaryp » 19.02.2020 11:06:08

Mal ein kleines Update.
Der Server funktioniert erst mal. Ich habe leider viel Zeit damit verbracht die suboptimale Kühlung der Festplatten in meinem Gehäuse zu optimieren. Bei halber Belegung habe ich jetzt erst mal einen Zustand gefunden, der Okay ist. Heute bekomme ich noch mal Aluklebeband, damit versuche ich meine Optimierungen noch mal zu verbessern und finalisieren.

Den ZFS Pool habe ich noch nicht aufgesetzt, weil ich so viel mit den Platten rumgespielt habe.

Dafür habe ich den TVHeadend Server und easyepg schon mal laufen und funktionsfähig im Einsatz. Einzig die ganze Sleep und Wakeup Geschichte bin ich noch nicht angegangen.

Außerdem habe ich mir noch Dropbear eingerichtet, um meine Systemplatte zu entschlüsseln.

Bezüglich der Platten habe ich aktuell auch noch ein kleines Problem:
Und zwar würde ich die gerne runterfahren lassen, wenn die nicht benutzt werden. Leider funktioniert das ganze nicht wirklich, wenn das Zeitfenster größer als 20 Minuten ist. Mit hdparm -S240 gehen die Platten aus, mit hdparm -S241 schon nicht mehr.

Weil ich gelesen habe, dass SMART daran Schuld sein könnte, habe ich auch Folgendes ausprobiert: smartctl --offlineauto=off /dev/sda. Hat aber nicht geholfen.

Beim Reboot sind die Einstellungen auch weg, aber da habe ich schon gelesen, man kann eine systemd unit schreiben.

Mailx funktioniert übrigens, wenn ich s-nail installiere und einfach nur eine minimal .mailrc anlege mit dem Inhalt
account test {
set v15-compat
set from="admin <admin@provider.tld>"
set mta=smtp://user:password@smtp.provider.tld:587 smtp-use-starttls
}

Antworten