Solaer Posted October 15, 2020 Share Posted October 15, 2020 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ß! Quote Link to comment
ich777 Posted October 15, 2020 Share Posted October 15, 2020 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). Quote Link to comment
mgutt Posted October 15, 2020 Share Posted October 15, 2020 (edited) 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: 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 October 15, 2020 by mgutt Quote Link to comment
Solaer Posted October 15, 2020 Author Share Posted October 15, 2020 (edited) 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 October 15, 2020 by Solaer Quote Link to comment
ich777 Posted October 15, 2020 Share Posted October 15, 2020 1 hour ago, Solaer said: Ich habe momentan, aus Unkenntnis, ein Array aus NVMe und SSD. Nur aus neugier, wieviele hast du verbaut? 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. Quote Link to comment
mgutt Posted October 15, 2020 Share Posted October 15, 2020 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 Quote Link to comment
Solaer Posted October 16, 2020 Author Share Posted October 16, 2020 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. Quote Link to comment
ich777 Posted October 16, 2020 Share Posted October 16, 2020 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. Quote Link to comment
Solaer Posted October 16, 2020 Author Share Posted October 16, 2020 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. 1 Quote Link to comment
ich777 Posted October 16, 2020 Share Posted October 16, 2020 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. Quote Link to comment
mgutt Posted October 16, 2020 Share Posted October 16, 2020 (edited) 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 October 16, 2020 by mgutt Quote Link to comment
Dominik Posted December 13, 2020 Share Posted December 13, 2020 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. Quote Link to comment
ich777 Posted December 14, 2020 Share Posted December 14, 2020 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). Quote Link to comment
mgutt Posted December 14, 2020 Share Posted December 14, 2020 @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. Quote Link to comment
ich777 Posted December 14, 2020 Share Posted December 14, 2020 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. Quote Link to comment
mgutt Posted December 14, 2020 Share Posted December 14, 2020 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. Quote Link to comment
ich777 Posted December 14, 2020 Share Posted December 14, 2020 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. Quote Link to comment
Dominik Posted December 14, 2020 Share Posted December 14, 2020 Ok schon mal danke. Werde mir dann doch 2 HDDs ins Array packen und den Cach mit SSDs machen. 1 Quote Link to comment
Recommended Posts
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.