Ein paar lächerliche Ideen für Festplattenhersteller
Die Festplatte hat kürzlich im Kampf gegen SSDs an Boden verloren, auf deren Seite Geschwindigkeit und mangelnde Panikangst vor Vibrationen bestehen. Dies spart sich nur aufgrund der günstigen Kosten für die Platzierung eines Gigabytes an Daten und mehr Umschreibzyklen. Lassen Sie uns darüber nachdenken, ob die folgenden Ideen einen Vorsprung für die Festplatte verschaffen können.Eine Festplatte besteht aus einer oder mehreren dünnen Scheiben mit einer ferromagnetischen Oberfläche, die auf einer Spindel montiert ist und vom Motor mit einer Geschwindigkeit von mehreren tausend Umdrehungen pro Minute gedreht wird. Ein separater Teil ist ein Kopfblock, der sich entlang des Radius der Scheibe bewegt. Wenn frühere Systeme verwendet wurden, die den Kopfblock in einer geraden Linie bewegten (wie das in CD / DVD verwendete System), wird jetzt normalerweise die Wippe verwendet. Die Köpfe sind an einem Ende des Trägers befestigt, und auf der anderen Seite befindet sich ein bewegliches System. Zuerst waren die Servos für alle Bewegungen verantwortlich, aber nachdem sie gelernt hatten, wie man starke Magnete „viel und billig“ herstellt, begann der Mechanismus der Wechselwirkung zwischen dem Magnetfeld des Magneten und den elektromagnetischen Feldern der Drahtspule, der elektrischer Strom zugeführt wurde, zu nutzen.Als Speicher bietet eine Festplatte drei Dimensionen:- ilinder - ist ein bestimmter Abstand von der Mitte der Festplatte, entlang dessen Lese- und Schreibvorgänge ausgeführt werden. Bevor Sie sie starten, müssen Sie den Kopfblock auf den einen oder anderen Zylinder verschieben.
- Kopf - Auf jeder Seite der Platte, auf deren Oberfläche Daten platziert werden können und über der der Kopf platziert wird, gibt es auch das Konzept einer „Spur“, die Daten definiert, die auf einer bestimmten Oberfläche eines bestimmten Zylinders platziert werden.
- Segment - Ein Teil des Umfangs der Spur, der sich auf einer der Arbeitsflächen befindet, entlang der sich tatsächlich ein Datenelement befindet.
Um das Datensegment zu lesen, muss die Festplatte den Kopfblock zum gewünschten Zylinder bewegen, den Datenstrom aus dem gewünschten Kopf auswählen und warten, bis sich die Platte unter dem Kopfblock in das gewünschte Segment verwandelt, und erst dann können die Daten gelesen oder geschrieben werden.Die Zugriffszeit für die Daten hängt davon ab, wie viel Glück Sie haben, und es gibt verschiedene Situationen.Fall 1: Sie haben Glück und nachdem Sie einen Lesebefehl erhalten haben, hat die Festplatte gesehen, dass sich der Kopfblock auf dem gewünschten Zylinder befindet, beginnt mit dem Lesen von Daten und das erste gelesene Segment ist das, was Sie benötigen. Um zu berechnen, wie viel Glück Sie haben, versuchen wir, die Zeit zu berechnen, die dieser Vorgang dauert:Definieren Sie die Variablen:- t1 ist die Zeit, zu der der Befehl an die Festplatte gesendet wurde.
- t2-Zeit der Befehlsverarbeitung durch die Festplatte;
- t3- ;
- t4- ;
- t5- ;
- t6-
t3 und t4 für den beschriebenen Fall tendieren zu Null und wir werden sie ignorieren, ebenso wie die Übertragungszeit des Befehls t1 (für 10-12 Bytes des Befehls sind dies 1/100 Teil der Daten) und die Verarbeitungszeit des Befehls t2 (abhängig von der Komplexität der Berechnungen und der Geschwindigkeit Prozessor, aber wir gehen davon aus, dass es schnell genug ist, um diesen Zeitraum zu ignorieren).Es verbleiben t5 und t6, um diese Werte zu berechnen. Wir nehmen die Eigenschaften der Schnittstellen und streamen das Lesen von der Platte (die Geschwindigkeit, mit der eine bestimmte Anzahl von Segmenten in einer Reihe von einer Spur gelesen wird). Zur Vereinfachung der Berechnungen definieren wir ein Segment von 1000 Bytes (in Wirklichkeit sind es 512 oder 4096 Bytes Daten plus eine bestimmte Menge von Servicedaten) und das Lesen des Streams als 50 Mbit / s (es gibt mehr, es gibt weniger).t5 - 1000 Bytes * (1 / 50.000.000 Bytes / s) = 20 μs pro Lese- / Schreibvorgang eines Segmentst6 - hängt von der Datenübertragungsgeschwindigkeit ab, berechnen wir sie für verschiedene Schnittstellen:IDE- DMA33 - 33 Mb / s = 1000 * (1/33 000 000) = 30 μs (mehr als die zum Lesen aufgewendete Zeit)
- DMA66 - 66 Mb / s = 1000 * (1/66 000 000) = 15 μs
- DMA100 - 100 Mb / s = 1000 * (1/100 000 000) = 10 μs
SATA- SATA I -1500 Gbit / s = 150 Mb / s = 1000 * (1/150 000 000) = 6,6 μs
- SATA II / SAS -3000 Gbit / s = 300 Mb / s = 1000 * (1/300 000 000) = 3,3 μs
- SATA III / SAS 2-6000 Gb / s = 600 Mb / s = 1000 * (1/600 000 000) = 1,6 μs
Warum habe ich die SATA-Geschwindigkeit durch 10 geteilt, obwohl das Byte 8 Bit beträgt? Tatsache ist, dass die Übertragung im seriellen Modus erfolgt und um Daten zuverlässig zu übertragen, entweder Synchronisationssignale (Start- und Stoppbits, Hallo COM-Port ) verwendet werden oder die Daten so codiert werden, dass kein gesättigter Kanal entsteht , wird die Codierung so verwendet, dass trotz Durch den Wert des ursprünglichen Bytestroms (alle 0 oder 255) erhalten wir als Ergebnis eine Kombination mit einer gleichen Anzahl von Nullen und Einsen. Die Signalfrequenz nimmt aufgrund der Transcodierung des Signals ebenfalls ab (ja, die Frequenz ist niedriger und die Geschwindigkeit ist höher).Insgesamt erhalten wir, dass Sie im Falle eines Glücks Ihre Daten in 21,6 - 50 μs erhalten und aus den Berechnungen dieses Falls verstehen, warum Hersteller neue Hochgeschwindigkeitsschnittstellen erstellen, obwohl die Lesegeschwindigkeit von Festplatten viel langsamer ist (je schneller die Kommunikationsschnittstelle, desto schneller schneller können Ihre Daten von dem Moment an übertragen werden, in dem sie zwischen dem Absender und dem Empfänger bereit sind).Fall 2: Sie haben nicht so viel Glück und müssen den Kopfblock zu einem anderen Zylinder bewegen. Nachdem der gewünschte Zylinder gefunden wurde, müssen Sie warten, bis sich die Scheibe um 180 Grad dreht, um auf das gewünschte Segment zuzugreifen.Leider weiß ich nicht, wann der Kopf bewegt und positioniert wird, aber Sie können berechnen, wie viel Zeit erforderlich ist, um das Segment in einem Kreis zu bewegen, und die Positionierungszeit gleich der halben Rotationszeit der Scheibe nehmen. Dieser Wert ist bekannt. Daher berücksichtigen wir die Rotationszeit der Scheibe (die Hälfte für die Positionierung) , eine halbe Umdrehung der Lesediskette).Um zu berechnen, müssen Sie herausfinden, wie viele Umdrehungen pro Sekunde stattfinden, und dann den Zeitraum ermitteln, indem Sie 1 durch die Anzahl der Umdrehungen dividieren:5400 U / min - 1 (5400/60) = 11ms 5900 U / min - T = 10 ms7200 U / min - T = 8 ms10.000 U / min - T = 6 ms15.000 U / min - T = 4 msFinden Sie bekannte Bedeutungen? Recht! Die durchschnittliche Datenzugriffszeit für eine Festplatte ist ungefähr gleich oder gleich der Rotationsperiode der Festplatte. Warum die durchschnittliche? Weil es Folgendes gibt:Fall 3: Sie haben kein Glück, der Kopfblock befindet sich auf dem ersten Zylinder und das Segment auf dem letzten. Die Bewegungszeit des Kopfblocks dauerte fast oder genauso lange wie die Scheibendrehzeit, nachdem der Kopfblock auf dem gewünschten Zylinder positioniert wurde. und das Lesen der Daten begann, es stellte sich heraus, dass wir das nächste Segment nach dem gewünschten haben, und um es zu lesen, müssen Sie warten, bis die Festplatte eine weitere Umdrehung macht, während ich nichts über Fall 4 sage : Wenn die Daten nicht vom ersten (und möglicherweise nachfolgenden) Mal stammen waren pr Lesen Sie (zählen Sie, wie lange es einfach dauert, Minium * T 2 Vol.).Welche Schlussfolgerung kann zu diesem Zeitpunkt gezogen werden? "Eureka: Sie müssen die Spindel auf 100500 Umdrehungen drehen!" Aber nicht alles ist so einfach. Wenn Sie sich auf einem Karussell drehen, sollten Sie wissen, dass es einfach ist, auf dem Karussell zu bleiben, wenn das Karussell zu schnell aufgedreht ist. Wenn das Karussell zu schnell aufgedreht ist, besteht die einzige Möglichkeit darin, näher an der Mitte zu bleiben und festzuhalten. Was passiert mit den Scheiben, wenn sie stark abgeschraubt werden: Erstens beginnen sich die Kanten der Scheibe aufgrund von Zentrifugalkräften in verschiedene Richtungen zu verteilen, und die Scheibe beginnt sich zunächst in verschiedene Richtungen auszudehnen, und da die Drehzahl nicht abnimmt und die Scheibengröße zunimmt, nehmen auch die Zentrifugalkräfte zu Kräfte, die zur Zerstörung molekularer Bindungen führen und wir bekommen "Bigbadabum" und mehrere Stücke von der Scheibe.Das liegt an der Wirkung von Zentrifugalkräften. Hochgeschwindigkeitsscheiben haben einen kleineren Durchmesser, damit sie nicht reißen.Hier taucht die erste lächerliche Idee auf : Warum ist es unmöglich, zwei gegenüberliegende Kopfblöcke anstelle von einem zu machen (und wenn es mit zwei klappt, dann versuchen Sie 3, 4 können sogar 5, 6). Was uns dies gibt:
1) Mit zunehmender Anzahl von Teilen nimmt die "Zuverlässigkeit" des Systems "ab, aber da wir ein Backup-System erhalten," erhöhen wir die Zuverlässigkeit ".2) Die Kopfblöcke bewegen sich synchron (die durch die Bewegung der Köpfe verursachten Impulse funktionieren beim Lesen / Schreiben von Daten nicht). Wenn das Segment gerade übersprungen wurde, kann der zweite Kopfblock es durch T rev / 2 lesen (im klassischen Fall benötigen wir dies es würde die Spindel doppelt so schnell drehen).3) Die Kopfblöcke wirken auf separate Aufgaben (der Einfluss der Bewegungsimpulse des Kopfblocks ist für Lese- / Schreibvorgänge nicht wesentlich). Die Steuerung, die weiß, wo sich dieses oder jenes Segment befindet, kann den Kopfblock bewegen, der in seiner Position am vorteilhaftesten ist, um den Zeitverlust bei der Spindeldrehung und die Anzahl zu verringern Eingabe- / Ausgabeoperationen werden verdoppelt.4) Es gibt zwei Situationen, in denen wir eine große Datenmenge gleichzeitig verarbeiten müssen:-kopieren / Verschieben einer großen Datei (Hi Blu-ray);-read-modify-write eine Datei (Hallo zu den Datenbanken).In der klassischen Version der Festplatte lesen wir beim Kopieren den Datenblock in den Puffer, verschieben den Kopfblock in einen anderen Teil, schreiben Daten, geben ein neues Datenelement zurück, verlieren mit einer kleinen Puffermenge viel Zeit beim Verschieben des Kopfblocks mit einer großen Datenmenge . Im Falle der Änderung einer Datei füllen wir den Puffer, ändern ihn (dies kann parallel zum Lesen erfolgen, sobald die ersten Daten in der gewünschten Konfiguration empfangen wurden) und nach der Änderung schreiben wir. In einem modifizierten Schema können wir die Datei mit maximaler Geschwindigkeit kopieren, Daten von einem Kopfblock lesen und den zweiten Block mit der höchstmöglichen Geschwindigkeit schreiben, was hauptsächlich von der Dateifragmentierung abhängt. Bei Festplatten ist dies jetzt möglich, wenn zwei Laufwerke verwendet werden , las man,an einen anderen schreiben.Der zweite Aspekt des Festplattenbetriebs ist seine Zuverlässigkeit. Insbesondere bei typischen Fehlfunktionen lassen wir die Programmlogik-Fehlfunktionen aus. Diese müssen an anderer Stelle repariert werden. Ich werde nur Fehlfunktionen melden, die von den Konstruktionsmerkmalen der Festplatte abhängen:- Blockieren der Spindel während des Starts (nun, es besteht die Möglichkeit, die Spindel mit einer externen Aktion zu scrollen, die Festplatte zu starten, die Daten zu lesen und zur Ruhe zu schicken);
- Blockieren der Spindel während des Betriebs (hier hängen die Folgen bereits von Ihrem Glück ab);
- , , , () ( , );
- , , , , , ;
- , , , , .
Jeder weiß, dass der größte Wert nicht die Kosten für die Festplatte (hi $ -y) sind, sondern die Gigabyte sorgfältig gesammelter "nützlicher Informationen". Zum Speichern von Daten werden RAID-Systeme unterschiedlicher Ebenen verwendet, für die mehrere Festplatten erforderlich sind. Hier kommt die zweite lächerliche Idee auf : die Verwendung der RAID-Technologie auf einem einzigen Laufwerk.Im Falle eines vollständigen Festplattenfehlers wird es sicherlich nicht gespeichert, aber im Falle eines Datenverlusts von 1-2 Segmenten hilft es vollständig, die Situation zu korrigieren.Der erste Ansatz, der von der Software einfach implementiert werden kann, besteht darin, die gesamte Oberfläche oder nur kritische oder wichtige Daten (0-Segment, Partitionstabelle, Systemkonfigurationsdateien) mithilfe der RAID 5-Technologie zu platzieren: A + B = Summe, wobei zwei von drei Teilen erhalten werden Wir können den dritten problemlos wiederherstellen. Spiegelung oder Duplizierung werden häufig verwendet. Beispielsweise werden mehrere Einträge in der Master-Dateitabelle in NTFS dupliziert. Dies spart jedoch nicht viel bei einem schwerwiegenden Fehler. Außerdem verliert der „Spiegel“ die Hälfte des Volumens im Doppel, während beim Sammeln von Statistiken Bei unlesbaren Segmenten ist es möglich, die Möglichkeit der Datenplatzierung auf einem "A + B + C + D + E + E + F + G = I" zu realisieren. Wir verlieren 1/9 des Volumens, erhöhen jedoch die Wahrscheinlichkeit einer Datenwiederherstellung bei Verlust eines Datensegments.Der zweite Ansatz im Zusammenhang mit der Änderung der Logik der Arbeit des Controllers besteht darin, Daten mit einer Prüfsumme zu verwenden, um Daten nicht auf einer Spur, sondern auf verschiedenen Oberflächen der Festplatten zu platzieren. Diese Implementierung erspart die Situation, wenn einer der Arbeitsköpfe nicht mehr vollständig reagiert. Wir lesen immer Werte von anderen Oberflächen erhalten die anfänglichen Daten, aber durch Speichern der Daten können wir den Betroffenen feierlich beruhigen.Tatsächlich ist die dritte lächerliche Idee (obwohl sie bereits externe Laufwerke als Klasse betrifft) die folgende: Delegieren Sie die Unterstützung für die Dateizuordnung und die Dateisystemunterstützung an den Festplattencontroller.danke: owniumo
Bereits haben: Kinetische Festplatte für skalierbare Objektspeicherung
Wie dies hilft: Der Zentralprozessor überträgt nur den Dateideskriptor und das benötigte Teil, um nicht durch Interrupts abgelenkt zu werden, die beispielsweise mit dem Aufbau der FAT-Kette verbunden sind, und der Controller berechnet, wo die angegebenen Teile gespeichert sind, und gibt dem Controller nur das gewünschte Teil der Datei.Sie können dies implementieren:- Entwicklung und Austausch der werkseitigen Firmware (möglicherweise auf der aktuellen Hardware, aber teuer in Bezug auf spätere Änderungen und die Anzahl der Festplattenoptionen, hallo an Entwickler mobiler Anwendungen);
- Entwicklung eines Dateisystems, das die Firmware der Festplattenhersteller unterstützt;
- Entwicklung und Implementierung einer Programmiersprache in der Firmware, mit deren Hilfe Sie die Arbeit mit dem Dateisystem beschreiben können
Hier sind tatsächlich drei lächerliche Ideen, die schwer zu testen sind, aber Ihnen keinen guten Schlaf geben.PS Die zufällige Verwendung von eingetragenen Marken oder Patenten ist zufällig. Alle Originalideen können im Rahmen einer Ant Hill-Lizenzvereinbarung verwendet werden . Source: https://habr.com/ru/post/de383225/
All Articles