"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

NAS - Fertig vs. Eigenbau?

chriswahl 05.04.2016 - 10:55 4636 25
Posts

chriswahl

Addicted
Registered: Jan 2001
Location: Grazer
Posts: 543
HP Microserver geht. Raspi 2 hat kein GBLAN, USB3 und DVI/VGA.

Die Archive hdd's funktionieren scheinbar mit raid 0 und 1, jedoch nicht mit 5 und 6 da sie andauernd aus dem verbund fliegen. gibt aber auch bsp wo das funktioniert. Probleme machen speziell Rebuild and Erstbefüllung mit Datenmengen im TB Bereich.

Gefunden habe ich das mit intensiver google suche auf diversen englischsprachigen webseiten.

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12594
Zitat von chriswahl
HP Microserver geht. Raspi 2 hat kein GBLAN, USB3 und DVI/VGA.

Die Archive hdd's funktionieren scheinbar mit raid 0 und 1, jedoch nicht mit 5 und 6 da sie andauernd aus dem verbund fliegen. gibt aber auch bsp wo das funktioniert. Probleme machen speziell Rebuild and Erstbefüllung mit Datenmengen im TB Bereich.

Gefunden habe ich das mit intensiver google suche auf diversen englischsprachigen webseiten.

der raspi war ja nicht als empfehlung gedacht sondern als erläuterung das ein dual-core celeron wohl mehr als genug power haben sollte für dein aufgabengebiet.

und nochmal: 5 wd red 8tb ergeben die selbe netto-kapazität von 32TB und kosten weniger als 8x Seagate Archive v2. Also wieso sollt man sich das dann antun mit 4 separaten raid1 und diesen fragwürdigen platten?

strom, aufrüsttechnisch und ausfallsicherheit (im sinne von 5 vs 8 platten) ist alles besser. und wenn du 2 weitere platten hinzukaufst später hättest 48TB wohingegen ein 5ter Raid1 verbund es 'nur' auf 40TB schafft. und das bei 7 statt 12 platten!
Bearbeitet von Master99 am 06.04.2016, 14:23

Valera

Here to stay
Registered: Dec 2005
Location: Mint
Posts: 683
  • In der aktuellen c't sind Bauvorschläge vorhanden.
  • Mehr als 6 Platten sind mühsam weil es die Auswahl der Boards arg begrenzt. Real hat man dann eine SSD fürs System und 5 Datenplatten. Die SSd fürs System braucht nicht viel Strom und die 5 Datenplatten legt man schlafen.
  • Wenn man überlegt sich das selbst zu machen dann würde ich unbedingt ein Filesystem der neuen generation nehmen. Also ZFS, ReFs, Btrfs, ...
  • Ich hab selber ZFS als raidz im Einsatz und bin rundum zufrieden. Warum? copyOnWrite, gute Performance (bei ausreichend RAM), Snapshot (genialste Erfindung ever - meine Familie greift über Rechtsklick in Windows Systemen auf voherige Dateiversionen des ZFS Snapshots zurück bzw über Netzwerkfreigaben - vereinfacht das Leben des Möchtegernadmins ungemein), Datenintegrität gewährleistet (bei redundanten Pools), einfach zu administrieren wenn man die Befehlszeile nicht scheut, kann (fast) in jedes System eingehängt werden, das ZFS unterstützt und ist damit Hard- und OS unabhängig... blablabla

