[SOLVED] Ganze Festplatte an Container binden


Solaer

Recommended Posts

Hallo,

so ganz habe ich es noch nicht verstanden.

Ich habe eine NVMe als "Hauptplatte", darauf laufen die VMs, Dockercontainer, ISOs etc.

 

Jetzt möchte ich einen NextcloudPi - Container erstellen und eine 2TB SSD nur dafür verwenden. Wie mach ich das am geschicktesten? Einfach ein Share darauf erstellen und dieses dann in NextcloudPi einbinden? Also direkt im Container "Nextcloud Data folder" = "/mnt/disk2/freigabe" auswählen?

Oder kann man das direkt durchreichen irgendwie? Die Platte soll nur für Nextcloud genutzt werden. NextcloudPi habe ich deshalb ausgewählt, weil da in dem einen Container MySQL etc auch schon drin ist. 

In den englischen Anleitungen (Stichwort "passthrough") komme ich irgendwie nicht weiter.

 

Oder sollte ich eine VM dafür erstellen, mit Ubuntu zB, und dort direkt mittels den Snaps Nextcloud installieren, und dahin die SSD dann durchreichen? 

 

Danke für einen Denkanstoß!

 

Link to comment
25 minutes ago, Solaer said:

Wie mach ich das am geschicktesten? Einfach ein Share darauf erstellen und dieses dann in NextcloudPi einbinden? Also direkt im Container "Nextcloud Data folder" = "/mnt/disk2/freigabe" auswählen?

Ja ich würd einen Ordner/Share "nextcloud" dafür machen und den share dann mit dem pfad /mnt/user/nextcloud in den container einbinden.

(Vergiss nicht beim share bei include disk die festplatte auszuwählen die du dafür benutzen willst und ob du die cache benutzen willst)

 

Ich würd mir das aber überlegen ob du nicht eine Festplatte mit Unassigned Devices nimst oder dir einen extra Cache Pool dafür erstellt mit der option Cache only (wenn du den share am array machst und jemand schreibt auf ihn muss auch die parity festplatte dauernd laufen).

 

28 minutes ago, Solaer said:

weil da in dem einen Container MySQL etc auch schon drin ist. 

Überleg dir das evtl nochmal, hast du sicher nicht vor in nächster Zeit irgendwelche Anwendungen die MySQL bzw. MariaDB benutzen zu verwenden?

Ich hab auch lange überlegt aber hab mich dann dafür eintschieden die MariaDB und Redis extern zu konfigurieren und hab Nextcloud direkt in den LetsEncrypt container installiert (der heißt jetzt SWAG).

Link to comment

Vorab: Wenn es mit einem Docker Container geht, verwende keine VM. Das spart Ressourcen.

 

Du hast eine NVMe SSD als Cache konfiguriert und dann hast du noch eine 2TB SSD, die du ausschließlich für Nextcloud einsetzen möchtest? Also zwei verschiedene SSDs, habe ich das richtig verstanden?

 

Da käme mir zuerst die Frage, wie du die SSD gegen Ausfälle sicherst oder ist diese Teil deines HDD Arrays und per Parität geschützt? Wenn ja, du weißt, dass die Schreibgeschwindigkeit dann durch die Parität stark begrenzt ist (oder ist dein NAS SSD-only)? Wenn nein, was machst du bei einem Ausfall der 2TB SSD?

 

Dann deine Frage zum Share. Grundsätzlich ist jedes Verzeichnis auf der obersten Ebene einer Disk, ein Share. Würdest du also von Hand den Ordner "nextcloud" auf "disk2" erstellen, wäre das ein Share, egal ob du dazu bisher etwas eingestellt hast oder nicht. Aus dem Grund macht es Sinn erstmal einen Share anzulegen und die Zugangsrechte zu definieren. Dir steht es natürlich frei diesem Ordner alle Rechte zu entziehen. Also "Export" auf "No" und "Security" auf "Private" und die SMB User alle auf "No Access". Dann hast du einen Share, der über SMB/NFS/etc nicht erreichbar ist.

 

