Brevet FR2717920A1 — publié le 19950929

Procédé et architecture de stockaae de séquences de fichiers de données. tels des fichiers d'image, à traiter en temps réel à l'acquisition et/ou à la restitution. L'invention concerne un procédé et un dispositif de stockage de séquences de fichiers de données figés, tels des fichiers de données correspondant chacun à une des images numérisées d'une séquence et notamment d'une séquence d'images animée, qui sont acquises en temps réel au stockage et/ou à restituer en temps réel. Actuellement, les systèmes de gestion de fichier usuels ne permettent pas d'atteindre un débit de données suffisant pour permettre le stockage d'une séquence d'images - de type vidéo -, fournies en continu, sur un disque dur d'un ordinateur et par exemple d'un serveur, dans des conditions permettant d'obtenir une très bonne restitution visuelle de la séquence en temps réel. Ainsi pour un flux d'images animées fournies chacune sous forme de deux trames et à un rythme de vingt-cinq images par seconde, il faut que le système de gestion utilisé permette d'assurer un temps de traitement par image au stockage et/ou à la restitution qui soit toujours au plus égal à vingt millisecondes, pour éviter tout risque de perte d'image. Or, comme il est connu, la gestion des opérations de stockage réalisées sur un disque dur au cours du temps consiste notamment à trouver des emplacements de stockage disponible sur le disque pour les données nouvellement reçues en exploitant éventuellement les emplacements de stockage rendus disponibles par l'effacement de données, préalablement stockées, devenues inutiles. Comme le volume de données d'un fichier ou d'une séquence de fichiers à stocker est susceptible de largement varier, sans précaution particulière, il y a une dissémination croissante au cours du temps des emplacements de stockage qu'un système de gestion est susceptible d'attribuer aux nouvelles données reçues pour un fichier et a fortiori pour une séquence de fichiers. Cette dissémination entraîne des déplacements des têtes d'écriture/lecture de disque et éventuellement des allers et retours qui ont un effet néfaste tant sur la vitesse d'enregistrement des fichiers et séquences que sur la vitesse à laquelle il est possible de les restituer. Dans le cas particulier de séquences d'images animées ainsi stockées, il y a alors un risque important de perte d'images. I1 est certes connu de mettre temporairement hors service un disque dur pour réorganisation des emplacements de stockage contenant des données de fichier à conserver et de celles qui sont disponibles pour enregistrement de manière à disposer d'emplacements disponibles contigus pour le stockage et à permettre l'enregistrement des données nouvellement à stocker et ultérieurement leur restitution dans des conditions limitant au minimum le déplacement des têtes de disque dur. Toutefois il existe des applications, par exemple dans le cas de serveurs télématiques exploités en temps réel, où l'on souhaite que le service soit permanent les opérations de restitution et éventuellement d'enregistrement sur disque dur devant pouvoir être effectuées à tout instant par exemple à la demande d'utilisateurs autres que le responsable du serveur. Dans au moins certaines de ces applications, les données à stocker et ultérieurement restituer, qui sont classiquement groupées en fichier, sont pratiquement figées, s'il n'est pas prévu de modifier le fichier après enregistrement, tels sont par exemple susceptibles d'être les fichiers correspondants chacun à une image numérisée distincte dans une séquence enregistrée d'images. L'invention propose donc un procédé de stockage, sur un disque dur d'au moins une séquence de fichiers de données figés, tels des fichiers de données correspondant chacun à une des images numérisées d'une séquence, notamment animée, à traiter en temps réel à l'acquisition et/ou à la restitution, lorsque le disque, enregistré et lu par l'intermédiaire de têtes d'écriture et de lecture, comporte une zone de gestion incorporant notamment une table de gestion de séquences, où chaque séquence est susceptible d'être associée à une entrée qui lui est propre et une zone de stockage de fichiers divisée en blocs de même taille, chaque bloc étant susceptible d'être associé à une entrée. Selon une caractéristique de l'invention, le procédé implique les opérations suivantes, lors du stockage de toute nouvelle séquence et tant qu'il subsiste des possibilités de stockage de séquence sur le disque: - recherche et attribution d'un identifiant libre pour la séquence à stocker, - recherche de la première entrée correspondant à un bloc libre du disque, - chaînage de cette première entrée à l'identifiant attribué à la séquence, - recherche de chacun des blocs libres, nécessaires pour le stockage des fichiers de la séquence, selon un ordre toujours croissant dans un même sens pour une séquence donnée. L'invention propose aussi une architecture de stockage sur disque dur pour mise en oeuvre du procédé défini ci-dessus, avec un disque où sont ménagées une zone pour le stockage de données de gestion du disque et une zone de stockage de fichiers de données. Selon une caractéristique de l'invention, l'architecture comporte, en zone de stockage de données de gestion de disque, une table de gestion de séquences de fichiers de données, notamment pour séquences d'images numérisées, comportant des identifiants de séquence individuellement attribuables, ainsi qu'une table de gestion des blocs d'au moins une portion de zone de stockage de fichiers de données, dont les entrées individuellement associées chacune à un des blocs de ladite portion de zone de stockage de fichiers, sont prévues pour être individuellement pointées à partir des identifiants de séquence. Ladite table de gestion de blocs est prévue pour stocker une indication de pointage de bloc, pour tout bloc affecté à une séquence, cette indication définissant le bloc de stockage suivant prévu pour les fichiers de la séquence qui suivent par ordre d'enregistrement ceux que stocke le bloc initialement considéré; une indication de fin de séquence est également stockée, lorsqu'aucun autre bloc suivant n'est nécessaire. Les blocs affectés à une même séquence y ont un ordre de positionnement en évoluant dans un même sens, pour permettre un enregistrement de séquence sur le disque et/ou une restitution de séquence entraînant systématiquement un déplacement dans une seule direction des têtes d'écriture et de lecture du disque pour au moins la séquence considérée. L'invention, ses caractéristiques et ses avantages sont précisés dans la description qui suit en liaison avec les figures évoquées ci-dessous. La figure unique illustre un exemple d'architecture de stockage de fichiers, selon l'invention, sur disque dur. De manière connue, l'enregistrement de données sur un support de stockage de type disque dur et la restitution ultérieure de ces données s'effectue par l'intermédiaire d'un module gestionnaire, couramment dénommé driver", tel un module de type standardisé dit SCSI, sous le contrôle d'un processeur de supervision et en liaison avec au moins une source de données et au moins un agencement de restitution. La source est par exemple une source fournissant des images sous forme de fichiers de données numériques, l'agencement de restitution permettant alors de reconstituer visuellement les images à partir des fichiers de données, par exemple sous la forme d'une séquence animée d'images. Comme il est connu le module gestionnaire d'un disque permet de gérer le stockage des fichiers de données selon au moins un des protocoles normalisés prévus à cet effet, il permet aussi en un mode, dit brut et couramment désigné par le terme anglais "raw", de gérer ce stockage, par exemple à partir d'un protocole spécifique enregistré au niveau du processeur de supervision, sans tenir compte du protocole normalement prévu pour ce module gestionnaire. C'est donc a priori en mode brut qu'il est envisagé de mettre en oeuvre le procédé selon l'invention. Comme il est connu et ainsi que symbolisé sur la figure unique, un disque dur comporte une première zone, ici référencée 1, qui est prévue pour recevoir les informations nécessaires à la gestion du disque par le module gestionnaire et donc des séquences de fichiers dans le cas présent, ainsi qu'au moins une seconde zone, référencée 2, pour le stockage des données des fichiers. Suivant le disque de stockage et suivant l'application choisis, la première et la seconde zone peuvent ensemble correspondre ou non à la totalité de la capacité de stockage présentée par le disque. En particulier, la zone 2 comporte au moins une portion, ici référencée 6 pour les fichiers appartenant aux séquences dont le stockage est à effectuer en application du procédé selon l'invention, et éventuellement une autre portion, non figurée et alors réservée à d'autres fins sur le disque. La zone 1 comporte diverses tables de gestion dont une table 3 de gestion globale de disque qui contient des informations relatives aux caractéristiques de ce disque telles que sa capacité, l'architecture qui y est installée, etc. La zone 1 comporte aussi une table 4 de gestion de séquences prévue pour contenir des données définissant l'état et les caractéristiques de chacune des séquences dont les données sont stockées en zone 2 de disque. Cette table 4 met à disposition du gestionnaire une pluralité déterminée d'entrées, supposées référencées de "SaW à "Sn" sur la figure unique. Chaque entrée est susceptible d'être associée à une séquence précise, par exemple à une séquence particulière d'images, l'entrée "Sa" étant ici supposée affectée à une séquence référencée "a" d'images dont les fichiers de données respectifs sont supposés stockés dans des blocs référencés "a0", "al", a2" et "an" de la portion 6 de zone 2 du disque. La table 4 stocke dans celui de ses emplacements de stockage réservé à une entrée les données d'identification du premier bloc, tel "aO", affecté à la séquence à laquelle cette entrée est affectée, lors de l'enregistrement, elle est également exploitée par le gestionnaire pour trouver la première entrée correspondant à une séquence à restituer. Une table 5 de gestion de blocs est également prévue en zone 1 de disque, chaque bloc, tel tao", correspondant à un module de stockage de données en portion 6 de zone 2 du disque, tous les blocs ayant même capacité de stockage et permettant préférablement de stocker plusieurs fichiers d'une même séquence, par exemple deux ou trois fichiers correspondant chacun à une des images successives d'une séquence animée. Chaque entrée de table 5 est associée à un bloc, tel "au", de la portion 6 de zone 2 du disque et la table stocke dans celui de ses emplacements de stockage réservé à une entrée les informations relatives à l'état et aux caractéristiques du bloc associé. Il est donc possible au gestionnaire de trouver dans la table 5 l'adresse physique sur le disque du bloc associé à une entrée de cette table et une indication permettant de savoir si le bloc considéré, tel "an", est le dernier prévu pour la séquence pour laquelle il stocke des données. Le gestionnaire peut aussi trouver l'entrée correspondant au bloc, tel "a2", où se trouve les données qui suivent immédiatement celles contenues dans un bloc donné, tel "al pour une séquence déterminée, à partir des informations stockées pour ce dernier dans l'emplacement de stockage réservé, à l'entrée associée à lui, en table 5. Comme déjà indiqué, les blocs prévus en portion 6 de zone 2 sont d'une taille fixe qui est choisie pour permettre un débit maximum en écriture et en lecture du disque où ces blocs sont ménagés. Dans la mesure où il est habituellement prévu que le stockage de fichiers sur disque dur et leur éventuel effacement évolue au cours du temps et comme indiqué plus haut, il se produit peu à peu au cours du temps à une dissémination croissante des blocs susceptibles d'être attribués à un instant donné pour le stockage de nouveaux fichiers, puisque les fichiers à enregistrer n'ont pas nécessairement même volume et que le positionnement relatif des blocs exploitables à l'enregistrement est susceptible de varier au fur et à mesure des effacements. Ceci peut conduire avec les procédés de gestion connus, à ce que les blocs utilisés pour une séquence de fichiers correspondant à un fort volume de données enregistrées, soient répartis de manière telle que les déplacements des têtes d'enregistrement et de lecture du disque au cours d'une même opération d'enregistrement ou de restitution ne soient pas unidirectionnels et conduisent à des inversions de mouvement et par conséquent à un ralentissement de l'opération considérée. Ceci est bien entendu particulièrement gênant dans le cas d'application où l'enregistrement des données et/ou la restitution doit s'effectuer sous fort débit et notamment en temps réel, car il y a alors un risque de déperdition de données dans un cas et/ou dans l'autre. Un tel risque existe notamment lorsqu'il est envisagé de stocker une ou plusieurs séquences d'images animées sur le disque dur d'un serveur d'images, puisque dans ce cas ce sont des pertes d'image qui sont susceptibles d'être occasionnées. Selon l'invention, le procédé suivant permet d'éliminer ces inconvénients en évitant les inversions de déplacement des têtes d'enregistrement et lecture de disque au cours d'un même traitement d'enregistrement ou de restitution, lorsqu'une séquence est constituée de fichiers de données, dits figés, dans la mesure où il n'est pas prévu qu'ils soient modifiés en cours d'exploitation normale, après stockage sur disque. En premier lieu, lors d'une tentative d'enregistrement d'une séquence, notamment d'une séquence animée d'images, le gestionnaire du disque, soit dans l'exemple initialement envisagé, l'ensemble associant le processeur de supervision du disque au module gestionnaire exploité en mode brut, doit chercher s'il existe un identifiant libre dans la table 4 de gestion de séquences afin de l'attribuer à la séquence à enregistrer. Ceci implique la lecture des indications d'état de la table 4 et conduit à l'affectation d'un des identifiants disponibles, par exemple celui correspondant à l'entrée "Sa" de cette table 4. Le gestionnaire du disque recherche en table 5 de gestion de bloc quelle est la première des entrées de cette table qui correspond à un bloc libre et inscrit à titre d'indication de bloc en table 4, au niveau d'entrée définie par l'identifiant choisi, soit ici "Sa", une indication d'identification de l'entrée de table 5 qui correspond au premier bloc disponible détecté, ici supposé être le bloc "aO" de la portion 6 de zone 2 où il est plus particulièrement prévu de stocker les séquences. La table 5 contient une indication d'état de disponibilité pour chacun des modules de stockage que constituent les blocs de la portion 6 de zone 2, le pointage d'une entrée de table 5 par le gestionnaire de disque permettant d'accéder à cette indication d'état à partir de la table 4, comme indiqué ci-dessus. Lorsque le stockage d'une séquence implique l'exploitation de plus d'un bloc, le gestionnaire du disque est amené à rechercher au moins un second bloc disponible par examen des indications de disponibilité contenues en table 5 pour chaque bloc de la portion 6. Cette recherche est effectuée par le gestionnaire en accédant successivement et toujours dans le même ordre, ici défini comme croissant, aux indications de disponibilité de bloc contenues en table 5, de manière que l'enregistrement des données puisse être effectuée sans inverser le mouvement de la tête d'enregistrement du disque dur pendant l'enregistrement des fichiers successifs d'une séquence en cours de stockage. La table 5 de gestion des blocs permet ici de stocker les adresses physiques de début et de fin de chaque bloc, de manière que le pointage de l'entrée de table correspondant à un bloc donné permette de connaltre sa disponibilité et la position réelle du bloc sur le disque en vue d'y enregistrer ou d'y lire les données du ou des fichiers qui doivent y être stockés. Lorsqu'un bloc est disponible à l'enregistrement, il est alors possible d'y enregistrer un ou plusieurs des fichiers successifs de la séquence à stocker, suivant la capacité attribuée par bloc et les tailles respectives des fichiers successifs. Lorsque la capacité d'un bloc est insuffisante pour un fichier donné ou pour une séquence de fichiers donnée et que le gestionnaire a été amené à rechercher un bloc suivant disponible à l'enregistrement, il est inscrit une indication permettant de pointer d'un bloc vers le bloc suivant choisi, au niveau de la table 5. Ainsi, par exemple, le pointage s'effectue de l'entrée de table 5 correspondant au bloc naO", vers l'entrée de table 5 correspondant au bloc "al" puis de celle-ci à celle qui correspond au bloc a2" et de cette dernière à l'entrée correspondant au bloc "an" pour la séquence d'identifiant "Sa" en table 4. Dans l'exemple présenté sur la figure unique, il est montré que le chainage entre blocs attribués à une même séquence est effectué toujours dans le même sens du bloc "aO" jusqu'au bloc "an" de fin de séquence qui s'identifie par une indication particulière de fin de séquence en table 5. Il en est de même pour la séquence d'identifiant "Sb" supposée comportant les blocs "bO" et "bn", deux blocs non répertoriés de la portion 6 de zone 2 étant supposés correspondre à des blocs disponibles ou redevenus disponibles. Dans la mesure où une séquence de fichiers a pu être enregistrée dans des blocs chainés qui ont pu être enregistrés sans qu'il y est eu inversion du sens de déplacement de tête d'enregistrement du disque qui comportent ces blocs, il est bien entendu possible de lire ces blocs, sans inversion du sens de déplacement de tête de lecture, lors d'une restitution. Le gain de temps ainsi obtenu à l'enregistrement d'une séquence se retrouve donc aussi lors des éventuelles restitutions de cette séquence, ce qui apporte un avantage certain au point de vue de la qualité de service, notamment dans le cas où la séquence est de type séquence animée d'images. REVENDICATIONS 1/ Procédé de stockage, sur un disque dur d'au moins une séquence de fichiers de données figés, tels des fichiers de données correspondant chacun à une des images numérisées d'une séquence, notamment animée, à traiter en temps réel à l'acquisition et/ou à la restitution, le dit disque comportant une zone de gestion incorporant notamment une table (4) de gestion, où chaque séquence est susceptible d'être associée à une entrée qui lui est propre et au moins une portion (6), d'une zone de stockage (2) de fichiers, divisée en blocs de même taille, chaque bloc étant susceptible d'être associé à une entrée, caractérisé en ce qu'il implique les opérations suivantes, lors du stockage de toute nouvelle séquence et tant qu'il subsiste des possibilités de stockage de séquence sur le disque: - recherche et attribution d'un identifiant libre pour la séquence à stocker, - recherche de la première entrée correspondant à un bloc libre du disque, - chaînage de cette première entrée à l'identifiant attribué à la séquence, - recherche de chacun des blocs libres, nécessaires pour le stockage des fichiers de la séquence, selon un ordre toujours croissant dans un même sens pour une séquence donnée. 2/ Architecture de stockage sur disque dur pour mise en oeuvre du procédé selon la revendication 1, avec un disque où sont prévues une zone (1) pour le stockage de données de gestion du disque et une zone (2) de stockage de fichiers de données, caractérisée en ce qu'elle comporte, en zone de stockage de données de gestion de disque, une table (4) de gestion de séquences de fichiers de données, notamment pour séquences d'images numérisées, comportant des identifiants de séquence individuellement attribuables, ainsi qu'une table (5) de gestion des blocs d'au moins une portion (6) de zone de stockage de fichiers de données, dont les entrées individuellement associées chacune à un des blocs de ladite portion de zone de stockage de fichiers, sont prévues pour être individuellement pointées à partir des identifiants de séquence, ladite table de gestion de blocs étant prévue pour stocker en liaison avec tout bloc affecté à une séquence, une indication de pointage du bloc suivant de stockage prévu pour les fichiers de la séquence qui suivent par ordre d'enregistrement ceux que lui-même stocke, ou éventuellement une indication de fin de séquence, les blocs affectés à une même séquence ayant un ordre de positionnement évoluant dans un même sens, pour permettre un enregistrement de séquence sur le disque et/ou une restitution de séquence entraînant systématiquement un déplacement dans un seule direction des têtes de lecture/enregistrement du disque pour au moins la séquence considérée.