Anleitung (the Debian way..):

  1. So stromsparende Hardware wie möglich
  2. So viel ECC RAM in GB wie man TB Speicher zur Verfügung stellen will
  3. Debian oder anderes Linux welches zfsonlinux unterstützt.
  4. USB Stick herrichten --> je nachdem aus welchen OS man das macht.
  5. ZFS Support installieren --> Siehe: http://zfsonlinux.org
  6. ZFS bei Systemstart mounten --> Siehe Anleitung für das gewählte OS
  7. ZFS einrichten: Platten mit realen 4K (also ZB auch emulierte 512): Use "zpool create -o ashift=12 Siehe https://pthree.org/2012/12/13/zfs-a...es-and-caveats/
    Beispiel um aus 5 Platten ein raidz Pool mit dem Namen storage zu machen
    Code:
    zpool create -f -o ashift=12 storage raidz sda sdb sdc sdd sdf
  8. Dateisystem mit Namen dataset1 im Pool storage erstellen:
    Code:
    zfs create storage/dataset1 
  9. ZFS Tuning: Siehe http://unicolet.blogspot.co.at/2013...s-on-linux.html
    Code:
    zfs set xattr=sa storage
    zfs set atime=off storage
  10. Kompression aktivieren
    Code:
    zfs set compression=lz4 storage
    ODER geht auch einzeln für die Datasets
    Code:
    zfs set compression=lz4 storage/dataset1
    zfs set compression=lz4 storage/dataset2
     ...
  11. ZFS Scrub: Damit werden die Prüfsummen aller gespeicherten Dateien im Pool gecheckt und bei einem redundanten Pool evtl vorhandene defekte Dateien automatisch ersetzt:
    manuell starten
    Code:
    zpool scrub storage
    scrub per cronjob starten (der Debian way..)
    Code:
    0 2 * * 1 /sbin/zpool scrub storage
  12. ZFS Platten "schlafen" legen
    Siehe http://rudd-o.com/linux-and-free-so...-zfs-pool-sleep
    Dafür müssen alle Zugriffe auf die Platten so gering wie möglich gehalten werden. Also cron jobs checken, diverse daemons etc.

    Der Befehl schaltet die Access time updates für den Pool inkl. aller Unterpools ab:
    zfs set atime=off storage (siehe ZFS Tuning)

    Man kann man sich mit find / -mtime -1 alle Dateien anzeigen lassen, auf die die letzten 24 Stunden zugegriffen wurde.

    In der Datei /etc/rc.local kann man Befehle einfügen, die beim Systemstart ausgeführt werden.
    Nach 2 Stunden nixtun, sollen die Platten abschalten:
    hdparm -B255 -S244 /dev/sda

    -B255 ... schaltet Advanced Power Management ab
    -S244 ... setzt spindown auf 2 Stunden (241.. 30min, 242.. 1Std, 243.. 1,5Std, 244.. 2Std)
    siehe man hdparm
  13. ZFS Auto Snapshot
    Skript von https://github.com/zfsonlinux/zfs-auto-snapshot downloaden.
    Das Skript zfs-auto-snapshot.sh nach /usr/local/sbin kopieren

    root nimmt es in Besitz:
    Code:
    chown root:root zfs-auto-snapshot.sh
    Ausführbar machen
    Code:
    chmod 755 zfs-auto-snapshot.sh

    in der zfs-auto-snapshot.sh das Prefix ändern falls gewünscht:
    Code:
    opt_prefix='backup'

    Dann die Skripte in das jeweilige Verzeichnis kopieren.
    Achtung: In den Dateinamen darf nur – und _ vorkommen!
    zfs-auto-snapshot.cron.hourly --> /etc/cron/zfs-auto-snapshot-hourly
    zfs-auto-snapshot.cron.daily --> /etc/cron.daily/zfs-auto-snapshot-daily
    zfs-auto-snapshot.cron.weekly --> /etc/cron.weekly/zfs-auto-snapshot-weekly

    Dann mit chown root:root den Besitz übernehmen und mit chmod 755 ausführbar machen.
    Den Befehlsaufruf mit dem Pfad zu zfs-auto-snapshot.sh eintragen. Das sieht dann zB. so aus:
    Code:
    #!/bin/sh
    exec /usr/local/sbin/zfs-auto-snapshot.sh --quiet --syslog --label=daily --keep=7 //
    Achtung: Wenn man stündlich Snapshots machen läßt, dann ist es sinnlos, die Platten ins Standby zu schicken. ;)

    Snapshots auflisten
    Code:
    zfs list -t snapshot

    ALLE Snapshots löschen:
    Code:
    zfs list -H -o name -t snapshot | xargs -n1 zfs destroy
  14. Mit Samba die Snapshots als Windows "Vorgängerversionen" nutzen
    in smb.conf [global] folgendes eintragen:
    Code:
    vfs objects = shadow_copy2
    shadow: snapdir = .zfs/snapshot
    shadow: sort = desc
    shadow: format = backup_daily-%Y-%m-%dT-%H%M
  15. "Manuell" auf snapshots zugreifen
    \\servername\sharename\.zfs\snapshot
  16. SSH Verbindung einrichten
  17. ...uswusf..