Nachdem du diesen Share angelegt hast, kannst du diesen, wie du schon richtig erkannt hast, im Container als direkten Pfad hinterlegen. Entweder nimmst du diesen Pfad:

 

/mnt/disk2/nextcloud

Dieser verweist direkt auf den Ordner auf dieser Disk. Ich nenne das Direct Disk Access.

 

oder diesen:

 

/mnt/user/nextcloud

Dieser verweist auf die gesamte Disk-Gruppe. Das ist relevant, wenn du bei "Included Disk(s)" mehrere hinterlegt hast. zB wenn dir irgendwann die 2TB SSD nicht mehr reicht und du noch eine zweite Disk auswählst. Beispiel:

829595167_2020-10-1519_05_26.png.b5c27ddf590a237a0fbd1160acf4db20.png

 

Wenn man also die Datei "/mnt/user/nextcloud/bild.jpg" abruft, dann sorgt Unraid automatisch dafür, dass sie von "disk3" geladen wird (wenn sie da liegt).

 

Fazit: Der eine Pfad ist performanter, weil "direkt", der andere flexibler.

 

Und nur damit das auch klar ist. Wenn Du den Container installierst, stellst du fest, dass im Feld dieser Pfad voreingestellt ist:

/mnt/user/appdata/nextcloudpi

 

Er zielt also auf den Share "appdata". Da du gesagt hast, dass "appdata" auf der NVMe liegt, würden die Daten also durch diesen Pfad alle Daten auf der NVMe landen. Das wäre also nicht das was du willst. Mich erstaunt ein wenig, dass man scheinbar keine zwei Pfade angeben kann. Einen für den Webserver/Datenbank und den anderen für die Dateien. Oder wird der Webserver/Datenbank dann im docker.img hinterlegt?

 

Wenn ich das installieren würde, dann so:

- Webserver + MySQL Datenbank auf den (RAID1) NVMe Cache

- Dateien ins gecachte und paritätsgesicherte HDD Array

Edited by mgutt
Link to comment

Vielen Dank für eure Antworten!

Ich habe momentan, aus Unkenntnis, ein Array aus NVMe und SSD. Dabei habe ich bei den Shares aber die SSD ausgeschlossen. 

Unsinnig, wie ich jetzt weiß. 

 

Eine Cache-SSD habe ich nicht. Ich glaube, ich brauche auch keine bzw. ich will mit dieser NVMe und der großen SSD alles abdecken.

Gesichert wird auf eine Synology DS720+ jede Nacht (meine Dockercontainer (PiHole, iobroker, octoprint) und die VM (Wireguard)) mittels BackupMainV2 und BackupVM. 

 

Ich werde dann, wenn mein 3D-Druck fertig ist und Octoprint ausgeschaltet werden kann, das Array auflösen und zwei unassigned Drives erstellen.

Die Daten von der großen SSD (=nextcloud) werde ich ebenfalls auf das NAS sichern. Wie weiß ich noch nicht. 

 

Ich probiere mich mal durch und berichte dann, danke für euren Input! Jedenfalls soll alles auf der NVMe laufen bis auf nextcloud, dieses komplett auf der SSD. Erweitern möchte ich nicht, die 2 TB reichen aus. Dann also ein Share nur auf der SSD direkt für Nextcloud. 

 

edit: eine unabhängige SQL-Instanz brauche ich, denke ich, auch nicht. Da sind mir dann auch zu viele Abhängigkeiten wieder. Erstmal tut es die in der NextcloudPi-integrierten MariaDB-Datenbank. Später kann ich ja noch umziehen. Nextcloud brauche ich eigentlich auch nur, um meine Daten vom iPhone von Apple unabhängig zu sichern. Die iOS-App macht das glaube ich möglich. 

 

 

Edited by Solaer
Link to comment
1 hour ago, Solaer said:

Ich habe momentan, aus Unkenntnis, ein Array aus NVMe und SSD.

Nur aus neugier, wieviele hast du verbaut? :D

 

1 hour ago, Solaer said:

