Le système de fichiers UBI et les commandes de production utilisent mkfs, ubinize

Lien d'origine : https://blog.csdn.net/sxlworld/article/details/123871505

1. Concept du système de fichiers UBI

1.1 Système de fichiers UBI

UBIFS est un nouveau système de fichiers flash développé par les ingénieurs de Nokia avec l'aide de l'Université de Szeged. D'une certaine manière, UBIFS peut être considéré comme la prochaine génération du système de fichiers JFFS2.

Le système de fichiers UBI (Unsorted Block Images) est un système de fichiers pour les périphériques de mémoire flash, tels que les mémoires non volatiles telles que NAND et NOR. Il s'agit d'une couche logicielle qui mappe les périphériques de bloc Flash en périphériques de bloc logiques sur lesquels des systèmes de fichiers standard tels que ext2/ext3/ext4 peuvent s'exécuter.

L'objectif principal du système de fichiers UBI est d'assurer la fiabilité et la disponibilité des périphériques Flash et de réduire l'impact des blocs défectueux sur les périphériques Flash. Il peut détecter et traiter automatiquement les blocs défectueux et fournir une fonction de nivellement de l'usure pour prolonger la durée de vie de l'appareil.

Le système de fichiers UBI fournit également des fonctionnalités de fiabilité telles que des sommes de contrôle des données et des fonctions ECC (Error Correcting Code) pour garantir l'intégrité des données. Il prend également en charge Live Upgrade, permettant de mettre à jour les images du système de fichiers sans effacer l'intégralité du périphérique flash.

Le système de fichiers UBI est un logiciel open source qui peut être utilisé dans de nombreux systèmes embarqués tels que des routeurs, des décodeurs TV, des appareils mobiles, etc.

1.2 UBIFS implique trois sous-systèmes

1) Sous-système MTD : le pilote flash exploite directement le périphérique, tandis que le MTD présente une interface de fonctionnement unifiée au-dessus du pilote flash. Par conséquent, la mission du sous-système MTD est de : protéger les différences de fonctionnement des différents flashs et fournir une interface de fonctionnement unifiée ; correspondant aux pilotes/mtd ;

2) Sous-système UBI : Le sous-système UBI est basé sur le sous-système MTD. Il implémente la logique de gestion des caractéristiques nand sur MTD et protège les caractéristiques nand vers le haut ; correspondant aux pilotes/mtd/ubi ;

3) Système de fichiers UBIFS : Il s'agit d'un système de fichiers basé sur le sous-système UBI, qui réalise toutes les fonctions de base du système de fichiers. Par exemple, l'implémentation de fichiers et de journaux ; correspondant à fs/ubifs ;
le système de fichiers JFFS2 fonctionne sur les appareils MTD, mais UBIFS fonctionne sur les volumes UBI et ne peut pas s'exécuter sur les appareils MTD. Autrement dit, 3 sous-systèmes sont impliqués :

Le sous-système MTD fournit une interface unifiée pour accéder à la puce flash. MTD fournit le concept de périphériques MTD, qui représente essentiellement le flash brut ; /dev/mtd0
Le sous-système UBI, qui est un système de gestion du niveau d'usure et du volume pour les périphériques flash ; UBI fonctionne sur les périphériques MTD et fournit le concept de quantités UBI ; UBI les volumes sont des entités de niveau supérieur à celles des appareils MTD ;

insérer la description de l'image ici

1.3 Fonctions UBIFS