Bei Bedarf kann ich eine ausführliche Anleitung für Debian schreiben.
Bearbeitet von Valera am 06.04.2016, 21:30

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19591
Ich habe im Moment auch ein Raid-Z2 laufen auf meinem ESXi, letztens habe ich das normale PC-Gehäuse auf ein Inter-Tech 4U-4316L aufgerüstet um mehr Platten zu beherbergen - und dann habe ich einen kleinen Schönheitsfehler bei ZFS entdeckt.

Man kann ein Raid-Zx Array nicht erweitern, man kann nur weitere Raids dem Pool hinzufügen.
Sprich ich kann jetzt zum bestehenden 8-Platten-Array nur ein weiteres 8-Platten-Array hinzufügen damit es quasi ein RAID-Z20 (Raid 0 aus zwei Raid-Z2) wird und würde damit einen weiteren potentiellen Point of Failure kreieren.

Aktuell wäre das Hauptproblem wenn mehr als 2 Platten gleichzeitig ausfallen = tot des gesamten Arrays
Wenn ich den Pool um ein zweites Raid-Z2 erweitere, kann es passieren das BEIDE Raid-Z2s über den Jordan gehen sollte EINER der beiden Arrays mehr als zwei Plattenfehler haben.

Gefällt mir nicht sonderlich, Problem ist auch ... da die 8 alten Platten bereits im Pool sind kann ich die auch nicht einfach so entfernen, bzw. habe ich nirgendwo anders den Platz um die Daten mal schnell "zwischen zu lagern" um ein neues Array mit 16 Platten zu erstellen.

MaxMax

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1913
ja, deswegen halt ich von den ganzen raid geschichten gar nix mehr. lieber sowas wie drivepool oder unRAID. da kannste die platten trotz "raid failures" noch immer einzeln irgendwo anhängen und dir die daten runterholen...und expandable ist das array auch jederzeit.
Bearbeitet von MaxMax am 07.04.2016, 09:14

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
MergerFS + SnapRaid wäre wohl atm meine Wahl, wenn ich mir nen neues NAS aufsetzen würde.

Valera

Here to stay
Registered: Dec 2005
Location: Mint
Posts: 683
Zitat
Man kann ein Raid-Zx Array nicht erweitern, man kann nur weitere Raids dem Pool hinzufügen.
Ja und nein. Du kannst die Platten sukzessive durch größere ersetzen und dann den größeren Platz nutzen. Das Feature muß aber VOR reinhängen der zusätzlichen Platten aktiviert werden:
Code:
zpool set autoexpand=on storage
Unter FreeBSD 9.2 geht das auch nachträglich mit
Code:
 zpool online -e storage ad1
für jede Platte ausgeführt. Hab ich aber nicht probiert nur gelesen.
Du kannst nicht 2 Platten zu den 8 in dem gleichen raidz2 dazuhängen, das ist richtig.
Du kannst aber jederzeit ein BELIEBIGES Array in deinen Pool reinhängen. Beispiel: Du hast ein raidz2 aus 8 Stk 4TB Disks und hängst jetzt ein raid1 aus 2 Stk 6TB Disks dazu. Das geht. Wird aber nicht empfohlen, weil das dann schnell verwirrend werden kann. (Welche Platte hat jetzt zu welchen Array in welcher Konfiguration gehört??) Außerdem könnte ich mir vorstellen, dass ZFS dann evtl Schwierigkeiten hat die Daten gleichmäßig aufzuteilen.
Wie auch immer, die Daten jedes zusätzlichen Arrays werden gestriped. Dh. fällt eines der Arrays komplett aus, ist der ganze Pool hin.
Das ist aber grundsätzlich bei allen Raid Systemen so. Das hat nix mit Nachteilen von ZFS zu tun.
Das Problem mit den gestripten raidz2 verstehe ich sowieso nicht. Wenn mehr als 2 Platten über den Jordan gehen ist dein Pool hin .. egal ob in dem jetzigen Zustand oder dann wenn du ein, zwei, viele zusätzliches raidz2 Array dazu addierst. Du erhöhst aber dadurch die Performance da alle nested Arrays grundsätzlich gestriped werden.
Aber klar: Perfekt wäre es wenn ich bestehende Arrays in meinen Pool erweitern könnte, aber was ist schon perfekt? Mir persönlich geht ein anderes Feature von ZFS bei der OpenSource Version viel mehr ab: Verschlüsselung.

Wer jetzt ZFS, ReFS oder Btrfs mit Sachen wie unraid etc vergleicht hat den Sinn hinter der 5. Filesystem Generation nicht verstanden. Die bieten Features die es woanderes garnicht gibt die aber für die Integrität und Sicherheit der Daten imho essentiell sind wie eben Datenintegritätsprüfung über Prüfsummen, Copy on Write, Snapshots, ... uswusf