Eine Cache-SSD habe ich nicht. Ich glaube, ich brauche auch keine bzw. ich will mit dieser NVMe und der großen SSD alles abdecken.

Unraid wäre aber dafür gedacht das du im Array deine mechanischen "langsamen" Festplatten verwendest und im Cache deine "schnellen" SSD's oder was auch immer, wenn du Unraid so benutzt auch kein Problem...

 

1 hour ago, Solaer said:

Gesichert wird auf eine Synology DS720+ jede Nacht (meine Dockercontainer (PiHole, iobroker, octoprint) und die VM (Wireguard)) mittels BackupMainV2 und BackupVM. 

Installier dir doch einfach den Syncthing Container auf beiden Systemen brauchst keine eigene VM (bin eher gegen VM's - außer der Anwendungszweck erfordert es).

 

1 hour ago, Solaer said:

Wie weiß ich noch nicht. 

Gibt so viele möglichkeiten, entweder du bindest in Unassigned Devices einen SMB Share ein und syncst mit zB Docker Containern: LuckyBackup, DirSyncPro, Syncthing,... oder ganz "einfach" mit rsync.

 

1 hour ago, Solaer said:

Da sind mir dann auch zu viele Abhängigkeiten wieder.

Wei meinst das?

 

1 hour ago, Solaer said:

Die iOS-App macht das glaube ich möglich. 

Ja die kann das, ich mach das mit Android so, funktioniert aber auch auf iOS.

Link to comment
1 hour ago, Solaer said:

Ich habe momentan, aus Unkenntnis, ein Array aus NVMe und SSD

Planst du denn noch HDDs zu verbauen? Wenn nein, dann sehe ich nichts Unsinniges daran. Dann ist es eben ein Array, das nur aus SSDs besteht. Ein Cache ist dann natürlich überflüssig.

 

Ich verstehe zwar nicht sofort die Syno da ist, aber du wirst schon wissen warum ;)

 

Link to comment

Ich glaube es wird langsam klarer. Es bleibt jetzt ein Array aus der NVMe und der SSD, wobei die NVMe die "Hauptplatte" bleibt für Docker/VMs, und auf die SSD lege ich nur ein Share für Nextcloud.

 

Eine mechanische HDD habe ich nicht, deswegen ist dann ein Cache wohl überflüssig. Ich plane auch keine weiteren Platten einzubauen. 

 

Die Synology habe ich, weil die das Ziel eines von extern kommenden HyperBackups ist. Außerdem habe ich da Pihole, iobroker etc auch als Container (aber gestoppt) am laufen, die im Notfall nahtlos einspringen, wenn ich mit dem Unraid was versaue. 

Sie ist auch local das Backupziel im Haus, ist gemounted in Unraid und dorthin werden die Container/VM-Sicherungen gesichert.

 

Unraid ist für mich noch nicht in der produktiven Anwendung. Octoprint (3D-Drucker-Steuerung) eignet sich zB nicht als Container in Unraid, wie ich heute Nacht feststellen musste, das nächtliche Backup mit BackupMainV2 hat den Container gestoppt und den Druck damit abgebrochen. Außerdem lässt sich der Container nicht starten wenn der Drucker nicht eingeschaltet ist (das USB-Kabel also nicht in den Container durchgereicht werden kann). Octoprint werde ich auf eine VM umziehen, die lassen sich snapshotten im laufenden Betrieb.

 

Kann sein, dass die Syno irgendwann ersetzt wird durch ein zweites Unraid, aber wahrscheinlich nicht. Das Synology Hyper Backup ist nicht zu toppen für Backups und Restores auch von früheren Versionen bei einfachster Bedienung. Außerdem schadet es nicht, seine Daten auch auf einem anderen System zu haben. Wie heißt es? 3 Backups auf 2 verschiedenen Medien auf 1 verschiedenen Standort. Die Syno backupt auch in einen anderen Ort über Wireguard. 

 

 

 

Link to comment
15 minutes ago, Solaer said:

Nacht feststellen musste, das nächtliche Backup mit BackupMainV2 hat den Container gestoppt und den Druck damit abgebrochen.