Évolutivité - UBIFS a une bonne évolutivité par rapport à la taille du flash ; c'est-à-dire que le temps de montage, la consommation de mémoire et la vitesse d'E/S ne dépendent pas de la taille du flash (actuellement, pas 100 % pour la consommation de mémoire, mais la dépendance est très faible, cela peut être corrigé) ; UBIFS (pas UBI !) devrait fonctionner correctement avec des centaines de flashs GiB ; cependant, UBIFS s'appuie sur UBI qui a des limites d'évolutivité (voir ici) ; néanmoins, la pile UBI/UBIFS L'évolutivité est bien meilleure que JFFS2, et si UBI devient un goulot d'étranglement, il est toujours possible d'implémenter UBI2 sans changer d'UBIFS ; installation rapide - contrairement à JFFS2,
UBIFS n'a pas besoin d'analyser l'intégralité du support lors de l'installation, UBIFS prend plusieurs millisecondes pour monter le support, cela ne dépend pas de la taille du flash ; cependant , le temps d'initialisation d'UBI dépend de la taille du flash ;
prise en charge de l'écriture différée : cela améliore considérablement le débit du système de fichiers dans de nombreuses charges de travail par rapport à JFFS2, qui est en écriture directe et tolère les réécritures impures.
Démarrage : UBIFS est un système de fichiers de journalisation et il tolère les pannes soudaines. et redémarrages impurs ; UBIFS relit simplement le journal et récupère après un redémarrage impur ; dans ce cas, les temps de montage sont légèrement plus lents car le journal doit être relu, mais UBIFS n'a pas besoin d'analyser l'intégralité du support, donc le montage d'UBIFS prend une fraction d'une seconde de toute façon ;
E/S rapides - même si l'écriture différée est désactivée (par exemple, si UBIFS est monté avec l'option de montage ""), UBIFS affiche également de bonnes performances, proches des performances de JFFS2 ; gardez à l'esprit qu'il est extrêmement difficile de rivaliser avec JFFS2 en E/S synchrones car JFFS2 ne maintient pas les structures de données d'index sur flash, il n'a donc pas de surcharge de maintenance, alors qu'UBIFS l'a ; Mais UBIFS est toujours rapide en raison de la façon dont UBIFS valide le journal - ce n'est pas le cas ne déplace pas physiquement les données d'un endroit à un autre, mais ajoute les informations correspondantes à l'index du système de fichiers et sélectionne un effacement différent pour le nouveau déblocage du journal (c'est-à-dire, UBIFS a une sorte de journal « errant », changeant constamment de position) ; là existe-t-il d'autres astuces, comme la journalisation multi-têtes, qui permettent à UBIFS de bien fonctionner ; -o sync
Compression à la volée : les données sont stockées sur un support flash sous forme compressée, ce qui permet d'insérer plus de données dans le flash que dans des données non compressées ; ceci est très similaire à JFFS2 ; UBIFS permet également d'activer/désactiver la compression à chaque fois. -inode basic , qui est très flexible ; par exemple, la compression peut être désactivée par défaut et activée uniquement pour certains fichiers qui doivent bien être compressés ; ou la compression peut être activée par défaut mais désactivée pour les données dites incompressibles (telles que les données multimédias). fichiers) ; actuellement, UBIFS ne prend en charge que les compresseurs zlib et LZO, et il n'est pas difficile d'en ajouter d'autres ; voir cette section pour plus de détails.
Récupération - Si les informations d'index sont corrompues, UBIFS peut être entièrement récupérable ; chaque message dans UBIFS a un en-tête décrivant cette information, et l'index du système de fichiers peut être complètement reconstruit en analysant le support flash ; ceci est très similaire à JFFS2 ; Pour Pour être plus clair, vous avez effacé la table FAT sur le système de fichiers FAT ; cela sera fatal pour FAT FS ; cependant, si vous effacez également l'index UBIFS, vous pouvez toujours le reconstruire, même si cela nécessite un outil d'espace utilisateur spécial pour le faire. ceci (bien que cet utilitaire ne soit pas actuellement implémenté) ;
Intégrité - UBIFS (ainsi qu'UBI) fait la somme de contrôle de tout ce qu'il écrit sur le support flash pour garantir l'intégrité des données, UBIFS ne laisse pas les données ou la corruption des métadonnées être ignorée (JFFS2 fait la même chose ); par défaut, UBIFS vérifie uniquement le CRC des métadonnées lors de la lecture à partir d'un support, pas le CRC des données ; cependant, vous pouvez utiliser l'une des options de montage UBIFS Forcer la vérification CRC des données - voir ici.

2. Production du système de fichiers UBI

2.1 Instructions communes UBI

insérer la description de l'image ici

2.2 Créer une image Ubi

Comment créer une image UBIFS ?

La création d'une image mémoire flash est divisée en 2 étapes :

  1. Créez une image UBIFS ;
  2. Créer une image UBI

Il existe donc 2 utilitaires :

insérer la description de l'image ici
Les images UBI et UBIFS dépendent des paramètres de la mémoire flash qu'elles utiliseront. Autrement dit, avant de créer une image, vous devez comprendre les caractéristiques suivantes de la mémoire flash :

Taille de la partition MTD ;
taille du bloc d'effacement physique du flash ;
taille minimale de l'unité d'entrée/sortie flash ;
pour le flash NAND - taille de sous-page ;
taille du bloc d'effacement logique.
Si vous avez rétroporté la prise en charge du système MTD, vous pouvez trouver tous ces paramètres en exécutant l'outil mtdinfo avec les paramètres.

L'exemple suivant montre la création d'une image UBI/UBIFS d'une puce flash NAND de 256 Mo
avec
un bloc d'effacement physique (PEB) de 128 Ko, une
page NAND de 2 048 octets et
une sous-page de 512 octets (ce flash permet des écritures de 4 x 512 octets sur la même page NAND).
L'image résultante n'aura qu'un seul volume UBI stockant le système de fichiers UBIFS.

$ mkfs.ubifs -q -r root-fs -m 2048 -e 129024 -c 2047 -o ubifs.img
$ ubinize -o ubi.img -m 2048 -p 128KiB -s 512 ubinize.cfg

Qui contient : ubinize.cfg

$ cat ubinize.cfg
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=200MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize

illustrer:

mkfs.ubifs
-r root-fs:告诉创建一个 UBIFS 镜像,该镜像将具有与本地目录相同的内容;
-m 2048:表示创建此 UBIFS 镜像的闪存的最小输入/输出单元大小为 2048 字节(在本例中为 NAND 页);
-e 129024:创建此镜像的 UBI 卷的逻辑擦除块大小;
-c 2047:在逻辑擦除块中指定最大文件系统大小;生成的FS可能会被置于高达约251MiB(129024乘以2047;
-p 128KiB:表示创建UBI镜像的闪存芯片的物理擦除块大小为128KiB(128 * 1024字节);
ubinize
-s 512:表示闪存支持子页面,子页面大小为512字节; 将考虑到这一点,并将 VID 标头放在与 EC 标头相同的 NAND 页面上。

Dans l'exemple, le fichier indique de créer une image UBI avec un volume dynamique de 200 Mo avec l'ID 0 nommé « rootfs ». Le fichier de configuration définit également l'indicateur de volume « taille automatique », ce qui signifie qu'UBI agrandira automatiquement le volume afin qu'il ait la plus grande taille possible lors de la première exécution. Plus d'informations sur la fonctionnalité de redimensionnement automatique. Puisque nous avons spécifié l'option "", UBIFS sera également redimensionné automatiquement lors du premier montage. Le résultat final sera donc que vous aurez un volume de la plus grande taille possible et qu'UBIFS s'étendra sur tout le volume.

おすすめ

転載: blog.csdn.net/qq_41483419/article/details/132343227