ZFS schreibt nicht kontinuierlich in das Array
Vorwort: Ich bin keinesfalls ein erfahrener Linux-Benutzer, aber ich habe genug mit Linux gespielt, um gefährlich zu sein.
Ich baue einen Personal Server, der im Grunde nur als Speicher für Videos und Fotos dient. Aktuelle Spezifikationen sind wie folgt:
- Gigabyte GA-G41M-ES2L-Motherboard
- Core 2 Duo E6750 (2,66 GHz) CPU
- 4 GB DDR2-RAM
- Vantec UGT-ST644R PCIe-SATA-Karte (kein RAID verwendet)
- 2 × 1,5 TB und 2 × 1,0 TB Festplatten
- 64 GB SSD (für das Startlaufwerk)
Ich habe Ubuntu Server 14.04.3 LTS auf der SSD installiert, wobei ZFSonLinux wie hier (Ars Technica) installiert ist . Ebenfalls installiert ist Samba (Version 4.1.6-Ubuntu), mit dem ich von den restlichen Computern (Windows 7 und höher) (zwei oder höchstens drei) auf den Server zugreifen kann.
Alle vier Laufwerke sind an die Vantec-Controllerkarte angeschlossen, und jedes Paar wird gespiegelt und zum ZPool hinzugefügt, sodass insgesamt 2,5 TB Speicherplatz zur Verfügung stehen. Die SSD ist direkt an die Bordsteuerung angeschlossen.
Wenn es funktioniert, funktioniert es wunderbar, aber ...
Wenn ich große Datenmengen in das Array schreibe, "schreiben" die ersten 500 MB gerade in Ordnung (in den Cache nehme ich an), dann wartet ZFS ca. 30 Sekunden (überwacht mit zpool iostat <pool_name> 1
) und schreibt 350 MB aus dem Cache Während das Array mehr Daten akzeptiert, wartet es ca. 30 Sekunden, schreibt ≈350 MB aus dem Cache-Speicher in das Array, während weitere Daten akzeptiert werden, und wartet ca. 30 Sekunden, bis die Übertragung abgeschlossen ist. In diesen 30-Sekunden-Brocken macht es nichts (0 in, 0 out), es sitzt nur im Leerlauf.
Die Netzwerkverbindung ist (zu meiner großen Überraschung) in der Lage, die 350 MB in etwa 5 Sekunden zu füllen, wodurch während des gesamten Vorgangs eine Menge Totzeit verbleibt.
Gibt es eine Möglichkeit, diesen Engpass / "Atmen" zu beseitigen?
Ich habe versucht, den zfs_txg_timeout
Wert zu ändern (Standardeinstellung ist 5 Sekunden, daher ist dies unwahrscheinlich, aber 1 Sekunde scheint nicht zu helfen).
Ich habe auch die minimalen und maximalen Cache-Werte auf 2 GB bzw. 3 GB gesetzt, aber es beginnt immer noch mit einem relativ kleinen Cache und wächst langsam . Ich habe mir dabei den Speicher des Systems angeschaut, und ZFS scheint zögern, den RAM-Verbrauch schnell zu erhöhen, selbst wenn alles darauf wartet.
Ich mag die Art und Weise, wie ZFS mir erlaubt, über verschiedene Größen von vdevs zu streifen, aber das beschriebene Verhalten macht es unbenutzbar, große Datenmengen zuverlässig darauf zu übertragen.
Irgendwelche Vorschläge, um entweder das aktuelle Setup zu korrigieren oder eine Alternative, die vergleichbar funktioniert? Vielen Dank im Voraus für die Einsicht. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.
Seitennotizen:
- Ich habe einen lokalen Festplattenbenchmark für das Array ausgeführt, und das gleiche Verhalten stellte sich auch dort dar, wobei sowohl die Windows-Computer als auch das Netzwerk ausgeschlossen wurden.
- Laufen
sync
scheint etwas Gutes zu tun, aber nicht dauerhaft oder dauerhaft. - Der Speicher für diese Konfiguration ist maximal, aber ich denke nicht, dass es sofort das Problem ist, das zur Hand ist.
- Ich hoffe, dass es sich hierbei nicht um ein Controller-Problem handelt (ich habe keinen anderen, und die Platine hat nur vier Ports (einen für die SSD, drei übrig).
- Die meisten Quellen scheinen zu sagen, dass eine ZIL-Platte in meiner Situation nicht hilfreich ist.
Updates (1. September 2015):
- Ich habe FreeNAS auf derselben Hardware mit der gleichen Array-Topologie installiert und stieß auf das gleiche Problem. Dies bedeutet, dass das Problem wahrscheinlich Hardware ist.
- Zu diesem Zweck habe ich drei der vier Laufwerke in den internen Controller eingebaut und daraus ein Array erstellt. Problem gelöst! Kontinuierliche Schreibvorgänge erreicht. Zugegeben, ich muss eine neue SATA-Karte finden, aber zumindest funktioniert es jetzt theoretisch.
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
8
Laptop Standby unter Linux / Ubuntu
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
1
Wie kann ich von Ubuntu aus über das Netzwerk auf Windows Vista-Drucker zugreifen?
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
6
Eine gute Lösung für Home-Backups und die gemeinsame Nutzung von Dateien / Druckern
-
3
Was sind die Unterschiede zwischen Linux Window Managern?