Im Plugin kannst du explizit einstellen das du den Container nicht stoppen willst wenn das Backup erstellt wird.

 

16 minutes ago, Solaer said:

HyperBackup

Als alternative sieh dir mal UrBackup an in der CA App von @binhex

 

18 minutes ago, Solaer said:

Außerdem lässt sich der Container nicht starten wenn der Drucker nicht eingeschaltet ist (das USB-Kabel also nicht in den Container durchgereicht werden kann).

Stimmt da er den port nicht findet, gibt's aber workarounds.

 

19 minutes ago, Solaer said:

Octoprint werde ich auf eine VM umziehen, die lassen sich snapshotten im laufenden Betrieb.

Wie oben geschrieben kannst Backups, auch ohne das die Container gestoppt werden, erstellen.

 

20 minutes ago, Solaer said:

Außerdem schadet es nicht, seine Daten auch auf einem anderen System zu haben. Wie heißt es? 3 Backups auf 2 verschiedenen Medien auf 1 verschiedenen Standort. Die Syno backupt auch in einen anderen Ort über Wireguard. 

Das stimmt. Arbeite dich mal in Unraid ein. ;)

 

Dein Array ist natürlich so in Ordnung und du brauchst auch so keinen Cache.

Das gute ist auch das du solltest du mal wechseln und Unraid dein Main System wird das du die SSD's einfach durch Mechanische Datenträger tauschen kannst und mit den SSD's dann einen Cache Pool erstellen kannst. ;)

Link to comment

Ah, Danke, unter erweiterte Einstellungen lässt sich das Stoppen der Container beim Backup verhindern. Super! Danke!

 

Sonst stelle ich mich eigentlich nicht so blöde an, keine Ahnung warum jetzt die ganzen Noob-Fragen auftauchen 🙄

 

Danke für den tipp mit Urbackup, schaue ich mir (nochmal) an. Ich hatte das vor einem Jahr schonmal zwischen zwei Synos probiert, war aber nicht so das was ich gesucht hatte, vielleicht schaue ich mir das nochmal an. Bei Hyperbackup hat man eine einzelne schöne Datei, die kann man überall öffnen (mit HyperBackup) und versioniert die Daten raussuchen die man braucht, schnell und zuverlässig. Ich teste nochmal Urbackup parallel durch.

 

 

  • Like 1
Link to comment
8 minutes ago, Solaer said:

Noob-Fragen auftauchen

Das ist aber auch verständlich wenn du neu bei Unraid bist, das Konzept ist ein bisschen anders als bei anderen.

Ich find aber den Ansatz mit dem Parity Array super, zumindest wie es gelöst ist/wurde.

 

8 minutes ago, Solaer said:

Bei Hyperbackup hat man eine einzelne schöne Datei, die kann man überall öffnen (mit HyperBackup) und versioniert die Daten raussuchen die man braucht, schnell und zuverlässig.

Funktioniert bei UrBackup auch so nur das es die Dateien glaub ich einzeln abspeichert funktioniert aber auch gut, Bekannter von mir hat das in seiner Firma laufen für ~20 Computer.

Link to comment
7 hours ago, Solaer said:

Bei Hyperbackup hat man eine einzelne schöne Datei, die kann man überall öffnen

Ich nutze einfach rsync inkrementell. Dh jedes Backup ist ein 1:1 Backup mit allen Dateien, aber nur die neuen belegen Platz. Hier zB das Script, was per CA User Scripts Plugin den appdata Share täglich von der SSD auf das Array sichert:

#!/bin/bash

# settings
user_share="appdata"

# obtain last backup dir
last_backup=$(ls -t "/mnt/user/Backup/Shares/${user_share}/" | head -n1)
echo "Most recent backup in /mnt/user/Backup/Shares/${user_share}/* is ${last_backup}"

# new backup dir
new_backup=$(date +%Y%m%d_%H%M%S)

