Je suppose qu'en disant groupe vous voulez dire "Windows unité de répartition communément appelé bloc dans le monde Linux. Il s'agit d'une unité de stockage de données utilisée par un système de fichiers. Un cluster/bloc peut être constitué ou correspondre à plusieurs secteurs sur le support de stockage sous-jacent (disque dur ou mémoire flash). Le secteur est l'unité atomique minimale de stockage qu'un système d'exploitation peut lire ou écrire. La taille des blocs est déterminée au moment de la création du système de fichiers, c'est-à-dire lorsque nous formatons une partition ( high-level formatting
). Les partitions et les systèmes de fichiers permettent de classer et d'organiser facilement nos données sur le périphérique de stockage physique.
DISQUES DURS
Le terme "secteur" peut désigner un secteur physique ou secteur logique . Au début des disques durs, il n'y avait que des secteurs physiques créés en divisant les grappes/pistes des disques rotatifs en petites parties. C ylinder/ H ead/ S Le secteur de la santé (CHS) a été une méthode populaire pour répondre aux besoins de la population avant l'entrée en vigueur de l'accord de libre-échange entre l'UE et les États-Unis. L ogique B serrure A ddressing (LBA) a été mis au point. Au lieu de traiter directement les secteurs physiques, le système d'exploitation s'adresse désormais au micrologiciel du contrôleur de disque (par l'intermédiaire des commandes SATA/SCSI) en se référant à un numéro LBA. En retour, le microprogramme maintient un Correspondance entre LBA et CHS lui-même, qui comprend CEC , Liste G (table des défauts du disque), etc. Cette cartographie (1:1 / séquencée / linéaire) ( ref ) est créé au cours de la low-level formatting
de l'unité de disque lors de sa fabrication, qui ne change jamais, sauf si un secteur est marqué comme mauvais et réaffecté à un secteur de rechange. Le système d'exploitation/système de fichiers connaît donc la géométrie physique du disque, qui est proportionnelle à la géométrie des LBA.
STOCKAGE FLASH
Les supports flash (disques SSD, eMMC, UFS, cartes SD, etc.) ne comportent pas de disques rotatifs et donc pas de cylindres. La flash NAND est constituée de cellules de silicium, chaque cellule étant composée d'un ( S ingle- L pèle- mêle C ell), deux ( M ulti- LC ), trois ( T riple- LC ) ou quatre ( Q uad- LC ). Les cellules sont regroupées en pages (par exemple de 4KB) et les pages en effacer les blocs (par exemple, 128 KB). Les LBA à P hysical B serrure A La cartographie des adresses est entièrement contrôlée par F cils T ranslation L ayer ; une partie du micrologiciel du contrôleur flash. Le système d'exploitation n'en sait rien, il peut voir au maximum les LBA, mais pas ce qui se passe en dessous. Il ne voit même pas les CEC de cellules de mémoire défaillantes, et c'est pourquoi nous ne nous rendons pas compte de la mauvaise santé de l'eMMC tant qu'elle n'est pas défaillante, sauf en lisant la liste des cellules de mémoire. EXT_CSD
(nécessite Root) en utilisant mmc-utils ou de /sys/class/mmc_host/*/*/life_time
(si le pilote le permet).
Étant donné qu'une page de mémoire ne peut pas être simplement écrasée, contrairement aux disques durs, une page entière peut être écrasée. EraseBlock doit être Effacé avant d'être Programmé (écrit). Un effet secondaire est qu'un certain nombre de pages sont effacées/réécrites et que le mappage physique change même si un petit fichier est modifié. Ce processus inutile de lecture-modification-écriture ( RMW ) est appelé W rite A mplification. Sur les disques durs, les fichiers ne sont pas physiquement remplacés, sauf s'ils sont raccourcis ou allongés. Le système d'exploitation est conscient de ces changements physiques sur le disque dur, mais pas sur la mémoire flash.
QU'EST-CE QUE LE SECTEUR ?
En fin de compte, ce qui nous intéresse, c'est le secteur logique. Les supports de stockage informent le système d'exploitation de la taille de leur secteur logique, mais "le par défaut de 512 couvre la plupart du matériel" parce que les disques durs ont utilisé 512B
depuis le début, même si les choses ont changé avec l'arrivée des Format 4Kn pour les disques durs également. 512B
est la taille que le système d'exploitation voit, en réalité elle est un peu plus grande pour faire de la place à l'en-tête, à l'ECC, etc. La taille physique d'un secteur de stockage flash est de sans utilité à nous.
Vos questions :
J'aimerais savoir si un certain fichier se déplace sur la mémoire Flash (stockage interne), entre les écritures/mises à jour.
Cela dépend de la définition de "déplacer" . Sur une mémoire flash, même si vous n'écrivez pas dans un fichier, celui-ci peut continuer à changer d'emplacement physique réel en raison du bruit de fond. G arbage C ollection ; un phénomène contrôlé par le FTL en interne pour réduire la WA, pour atteindre les objectifs de la FTL. Nivellement de l'usure et de fournir un débit d'écriture élevé ( Programme ) en supprimant pages non valides en arrière-plan ( Effacer ).
Existe-t-il un moyen de connaître l'emplacement du fichier sur la mémoire Flash (numéro de cluster, numéro de secteur, etc.) ?
Oui, vous pouvez obtenir les adresses de bloc du système de fichiers d'un fichier qui ont une correspondance linéaire avec les LBA du périphérique de bloc sous-jacent (partition). Mais ces adresses ne sont pas les adresses réelles/physiques d'un fichier. l'emplacement du fichier sur la mémoire Flash . Cependant, on ne se préoccupe généralement pas de l'emplacement physique réel, à moins qu'il ne s'agisse d'un cas de criminalistique ou de récupération de données.
EXEMPLE
~# cat /sys/block/mmcblk0/queue/logical_block_size
512
~# blockdev --getss /dev/block/by-name/cache
512
~# tune2fs -l /dev/block/by-name/cache | grep 'Block size'
Block size: 4096
La taille du secteur est donc ici de 512B alors que la taille des blocs du système de fichiers est de 4KiB. Créons un fichier de test :
~# echo foobar >/cache/test_file
~# cat /cache/test_file
foobar
~# filefrag -sv -b512 /cache/test_file
Filesystem type is: ef53
File size of /cache/test_file is 7 (8 block of 512 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 7: 307200.. 307207: 8: last,eof
/cache/test_file: 1 extent found
* debugfs -R 'stat test_file' /dev/block/by-name/cache
peut également être utilisé à la place de filefrag
Le fichier créé (d'une taille de 7 octets) occupe 1 bloc du système de fichiers. -b 512
convertit la taille du bloc (4096B) en taille du secteur (512B). Le fichier "test_file" devrait être à 307200 th Même chose pour la partition et le système de fichiers, car le système de fichiers occupe la totalité de la partition :
~# blockdev --getsize64 /dev/block/by-name/cache | awk '$1 /= 4096'
65536
~# tune2fs -l /dev/block/by-name/cache | grep 'Block count'
Block count: 65536
Lisons le fichier directement à partir de la partition :
~# dd if=/dev/block/by-name/cache skip=307200 count=1 | head -c7
foobar
Il est là. Localisez maintenant le fichier à partir du début de l'eMMC :
~# readlink /dev/block/by-name/cache
/dev/block/mmcblk0p25
~# cat /sys/block/mmcblk0/mmcblk0p25/start
7471104
~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7
foobar
Ainsi, même si le système de fichiers et la partition sont supprimés, vous pouvez lire le fichier (à condition qu'il ne soit pas écrasé).
Poursuivons nos recherches :
~# rm /cache/test_file; sync; echo -n 1 >/proc/sys/vm/drop_caches
~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7
foobar
Le fichier est supprimé du système de fichiers, mais il est physiquement toujours présent. Demandons à FTL de le supprimer définitivement :
~# fstrim /cache; sync; echo -n 1 >/proc/sys/vm/drop_caches
~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7
Et il n'y en a plus. Mais il est très probablement toujours là, quelque part dans le monde. O ver- P rovisionnement de l'espace Le projet de loi sur l'immigration et la protection des réfugiés est en cours d'élaboration. Effacé dans la prochaine CG, mais nous ne savons pas où elle se trouve.
Remarque :
-
dd
sur des cloisons nues est un véritable fléau. Soyez prudents !
-
tune2fs
y filefrag
font partie de e2fsprogs . filefrag
n'est pas livré avec Android, construisez-le à partir des sources ou essayez d'utiliser la fonction celui-ci . fstrim
est une applet busybox.
RELATED :