Synopsis
snapraid [-c, --conf CONFIG] [-f, --filter PATTERN] [-d, --filter-disk NAME] [-m, --filter-missing] [-e, --filter-error] [-a, --audit-only] [-h, --pre-hash] [-i, --import DIR] [-p, --plan PERC|bad|new|full] [-o, --older-than DAYS] [-l, --log FILE] [-s, --spin-down-on-error] [-w, --bw-limit RATE] [-t, --tail] [-Z, --force-zero] [-E, --force-empty] [-U, --force-uuid] [-D, --force-device] [-N, --force-nocopy] [-F, --force-full] [-R, --force-realloc] [-W, --force-realloc-tail] [-S, --start BLKSTART] [-B, --count BLKCOUNT] [-L, --error-limit NUMBER] [-A, --stats] [-v, --verbose] [-q, --quiet] status|smart|probe|up|down|diff|sync|scrub|fix|check |list|dup|pool|devices|touch|rehash|locate
snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT]
Description
SnapRAID ist ein Sicherungsprogramm, das für Festplatten-Arrays entwickelt wurde und Paritätsinformationen zur Datenwiederherstellung bei Ausfall von bis zu sechs Festplatten speichert.
SnapRAID ist hauptsächlich für Home-Media-Center mit großen, selten geänderten Dateien konzipiert und bietet folgende Funktionen:
- Sie können bereits mit Dateien gefüllte Festplatten verwenden, ohne sie neu formatieren zu müssen, und wie gewohnt darauf zugreifen.
- Alle Ihre Daten werden gehasht, um die Datenintegrität zu gewährleisten und stille Beschädigung (silent corruption) zu verhindern.
- Wenn die Anzahl der ausgefallenen Festplatten die Paritätsanzahl überschreitet, beschränkt sich der Datenverlust auf die betroffenen Festplatten; Daten auf anderen Festplatten bleiben zugänglich.
- Wenn Sie versehentlich Dateien auf einer Festplatte löschen, ist eine Wiederherstellung möglich.
- Festplatten können unterschiedliche Größen haben.
- Sie können jederzeit Festplatten hinzufügen.
- SnapRAID sperrt Ihre Daten nicht ein; Sie können die Verwendung jederzeit beenden, ohne neu formatieren oder Daten verschieben zu müssen.
- Um auf eine Datei zuzugreifen, muss nur eine einzige Festplatte drehen (spinnen), was Strom spart und Geräusche reduziert.
Für weitere Informationen besuchen Sie bitte die offizielle SnapRAID-Website:
https://www.snapraid.it/
Limitations
SnapRAID ist ein Hybrid aus einem RAID- und einem Sicherungsprogramm, das darauf abzielt, die besten Vorteile beider zu kombinieren. Es hat jedoch einige Einschränkungen, die Sie vor der Verwendung berücksichtigen sollten.
Die Haupteinschränkung besteht darin, dass wenn eine Festplatte ausfällt und Sie in letzter Zeit keine Synchronisierung durchgeführt haben, Sie möglicherweise nicht vollständig wiederherstellen können. Genauer gesagt können Sie möglicherweise nicht bis zur Größe der geänderten oder gelöschten Dateien seit der letzten sync-Operation wiederherstellen. Dies tritt auch dann auf, wenn die geänderten oder gelöschten Dateien sich nicht auf der ausgefallenen Festplatte befinden. Aus diesem Grund ist SnapRAID besser für Daten geeignet, die sich selten ändern.
Andererseits verhindern neu hinzugefügte Dateien die Wiederherstellung von bereits vorhandenen Dateien nicht. Sie verlieren nur die kürzlich hinzugefügten Dateien, wenn diese sich auf der ausgefallenen Festplatte befinden.
Weitere Einschränkungen von SnapRAID sind:
- Mit SnapRAID haben Sie immer noch separate Dateisysteme für jede Festplatte. Mit RAID erhalten Sie ein einziges großes Dateisystem.
- SnapRAID streift (stripes) keine Daten. Mit RAID erhalten Sie einen Geschwindigkeitsvorteil durch Striping.
- SnapRAID unterstützt keine Echtzeit-Wiederherstellung. Mit RAID müssen Sie die Arbeit nicht unterbrechen, wenn eine Festplatte ausfällt.
- SnapRAID kann Daten nur von einer begrenzten Anzahl von Festplattenausfällen wiederherstellen. Mit einer Sicherung können Sie von einem vollständigen Ausfall des gesamten Festplatten-Arrays wiederherstellen.
- Nur Dateinamen, Zeitstempel, symbolische Links (symlinks) und Hardlinks werden gespeichert. Berechtigungen, Eigentümerschaft und erweiterte Attribute werden nicht gespeichert.
Getting Started
Um SnapRAID zu verwenden, müssen Sie zuerst eine Festplatte in Ihrem Festplatten-Array auswählen, die für parity-Informationen reserviert wird. Mit einer Festplatte für Parität können Sie von einem einzelnen Festplattenausfall wiederherstellen, ähnlich wie bei RAID5.
Wenn Sie von mehr Festplattenausfällen wiederherstellen möchten, ähnlich wie bei RAID6, müssen Sie zusätzliche Festplatten für Parität reservieren. Jede zusätzliche Paritätsfestplatte ermöglicht die Wiederherstellung von einem weiteren Festplattenausfall.
Als Paritätsfestplatten müssen Sie die größten Festplatten im Array auswählen, da die Paritätsinformationen auf die Größe der größten Datenfestplatte im Array anwachsen können.
Diese Festplatten werden zum Speichern der parity-Dateien reserviert. Sie sollten Ihre Daten nicht darauf speichern.
Anschließend müssen Sie die data-Festplatten definieren, die Sie mit SnapRAID schützen möchten. Der Schutz ist effektiver, wenn diese Festplatten Daten enthalten, die sich selten ändern. Aus diesem Grund ist es besser, die Windows C:\-Festplatte oder die Unix-Verzeichnisse /home, /var und /tmp NICHT einzuschließen.
Die Liste der Dateien wird in den content-Dateien gespeichert, die normalerweise auf den Daten-, Paritäts- oder Boot-Festplatten gespeichert werden. Diese Datei enthält die Details Ihrer Sicherung, einschließlich aller Prüfsummen zur Überprüfung ihrer Integrität. Die content-Datei wird in mehreren Kopien gespeichert, und jede Kopie muss sich auf einer anderen Festplatte befinden, um sicherzustellen, dass selbst bei mehreren Festplattenausfällen mindestens eine Kopie verfügbar ist.
Angenommen, Sie sind nur an einer Paritätsstufe des Schutzes interessiert und Ihre Festplatten befinden sich unter:
/mnt/diskp <- ausgewählte Festplatte für Parität /mnt/disk1 <- erste zu schützende Festplatte /mnt/disk2 <- zweite zu schützende Festplatte /mnt/disk3 <- dritte zu schützende Festplatte
Sie müssen die Konfigurationsdatei /etc/snapraid.conf mit den folgenden Optionen erstellen:
parity /mnt/diskp/snapraid.parity content /var/snapraid/snapraid.content content /mnt/disk1/snapraid.content content /mnt/disk2/snapraid.content data d1 /mnt/disk1/ data d2 /mnt/disk2/ data d3 /mnt/disk3/
Wenn Sie Windows verwenden, sollten Sie das Windows-Pfadformat mit Laufwerksbuchstaben und Backslashes anstelle von Slashes verwenden.
parity E:\snapraid.parity content C:\snapraid\snapraid.content content F:\array\snapraid.content content G:\array\snapraid.content data d1 F:\array\ data d2 G:\array\ data d3 H:\array\
Wenn Sie viele Festplatten haben und keine Laufwerksbuchstaben mehr verfügbar sind, können Sie Festplatten direkt in Unterordnern einhängen (mounten). Siehe:
https://www.google.com/search?q=Windows+mount+point
Zu diesem Zeitpunkt sind Sie bereit, den Befehl sync auszuführen, um die Paritätsinformationen zu erstellen.
snapraid sync
Dieser Vorgang kann beim ersten Mal mehrere Stunden dauern, abhängig von der Größe der bereits auf den Festplatten vorhandenen Daten. Wenn die Festplatten leer sind, ist der Vorgang sofort abgeschlossen.
Sie können ihn jederzeit durch Drücken von Strg+C anhalten, und beim nächsten Lauf wird er dort fortgesetzt, wo er unterbrochen wurde.
Wenn dieser Befehl abgeschlossen ist, sind Ihre Daten SICHER.
Jetzt können Sie Ihr Array nach Belieben verwenden und die Paritätsinformationen regelmäßig durch Ausführen des sync-Befehls aktualisieren.
Scrubbing
Um die Daten und die Parität regelmäßig auf Fehler zu überprüfen, können Sie den Befehl scrub ausführen.
snapraid scrub
Dieser Befehl vergleicht die Daten in Ihrem Array mit dem Hash, der während des sync-Befehls berechnet wurde, um die Integrität zu überprüfen.
Jeder Lauf des Befehls überprüft ungefähr 8% des Arrays, ausgenommen Daten, die bereits in den letzten 10 Tagen gescrubbed wurden. Sie können die Option -p, --plan verwenden, um eine andere Menge anzugeben, und die Option -o, --older-than, um ein anderes Alter in Tagen anzugeben. Zum Beispiel, um 5% des Arrays auf Blöcke zu überprüfen, die älter als 20 Tage sind, verwenden Sie:
snapraid -p 5 -o 20 scrub
Wenn während des Vorgangs stille oder Eingabe-/Ausgabefehler gefunden werden, werden die entsprechenden Blöcke in der content-Datei als fehlerhaft (bad) markiert und im Befehl status aufgelistet.
snapraid status
Um sie zu beheben, können Sie den Befehl fix verwenden und dabei nach fehlerhaften Blöcken mit der Option -e, --filter-error filtern:
snapraid -e fix
Beim nächsten scrub verschwinden die Fehler aus dem status-Bericht, wenn sie tatsächlich behoben sind. Um es schneller zu machen, können Sie -p bad verwenden, um nur als fehlerhaft markierte Blöcke zu scrubben.
snapraid -p bad scrub
Das Ausführen von scrub auf einem nicht synchronisierten Array kann Fehler melden, die durch entfernte oder geänderte Dateien verursacht wurden. Diese Fehler werden in der scrub-Ausgabe gemeldet, aber die zugehörigen Blöcke werden nicht als fehlerhaft markiert.
Pooling
Hinweis: Die unten beschriebene Pooling-Funktion wurde durch das Tool mergerfs ersetzt, das jetzt die empfohlene Option für Linux-Benutzer in der SnapRAID-Community ist. Mergefs bietet eine flexiblere und effizientere Möglichkeit, mehrere Laufwerke zu einem einzigen, vereinheitlichten Einhängepunkt (Mount Point) zusammenzufassen, was einen nahtlosen Zugriff auf Dateien über Ihr gesamtes Array hinweg ermöglicht, ohne auf symbolische Links angewiesen zu sein. Es lässt sich gut mit SnapRAID zum Paritätsschutz integrieren und wird häufig in Setups wie OpenMediaVault (OMV) oder benutzerdefinierten NAS-Konfigurationen verwendet.
Um alle Dateien in Ihrem Array im selben Verzeichnisbaum anzuzeigen, können Sie die pooling-Funktion aktivieren. Sie erstellt eine schreibgeschützte virtuelle Ansicht aller Dateien in Ihrem Array mithilfe symbolischer Links.
Sie können das pooling-Verzeichnis in der Konfigurationsdatei mit folgender Option konfigurieren:
pool /pool
oder, wenn Sie Windows verwenden, mit:
pool C:\pool
und anschließend den Befehl pool ausführen, um die virtuelle Ansicht zu erstellen oder zu aktualisieren.
snapraid pool
Wenn Sie eine Unix-Plattform verwenden und dieses Verzeichnis über das Netzwerk für Windows- oder Unix-Maschinen freigeben möchten, sollten Sie die folgenden Optionen zu Ihrer /etc/samba/smb.conf hinzufügen:
# Im globalen Abschnitt von smb.conf unix extensions = no
# Im Freigabe-Abschnitt von smb.conf [pool] comment = Pool path = /pool read only = yes guest ok = yes wide links = yes follow symlinks = yes
In Windows erfordert die Freigabe symbolischer Links über ein Netzwerk, dass Clients diese remote auflösen. Um dies zu ermöglichen, müssen Sie neben der Freigabe des Pool-Verzeichnisses auch alle Festplatten unabhängig freigeben, indem Sie die in der Konfigurationsdatei definierten Festplattennamen als Freigabepunkte verwenden. Sie müssen auch in der Option share der Konfigurationsdatei den Windows UNC-Pfad angeben, den Remote-Clients benötigen, um auf diese freigegebenen Festplatten zuzugreifen.
Zum Beispiel, wenn Sie von einem Server namens darkstar aus arbeiten, können Sie die Optionen verwenden:
data d1 F:\array\ data d2 G:\array\ data d3 H:\array\ pool C:\pool share \\darkstar
und die folgenden Verzeichnisse über das Netzwerk freigeben:
\\darkstar\pool -> C:\pool \\darkstar\d1 -> F:\array \\darkstar\d2 -> G:\array \\darkstar\d3 -> H:\array
um Remote-Clients den Zugriff auf alle Dateien unter \\darkstar\pool zu ermöglichen.
Möglicherweise müssen Sie auch Remote-Clients konfigurieren, um den Zugriff auf Remote-Symlinks mit dem Befehl zu aktivieren:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
Undeleting
SnapRAID funktioniert eher wie ein Sicherungsprogramm als ein RAID-System und kann verwendet werden, um Dateien in ihren vorherigen Zustand wiederherzustellen oder das Löschen rückgängig zu machen, indem die Option -f, --filter verwendet wird:
snapraid fix -f DATEI
oder für ein Verzeichnis:
snapraid fix -f VERZEICHNIS/
Sie können es auch verwenden, um nur versehentlich gelöschte Dateien innerhalb eines Verzeichnisses wiederherzustellen, indem Sie die Option -m, --filter-missing verwenden, die nur fehlende Dateien wiederherstellt und alle anderen unberührt lässt.
snapraid fix -m -f VERZEICHNIS/
Oder um alle gelöschten Dateien auf allen Laufwerken wiederherzustellen mit:
snapraid fix -m
Recovering
Das Schlimmste ist passiert, und Sie haben eine oder mehrere Festplatten verloren!
KEINE PANIK! Sie werden in der Lage sein, sie wiederherzustellen!
Das erste, was Sie tun müssen, ist, weitere Änderungen an Ihrem Festplatten-Array zu vermeiden. Deaktivieren Sie alle Remote-Verbindungen dazu und alle geplanten Prozesse, einschließlich geplanter SnapRAID-nächtlicher sync- oder scrub-Läufe.
Fahren Sie dann mit den folgenden Schritten fort.
STEP 1 -> Reconfigure
Sie benötigen etwas Platz zur Wiederherstellung, idealerweise auf zusätzlichen Ersatzfestplatten, aber eine externe USB-Festplatte oder eine Remote-Festplatte ist ausreichend.
Ändern Sie die SnapRAID-Konfigurationsdatei so, dass die data- oder parity-Option der ausgefallenen Festplatte auf einen Ort mit genügend leerem Speicherplatz zur Wiederherstellung der Dateien zeigt.
Wenn zum Beispiel die Festplatte d1 ausgefallen ist, ändern Sie von:
data d1 /mnt/disk1/
zu:
data d1 /mnt/new_spare_disk/
Wenn die wiederherzustellende Festplatte eine Paritätsfestplatte ist, aktualisieren Sie die entsprechende parity-Option. Wenn Sie mehrere ausgefallene Festplatten haben, aktualisieren Sie alle ihre Konfigurationsoptionen.
STEP 2 -> Fix
Führen Sie den fix-Befehl aus und speichern Sie das Protokoll in einer externen Datei mit:
snapraid -d NAME -l fix.log fix
Wobei NAME der Name der Festplatte ist, wie z.B. d1 in unserem vorherigen Beispiel. Wenn die wiederherzustellende Festplatte eine Paritätsfestplatte ist, verwenden Sie die Namen parity, 2-parity, usw. Wenn Sie mehrere ausgefallene Festplatten haben, verwenden Sie mehrere -d-Optionen, um alle anzugeben.
Dieser Befehl wird lange dauern.
Stellen Sie sicher, dass Sie einige Gigabyte frei haben, um die Datei fix.log zu speichern. Führen Sie ihn von einer Festplatte mit ausreichend freiem Speicherplatz aus.
Jetzt haben Sie alles wiederhergestellt, was wiederherstellbar ist. Wenn einige Dateien teilweise oder vollständig nicht wiederherstellbar sind, werden sie umbenannt, indem die Erweiterung .unrecoverable hinzugefügt wird.
Sie finden eine detaillierte Liste aller nicht wiederherstellbaren Blöcke in der Datei fix.log, indem Sie alle Zeilen überprüfen, die mit unrecoverable: beginnen.
Wenn Sie mit der Wiederherstellung nicht zufrieden sind, können Sie sie so oft wie gewünscht wiederholen.
Wenn Sie zum Beispiel Dateien nach dem letzten sync aus dem Array entfernt haben, kann dies dazu führen, dass einige Dateien nicht wiederhergestellt werden. In diesem Fall können Sie den fix mithilfe der Option -i, --import wiederholen, wobei Sie angeben, wo sich diese Dateien jetzt befinden, um sie erneut in den Wiederherstellungsprozess einzubeziehen.
Wenn Sie mit der Wiederherstellung zufrieden sind, können Sie fortfahren, aber beachten Sie, dass Sie nach der Synchronisierung den fix-Befehl nicht mehr wiederholen können!
STEP 3 -> Check
Als vorsichtige Überprüfung können Sie jetzt einen check-Befehl ausführen, um sicherzustellen, dass auf der wiederhergestellten Festplatte alles korrekt ist.
snapraid -d NAME -a check
Wobei NAME der Name der Festplatte ist, wie z.B. d1 in unserem vorherigen Beispiel.
Die Optionen -d und -a weisen SnapRAID an, nur die angegebene Festplatte zu überprüfen und alle Paritätsdaten zu ignorieren.
Dieser Befehl wird lange dauern, aber wenn Sie nicht übermäßig vorsichtig sind, können Sie ihn überspringen.
STEP 4 -> Sync
Führen Sie den sync-Befehl aus, um das Array mit der neuen Festplatte zu resynchronisieren.
snapraid sync
Wenn alles wiederhergestellt ist, ist dieser Befehl sofort.
Commands
SnapRAID bietet einige einfache Befehle, mit denen Sie:
- Den Status des Arrays ausgeben -> status
- Die Festplatten steuern -> smart, probe, up, down
- Eine Sicherung/einen Snapshot erstellen -> sync
- Daten regelmäßig überprüfen -> scrub
- Die letzte Sicherung/den letzten Snapshot wiederherstellen -> fix.
Befehle müssen in Kleinbuchstaben geschrieben werden.
status
Gibt eine Zusammenfassung des Zustands des Festplatten-Arrays aus.
Es enthält Informationen zur Paritätsfragmentierung, wie alt die Blöcke sind, ohne Überprüfung, und alle aufgezeichneten stillen Fehler, die beim Scrubbing aufgetreten sind.
Die präsentierten Informationen beziehen sich auf den letzten Zeitpunkt, zu dem Sie sync ausgeführt haben. Spätere Änderungen werden nicht berücksichtigt.
Wenn fehlerhafte Blöcke erkannt wurden, werden deren Blocknummern aufgelistet. Um sie zu beheben, können Sie den Befehl fix -e verwenden.
Es zeigt auch ein Diagramm an, das den letzten Zeitpunkt darstellt, zu dem jeder Block gescrubbed oder synchronisiert wurde. Gescrubbed Blöcke werden mit *, Blöcke, die synchronisiert, aber noch nicht gescrubbed wurden, mit o angezeigt.
Es wird nichts geändert.
smart
Gibt einen SMART-Bericht aller Festplatten im System aus.
Es enthält eine Schätzung der Ausfallwahrscheinlichkeit im nächsten Jahr, sodass Sie die Wartungsersetzung von Festplatten planen können, die verdächtige Attribute aufweisen.
Diese Wahrscheinlichkeitsschätzung wird durch Korrelation der SMART-Attribute der Festplatten mit den Backblaze-Daten erhalten, die unter folgender Adresse verfügbar sind:
https://www.backblaze.com/hard-drive-test-data.html
Wenn SMART meldet, dass eine Festplatte ausfällt, wird FAIL oder PREFAIL für diese Festplatte gedruckt, und SnapRAID endet mit einem Fehler. In diesem Fall wird ein sofortiger Austausch der Festplatte dringend empfohlen.
Weitere mögliche Statuszeichenfolgen sind:
Wenn die Option -v, --verbose angegeben ist, wird eine tiefere statistische Analyse bereitgestellt. Diese Analyse kann Ihnen bei der Entscheidung helfen, ob Sie mehr oder weniger Parität benötigen.
Dieser Befehl verwendet das smartctl-Tool und entspricht dem Ausführen von smartctl -a auf allen Geräten.
Wenn Ihre Geräte nicht korrekt automatisch erkannt werden, können Sie einen benutzerdefinierten Befehl mithilfe der smartctl-Option in der Konfigurationsdatei angeben.
Es wird nichts geändert.
probe
Gibt den POWER-Zustand aller Festplatten im System aus.
Standby bedeutet, dass die Festplatte nicht dreht. Active bedeutet, dass die Festplatte dreht.
Dieser Befehl verwendet das smartctl-Tool und entspricht dem Ausführen von smartctl -n standby -i auf allen Geräten.
Wenn Ihre Geräte nicht korrekt automatisch erkannt werden, können Sie einen benutzerdefinierten Befehl mithilfe der smartctl-Option in der Konfigurationsdatei angeben.
Es wird nichts geändert.
up
Dreht alle Festplatten des Arrays hoch (spins up).
Sie können nur bestimmte Festplatten mithilfe der Option -d, --filter-disk hochdrehen.
Das gleichzeitige Hochdrehen aller Festplatten erfordert viel Strom. Stellen Sie sicher, dass Ihr Netzteil dies aushalten kann.
Es wird nichts geändert.
down
Dreht alle Festplatten des Arrays herunter (spins down).
Dieser Befehl verwendet das smartctl-Tool und entspricht dem Ausführen von smartctl -s standby,now auf allen Geräten.
Sie können nur bestimmte Festplatten mithilfe der Option -d, --filter-disk herunterdrehen.
Um automatisch bei einem Fehler herunterzufahren, können Sie die Option -s, --spin-down-on-error mit jedem anderen Befehl verwenden, was dem manuellen Ausführen von down bei Auftreten eines Fehlers entspricht.
Es wird nichts geändert.
diff
Listet alle Dateien auf, die seit dem letzten sync geändert wurden und deren Paritätsdaten neu berechnet werden müssen.
Dieser Befehl überprüft nicht die Dateidaten, sondern nur den Dateizeitstempel, die Größe und die Inode.
Nach dem Auflisten aller geänderten Dateien wird eine Zusammenfassung der Änderungen präsentiert, gruppiert nach:
Wenn ein sync erforderlich ist, ist der Rückgabecode des Prozesses 2 anstelle des Standardwerts 0. Der Rückgabecode 1 wird für eine allgemeine Fehlerbedingung verwendet.
Es wird nichts geändert.
sync
Aktualisiert die Paritätsinformationen. Alle geänderten Dateien im Festplatten-Array werden gelesen, und die entsprechenden Paritätsdaten werden aktualisiert.
Sie können diesen Vorgang jederzeit durch Drücken von Strg+C anhalten, ohne die bereits geleistete Arbeit zu verlieren. Beim nächsten Lauf wird der sync-Vorgang dort fortgesetzt, wo er unterbrochen wurde.
Wenn während des Vorgangs stille oder Eingabe-/Ausgabefehler gefunden werden, werden die entsprechenden Blöcke als fehlerhaft markiert.
Dateien werden durch Pfad und/oder Inode identifiziert und anhand von Größe und Zeitstempel überprüft. Wenn die Dateigröße oder der Zeitstempel abweicht, werden die Paritätsdaten für die gesamte Datei neu berechnet. Wenn die Datei auf derselben Festplatte verschoben oder umbenannt wird und dieselbe Inode beibehält, wird die Parität nicht neu berechnet. Wenn die Datei auf eine andere Festplatte verschoben wird, wird die Parität neu berechnet, aber die zuvor berechneten Hash-Informationen werden beibehalten.
Die content- und parity-Dateien werden bei Bedarf geändert. Die Dateien im Array werden NICHT geändert.
scrub
Scrubbt das Array und überprüft auf stille oder Eingabe-/Ausgabefehler auf Daten- und Paritätsfestplatten.
Jede Ausführung überprüft ungefähr 8% des Arrays, ausgenommen Daten, die bereits in den letzten 10 Tagen gescrubbed wurden. Dies bedeutet, dass Scrubbing einmal pro Woche sicherstellt, dass jedes Bit an Daten mindestens einmal alle drei Monate überprüft wird.
Sie können einen anderen Scrub-Plan oder eine andere Menge mithilfe der Option -p, --plan definieren, die Folgendes akzeptiert: bad - Scrubbt als fehlerhaft markierte Blöcke. new - Scrubbt gerade synchronisierte Blöcke, die noch nicht gescrubbed
wurden.
Wenn Sie einen Prozentsatz angeben, können Sie auch die Option -o, --older-than verwenden, um festzulegen, wie alt der Block sein soll. Die ältesten Blöcke werden zuerst gescrubbed, um eine optimale Überprüfung zu gewährleisten. Wenn Sie nur die gerade synchronisierten Blöcke scrubben möchten, die noch nicht gescrubbed wurden, verwenden Sie die Option -p new.
Um Details zum Scrub-Status zu erhalten, verwenden Sie den Befehl status.
Für jeden gefundenen stillen oder Eingabe-/Ausgabefehler werden die entsprechenden Blöcke in der content-Datei als fehlerhaft (bad) markiert. Diese fehlerhaften Blöcke werden in status aufgelistet und können mit fix -e behoben werden. Nach der Behebung werden sie beim nächsten Scrub erneut überprüft, und wenn sie als korrigiert befunden werden, wird die fehlerhafte Markierung entfernt. Um nur die fehlerhaften Blöcke zu scrubben, können Sie den Befehl scrub -p bad verwenden.
Es wird empfohlen, scrub nur auf einem synchronisierten Array auszuführen, um gemeldete Fehler zu vermeiden, die durch nicht synchronisierte Daten verursacht werden. Diese Fehler werden als keine stillen Fehler erkannt, und die Blöcke werden nicht als fehlerhaft markiert, aber solche Fehler werden in der Ausgabe des Befehls gemeldet.
Die content-Datei wird geändert, um die Zeit der letzten Überprüfung für jeden Block zu aktualisieren und fehlerhafte Blöcke zu markieren. Die parity-Dateien werden NICHT geändert. Die Dateien im Array werden NICHT geändert.
fix
Behebt alle Dateien und die Paritätsdaten.
Alle Dateien und Paritätsdaten werden mit dem Snapshot-Zustand verglichen, der beim letzten sync gespeichert wurde. Wenn eine Abweichung gefunden wird, wird sie auf den gespeicherten Snapshot zurückgesetzt.
WARNUNG! Der Befehl fix unterscheidet nicht zwischen Fehlern und beabsichtigten Änderungen. Er setzt den Dateizustand bedingungslos auf den letzten sync zurück.
Wenn keine andere Option angegeben ist, wird das gesamte Array verarbeitet. Verwenden Sie die Filteroptionen, um eine Teilmenge von Dateien oder Festplatten für die Operation auszuwählen.
Um nur die Blöcke zu beheben, die während sync und scrub als fehlerhaft markiert wurden, verwenden Sie die Option -e, --filter-error. Im Gegensatz zu anderen Filteroptionen wendet diese Behebungen nur auf Dateien an, die seit dem letzten sync unverändert sind.
SnapRAID benennt alle Dateien, die nicht behoben werden können, durch Hinzufügen der Erweiterung .unrecoverable um.
Vor dem Beheben wird das gesamte Array gescannt, um alle Dateien zu finden, die seit der letzten sync-Operation verschoben wurden. Diese Dateien werden anhand ihres Zeitstempels identifiziert, wobei Name und Verzeichnis ignoriert werden, und werden bei Bedarf im Wiederherstellungsprozess verwendet. Wenn Sie einige davon außerhalb des Arrays verschoben haben, können Sie die Option -i, --import verwenden, um zusätzliche Verzeichnisse zum Scannen anzugeben.
Dateien werden nur anhand des Pfads identifiziert, nicht anhand der Inode.
Die content-Datei wird NICHT geändert. Die parity-Dateien werden bei Bedarf geändert. Die Dateien im Array werden bei Bedarf geändert.
check
Überprüft alle Dateien und die Paritätsdaten.
Es funktioniert wie fix, simuliert jedoch nur eine Wiederherstellung, und es werden keine Änderungen in das Array geschrieben.
Dieser Befehl ist primär für manuelle Überprüfung gedacht, wie z.B. nach einem Wiederherstellungsprozess oder unter anderen speziellen Bedingungen. Für regelmäßige und geplante Überprüfungen verwenden Sie scrub.
Wenn Sie die Option -a, --audit-only verwenden, wird nur der Hash der Dateien überprüft, und die Paritätsdaten werden für einen schnelleren Lauf ignoriert.
Dateien werden nur anhand des Pfads identifiziert, nicht anhand der Inode.
Es wird nichts geändert.
list
Listet alle Dateien auf, die sich zum Zeitpunkt des letzten sync im Array befanden.
Mit -v oder --verbose wird auch die Untersekundenzeit angezeigt.
Es wird nichts geändert.
dup
Listet alle doppelten Dateien auf. Zwei Dateien gelten als gleich, wenn ihre Hashes übereinstimmen. Die Dateidaten werden nicht gelesen; es werden nur die vorab berechneten Hashes verwendet.
Es wird nichts geändert.
pool
Erstellt oder aktualisiert eine virtuelle Ansicht aller Dateien in Ihrem Festplatten-Array im pooling-Verzeichnis.
Die Dateien werden nicht kopiert, sondern mithilfe symbolischer Links verknüpft.
Beim Aktualisieren werden alle vorhandenen symbolischen Links und leeren Unterverzeichnisse gelöscht und durch die neue Ansicht des Arrays ersetzt. Alle anderen regulären Dateien bleiben erhalten.
Außerhalb des Pool-Verzeichnisses wird nichts geändert.
devices
Gibt die Low-Level-Geräte aus, die vom Array verwendet werden.
Dieser Befehl zeigt die Gerätezuordnungen im Array an und ist hauptsächlich als Skriptschnittstelle gedacht.
Die ersten beiden Spalten sind die Low-Level-Geräte-ID und der Pfad. Die nächsten beiden Spalten sind die High-Level-Geräte-ID und der Pfad. Die letzte Spalte ist der Festplattenname im Array.
In den meisten Fällen haben Sie ein Low-Level-Gerät für jede Festplatte im Array, aber in einigen komplexeren Konfigurationen können mehrere Low-Level-Geräte von einer einzigen Festplatte im Array verwendet werden.
Es wird nichts geändert.
touch
Setzt einen beliebigen Untersekunden-Zeitstempel für alle Dateien, deren Untersekunden-Zeitstempel auf Null gesetzt ist.
Dies verbessert die Fähigkeit von SnapRAID, verschobene und kopierte Dateien zu erkennen, da es den Zeitstempel fast eindeutig macht und mögliche Duplikate reduziert.
Genauer gesagt, wenn der Untersekunden-Zeitstempel nicht Null ist, wird eine verschobene oder kopierte Datei als solche identifiziert, wenn sie mit Name, Größe und Zeitstempel übereinstimmt. Wenn der Untersekunden-Zeitstempel Null ist, wird sie nur als Kopie betrachtet, wenn der vollständige Pfad, die Größe und der Zeitstempel alle übereinstimmen.
Der Zeitstempel mit Sekundenpräzision wird nicht geändert, sodass alle Daten und Zeiten Ihrer Dateien erhalten bleiben.
rehash
Plant eine Neu-Hash-Berechnung (rehash) des gesamten Arrays.
Dieser Befehl ändert die verwendete Hash-Art, typischerweise beim Upgrade von einem 32-Bit-System auf ein 64-Bit-System, um von MurmurHash3 auf den schnelleren SpookyHash umzuschalten.
Wenn Sie bereits den optimalen Hash verwenden, tut dieser Befehl nichts und informiert Sie darüber, dass keine Aktion erforderlich ist.
Die Neu-Hash-Berechnung wird nicht sofort durchgeführt, sondern findet schrittweise während sync und scrub statt.
Sie können den Neu-Hash-Zustand mithilfe von status überprüfen.
Während der Neu-Hash-Berechnung behält SnapRAID die volle Funktionalität bei, mit der einzigen Ausnahme, dass dup keine doppelten Dateien mit einem anderen Hash erkennen kann.
locate
Lokalisiert Dateien, die auf den Paritätsfestplatten gespeichert sind. Für jede übereinstimmende Datei wird deren Position innerhalb der Paritätsdatei und die Anzahl der belegten Fragmente ausgegeben.
Sie können die Option -t, --tail verwenden, um den Vorgang auf Dateien zu beschränken, die den angegebenen Endbereich (Tail) der Parität belegen.
Wenn Sie diese Dateien neu zuweisen möchten, können Sie die Option -W, --force-realloc-tail verwenden. Beachten Sie, dass solche Dateien während des Neuzuweisungsprozesses nicht durch die Parität geschützt sind.
Options
SnapRAID bietet die folgenden Optionen:
Configuration
SnapRAID benötigt eine Konfigurationsdatei, um zu wissen, wo sich Ihr Festplatten-Array befindet und wo die Paritätsinformationen gespeichert werden sollen.
Unter Unix wird die Datei /usr/local/etc/snapraid.conf verwendet, falls sie existiert, andernfalls /etc/snapraid.conf. Unter Windows wird die Datei snapraid.conf im selben Verzeichnis wie snapraid.exe verwendet.
Sie muss die folgenden Optionen (Groß- und Kleinschreibung beachten) enthalten:
parity FILE [,FILE] ...
Definiert die Dateien, die zum Speichern der Paritätsinformationen verwendet werden sollen. Die Parität ermöglicht den Schutz vor einem einzelnen Festplattenausfall, ähnlich wie bei RAID5.
Sie können mehrere Dateien angeben, die sich auf unterschiedlichen Festplatten befinden müssen. Wenn eine Datei nicht mehr wachsen kann, wird die nächste verwendet. Der gesamte verfügbare Platz muss mindestens so groß sein wie die größte Datenfestplatte im Array.
Sie können später zusätzliche Paritätsdateien hinzufügen, aber Sie können sie nicht neu anordnen oder entfernen.
Das Reservieren der Paritätsfestplatten für Parität stellt sicher, dass sie nicht fragmentiert werden, was die Leistung verbessert.
Unter Windows werden 256 MB auf jeder Festplatte ungenutzt gelassen, um die Warnung vor vollen Festplatten zu vermeiden.
Diese Option ist obligatorisch und kann nur einmal verwendet werden.
(2,3,4,5,6)-parity FILE [,FILE] ...
Definiert die Dateien, die zum Speichern zusätzlicher Paritätsinformationen verwendet werden sollen.
Für jede angegebene Paritätsstufe wird eine zusätzliche Schutzstufe aktiviert:
- 2-parity aktiviert RAID6 Dual-Parität.
- 3-parity aktiviert Triple-Parität.
- 4-parity aktiviert Quad- (vierfache) Parität.
- 5-parity aktiviert Penta- (fünffache) Parität.
- 6-parity aktiviert Hexa- (sechsfache) Parität.
Jede Paritätsstufe erfordert die Anwesenheit aller vorherigen Paritätsstufen.
Die gleichen Überlegungen wie bei der Option parity gelten.
Diese Optionen sind optional und können nur einmal verwendet werden.
z-parity FILE [,FILE] ...
Definiert eine alternative Datei und ein alternatives Format zum Speichern von Triple-Parität.
Diese Option ist eine Alternative zu 3-parity, die primär für Low-End-CPUs wie ARM oder AMD Phenom, Athlon und Opteron gedacht ist, die den SSSE3-Befehlssatz nicht unterstützen. In solchen Fällen bietet sie eine bessere Leistung.
Dieses Format ähnelt dem von ZFS RAIDZ3, ist aber schneller. Wie ZFS funktioniert es nicht jenseits der Triple-Parität.
Bei Verwendung von 3-parity werden Sie gewarnt, wenn das z-parity-Format zur Leistungsverbesserung empfohlen wird.
Es ist möglich, von einem Format in ein anderes zu konvertieren, indem die Konfigurationsdatei mit der gewünschten z-parity- oder 3-parity-Datei angepasst und fix zur Neuerstellung verwendet wird.
content FILE
Definiert die Datei, die zum Speichern der Liste und Prüfsummen aller im Festplatten-Array vorhandenen Dateien verwendet werden soll.
Sie kann auf einer für Daten, Parität oder einer anderen verfügbaren Festplatte platziert werden. Wenn Sie eine Datenfestplatte verwenden, wird diese Datei automatisch vom sync-Vorgang ausgeschlossen.
Diese Option ist obligatorisch und kann mehrmals verwendet werden, um mehrere Kopien derselben Datei zu speichern.
Sie müssen mindestens eine Kopie für jede verwendete Paritätsfestplatte plus eine speichern. Die Verwendung zusätzlicher Kopien schadet nicht.
data NAME DIR
Definiert den Namen und den Einhängepunkt (Mount Point) der Datenfestplatten im Array. NAME wird zur Identifizierung der Festplatte verwendet und muss eindeutig sein. DIR ist der Einhängepunkt der Festplatte im Dateisystem.
Sie können den Einhängepunkt nach Bedarf ändern, solange Sie den NAME unverändert lassen.
Sie sollten eine Option für jede Datenfestplatte im Array verwenden.
Sie können eine Festplatte später umbenennen, indem Sie den NAME direkt in der Konfigurationsdatei ändern und dann einen sync-Befehl ausführen. Im Falle einer Umbenennung erfolgt die Zuordnung mithilfe der gespeicherten UUID der Festplatten.
extra NAME DIR
Definiert den Namen und Einhängepunkt zusätzlicher Festplatten, die mit den Befehlen smart und probe überwacht werden sollen.
Dies ist nützlich für die Überwachung von Festplatten, die nicht Teil des Arrays sind, aber für das Funktionieren des Systems erforderlich sind, wie z. B. die Boot-Festplatte.
Beachten Sie, dass solche Festplatten nicht von den Befehlen up und down betroffen sind, da von ihnen erwartet wird, dass sie sich immer drehen.
nohidden
Schließt alle versteckten Dateien und Verzeichnisse aus. Unter Unix sind versteckte Dateien solche, die mit . beginnen. Unter Windows sind es solche mit dem versteckten Attribut.
exclude/include PATTERN
Definiert die Datei- oder Verzeichnismuster, die im sync-Vorgang ausgeschlossen oder eingeschlossen werden sollen. Alle Muster werden in der angegebenen Reihenfolge verarbeitet.
Wenn das erste übereinstimmende Muster ein exclude-Muster ist, wird die Datei ausgeschlossen. Wenn es ein include-Muster ist, wird die Datei eingeschlossen. Wenn kein Muster übereinstimmt, wird die Datei ausgeschlossen, wenn das zuletzt angegebene Muster ein include ist, oder eingeschlossen, wenn das zuletzt angegebene Muster ein exclude ist.
Weitere Details zu Musterspezifikationen finden Sie im Abschnitt PATTERN.
Diese Option kann mehrmals verwendet werden.
blocksize SIZE_IN_KIBIBYTES
Definiert die grundlegende Blockgröße in Kibibytes für die Parität. Ein Kibibyte entspricht 1024 Bytes.
Die Standard-Blockgröße ist 256, was für die meisten Fälle ausreichen sollte.
WARNUNG! Diese Option ist nur für Experten gedacht, und es wird dringend empfohlen, diesen Wert nicht zu ändern. Um diesen Wert zukünftig zu ändern, müssen Sie die gesamte Parität neu erstellen!
Ein Grund für die Verwendung einer anderen Blockgröße ist, wenn Sie viele kleine Dateien in der Größenordnung von Millionen haben.
Für jede Datei, auch wenn sie nur wenige Bytes groß ist, wird ein ganzer Block Parität zugewiesen, und bei vielen Dateien kann dies zu erheblichem ungenutztem Paritätsplatz führen. Wenn Sie die Paritätsfestplatte vollständig füllen, dürfen Sie keine weiteren Dateien zu den Datenfestplatten hinzufügen. Der verschwendete Paritätsplatz akkumuliert sich jedoch nicht über die Datenfestplatten hinweg. Verschwendeter Platz, der durch eine hohe Anzahl von Dateien auf einer Datenfestplatte entsteht, begrenzt nur die Datenmenge auf dieser Datenfestplatte, nicht auf anderen.
Als Annäherung können Sie davon ausgehen, dass die Hälfte der Blockgröße für jede Datei verschwendet wird. Mit beispielsweise 100.000 Dateien und einer Blockgröße von 256 KiB verschwenden Sie 12,8 GB Parität, was zu 12,8 GB weniger verfügbarem Speicherplatz auf der Datenfestplatte führen kann.
Sie können die Menge des verschwendeten Platzes auf jeder Festplatte mithilfe von status überprüfen. Dies ist die Menge an Platz, die Sie auf den Datenfestplatten freilassen oder für Dateien verwenden müssen, die nicht im Array enthalten sind. Wenn dieser Wert negativ ist, bedeutet dies, dass Sie kurz davor sind, die Parität zu füllen, und er stellt den Platz dar, den Sie noch verschwenden können.
Um dieses Problem zu vermeiden, können Sie eine größere Partition für die Parität verwenden. Wenn die Paritätspartition beispielsweise 12,8 GB größer ist als die Datenfestplatten, haben Sie genügend zusätzlichen Platz, um bis zu 100.000 Dateien auf jeder Datenfestplatte ohne verschwendeten Platz zu verarbeiten.
Ein Trick, um eine größere Paritätspartition unter Linux zu erhalten, ist die Formatierung mit dem Befehl:
mkfs.ext4 -m 0 -T largefile4 DEVICE
Dies führt zu etwa 1,5% zusätzlichem Speicherplatz, ungefähr 60 GB für eine 4 TB Festplatte, was etwa 460.000 Dateien auf jeder Datenfestplatte ohne verschwendeten Platz ermöglicht.
hashsize SIZE_IN_BYTES
Definiert die Hash-Größe in Bytes für die gespeicherten Blöcke.
Die Standard-Hash-Größe beträgt 16 Bytes (128 Bit), was für die meisten Fälle ausreichen sollte.
WARNUNG! Diese Option ist nur für Experten gedacht, und es wird dringend empfohlen, diesen Wert nicht zu ändern. Um diesen Wert zukünftig zu ändern, müssen Sie die gesamte Parität neu erstellen!
Ein Grund für die Verwendung einer anderen Hash-Größe ist, wenn Ihr System über begrenzten Speicher verfügt. Als Faustregel benötigt SnapRAID typischerweise 1 GiB RAM für jede 16 TB Daten im Array.
Genauer gesagt benötigt SnapRAID zum Speichern der Hashes der Daten ungefähr TS*(1+HS)/BS Bytes RAM, wobei TS die Gesamtgröße in Bytes Ihres Festplatten-Arrays ist, BS die Blockgröße in Bytes und HS die Hash-Größe in Bytes.
Mit beispielsweise 8 Festplatten à 4 TB, einer Blockgröße von 256 KiB (1 KiB = 1024 Bytes) und einer Hash-Größe von 16 erhalten Sie:
RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1.93 GiB
Bei einem Wechsel zu einer Hash-Größe von 8 erhalten Sie:
RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1.02 GiB
Bei einem Wechsel zu einer Blockgröße von 512 erhalten Sie:
RAM = (8 * 4 * 10^12) * (1+16) / (512 * 2^10) = 0.96 GiB
Bei einem Wechsel zu einer Hash-Größe von 8 und einer Blockgröße von 512 erhalten Sie:
RAM = (8 * 4 * 10^12) * (1+8) / (512 * 2^10) = 0.51 GiB
autosave SIZE_IN_GIGABYTES
Speichert den Zustand beim Synchronisieren oder Scrubben automatisch nach der angegebenen Menge an verarbeiteten GB. Diese Option ist nützlich, um zu vermeiden, dass lange sync-Befehle von vorne gestartet werden müssen, wenn sie durch einen Maschinenabsturz oder ein anderes Ereignis unterbrochen werden.
temp_limit TEMPERATURE_CELSIUS
Legt die maximal zulässige Festplattentemperatur in Celsius fest. Wenn angegeben, überprüft SnapRAID regelmäßig die Temperatur aller Festplatten mithilfe des smartctl-Tools. Die aktuellen Festplattentemperaturen werden während des Betriebs von SnapRAID angezeigt. Wenn eine Festplatte diesen Grenzwert überschreitet, werden alle Vorgänge gestoppt, und die Festplatten werden für die durch die Option temp_sleep definierte Dauer heruntergefahren (in den Standby-Modus versetzt). Nach der Schlafperiode werden die Vorgänge fortgesetzt und möglicherweise erneut pausiert, wenn der Temperaturgrenzwert erneut erreicht wird.
Während des Betriebs analysiert SnapRAID auch die Heizkurve jeder Festplatte und schätzt die langfristige stationäre Temperatur, die erwartet wird, wenn die Aktivität fortgesetzt wird. Die Schätzung wird nur durchgeführt, nachdem die Festplattentemperatur viermal angestiegen ist, um sicherzustellen, dass genügend Datenpunkte zur Verfügung stehen, um einen zuverlässigen Trend festzustellen. Diese vorhergesagte stationäre Temperatur wird in Klammern neben dem aktuellen Wert angezeigt und hilft bei der Beurteilung, ob die Kühlung des Systems ausreichend ist. Diese geschätzte Temperatur dient nur zu Informationszwecken und hat keine Auswirkung auf das Verhalten von SnapRAID. Die Aktionen des Programms basieren ausschließlich auf den tatsächlich gemessenen Festplattentemperaturen.
Um diese Analyse durchzuführen, benötigt SnapRAID eine Referenz für die Systemtemperatur. Es versucht zunächst, diese von verfügbaren Hardwaresensoren zu lesen. Wenn kein Systemsensor zugänglich ist, wird die niedrigste zu Beginn des Laufs gemessene Festplattentemperatur als Fallback-Referenz verwendet.
Normalerweise zeigt SnapRAID nur die Temperatur der heißesten Festplatte an. Um die Temperatur aller Festplatten anzuzeigen, verwenden Sie die Option -A oder --stats.
temp_sleep TIME_IN_MINUTES
Legt die Standby-Zeit in Minuten fest, wenn der Temperaturgrenzwert erreicht wird. Während dieser Zeit bleiben die Festplatten heruntergefahren. Der Standardwert ist 5 Minuten.
pool DIR
Definiert das Pooling-Verzeichnis, in dem die virtuelle Ansicht des Festplatten-Arrays mithilfe des Befehls pool erstellt wird.
Das Verzeichnis muss bereits existieren.
share UNC_DIR
Definiert den Windows UNC-Pfad, der für den Remote-Zugriff auf die Festplatten erforderlich ist.
Wenn diese Option angegeben ist, verwenden die im Pool-Verzeichnis erstellten symbolischen Links diesen UNC-Pfad, um auf die Festplatten zuzugreifen. Ohne diese Option verwenden die generierten symbolischen Links nur lokale Pfade, was die Freigabe des Pool-Verzeichnisses über das Netzwerk nicht ermöglicht.
Die symbolischen Links werden unter Verwendung des angegebenen UNC-Pfads gebildet, wobei der in der data-Option angegebene Festplattenname und schließlich das Dateiverzeichnis und der Name hinzugefügt werden.
Diese Option ist nur für Windows erforderlich.
smartctl DISK/PARITY OPTIONS...
Definiert benutzerdefinierte smartctl-Optionen, um die SMART-Attribute für jede Festplatte abzurufen. Dies kann für RAID-Controller und einige USB-Festplatten erforderlich sein, die nicht automatisch erkannt werden können. Der Platzhalter %s wird durch den Gerätenamen ersetzt, ist aber für feste Geräte wie RAID-Controller optional.
DISK ist derselbe Festplattenname, der in der data-Option angegeben ist. PARITY ist einer der Paritätsnamen: parity, 2-parity, 3-parity, 4-parity, 5-parity, 6-parity oder z-parity.
In den angegebenen OPTIONS wird die Zeichenfolge %s durch den Gerätenamen ersetzt. Bei RAID-Controllern ist das Gerät wahrscheinlich fest, und Sie müssen %s möglicherweise nicht verwenden.
Weitere mögliche Optionen finden Sie in der smartmontools-Dokumentation:
https://www.smartmontools.org/wiki/Supported_RAID-Controllers https://www.smartmontools.org/wiki/Supported_USB-Devices
Zum Beispiel:
smartctl parity -d sat %s
smartignore DISK/PARITY ATTR [ATTR...]
Ignoriert das angegebene SMART-Attribut bei der Berechnung der Wahrscheinlichkeit eines Festplattenausfalls. Diese Option ist nützlich, wenn eine Festplatte ungewöhnliche oder irreführende Werte für ein bestimmtes Attribut meldet.
DISK ist derselbe Festplattenname, der in der data-Option angegeben ist. PARITY ist einer der Paritätsnamen: parity, 2-parity, 3-parity, 4-parity, 5-parity, 6-parity oder z-parity. Der Sonderwert * kann verwendet werden, um das Attribut auf allen Festplatten zu ignorieren.
Um beispielsweise das Attribut Current Pending Sector Count auf allen Festplatten zu ignorieren:
smartignore * 197
Um es nur auf der ersten Paritätsfestplatte zu ignorieren:
smartignore parity 197
Examples
Ein Beispiel für eine typische Konfiguration für Unix ist:
parity /mnt/diskp/snapraid.parity content /mnt/diskp/snapraid.content content /var/snapraid/snapraid.content data d1 /mnt/disk1/ data d2 /mnt/disk2/ data d3 /mnt/disk3/ exclude /lost+found/ exclude /tmp/ smartctl d1 -d sat %s smartctl d2 -d usbjmicron %s smartctl parity -d areca,1/1 /dev/sg0 smartctl 2-parity -d areca,2/1 /dev/sg0
Ein Beispiel für eine typische Konfiguration für Windows ist:
parity E:\snapraid.parity content E:\snapraid.content content C:\snapraid\snapraid.content data d1 G:\array\ data d2 H:\array\ data d3 I:\array\ exclude Thumbs.db exclude \$RECYCLE.BIN exclude \System Volume Information smartctl d1 -d sat %s smartctl d2 -d usbjmicron %s smartctl parity -d areca,1/1 /dev/arcmsr0 smartctl 2-parity -d areca,2/1 /dev/arcmsr0
Pattern
Muster bieten eine flexible Möglichkeit, Dateien für die Einbeziehung oder den Ausschluss zu filtern. Durch die Verwendung von Globbing-Zeichen können Sie Regeln definieren, die mit bestimmten Dateinamen oder ganzen Verzeichnisstrukturen übereinstimmen, ohne jeden Pfad manuell auflisten zu müssen.
Das Fragezeichen ? entspricht einem beliebigen einzelnen Zeichen außer dem Verzeichnistrennzeichen. Dies macht es nützlich für den Abgleich von Dateinamen mit variablen Zeichen, während das Muster auf eine einzelne Verzeichnisebene beschränkt bleibt.
Der einfache Stern * entspricht einer beliebigen Folge von Zeichen, aber wie das Fragezeichen überschreitet er niemals Verzeichnisgrenzen. Er stoppt beim Schrägstrich, was ihn für den Abgleich innerhalb einer einzelnen Pfadkomponente geeignet macht. Dies ist das Standardverhalten von Wildcards, das vom Shell- Globbing bekannt ist.
Der Doppelstern ** ist mächtiger; er entspricht jeder Folge von Zeichen einschließlich Verzeichnistrennzeichen. Dies ermöglicht es Mustern, über mehrere Verzeichnisebenen hinweg übereinzustimmen. Wenn ** direkt in ein Muster eingebettet ist, kann es null oder mehr Zeichen einschließlich Schrägstrichen zwischen dem umgebenden wörtlichen Text entsprechen.
Die wichtigste Verwendung von ** ist in der speziellen Form /**/. Dies entspricht null oder mehr vollständigen Verzeichnisebenen, was es möglich macht, Dateien in jeder Tiefe eines Verzeichnisbaums abzugleichen, ohne die genaue Pfadstruktur zu kennen. Zum Beispiel entspricht das Muster src/**/main.js dem Pfad src/main.js (Überspringen von null Verzeichnissen), src/ui/main.js (Überspringen eines Verzeichnisses) und src/ui/components/main.js (Überspringen von zwei Verzeichnissen).
Zeichenklassen mit eckigen Klammern [] entsprechen einem einzelnen Zeichen aus einer bestimmten Menge oder einem Bereich. Wie die anderen Einzelzeichenmuster entsprechen sie nicht den Verzeichnistrennzeichen. Klassen unterstützen Bereiche und Negierung durch ein Ausrufezeichen.
Der grundlegende Unterschied, den man sich merken sollte, ist, dass *, ? und Zeichenklassen alle Verzeichnisgrenzen respektieren und nur innerhalb einer einzelnen Pfadkomponente übereinstimmen, während ** das einzige Muster ist, das über Verzeichnistrennzeichen hinweg übereinstimmen kann.
Es gibt vier verschiedene Arten von Mustern:
Wenn Sie einen absoluten Pfad angeben, der mit / beginnt, wird er auf das Array-Stammverzeichnis angewendet, nicht auf das lokale Dateisystem-Stammverzeichnis.
Unter Windows können Sie den Backslash \ anstelle des Forward-Slash / verwenden. Windows-Systemverzeichnisse, Junctions, Einhängepunkte (Mount Points) und andere spezielle Windows-Verzeichnisse werden als Dateien behandelt, was bedeutet, dass Sie zum Ausschließen eine Dateiregel verwenden müssen, nicht eine Verzeichnisregel.
Wenn der Dateiname ein Zeichen *, ?, [, oder ] enthält, müssen Sie es escapen, um zu vermeiden, dass es als Globbing-Zeichen interpretiert wird. Unter Unix ist das Escape-Zeichen \; unter Windows ist es ^. Wenn sich das Muster in der Befehlszeile befindet, müssen Sie das Escape-Zeichen verdoppeln, um zu vermeiden, dass es von der Befehlsshell interpretiert wird.
In der Konfigurationsdatei können Sie verschiedene Strategien zum Filtern der zu verarbeitenden Dateien verwenden. Der einfachste Ansatz besteht darin, nur exclude-Regeln zu verwenden, um alle Dateien und Verzeichnisse zu entfernen, die Sie nicht verarbeiten möchten. Zum Beispiel:
# Schließt jede Datei namens *.unrecoverable aus exclude *.unrecoverable # Schließt das Stammverzeichnis /lost+found aus exclude /lost+found/ # Schließt jedes Unterverzeichnis namens tmp aus exclude tmp/
Der gegenteilige Ansatz besteht darin, nur die Dateien zu definieren, die Sie verarbeiten möchten, indem Sie nur include-Regeln verwenden. Zum Beispiel:
# Schließt nur einige Verzeichnisse ein include /movies/ include /musics/ include /pictures/
Der letzte Ansatz besteht darin, exclude- und include-Regeln zu mischen. In diesem Fall ist die Reihenfolge der Regeln wichtig. Frühere Regeln haben Vorrang vor späteren. Zur Vereinfachung können Sie zuerst alle exclude-Regeln und dann alle include-Regeln auflisten. Zum Beispiel:
# Schließt jede Datei namens *.unrecoverable aus exclude *.unrecoverable # Schließt jedes Unterverzeichnis namens tmp aus exclude tmp/ # Schließt nur einige Verzeichnisse ein include /movies/ include /musics/ include /pictures/
In der Befehlszeile können Sie mit der Option -f nur include-Muster verwenden. Zum Beispiel:
# Überprüft nur die .mp3-Dateien. # Unter Unix Anführungszeichen verwenden, um die Globbing-Erweiterung durch die Shell zu vermeiden. snapraid -f "*.mp3" check
Unter Unix müssen Sie Globbing-Zeichen in der Befehlszeile in Anführungszeichen setzen, um zu verhindern, dass die Shell sie erweitert.
Dateien Ignorieren
Zusätzlich zu den globalen Regeln in der Konfigurationsdatei können Sie .snapraidignore-Dateien in jedem Verzeichnis innerhalb des Arrays platzieren, um dezentrale Ausschlussregeln zu definieren.
Regeln, die in .snapraidignore definiert sind, werden nach den Regeln in der Konfigurationsdatei angewendet. Dies bedeutet, dass sie eine höhere Priorität haben und verwendet werden können, um Dateien auszuschließen, die zuvor durch die globale Konfiguration eingeschlossen wurden. Effektiv wird eine Datei ausgeschlossen, wenn eine lokale Regel zutrifft, unabhängig von den globalen Include-Einstellungen.
Die Musterlogik in .snapraidignore spiegelt die globale Konfiguration wider, verankert die Muster jedoch an dem Verzeichnis, in dem sich die Datei befindet:
Im Gegensatz zur globalen Konfiguration unterstützen .snapraidignore-Dateien nur Ausschlussregeln; Sie können keine include-Muster oder Negationen (!) verwenden.
Wenn Sie beispielsweise eine .snapraidignore in /mnt/disk1/projects/ haben:
# Schließt NUR /mnt/disk1/projects/output.bin aus /output.bin # Schließt jedes Verzeichnis namens build innerhalb von projects/ aus build/ # Schließt jede .tmp-Datei innerhalb von projects/ oder deren Unterordnern aus *.tmp
Content
SnapRAID speichert die Liste und Prüfsummen Ihrer Dateien in der Content-Datei.
Es ist eine Binärdatei, die alle im Festplatten-Array vorhandenen Dateien auflistet, zusammen mit allen Prüfsummen zur Überprüfung ihrer Integrität.
Diese Datei wird von den Befehlen sync und scrub gelesen und geschrieben und von den Befehlen fix, check und status gelesen.
Parity
SnapRAID speichert die Paritätsinformationen Ihres Arrays in den Paritätsdateien.
Dies sind Binärdateien, die die berechnete Parität aller in der content-Datei definierten Blöcke enthalten.
Diese Dateien werden von den Befehlen sync und fix gelesen und geschrieben und nur von den Befehlen scrub und check gelesen.
Encoding
SnapRAID ignoriert unter Unix jede Kodierung. Es liest und speichert die Dateinamen mit derselben Kodierung, die vom Dateisystem verwendet wird.
Unter Windows werden alle vom Dateisystem gelesenen Namen konvertiert und im UTF-8-Format verarbeitet.
Um Dateinamen korrekt auszugeben, müssen Sie die Windows-Konsole mit dem Befehl chcp 65001 auf den UTF-8-Modus einstellen und eine TrueType-Schriftart wie Lucida Console als Konsolenschriftart verwenden. Dies betrifft nur die gedruckten Dateinamen; wenn Sie die Konsolenausgabe in eine Datei umleiten, ist die resultierende Datei immer im UTF-8-Format.