# create full backup
if [[ ! -d "/mnt/user/Backup/Shares/${user_share}/${last_backup}" ]]; then
    echo "Create full backup ${new_backup}"
    # create directory tree as rsync is not able to do that
    mkdir -p "/mnt/user/Backup/Shares/${user_share}/${new_backup}" # https://askubuntu.com/a/561239/227119
    # create very first backup
    rsync -a "/mnt/user/${user_share}" "/mnt/user/Backup/Shares/${user_share}/${new_backup}"
# create incremental backup
else
    echo "Create incremental backup ${new_backup} by using last backup ${last_backup}"
    rsync -a --delete --link-dest="/mnt/user/Backup/Shares/${user_share}/${last_backup}" "/mnt/user/${user_share}" "/mnt/user/Backup/Shares/${user_share}/${new_backup}"
fi

Irgendwann wollte ich noch eine "Aufräumfunktion" realisieren, damit neben den Backups der letzten 14 Tage immer nur ein Backup pro Monat/Jahr im Ordner ist, aber da es quasi keinen Platz frisst, ist das noch nicht passiert. ^^

 

Der Ordner "Backups" ist übrigens ein Share ohne SMB Zugriffsrechte. Dh die Backups sind auch sicher gegen Ransomware.

 

Auf meinen Windows Clients ist übrigens keine Backup-Software installiert. Ich habe stattdessen den Users-Ordner mit einem passwortgeschützten Leserecht freigegeben (rechte Maustaste > erweiterte Freigabe). Per Unassigned Devices Plugin mounte ich die Rechner und sichere auch diese per rsync. Da Unraid damit nur Leserechte besitzt und der PC gar keine, ist auch das sicher gegen Ransomware. Außerdem braucht man keine Software.

Edited by mgutt
Link to comment
  • 1 month later...
18 hours ago, Dominik said:

Hallo,

habe das gleiche Problem. Mein Array besteht aus nur SSD's. Habe gelesen, dass es ohne Trim da Probleme geben soll?

@ich777Du schreibst oben das der Array aus SSDs kein Problem ist. Hat sich das was getan? benutze Version: 6.9.0-rc1.

Habe eigentlich keine Lust noch HDDs zu kaufen.

 

schon mal Danke im Voraus.

Dadurch das im Array kein Trim möglich ist kann es zu Problemen kommen, muss aber nicht.

Die Meinungen zu Trim gehen da stark auseinander...

Ich hab zB auch kein Trim Plugin installiert für meine SSD's.

 

Ich würd aber die SSD's trotzdem im Cache Pool verwenden, vor allem jetzt seit den betas mit denen du mehrere Cache Pools erstellen kannst wäre das doch viel sinnvoller.

Unraid ist auch eigentlich so ausgelegt das dein Array das "Datengrab" (Coldstorage) und dein(e) Cache(s) als Speicher für deinen täglich gebrauchten Dateien (Hotstorage) dient.

 

Was du als Workaround machen könntest wenn du die SSD's als Cache verwendest ist das du einen zusätzlichen USB Stick anschließt und den als Array Platte benutzt (das Array lässt sich ohne zugewiesene Arrayplatte nicht starten - bedenke aber das dann der zusätzliche USB Stick auch als "Speichergerät" zählt und somit einen Datenträger von deinen Lizenz verbraucht).

Link to comment
1 hour ago, mgutt said:

@ich777 Wieso geht denn kein Trim? Kann ich eigentlich nicht glauben. Bei der Paritätsdisk vielleicht, aber die restlichen Disks sind ja ganz normale XFS formatierte Disks.

 

EDIT: Wenn du Trim im Array machst stimmen die Parity bits nicht mehr und eine Wiederherstellung des Arrays würde nicht mehr klappen.

Link to comment
2 hours ago, ich777 said:

EDIT: Wenn du Trim im Array machst stimmen die Parity bits nicht mehr und eine Wiederherstellung des Arrays würde nicht mehr klappen.

 

Ich habe mal recherchiert. fstrim macht nichts anderes als FITRIM auszuführen:

https://github.com/karelzak/util-linux/blob/master/sys-utils/fstrim.c

 * This program uses FITRIM ioctl to discard parts or the whole filesystem
 * online (mounted). You can specify range (start and length) to be
 * discarded, or simply discard whole filesystem.