Nur meine persönliche Meinung.
Bearbeitet von Valera am 08.04.2016, 00:32

TheHackman

48°12'N 16°19'E
Avatar
Registered: Jul 2001
Location: /eu/at/wien
Posts: 2414
Das heißt aber ich muss bei einem 8 disk raidz2 setup 8x rebuilden? oder wie verhält sich das bei raidz2 mit 2 paritäts-disks? Weil meistens sagt man ja dass der Rebuild immer eine ungute sache ist für die Platten (hohe beanspruchung, hohe fehleranfälligkeit).

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19591
Das man ein Raid-Z nicht um Platten erweitern kann ist für mich schon eine Designschwäche, klipp und klar.
Zitat von downhillschrott
Das Problem mit den gestripten raidz2 verstehe ich sowieso nicht. Wenn mehr als 2 Platten über den Jordan gehen ist dein Pool hin .. egal ob in dem jetzigen Zustand oder dann wenn du ein, zwei, viele zusätzliches raidz2 Array dazu addierst. Du erhöhst aber dadurch die Performance da alle nested Arrays grundsätzlich gestriped werden.
Naja, es ist ein Unterschied ob ich jetzt 2x RAIDZ2 (2x8 HDDs) einsetze oder z.B. 1x RAIDZ3 (1x16 HDDs).

Bei 2x RAIDZ2 verliere ich Platz UND schaffe eine mögliche zusätzliche Fehlerquelle, design-technisch nicht gerade das Beste.
Ich hätte lieber mein vorhandenes Raid (1x8 HDDs) erweitert (auf 1x16 HDDs). Performance ist mir nicht wichtig, da sie locker ausreicht um GBit LAN zu versorgen - mehr bringt nichts.

Theoretisch könnte ich einen neuen POOL erstellen (2x8 HDDs nicht striped), aber das sind dann wieder zwei separate Adressen/Folder ... meh ;)



Zitat von TheHackman
Das heißt aber ich muss bei einem 8 disk raidz2 setup 8x rebuilden? oder wie verhält sich das bei raidz2 mit 2 paritäts-disks? Weil meistens sagt man ja dass der Rebuild immer eine ungute sache ist für die Platten (hohe beanspruchung, hohe fehleranfälligkeit).
Ich musste es zum Glück noch nie machen, aber ich nehme an es wird wie bei einem normalen RAID5/6 sein. Performance wird schlechter sein mit ausgefallenen Platten und man muss die defekten austauschen und dann wird rebuilded.
Bearbeitet von daisho am 08.04.2016, 09:23

Crash Override

BOfH
Registered: Jun 2005
Location: Germany
Posts: 2951
Du must zwar 8x "rebuilden", aber da es nicht auf Grund eines Ausfalls ist steigt auch nicht dei Ausfallswarscheinlichkeit. Wenn du das mit zfs replace /alte/disk /neue/disk machst, wird auch erst nach dem umkopieren dei alte Platte aus dem Pool entfernt, also fährst du auch nicht mit verminderter Parität.

Valera

Here to stay
Registered: Dec 2005
Location: Mint
Posts: 683
Zum erweitern bzw 8x rebuild hat Crash Override schon alles gesagt.

Zitat
Bei 2x RAIDZ2 verliere ich Platz UND schaffe eine mögliche zusätzliche Fehlerquelle

Ersteres ok. Verglichen mit einem raidz3 was bei 16 HDs wohl nicht schlecht wäre, muß man bei 2x striped raidz2 - entspricht RAID60 - eine Platte mehr einbauen.

Mögliche zusätzliche Fehlerquelle sehe ich nicht so.
1. Verglichen mit deinem jetzigen setup bist du auf keinen Fall schlechter dran.
2. Verglichen mit einem raidz3: Bei einem raidz3 dürfen 3 beliebige Platten ausfallen. Bei einem striped raidz2 dürfen 4 Platten ausfallen davon 2 beliebige pro raidz2 stripe.

Also ich hätte da keine Bedenken das Pool um ein weiteres raidz2 zu erweitern, im Gegenteil: Ich würde diese Konstruktion einem großen raidz3 sogar von Haus aus vorziehen.

Aber das ist nur meine persönliche Meinung.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz