GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Speichern und Sichern von 10 Millionen Dateien unter Linux

Lösung 1:

Optionen für den schnellen Zugriff und die Sicherung von Millionen von Dateien

Leihen Sie sich etwas von Menschen mit ähnlichen Problemen aus

Das klingt sehr nach einer einfacheren Art von Problem, mit dem USENET-Newsserver und Caching-Web-Proxys konfrontiert sind:Hunderte Millionen kleiner Dateien, auf die zufällig zugegriffen wird. Vielleicht möchten Sie einen Hinweis von ihnen annehmen (außer dass sie normalerweise niemals Backups erstellen müssen).

http://devel.squid-cache.org/coss/coss-notes.txt

http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=4074B50D266E72C69D6D35FEDCBBA83D?doi=10.1.1.31.4000&rep=rep1&type=pdf

Offensichtlich ist die zyklische Natur des Dateisystems für zyklische Nachrichten für Sie irrelevant, aber das Konzept auf niedrigerer Ebene, mehrere Festplattendateien / -geräte mit gepackten Bildern und einen schnellen Index aus den Informationen zu haben, die der Benutzer bereitstellt, um die Standortinformationen nachzuschlagen, ist sehr angemessen.

Dedizierte Dateisysteme

Natürlich sind dies nur ähnliche Konzepte wie das, worüber die Leute mit dem Erstellen eines Dateisystems in einer Datei und dem Mounten über Loopback gesprochen haben, außer dass Sie Ihren eigenen Dateisystemcode schreiben können. Da Sie sagten, Ihr System sei überwiegend lesbar, könnten Sie natürlich eine Festplattenpartition (oder lvm-Partition für Flexibilität bei der Größenanpassung) diesem einen Zweck widmen. Wenn Sie sichern möchten, hängen Sie das Dateisystem schreibgeschützt ein und erstellen Sie dann eine Kopie der Partitionsbits.

LVM

Ich habe LVM oben als nützlich erwähnt, um eine dynamische Größenanpassung einer Partition zu ermöglichen, sodass Sie nicht viel leeren Speicherplatz sichern müssen. Aber natürlich hat LVM noch andere Funktionen, die sehr gut anwendbar sein könnten. Insbesondere die "Snapshot"-Funktion, mit der Sie ein Dateisystem zu einem bestimmten Zeitpunkt einfrieren können. Jedes versehentliche rm -rf oder was auch immer den Schnappschuss nicht stören würde. Je nachdem, was genau Sie versuchen zu tun, könnte dies für Ihre Backup-Anforderungen ausreichen.

RAID-1

Ich bin sicher, Sie sind bereits mit RAID vertraut und verwenden es wahrscheinlich bereits aus Gründen der Zuverlässigkeit, aber RAID-1 kann auch für Backups verwendet werden, zumindest wenn Sie Software-RAID verwenden (Sie können es mit Hardware-RAID verwenden, aber das eigentlich führt zu einer geringeren Zuverlässigkeit, da möglicherweise das gleiche Modell/derselbe Revisionscontroller zum Lesen erforderlich ist). Das Konzept besteht darin, dass Sie eine RAID-1-Gruppe mit einer Festplatte mehr erstellen, als Sie für Ihre normalen Zuverlässigkeitsanforderungen tatsächlich benötigen (z. B. eine dritte Festplatte, wenn Sie Software-RAID-1 mit zwei Festplatten verwenden, oder vielleicht eine große Festplatte und eine Hardware- RAID5 mit kleineren Festplatten mit einem Software-RAID-1 auf dem Hardware-RAID-5). Wenn es an der Zeit ist, ein Backup zu erstellen, installieren Sie eine Festplatte, bitten Sie mdadm, diese Festplatte zur Raid-Gruppe hinzuzufügen, warten Sie, bis sie die Vollständigkeit anzeigt, fragen Sie optional nach einem Überprüfungs-Scrubbing und entfernen Sie dann die Festplatte. Abhängig von den Leistungsmerkmalen können Sie die Festplatte natürlich die meiste Zeit installiert haben und nur zum Austausch gegen eine andere Festplatte entfernen, oder Sie können die Festplatte nur während Backups installieren).

Lösung 2:

Sie könnten ein virtuelles Dateisystem mit dem Loopback-Manager mounten, aber während dies Ihren Backup-Prozess beschleunigen würde, könnte es den normalen Betrieb beeinträchtigen.

Eine andere Alternative besteht darin, das gesamte Gerät mit dd zu sichern. Beispiel:dd if=/dev/my_device of=/path/to/backup.dd .

Lösung 3:

