Quelques idées ridicules pour les fabricants de disques durs
Le disque dur a récemment perdu du terrain dans la lutte contre les SSD, du côté duquel il y a de la vitesse et un manque de panique peur des vibrations, ne se sauvant que grâce au coût peu élevé de placer un gigaoctet de données et à plus de cycles de réécriture. Voyons si les quelques idées suivantes aideront à donner une longueur d'avance au disque dur.Un disque dur est constitué d'un ou plusieurs disques minces à surface ferromagnétique montés sur une broche, entraînés par le moteur à une vitesse de plusieurs milliers de tours par minute. Une partie distincte est un bloc de têtes qui se déplace le long du rayon du disque. Si des systèmes antérieurs étaient utilisés pour déplacer le bloc de têtes en ligne droite (comme le système utilisé sur les CD / DVD), la bascule est désormais généralement utilisée. Les têtes sont fixées à une extrémité de la poutre et un système mobile est situé de l'autre côté. Au début, les servos étaient responsables de tous les mouvements, mais après avoir appris à fabriquer des aimants puissants «beaucoup et à moindre coût», le mécanisme d'interaction du champ magnétique de l'aimant et des champs électromagnétiques de la bobine de fil à laquelle le courant électrique était fourni a commencé à être utilisé.En tant que stockage, un disque dur offre trois dimensions:- cylindre - se trouve à une certaine distance du centre du disque, le long de laquelle les opérations de lecture et d'écriture se produisent, et avant de les démarrer, vous devez déplacer le bloc de tête vers l'un ou l'autre cylindre;
- tête - chaque côté du disque sur la surface duquel les données peuvent être placées et sur lequel la tête est placée respectivement, il y a aussi le concept d'une «piste» qui définit les données placées sur une surface spécifique sur un cylindre donné;
- segment - une partie de la circonférence de la piste située sur l'une des surfaces de travail le long de laquelle une donnée est réellement située.
Afin de lire le segment de données, le disque dur doit déplacer le bloc de têtes vers le cylindre souhaité, sélectionner le flux de données dans la tête souhaitée et attendre que le disque se transforme en segment souhaité sous le bloc de têtes et ce n'est qu'alors que les données peuvent être lues ou écrites.Le temps d'accès aux données varie en fonction de votre chance, et il existe plusieurs situations.Cas 1: vous avez de la chance, et après avoir reçu une commande de lecture, le disque dur a vu que le bloc de tête est situé sur le cylindre souhaité, commence à lire les données et le premier segment lu est ce dont vous avez besoin. Afin de calculer votre chance, essayons de calculer le temps que prendra cette opération:Définissez les variables:- t1 est l'heure à laquelle la commande a été envoyée au disque dur;
- t2-temps de traitement des commandes par le disque dur;
- t3- ;
- t4- ;
- t5- ;
- t6-
t3 et t4 pour le cas décrit tendent à zéro et nous les ignorerons, ainsi que le temps de transmission de la commande t1 (pour 10-12 octets de la commande ce sera 1/100 partie des données) et le temps de traitement de la commande t2 (dépend de la complexité des calculs et de la vitesse processeur, mais nous supposons qu'il est assez rapide pour ignorer cette période).Il reste t5 et t6 pour calculer ces valeurs, on prend les caractéristiques des interfaces et on lit la lecture du disque (la vitesse de lecture d'un certain nombre de segments d'affilée sur une piste). Pour simplifier les calculs, nous définissons qu'un segment de 1000 octets (en réalité, c'est 512 ou 4096 octets de données plus une certaine quantité de données de service), et la lecture du flux à 50 Mb / s (il y a plus, il y a moins).t5 - 1000 octets * (1/50 000 000 octets / s) = 20 μs par lecture / écriture d'un segmentt6 - dépend de la vitesse de transfert des données, calculons-la pour différentes interfaces:IDE- DMA33 - 33 Mb / s = 1000 * (1/33 000 000) = 30 μs (plus que le temps passé à lire)
- 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
Pourquoi ai-je divisé la vitesse SATA par 10 alors que l'octet est de 8 bits? Le fait est que la transmission se produit en mode série et afin de transférer des données de manière fiable, soit des signaux de synchronisation (bits de démarrage et d'arrêt, bonjour le port COM ) sont utilisés, soit les données sont encodées afin de ne pas obtenir un canal saturé en sortie , l'encodage est utilisé de telle sorte que malgré par la valeur du flux d'octets d'origine (tous 0 ou 255), par conséquent, nous obtenons une combinaison avec un nombre égal de zéros et de uns, la fréquence du signal diminue également en raison du transcodage du signal (oui, la fréquence est plus basse et la vitesse est plus élevée).Au total, nous obtenons que si vous avez de la chance, vous recevrez vos données en 21,6 - 50 μs, et à partir des calculs de ce cas, vous comprenez pourquoi les fabricants créent de nouvelles interfaces à haute vitesse, malgré le fait que la vitesse de lecture à partir des disques est beaucoup plus lente (plus l'interface de communication est rapide, plus plus rapidement, vos données peuvent être transférées à partir du moment où elles sont prêtes entre l'expéditeur et le destinataire).Cas 2: vous n'êtes pas aussi chanceux, et vous devez déplacer le bloc de tête vers un autre cylindre, et après avoir trouvé le cylindre souhaité, vous devez attendre que le disque tourne à 180 degrés pour accéder au segment souhaité.Malheureusement, je ne connais pas le temps de déplacement et de positionnement de la tête, mais vous pouvez calculer combien de temps il faut pour déplacer le segment dans un cercle, et prendre le temps de positionnement égal à la moitié du temps de rotation du disque, et cette valeur est connue, et donc, nous considérons le temps de rotation du disque (la moitié pour le positionnement , un demi-tour du disque de lecture).Pour calculer, vous devez savoir combien de tours se produisent par seconde, puis connaître la période en divisant 1 par le nombre de tours:5400 rpm - 1 (5400/60) = 11ms5900 rpm - T = 10 ms7200 rpm - T = 8 ms10 000 tr / min - T = 6 ms15 000 tr / min - T = 4 msTrouvez-vous des significations familières? Droite! Le temps moyen d'accès aux données pour un disque est approximativement égal ou égal à la période de rotation du disque, pourquoi la moyenne? Parce qu'il y a:Cas 3: vous n'avez pas de chance, le bloc de tête est sur le premier cylindre, et le segment est sur le dernier, le temps de déplacement du bloc de tête a pris presque ou autant que la période de rotation du disque après le positionnement du bloc de tête sur le cylindre souhaité, et la lecture des données a commencé, il s'est avéré que nous avons obtenu le segment suivant après celui souhaité, et pour le lire, vous devez attendre que le disque fasse une autre révolution, alors que je ne dis rien sur le cas 4: lorsque les données ne sont pas du premier (et peut-être des suivants) étaient pr lire (compter le temps qu'il faut, Minium * T 2 vol.).Quelle conclusion peut-on tirer à ce stade? "Eureka: vous devez faire tourner la broche jusqu'à 100 500 tours!". Mais tout n'est pas si simple, si vous tourniez sur un carrousel, vous devez savoir que si le carrousel ne tourne pas trop vite, il est facile de rester dessus n'importe où, si le carrousel n'est pas tordu trop rapidement, la seule façon de rester est de se rapprocher du centre et de se tenir fermement. Qu'arrivera-t-il aux disques s'ils sont fortement dévissés: d'abord, les bords du disque commenceront à se disperser dans différentes directions en raison des forces centrifuges, et le disque commencera à se dilater au début en augmentant dans des directions différentes, et puisque la vitesse de rotation ne diminue pas et que la taille du disque augmente, centrifuge forces, ce qui conduit à la destruction des liaisons moléculaires et nous obtenons "bigbadabum", et plusieurs morceaux du disque.C'est à cause de l'action des forces centrifuges, les disques à grande vitesse ont un diamètre plus petit pour ne pas se déchirer.Ici, la première idée ridicule apparaît : pourquoi il est impossible de faire deux blocs de têtes situés en face l'un de l'autre au lieu d'un (et si cela fonctionne avec deux, alors essayez 3, 4 peut même 5, 6). Ce que cela nous donne:
1) avec une augmentation du nombre de pièces, la "fiabilité" du système "diminue, mais comme nous obtenons un système de secours, nous" augmentons la fiabilité ".2) les blocs de tête se déplacent de manière synchrone (les impulsions provoquées par le déplacement des têtes ne fonctionnent pas pendant la lecture / écriture des données), et si le segment vient de passer, le deuxième bloc de tête aura la possibilité de le lire via T rev / 2 (pour cela, dans le cas classique, nous avons besoin cela ferait tourner la broche deux fois plus vite).3) les blocs de tête agissent sur des tâches distinctes (l'influence des impulsions de mouvement du bloc de tête n'est pas essentielle pour les opérations de lecture / écriture), le contrôleur, sachant où se trouve tel ou tel segment, peut déplacer le bloc de têtes le plus avantageux en position, pour réduire le temps perdu sur la rotation de la broche et le nombre les opérations d'entrée / sortie doubleront.4) Il y a deux situations où nous devons traiter une grande quantité de données à la fois:-copier / déplacer un gros fichier (Hi Blu-ray);-lire-modifier-écrire un fichier (bonjour aux bases de données).Dans la version classique du disque dur, lors de la copie, nous lisons le bloc de données dans le tampon, déplaçons le bloc de têtes dans une autre partie, écrivons des données, revenons pour une nouvelle donnée, avec une petite quantité de tampon, nous perdons énormément de temps à déplacer le bloc de têtes avec une grande quantité de données . Dans le cas de la modification d'un fichier, nous remplissons le tampon, le modifions (cela peut se faire en parallèle avec la lecture, dès réception des premières données dans la configuration souhaitée), et après la modification nous écrivons. Dans un schéma modifié, nous pouvons copier le fichier à la vitesse maximale, lire les données avec un bloc de têtes et écrire le deuxième bloc à la vitesse la plus élevée possible, qui dépendra principalement de la fragmentation du fichier, maintenant pour les disques durs, cela est possible si deux disques sont utilisés , une lecture,écrire à un autre.Le deuxième aspect du fonctionnement du disque dur est sa fiabilité, et en particulier les dysfonctionnements typiques, nous omettons les dysfonctionnements de la logique du programme, cela doit être réparé ailleurs, je n'annoncerai que les dysfonctionnements qui dépendent des caractéristiques de conception du disque dur:- brouillage de la broche lors du démarrage (enfin, il y a une possibilité de faire défiler la broche avec une action externe, de démarrer le disque, de lire les données et de l'envoyer au repos);
- coincement de la broche pendant le fonctionnement (ici les conséquences dépendent déjà de votre chance);
- , , , () ( , );
- , , , , , ;
- , , , , .
Tout le monde sait que la plus grande valeur n'est pas le coût du disque dur (hi $ -y), mais ces gigaoctets d '"informations utiles" soigneusement collectées. Afin de sauvegarder les données, des systèmes RAID de différents niveaux sont utilisés, pour lesquels il est nécessaire d'utiliser plusieurs disques durs. C'est là que surgit la deuxième idée ridicule : utiliser la technologie RAID sur un seul disque.En cas de défaillance complète du disque, il ne sera certainement pas enregistré, mais en cas de perte de données de 1 à 2 segments, cela aidera complètement à corriger la situation.La première approche, qui est facilement implémentée par le logiciel, consiste à placer la totalité de la surface, ou uniquement les données critiques ou importantes (segment 0, table de partition, fichiers de configuration système) à l'aide de la technologie RAID 5: A + B = Sum, obtenant deux parties sur trois nous pouvons facilement restaurer le troisième, le miroir ou la duplication est assez largement utilisé, par exemple, plusieurs entrées de la table de fichiers maîtres sont dupliquées dans NTFS, mais cela n'économise pas beaucoup en cas de panne grave, en plus, le «miroir» perd la moitié du volume dans le double, tandis que dans le cas de la collecte de statistiques segments illisibles, il est possible de réaliser la possibilité de placement de données sur un "A + B + C + D + E + E + F + G = I" nous perdrons 1/9 du volume, mais augmenterons les chances de récupération de données en cas de perte d'un segment de données.La deuxième approche, liée à la modification de la logique de fonctionnement du contrôleur, consiste à utiliser des données avec une somme de contrôle pour placer les données non pas sur une piste, mais sur différentes surfaces des disques, cette implémentation sauvera la situation lorsque l'une des têtes de travail cessera de répondre complètement, nous lisons toujours les valeurs provenant d'autres surfaces recevront les données initiales, mais en enregistrant les données, nous pouvons calmer solennellement la victime.En fait, la troisième idée ridicule (bien qu'elle concerne déjà des disques externes en tant que classe) sera la suivante: déléguer la prise en charge de l'allocation de fichiers et la prise en charge du système de fichiers au contrôleur de disque.merci: owniumo Ont
déjà: Disque dur cinétique pour le stockage d'objets évolutif
Comment cela va aider: le processeur central ne transférera que le descripteur de fichier et la pièce dont il a besoin, cessant d'être distrait par les interruptions associées à la construction de la chaîne FAT, par exemple, et le contrôleur calculera où les pièces spécifiées sont stockées et ne donnera au contrôleur que la pièce souhaitée du fichier.Vous pouvez implémenter ceci:- développement et remplacement du firmware d'usine (éventuellement sur le matériel actuel, mais coûteux en termes de modifications ultérieures, et le nombre d'options de disque, bonjour aux développeurs d'applications mobiles);
- développement d'un système de fichiers qui supportera le firmware des fabricants de disques;
- développement et implémentation d'un langage de programmation dans le firmware à l'aide duquel vous pouvez décrire le travail avec le système de fichiers
Voici en fait trois idées ridicules difficiles à tester, mais elles ne vous procurent pas une bonne nuit de sommeil.PS L'utilisation aléatoire de marques ou de brevets déposés est aléatoire. Toutes les idées originales peuvent être utilisées dans le cadre d' un accord de licence de fourmilière . Source: https://habr.com/ru/post/fr383225/
All Articles