Partitionner des disques flash… en n`oubliant pas les précautions d
Transcription
Partitionner des disques flash… en n`oubliant pas les précautions d
Application Sous-système de stockage Partitionner des disques flash… en n’oubliant pas les précautions d’usage ! Dans les applications embarquées d'encombrement réduit, il est souvent envisagé d'utiliser des unités de stockage à mémoire flash (SSD ou Solid State Drive). Les SSD sont compacts et robustes et, parce qu'une cellule flash de qualité industrielle supporte entre 1 à 5 millions de cycles d'écriture, ils promettent une grande longévité. Mais quand il s’agit de haute fiabilité, de sécurité et de longévité, il faut se souvenir qu'à ce jour, les mémoires SSD ne peuvent être partitionnées que sur le plan logique, et non physique. Les conséquences en sont loin d'être négligeables. D e nombreuses discussions sur les systèmes compacts à haute fiabilité, tels ceux mis en œuvre dans les applications M2M, font état d’une opinion de plus en plus répandue parmi les utilisateurs : avec les mémoires flash, il n’y aurait pas ou peu de problèmes de fiabilité. De fait, de nombreux articles dédiés aux disques durs à état solide (ou SSD) évoquent un bon moyen d'éviter l'usure générée par de fréquents accès en lecture : le partitionnement de la mémoire. A priori, ce procédé semble logique et pratique, car il est possible de destiner une partition à la sauvegarde des données critiques du système d'exploitation et des applications, et d’affecter une autre partition aux données modifiées par les applications et aux données d'opérations de mémoire virtuelle (partition dite « swap »). Si l’un des secteurs de cette deuxième partition – où les écritures sont fréquentes – se dégrade, le système reste disponible (quoiqu’avec certaines restrictions). Voilà tout du moins la théorie. Malheureusement, en pratique, certains effets sont presque toujours négligés. Un système dont la partition swap ne fonctionne pas peut en effet rarement démarrer sans intervention de l'utilisateur. Par conséquent, écrire les données de swap dans la partition swap n’a que peu de sens. Mais c’est là le moindre des problèmes. L'écueil le plus difficile à contourner est lié à l’attribution des adresses physiques aux adresses logiques, ce qui est loin 40 / L’EMBARQUÉ / N°2 Auteur d'être simple dans le cas des unités à mémoires flash. Disques durs contre mémoire flash Claus Giebert, directeur produit en charge des cartes processeurs embarquées et directeur produit M2M pour l’EMEA chez Kontron. Sur un disque dur conventionnel, chaque secteur correspond à une zone bien définie de la surface de la mémoire magnétique. Il existe donc une séparation spatiale sécurisée… que l'on suppose inconsciemment présente également sur les mémoires flash. Mais, en fait, les choses se passent différemment, soit à cause des techniques de « wear levelling » (« égalisation d'usure ») qui visent à augmenter la longévité des disques flash, soit en raison de la distribution des cycles d'écriture sur différents canaux flash qui permet d’accroître les performances en écriture. Il faudra encore du temps pour que les Chaque partition d'un disque dur occupe une zone bien définie sur la surface d'une mémoire magnétique. Ce qui n’est malheureusement pas le cas à ce jour avec les SSD. ● fournisseurs de services de récupération de données prennent conscience de l'impact de ces techniques. Dans ce qui suit, nous examinerons plus particulièrement les effets du « wear levelling ». La technique de wear levelling a été décrite à maintes reprises. Pour la comprendre, examinons tout d’abord comment cette technique s'y prend pour augmenter la longévité du SSD. Prenant en compte le fait que le vieillissement est dû au processus d’effacement et non à la lecture, elle s’appuie sur un algorithme simple comme celui-ci : - Une cellule n’est effacée que si aucune autre cellule libre (effacée) n’est présente. - Il est préférable d'effacer les secteurs qui ont été effacés les moins souvent. L’intégration anaLogique ? Pas nécessairement requis Par tous ! © 2013 Maxim Integrated Products, Inc. All rights reserved. Maxim Integrated and the Maxim Integrated logo are trademarks of Maxim Integrated Products, Inc., in the United States and other jurisdictions throughout the world. Application Sous-système de stockage I.- Configuration de départ d'un SSD AVEC 8 PAGES ET 4 SECTEURS Niveau d'usure 3 3 3 3 3 3 3 2 Secteur/page 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 15 1 8 9 10 11 12 13 14 2 16 17 18 19 20 21 xx Les secteurs colorés en bleu contiennent des données écrites par l'utilisateur, tandis que les secteurs colorés en vert sont « signalés » comme n'avoir jamais été écrits. Les nombres inscrits dans les secteurs correspondent aux numéros des secteurs logiques. Si un secteur a été écrit mais ne contient pas de données récentes, il est identifié par le signe « xx ». Dans la suite du raisonnement, les pages apparaissant en gris dans les tableaux sont celles examinées pour chaque exemple particulier. 3 Structure d’un SSD divisé en secteurs et en pages avec leur niveau d’usure respectif. Les secteurs logiques 0 à 8 contiennent les données critiques. - Les opérations d'écriture sont distribuées de façon égale entre les secteurs. Ce type d'algorithme peut aussi prendre en compte la géométrie et la taille d'un fichier, mais nous n'en parlerons pas ici. Nous nous baserons donc sur une taille gérable. Il apparaît d’ores et déjà que le fait d’écrire en utilisant la technique de wear levelling sans pouvoir créer de partition physique va poser quelques problèmes. Voyons cela plus en détail. Compter le nombre d’effacements Pour commencer, examinons la structure d’un disque SSD (voir tableau I). Supposons qu’il soit divisé en huit pages notées de 0 à 7, avec, pour chacune, un espace de stockage de quatre secteurs notés de 0 à 3. Pour chacune des pages, un compteur distinct enregistre le nombre d’effacements déjà effectué (par exemple, le niveau d’usure 3 indique que la page a déjà été écrite 3 fois). Supposons maintenant que la partition 1, qui contient en particulier les données critiques de l'OS, corresponde, sur le tableau I, aux secteurs logiques 1 à 8, les données de swap et d'application étant stockées du secteur logique 9 à la fin. En pratique, une telle configuration pourrait être générée lors du stockage d’une image du système d'exploitation sur un « nouveau » périphérique, par exemple. En simplifiant beaucoup, c’est approximativement la procédure suivie en production avec les dispositifs de stockage fabriqués en série. Etudions maintenant le fonctionnement d’un tel dispositif série sur le terrain. Sur le terrain, des données de processus sont constamment acquises et 42 / L’EMBARQUÉ / N°2 IIa.- Modification des données du secteur logique 10 Niveau d'usure 3 3 4 3 3 3 3 4 Secteur/page 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 1 8 9 xx 11 12 13 14 15 2 16 17 18 19 20 21 22 10 3 IIb.- Modification des données du secteur logique 22 Niveau d'usure 4 3 4 3 3 3 4 4 Secteur/page 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 1 8 9 xx 11 12 13 14 15 2 16 17 18 19 20 21 xx 10 3 22 3 3 4 4 IIc.- Acquisition de données dans de nouveaux secteurs Niveau d'usure 4 3 4 3 Secteur/page 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 1 8 9 xx 11 12 13 14 15 2 16 17 18 19 20 21 xx 10 3 22 23 24 La modification des données existantes et l'acquisition de nouvelles données déplacent la position physique des secteurs logiques aussi bien par rapport aux secteurs physiques que par rapport aux pages physiques. III.- Défaillance de la page 1 Niveau d'usure 99 98 99 99 99 99 99 99 Secteur/page 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 1 8 9 xx 11 12 xx 14 15 2 xx 17 18 19 xx 21 xx 10 3 22 23 24 xx 20 13 16 xx La défaillance d'une page peut causer la perte de données de la partition du système d'exploitation, qui est pourtant protégée en écriture. La protection de la partition est inefficace. stockées, et les secteurs du système de fichiers sont modifiés en conséquence. L’influence du système de fichiers peut être négligée, car cela complexifie encore la situation. Supposons que les données du secteur 10 puis celles du secteur 22 soient modifiées (voir tableaux IIa et IIb). Deux nouveaux secteurs supplémentaires sont requis. Le volume des données croît constamment. Au final, sans même que le wear levelling soit très optimisé (on va du niveau d’usure 3 au niveau 5), l’affectation finale des secteurs logiques aux secteurs physiques est loin d'être simple. Après seulement quatre opérations d'accès en écriture, la position relative des données vis-à-vis des pages aussi bien que des secteurs a changé. Que va-t-il alors se passer si l'ensemble des données d'une page sont perdues ou (ce qui est moins grave mais plus probable) si l’alimentation est brusquement coupée ? ● Scénario 1 : dégradation d’une page Nous supposons ici que toute une page de mémoire flash tombe en panne. En termes de niveau d’usure, ce problème n’intervient en général que très tardivement. Mais en cas d'écritures répétées, le niveau d’usure des secteurs s'élève constamment, et la probabilité de panne s'élève en conséquence. Dans l’exemple donné tableau III, la panne affecte les secteurs 1, 9, 17, et 23. Si nous nous reportons à la partition initiale, nous constatons que sont touchés à la fois des secteurs de la partition du système d'exploitation, protégée en écriture, et des secteurs contenant des données de swap et d’application. Ainsi, la protection en écriture sur la partition est inefficace. Et du fait que le système de fichiers ne sait pas quels secteurs logiques sont situés dans chaque page, aucune mesure de sécurité n'est envisageable. ● Scénario 2 : coupure d’alimentation pendant l’écriture Si l’alimentation est brutalement coupée, un grand nombre de données peut être sauvé grâce à l’algorithme interne mis en place à cet effet, et via le système de fichiers utilisé. Cependant, il existe toujours un laps de temps particulier durant un processus d'écriture, pendant lequel le « nouvel » état ne peut être restauré. Le tableau IV décrit la situation suivante : les données du secteur Sous-système de stockage Application IV.- Défaillance de la page 1 lors de la réecriture des données du secteur 26 Situation initiale Niveau d'usure 10 9 10 10 10 10 10 10 Secteur/page 0 1 2 3 4 5 6 7 0 0 xx 2 3 4 5 6 7 1 8 9 xx 11 12 13 14 15 2 16 17 18 19 20 21 xx 10 3 22 23 24 26 1 xx xx xx Événement planifié Niveau d'usure 10 10 10 10 10 10 10 10 Secteur/page 0 1 2 3 4 5 6 7 0 0 26 2 3 4 5 6 7 1 8 9 xx 11 12 13 14 15 2 16 17 18 19 20 21 xx 10 3 22 23 24 xx 1 xx xx xx Si l'alimentation est coupée et si l’algorithme de wear levelling estime que toute la page 1 doit être effacée et les données réécrites, il existe une période de temps pendant laquelle le contenu de la page peut être perdu en dépit des mécanismes de sécurité. 26 doivent être réécrites, et si possible dans la page 1 car c’est elle qui a le niveau d’usure le plus bas. En supposant que, d'après notre algorithme, le SSD est plein (en d'autres termes, tous les secteurs logiques ont quitté l'état original « FF », mais la mémoire n'est pas vraiment pleine), il faut effacer toute la page 1 et réécrire les données. Si la tension d’alimentation chute à ce moment précis, toutes les don- nées stockées dans cette page restent dans un état indéfini. Des mesures de protection internes et une meilleure implémentation que celle de notre exemple peuvent contribuer à réduire fortement la durée de cette période dangereuse, mais elle existera toujours, malgré toutes les solutions connues à ce jour. Dans notre exemple, les secteurs affectés sont les secteurs logiques 1, 26, 9, 17 et 23. Si nous nous reportons à la partition originale où le système d'exploitation est stocké dans les secteurs 1 à 8, nous voyons que les secteurs de la partition protégée du système d'exploitation sont affectés aussi bien que ceux affectés aux données de swap et d’application. Là aussi, la protection en écriture de la partition est inefficace. Le système de fichiers ne sait pas quels sont les secteurs contenus dans chaque page, et il n’est pas possible de mettre en œuvre une mesure de sécurité fonctionnant correctement en cas de coupure d’alimentation. Des solutions pour contourner le problème Tant que les systèmes de fichiers des périphériques SSD à base de flash ne donneront aucune information sur l’affectation des secteurs physiques aux secteurs logiques, il ne sera pas possible d'implémenter des mesures de sécurisation avec une simple unité SSD. Mais les nombreux avantages d'une mémoire non rotative pour les accès rapides sont indéniables. Il exemples d'utilisation d'une double unité de stockage SSD n Entrant pile dans la tendance SFF, les Box PC de la série CB de Kontron (ici, le modèle CB 511) combinent un SSD et des connecteurs CompactFlash internes ou externes (externes ici). Ils peuvent ainsi stocker l'image du système d'exploitation sur une très longue période et en toute sécurité, puisque celle-ci n'est retouchée que pour des modifications de configuration. Si le SSD dédié aux données de swap et d'application tombe en panne, suite à des erreurs de pagination ou à une coupure d'alimentation, le système se relance en général sans nécessiter d'action de l'utilisateur. n Le kit de développement de services intelligents M2M de Kontron est une plate-forme compacte à haute fiabilité pour le développement d'applications M2M. Une carte MicroSD interne de 4 Go sert au stockage des applications de services M2M, du middleware et d'un système d'exploitation. Il est recommandé d'intégrer une solution mémoire additionnelle pour les applications devant sauvegarder de grandes quantités de données à intervalles réguliers. existe toutefois des moyens de surmonter le problème, à condition de s'attendre à devoir faire des efforts et des dépenses supplémentaires. Ce sont des possibilités qu'il vaut mieux évaluer dès le début d'un projet pour éviter les mauvaises surprises sur le terrain. La prise en compte tardive et ultérieure de ces facteurs crée presque toujours des problèmes majeurs, car le logiciel aussi bien que le matériel peuvent en être affectés. Pour contourner le problème, deux solutions sont envisageables : - Créer des partitions séparées dans deux dispositifs différents. C'est naturellement la voie facile, qui évite d'avoir à réfléchir plus avant. Mais elle augmente les coûts et l'espace nécessaire à la solution globale. De plus, il n'est pas toujours possible d'ajouter un second médium ultérieurement. - Utiliser des dispositifs spécialisés capables de séparer « physiquement » les pages. Différentes annonces ont en effet fait état de SSD qui se connectent comme doubles unités de disques. Ont également été annoncés des produits capables de geler une affectation de secteur ou de page. Toutefois, cela n'est guère envisageable d'opter pour une solution employant une seule unité SSD, tant que ces nouveaux périphériques ne seront pas testés et disponibles en volume. Entre-temps, il sera préférable soit d'utiliser des disques durs magnétiques standards, soit de distribuer les tâches entre deux unités de stockage SSD. Dans ses Panel PC et ses Box PC, Kontron offre ainsi, dans certains cas, la possibilité d’utiliser deux SSD indépendants, le second disque flash pouvant faire office de RAM non volatile aux côtés d'un disque flash dédié au système d'exploitation, par exemple. Ce court exemple a montré comment, dans le développement des systèmes embarqués, le diable est souvent dans les détails, et comment ce qui semble a priori une technologie innovante peut parfois ne pas améliorer le produit global. La précaution est donc de mise lors du choix de nouveaux composants. Dans le doute, lorsqu'il faut élaborer et évaluer une plate-forme, mieux vaut consulter des concepteurs de sous-ensembles matériels ayant l'expérience de l'embarqué. n L’EMBARQUÉ / N°2 / 43 Logiciels & systèmes Professionnels de l’embarqué Découvrez le système d’information le plus complet, 100% utile à votre métier ! Une newsletter quotidienne Votre fil d’actualité gratuit Une newsletter hebdo Tous les jeudis, des infos exclusives à forte valeur ajoutée Un magazine 100% numérique, trimestriel, pour une information fouillée, analysée et développée Un site Internet Plus de 1 500 articles par an exclusivement dédiés à l’embarqué Abonnez-vous •Pub 148x210.indd 1 www.lembarque.com 20/03/13 12:52