Wie Sie wahrscheinlich wissen, ist Ihr Problem die Lokalität. Eine typische Festplattensuche dauert etwa 10 ms. Allein das Aufrufen von „stat“ (oder open()) für 10 Millionen zufällig platzierte Dateien erfordert 10 Millionen Suchvorgänge oder ungefähr 100.000 Sekunden oder 30 Stunden.

Daher müssen Sie Ihre Dateien in größeren Containern ablegen, sodass die relevante Zahl Ihre Laufwerksbandbreite (normalerweise 50–100 MB/s für eine einzelne Festplatte) und nicht Ihre Suchzeit ist. Außerdem können Sie ein RAID darauf werfen, mit dem Sie die Bandbreite erhöhen (aber nicht die Suchzeit verkürzen) können.

Ich erzähle Ihnen wahrscheinlich nichts, was Sie nicht bereits wissen, aber mein Punkt ist, dass Ihre "Container" -Idee das Problem definitiv lösen wird und fast jeder Container ausreichen wird. Loopback-Mounts funktionieren wahrscheinlich so gut wie alles andere.

Lösung 4:

Es gibt ein paar Optionen. Am einfachsten und sollte mit allen Linux-Dateisystemen funktionieren, ist dd Kopieren Sie die gesamte Partition (/dev/sdb3 oder /dev/mapper/Data-ImageVol ) zu einem einzelnen Bild und archivieren Sie dieses Bild. Falls einzelne Dateien wiederhergestellt werden sollen, mounten Sie das Image per Loopback (mount -o loop /usr/path/to/file /mountpoint ) und kopieren Sie die benötigten Dateien. Für eine vollständige Partitionswiederherstellung können Sie die Richtung des anfänglichen dd umkehren Befehl, aber Sie brauchen wirklich eine Partition gleicher Größe.

Nach Ihrem Anwendungsfall zu urteilen, schätze ich, dass einzelne Dateiwiederherstellungen ein sehr seltenes Ereignis sind, wenn sie überhaupt jemals auftreten. Deshalb macht hier eine Image-basierte Sicherung durchaus Sinn. Wenn Sie häufiger einzelne Wiederherstellungen durchführen müssen, ist die Verwendung von gestaffelten LVM-Snapshots viel bequemer; aber Sie müssen immer noch die Image-basierte Sicherung für diese kritischen „Wir haben alles verloren“-Katastrophen durchführen. Bildbasierte Wiederherstellungen gehen in der Regel viel schneller als tar-basierte Wiederherstellungen, einfach weil es nur Blöcke wiederherstellt, es nicht bei jedem fopen/fclose viele Metadatenoperationen erfordert und auch eine hochgradig sequentielle Festplattenoperation für weitere Geschwindigkeitssteigerungen sein kann.

Alternativ ist XFS ein großartiges Dateisystem (wenn auch komplex), wie das Google-Video @casey etwa zur Hälfte erwähnte. Eines der netteren Dienstprogramme mit XFS ist xfsdump Dienstprogramm, das ein gesamtes Dateisystem in eine einzelne Datei ausgibt, und zwar im Allgemeinen schneller als tar kann. Es ist ein dateisystemspezifisches Dienstprogramm, kann also fs-Interna auf eine Weise nutzen, die tar nicht kann.

Lösung 5:

Ich würde vorschlagen, dass Sie zuerst versuchen, auf EXT4 zu aktualisieren, wenn Sie es nicht bereits ausführen.

Google hat viel darüber recherchiert, warum EXT4 eine gute Idee ist.

Danach sollten Sie sich mit der Bereitstellung einer verteilten Dateisystemarchitektur befassen. Zum Beispiel:

  • http://www.xtreemfs.org/
  • http://code.google.com/p/kosmosfs/
  • http://hadoop.apache.org/hdfs/

Linux
  1. Erstellen und Debuggen von Linux-Dump-Dateien

  2. So partitionieren Sie eine Festplatte unter Linux

  3. So archivieren und komprimieren Sie Dateien unter Linux

  4. Linux Dateien und Verzeichnisse löschen

  5. 10 Beispiele für DU-Befehle unter Linux (Festplattennutzungsgröße für Dateien und Ordner)

So erstellen und verwalten Sie Festplattenpartitionen mit Fdisk in Linux

So erstellen und verwalten Sie Linux-Partitionen mit Parted

So verschlüsseln Sie eine Partition unter Linux

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach

So überprüfen Sie die Größe von Dateien und Verzeichnissen unter Linux

So formatieren und mounten Sie Festplatten mit mehr als 2 TB unter Linux