FITRIM dagegen ruft ext4_trim_fs auf (XFS wird da mit eigenen Funktionen denke ich drauf aufbauen):

https://code.woboq.org/linux/linux/fs/ext4/ioctl.c.html#991

ret = ext4_trim_fs(sb, &range);

Das geht dann verschachtelt so weiter bis zu der Funktion "__blkdev_issue_discard", die scheinbar den Discard-Status vom Sektor setzt. Ab dann übernimmt denke ich der SSD-Controller und das ist wohl der Punkt wo man nicht mehr weiß was mit dem Sektor passiert. Also ob er von der SSD genullt wird oder die Daten erhalten bleiben.

 

Da die Unraid-Parität über die Sektoren berechnet wird, kann das diese je nachdem zerstören. Das erklärt auch warum manche kein Problem mit SSDs im Array haben. Die nutzen scheinbar eine SSD wo der Controller die Sektoren nicht einfach nullt.

 

Jetzt müsste man nur wissen welche SSD was macht und ob man das herausfinden kann. Mich würde zB interessieren ob eine Enterprise SSD wie die Micron ION 5210 nutzbar wäre. Wobei natürlich klar ist, dass man die Paritätsdisk niemals trimmen kann, weil da einfach kein Dateisystem hinterlegt ist, was sich trimmen lässt.

 

Allerdings könnte man das in den Griff kriegen, in dem man zwei Paritätsdisks einsetzt und diese im Wechsel zB 1x pro Monat komplett neu erstellen lässt. Dann hätte man für den einen Tag eben nur eine Disk als Ausfallsicherheit (bzw dank SSD ja eher wenige Stunden). Und für das sonstige Array braucht man denke ich eh kein TRIM, weil sonst hätte man die SSD ja gleich als Hot Storage, also als SSD Cache konfiguriert.

 

In BTRFS ist das scheinbar übrigens kein Problem, weil da die Parität des RAID über die Datenblöcke und nicht über die Sektoren berechnet wird. BTRFS ist es also egal was der SSD Controller mit ungenutzten Sektoren macht, da es diese eh nicht für die Berechnung der Parität heranzieht.

Link to comment
1 hour ago, mgutt said:

Jetzt müsste man nur wissen welche SSD was macht und ob man das herausfinden kann. Mich würde zB interessieren ob eine Enterprise SSD wie die Micron ION 5210 nutzbar wäre.

Das hat auch schon Tom in seinem Q&A schon erwähnt, siehe auch das Kommentar von Squid:

 

1 hour ago, mgutt said:

In BTRFS ist das scheinbar übrigens kein Problem, weil da die Parität des RAID über die Datenblöcke und nicht über die Sektoren berechnet wird.

Ja, vereinfacht gesagt teilt BTRFS zwei gleiche Datenblöcke (wegen Redundanz) immer auf zwei unterschiedliche Platten auf.

BTRFS RAID1 ≠ konventionelles RAID1

Da man auch Festplatten verschiedener größen mischen kann und auch SSD, HDD,... sogar ein betrieb von 3 Platten ist möglich.

 

1 hour ago, mgutt said:

Allerdings könnte man das in den Griff kriegen, in dem man zwei Paritätsdisks einsetzt und diese im Wechsel zB 1x pro Monat komplett neu erstellen lässt. Dann hätte man für den einen Tag eben nur eine Disk als Ausfallsicherheit (bzw dank SSD ja eher wenige Stunden). Und für das sonstige Array braucht man denke ich eh kein TRIM, weil sonst hätte man die SSD ja gleich als Hot Storage, also als SSD Cache konfiguriert.

Wie gesagt bei TRIM gehen die Meinungen stark auseinander, vergiss auch nicht das die Paritätsplatte dann extrem stark beansprucht wird.

 

Die Samsung Evo 850 macht meines wissens automatisches TRIM intern ohne das man noch irgendwas machen muss.

Link to comment
  • ich777 changed the title to [SOLVED] Ganze Festplatte an Container binden

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.