Ich würde auch hinzufügen:
Deaktivieren Sie die Defragmentierung der Festplatte. Ändern Sie die Blockgröße auf 16 KB, damit jede Datei in einen einzelnen Block geschrieben wird.
Rational dafür:
Sie möchten täglich 1,7 GB Daten in 200.000 Dateien schreiben. Unter der Annahme, dass diese Dateien über einen 24-Stunden-Tag geschrieben werden, bedeutet dies ungefähr 3 Dateien pro Sekunde. Dies scheint kein signifikantes Problem für eine einzelne SATA-Festplatte zu sein. Ich vermute also, dass Sie andere Probleme sowie die Leistung der Festplatte haben.
(dh haben Sie genug Speicher? Oder pagen Sie den Speicher auch auf die Festplatte?)
jedoch
Windows NTFS-Dateisysteme versuchen standardmäßig, Dateisysteme im Hintergrund zu defragmentieren. Durch die Defragmentierung der Festplatte wird die Leistung beeinträchtigt, während Sie die Festplatte defragmentieren. Da die Leistung bereits ein Problem zu sein scheint, wird dies die Sache für Sie nur noch schlimmer machen.
Beim Schreiben großer Dateien besteht ein Gleichgewicht zwischen der Verwendung kleiner Clustergrößen und der E / A-Leistung. Dateien und die Dateizuordnungstabelle befinden sich nicht im selben Sektor auf der Festplatte. Wenn Sie also beim Schreiben von Dateien Blöcke zuweisen müssen, muss sich der Festplattenkopf ständig bewegen. Durch die Verwendung einer Clustergröße, mit der 95% Ihrer Dateien in jeweils einem Cluster gespeichert werden können, wird die E / A-Schreibleistung verbessert.
Wie andere bereits betont haben, führt die Verwendung einer winzigen Clustergröße von 2 KB im Laufe der Zeit zu einer Fragmentierung. Stellen Sie sich das so vor: In den ersten 18 Monaten werden Sie Dateien auf eine saubere leere Festplatte schreiben, aber das Betriebssystem weiß nicht, dass nach dem Schließen keine Daten mehr zu jeder Datei hinzugefügt werden. Daher sind einige Blöcke auf der Datei verfügbar Beenden Sie jede Datei, falls diese Datei später erweitert wird. Lange bevor Sie die Festplatte füllen, werden Sie feststellen, dass der einzige freie Speicherplatz in Lücken zwischen anderen Dateien besteht. Nicht nur, dass das Betriebssystem bei der Auswahl einer Lücke für Ihre Datei nicht weiß, ob Sie eine 5-Block- oder eine 2-Block-Datei schreiben, sodass es keine gute Wahl treffen kann, wo Ihre Datei gespeichert werden soll.
Letztendlich geht es beim Engineering darum, mit widersprüchlichen Anforderungen umzugehen und die kostengünstigste Lösung für diese Ausgleichsanforderungen zu wählen. Ich vermute, dass der Kauf einer größeren Festplatte wahrscheinlich billiger ist als der Kauf schnellerer Festplatten.
Deaktivieren Sie den Zeitstempel für den letzten Zugriff und reservieren Sie Platz für die MFT.
quelle
Um meinen Kommentar zu Ptolemäus 'Antwort näher zu erläutern ...
Wenn Sie Ihre Blockgröße so einstellen, dass ein sehr großer Teil jeder Datei in einem Block enthalten ist, erzielen Sie E / A-Effizienz. Bei einer Blockgröße von 2 KB und einer durchschnittlichen Dateigröße von 8,5 KB werden 50% Ihrer E / A-Vorgänge 5 Blöcke oder mehr umfassen. Wenn Sie eine Blockgröße von 16 KB festlegen, scheint die sehr große Mehrheit der Schreibvorgänge auf einen einzelnen Block zu erfolgen. Dies würde diese 3% der Lesevorgänge viel effizienter machen, wenn sie auftreten.
Eine zu berücksichtigende Sache ist Backup-E / A. Wenn Sie die Daten sichern, wird jede Datei mindestens einmal gelesen und ihre Verzeichniseinträge werden bei jedem Sicherungsdurchlauf überprüft. Wenn Sie dies sichern möchten, ziehen Sie bitte Sicherungs-E / A in Ihren Entwürfen in Betracht.
Vorsichtsmaßnahmen: Wenn Ihr zugrunde liegendes Speichersystem bereits eine Speichervirtualisierung durchführt (z. B. ein HP EVA-Festplattenarray oder andere Arrays dieser Klasse), ist dies nicht so wichtig. Eine Fragmentierung dieses Typs wird nicht bemerkt, da die Daten auf den tatsächlichen Laufwerken bereits physisch stark fragmentiert vorhanden sind. In diesem Fall ist die 2k-Blockgröße in Ordnung und beeinträchtigt die Leistung nicht so stark. Die Auswahl einer Blockgröße, die groß genug ist, um einen Großteil Ihrer erwarteten Dateigrößen aufzunehmen, führt weiterhin zu Leistungssteigerungen. Die Größe ist jedoch nicht so hoch.
quelle
Spät für diese Party, könnte aber anderen zugute kommen, also ...
Re. Zunächst und vor allem bei der Clustergröße müssen Sie sich die Verteilung der Dateigrößen ansehen, damit Sie sowohl für eine geringe Fragmentierung als auch für die Verschwendung von Speicherplatz optimieren können, um die Größe von Clustern in der Nähe dieser Größe zu ändern, nicht im Durchschnitt - z. Wenn die meisten Dateien in der Nähe von 2 KB liegen, ist eine Clustergröße von 2 KB optimal. Wenn die Größe in der Nähe von 4 KB liegt, ist ein Cluster von 4 KB optimal, und so weiter. Wenn andere Dateigrößen gleichmäßig / zufällig verteilt sind, können Sie am besten eine durchschnittliche Dateigröße für die Clustergröße wählen oder Dateien in Partitionen mit unterschiedlichen Clustergrößen für unterschiedliche Dateigrößen speichern, wie dies bei einigen größeren Systemen der Fall ist, aber Sie ' Ich brauche dafür Software / Fs-Unterstützung.
quelle
Möglicherweise möchten Sie auch RAID für Ihr Design untersuchen. Es gibt verschiedene Formen von RAID, aber Sie sollten sich RAID 5 genauer ansehen, damit Sie gleichzeitig Dateien auf verschiedene Laufwerke schreiben können, die Daten sich jedoch immer noch auf einem Volume befinden. Dadurch erhalten Sie mehrere Leistungen:
1) Sie erstellen unterwegs ein Backup. Auf diese Weise können Sie einen Laufwerksabsturz erleiden und sich erholen. RAID 1 würde eine gespiegelte Kopie erstellen, aber 5 beinhaltet Striping - RAID 1 würde Ihnen nur den Vorteil dieses Backups bieten ... obwohl 5 mehr involviert wäre und Sie mehr Laufwerke benötigen würden, um es einzurichten (mindestens 3 im Vergleich zu Die 2 für RAID 1), haben Sie andere Vorteile.
2) Das Striping erhöht auch die Leistung, da Sie mehrere Dateien gleichzeitig schreiben können (geschätzte 3 pro Sekunde, oben ...). Durch das Striping können die Dateien auf den Datenträgern "verteilt" werden, und jeder Datenträger nimmt nur teil von der Last. Je mehr Festplatten beteiligt sind, desto geringer ist die Belastung pro Festplatte, aber es würde einen Punkt geben, an dem Sie eine Grenze zwischen Leistung und Kosten erreichen würden ...
3) Wenn Sie die Daten sichern, kann die Sicherung ohne Beeinträchtigung der Schreibleistung erfolgen - natürlich abhängig von der Größe des Cache der Festplatten und der Form der Sicherung ... aber zum größten Teil würden Sie dies nicht tun Sie müssen nicht herunterfahren, um die Sicherungen aufzurufen.
So wie Sie das System eingerichtet haben, klingt es sogar so, als wären Sicherungen für Sie einfacher - Sie müssen jeweils nur die 24-Stunden-Daten sichern, da die Datei später nicht geändert wird. Sie könnten sogar einen Stapeljob schreiben, der die Daten komprimiert, wenn Sie sich Gedanken über den von den Dateien belegten Speicherplatz machen ... XML besteht hauptsächlich aus Text, sodass die Komprimierungsraten hoch sind und eine Dekomprimierung mit nur 3% selten erforderlich wäre der Dateien ... so können Sie die Komprimierung auf dem Laufwerk einschließen, ohne Angst vor einer Dekomprimierungszeit zu haben. Dies würde auch die erforderlichen Blockgrößen reduzieren und könnte die Effizienz des Systems weiter steigern, wobei die CPU an der Komprimierung der Daten beteiligt ist und nicht nur die Vermittlungsstelle für Daten ist. (IE Wenn Sie nur Daten gespeichert hätten, wäre dies eine Verschwendung dieses netten CPU-Prozessors in diesem System ...
Bei der Komprimierung würden Ihre 2K-Blöcke wahrscheinlich problemlos Ihre 8,5K-Dateien enthalten. Fügen Sie Striping und RAID-Backup zusammen mit einer kräftigen CPU und genügend Speicher hinzu, um keine laufenden Programme zwischenzuspeichern (falls überhaupt ein Cache verwendet wird), und Sie sind auf dem besten Weg zu einem guten System für das, was Sie tun möchten.
quelle
Dies ist ein einfaches Dienstprogramm zum Erhöhen der NTFS-Leistung, indem einige NTFS-Funktionen deaktiviert werden, die derzeit nicht so verwendet werden (oder nicht so wichtig sind).
https://gist.github.com/p3x-robot/185e5c1b699d726bcce1bb51d5ca82d8
quelle