Comment puis-je vérifier l'emplacement d'un fichier (E.G. Cluster ou Sector #) dans le stockage interne? -- internal-storage domaine et file-system domain android en relation problème

How Can I Check the Location of a File (e.g. Cluster or Sector #) in the Internal Storage?



1
vote

problème

français

J'aimerais savoir si je certains fichiers se déplace sur la mémoire flash (stockage interne), entre les écrit / mises à jour.

Y a-t-il une manière que je puisse obtenir l'emplacement du fichier dans la mémoire flash?
(Numéro de cluster, numéro du secteur, etc.)

J'utilise Android V8,
et peut soit installer utiliser une application pour cela,
Ou utilisez la ligne de commande si une commande pertinente existe dans l'invite de la commande Linux que Android a.

langue Anglaise

I would like to know If I certain file moves on the Flash memory (internal storage), between writes/updates to it.

Is there some way I can get the file's location on the Flash memory?
(Cluster Number, Sector Number, etc)

I am using Android v8,
and can either install use an App for that,
or use the Command Line, If a relevant command exists in the Linux command-prompt that Android has.

     

Liste de réponses

0
 
vote

Je suppose en disant cluster vous voulez dire Windows ' Unité d'allocation , communément appelée block dans le monde de Linux. C'est une unité de stockage de données un système de fichiers utilise. Un groupe / bloc peut comprendre ou correspondre à plusieurs secteurs sur le support de stockage sous-jacent (disque dur ou stockage flash). Le secteur est l'unité minimale atomique de stockage qu'un système d'exploitation peut lire ou écrire. La taille du bloc est décidée au moment de la création de systèmes de fichiers I.e. Lorsque nous formatons une partition ( high-level formatting ). Les partitions et les systèmes de fichiers facilitent la catégorisation et l'organisation de nos données sur le périphérique de stockage physique.

lecteurs de disque dur

"Secteur" peut faire référence à un Secteur physique ou Secteur logique . Au début du disque dur, il n'y avait que des secteurs physiques créés en divisant les grappes / pistes sur des disques tournantes en petites pièces. c ylinder / h EAD / S ETECT (CHS) a été une méthode populaire d'adressage avant la l ogical B LOCK A DDDRESSING (LBA) a été conçu. Au lieu de traiter directement des secteurs physiques, OS se propose désormais au micrologiciel du contrôleur de disque (via les commandes SATA / SCSI) en référence à un numéro de LBA. Le micrologiciel en retour conserve un LBA à la cartographie des CHS , qui comprend ECC , G-list (table de défaut du disque), etc. Ce mappage (1: 1 / séquencé / linéaire) ( ref ) est créé pendant low-level formatting du lecteur de disque lors de la fabrication, qui ne change jamais, sauf si un secteur est marqué mauvais et remappé dans un secteur de rechange . Donc, le système d'exploitation / système de fichiers est conscient de la géométrie physique du disque, qui est une propertialité à la géométrie de LBA.

stockage flash

sur le support flash (SSDS, EMMC, UFS, SD, etc.) Il n'y a pas de disques en rotation et donc pas de cylindres. NAND flash est fabriqué à partir de cellules de silicium, chaque cellule est constituée d'un ( S INGLE- L EVEL- ELL), deux ( M ulti- LC

), trois ( t ralon- LC ) ou quatre ( q uad - bits LC ). Les cellules sont regroupées dans pages (par exemple de 4 Ko) et des pages dans blocs effaçants (par exemple de 128 Ko). LBAS à p hysical B LOCK A DRESSES Mappage est entièrement contrôlé par F Lash t la rançon l ayer; une partie du micrologiciel du contrôleur Flash. Le système d'exploitation ne sait rien à ce sujet, cela peut voir au maximum les LBA, pas ce qui se passe en dessous. Pas même le ECC de cellules de mémoire défaillantes, et c'est pourquoi nous ne réalisons pas le mauvaise santé de EMMC, sauf si elle échoue, sauf en lisant EXT_CSD (nécessite une racine) en utilisant MMC-Utils ou de 9988777663 (si le pilote prend en charge).

Étant donné qu'une page de mémoire ne peut pas être juste écrasée contrairement au disque dur, tout EraseBlock doit être effacé avant d'être programmé (écrit). Un effet secondaire est qu'un certain nombre de pages sont Rased / ré-écrit et le mappage physique change même si un petit fichier est édité. Ce relecture inutile-écrire-écrire ( RMW ) est appelé w rite a mplification. Sur le disque dur, les fichiers ne sont pas remplacés physiquement, sauf réduisent ou allongé. Le système d'exploitation est conscient de ces modifications physiques sur le disque dur, mais pas sur la mémoire flash.

Qu'est-ce que le secteur?

Ainsi, après tout ce que nous sommes concernés est le secteur logique. Le support de stockage informe le système d'exploitation de sa taille de secteur logique, mais "the Par défaut de 512 couvre la plupart du matériel" car les disques durs utilisent 512B à partir des premiers jours, bien que les choses ont changé avec < Un href = "https://fr.m.wikipedia.org/wiki/advanced_format" rel = "Nofollow NOREFERRER"> Format 4KN pour le disque dur. 512B Est-ce que la taille de l'OS voit, en réalité, il est un peu plus grand pour faire de la place à l'en-tête, au CEC, etc. La taille du secteur physique sur le stockage flash est NO UTILISATION à nous.

vos requêtes:

J'aimerais savoir si un certain fichier se déplace sur la mémoire flash (stockage interne), entre les écrit / mises à jour.

Cela dépend de la définition de "Move" . Sur le stockage flash, même si vous n'écrivez pas à un fichier, il peut continuer à changer son véritable emplacement physique en raison de l'arrière-plan g arbage C Oollection; Un phénomène contrôlé par la FTL à l'intérieur pour réduire WA, pour atteindre usure de nivellement et pour fournir un débit d'écriture élevé ( programme les opérations) en supprimant pages non valides en arrière-plan ( efface opérations).

Y a-t-il une manière que je puisse obtenir 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 de système de fichiers d'un fichier qui possèdent un mappage linéaire avec LBA de dispositif de bloc sous-jacent (partition). Mais ces adresses ne sont pas l'emplacement réel / physique sur la mémoire flash . Cependant, il n'est même pas préoccupé par un véritable emplacement physique, sauf si certaines criminalistes ou la récupération de données sont impliqué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

de sorte que la taille du secteur ici est de 512b tandis que la taille du bloc de 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

* 9988777668 peut également être utilisé à la place de filefrag

Fichier créé (de la taille de 7 octets) occupe 1 bloc de système de fichiers. low-level formatting0 Convertit la taille du bloc (4096b) en taille de secteur (512b). "Test_file" devrait être à 307200 th le secteur, idem pour la partition et le système de fichiers, car le système de fichiers occupe une partition complète:

low-level formatting1

Lisons le fichier directement à partir de la partition:

low-level formatting2

C'est là. Localisez maintenant le fichier à partir du début de EMMC:

  low-level formatting3  

Donc, même si le système de fichiers et la partition sont supprimés, vous pouvez lire le fichier (à condition que ce ne soit pas écrasé).

Faites de plus en plus de creuser:

low-level formatting4

Le fichier est supprimé du système de fichiers, mais physiquement toujours là. Demandons à FTL de la supprimer de manière permanente:

low-level formatting5

Et c'est parti. Mais surtout, il est toujours là quelque part dans o ver- p espace de révision, prévu pour être effacé dans le prochain gc , juste nous ne savons pas où il se trouve.

note:

  • low-level formatting6 sur les partitions nues est une kille . Soyez prudent!
  • low-level formatting7 et 99887776618 fait partie de e2fsprogs . low-level formatting9 n'est pas expédié avec Android, de la construction à partir de la source ou d'essayer Celui-ci < / a>. EXT_CSD0 est une applet de butée.

lié:

  • Quand FRIM devrait-il exécuter FRMIM?
  • Qu'est-ce qui rend la récupération des données supprimées difficiles / impossibles?

 

I assume by saying cluster you mean Windows' allocation unit, commonly called block in Linux world. It's a unit of data storage a filesystem uses. A cluster/block may consist of or correspond to multiple sectors on underlying storage media (HDD or flash storage). Sector is the minimum atomic unit of storage an OS can read or write. Block size is decided at the time of filesystem creation i.e. when we format a partition (high-level formatting). Partitions and filesystems make it easy to categorize and organize our data on the physical storage device.

HARD DISK DRIVES

"Sector" may refer to a physical sector or logical sector. In early days of HDDs there were only physical sectors created by dividing clusters/tracks on rotating disks into small parts. Cylinder/Head/Sector (CHS) has been a popular method of addressing before the Logical Block Addressing (LBA) was devised. Instead of directly dealing with physical sectors, OS now talks to disk controller firmware (through SATA/SCSI commands) referring an LBA number. Firmware in return maintains an LBA to CHS mapping itself, which includes ECC, G-list (disk's defect table) etc. This mapping (1:1 / sequenced / linear) (ref) is created during low-level formatting of disk drive when manufacturing, which never changes except if some sector is marked bad and remapped to some spare sector. So the OS / filesystem is aware of the physical geometry of the disk, which is propotional to the geometry of LBAs.

FLASH STORAGE

On flash media (SSDs, eMMC, UFS, SD cards etc.) there are no rotating disks and hence no cylinders. NAND flash is made of silicon cells, each cell consists of one (Single-Level-Cell), two (Multi-LC), three (Triple-LC) or four (Quad-LC) bits. Cells are grouped into pages (e.g. of 4KB) and pages into erase blocks (e.g. of 128 KB). LBAs to Physical Block Addresses mapping is fully controlled by Flash Translation Layer; a part of flash controller firmware. OS knows nothing about it, it can see at maximum the LBAs, not what's happening below it. Not even the ECC of failed memory cells, and that's why we don't realize the bad health of eMMC unless it fails, except by reading EXT_CSD (requires root) using mmc-utils or from /sys/class/mmc_host/*/*/life_time (if driver supports).

Since a page of memory can't be just overwritten unlike HDDs, a whole EraseBlock has to be Erased first before being Programmed (written). A side effect is that a number of pages are erased/re-written and the physical mapping changes even if a small file is edited. This unnecessary read-modify-write (RMW) is called Write Amplification. On HDDs, files aren't physically replaced unless shortened or elongated. OS is aware of these physical changes on HDD, but not on flash memory.

WHAT IS SECTOR?

So after all what we are concerned with is logical sector. Storage media informs the OS of its logical sector size but xe2x80x9cthe default of 512 covers most hardwarexe2x80x9d because HDDs have been using 512B from early days, though things have changed with 4Kn format for HDDs too. 512B is the size what OS sees, in actual it's a bit larger to make some room for header, ECC etc. Physical sector size on flash storage is of no use to us.


Your queries:

I would like to know if a certain file moves on the Flash memory (internal storage), between writes/updates to it.

It depends on the definition of xe2x80x9cmovexe2x80x9d. On flash storage, even if you don't write to a file, it may keep on changing its true physical location due to background Garbage Collection; a phenomenon controlled by FTL internally to reduce WA, to achieve Wear Leveling and to provide high write throughput (Program operations) by deleting invalid pages in background (Erase operations).

Is there some way I can get the file's location on the Flash memory (Cluster Number, Sector Number etc.)?

Yes you can get the filesystem block addresses of a file which have a linear mapping with LBAs of underlying block device (partition). But these addresses aren't the actual/physical file's location on the Flash memory. However usually one isn't concerned with true physical location unless some forensics or data recovery is involved.

EXAMPLE

~# 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 

So the sector size here is 512B while filesystem block size is 4KiB. Let's create a test file:

~# 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 can also be used in place of filefrag

Created file (of 7 bytes size) occupies 1 filesystem block. -b 512 converts block size (4096B) to sector size (512B). "test_file" should be at 307200th sector, same for partition and filesystem because filesystem occupies whole 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 

Let's read the file directly from partition:

~# dd if=/dev/block/by-name/cache skip=307200 count=1 | head -c7 foobar 

It's there. Now locate the file from the start of 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 

So even if filesystem and partition are deleted, you can read the file (provided that it's not overwritten).

Let's do some more digging:

~# 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 

File is deleted from filesystem, but physically still there. Let's ask FTL to delete it permanently:

~# fstrim /cache; sync; echo -n 1 >/proc/sys/vm/drop_caches ~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7 

And it's gone. But most probably it's still there somewhere in Over-Provisioning Space, scheduled to be Erased in next GC, just we don't know where it is.

Note:

  • dd on naked partitions is a killer. Be cautious!
  • tune2fs and filefrag are part of e2fsprogs. filefrag isn't shipped with Android, build from source or try this one. fstrim is a busybox applet.

RELATED:

  • When should fstrim run?
  • What makes recovery of deleted data difficult / impossible?
 
 

Questions connexes

0  Changer de fichier (images, vidéos) horodatage du nom de fichier  ( Change file pictures videos timestamp from filename ) 
Lorsque vous déplacez des fichiers autour de Tru différents DirS et sur PC / Smartphone, l'horodatage pour la dernière date modifiée est généralement réinitia...

3  Où devrais-je installer Toybox?  ( Where should i install toybox ) 
Je possède un relais de Samsung Galaxy S enraciné 4G en cours d'exécution Android 4.1.2. Si vous avez Android 6.0 "guimauve" ou mieux, vous avez Toybox . I...

29  Quel est l'équivalent Android de / etc / fstab?  ( Whats the android equivalent of etc fstab ) 
Parfois, je souhaite vraiment qu'ils ne soient pas nombreux avec Linux autant! Je sais qu'il y a un /etc/fstab là quelque part, mais où? J'aimerais monter...

30  Comment puis-je voir la table de partition interne Android?  ( How can i view the android internal partition table ) 
Je suis enraciné mon appareil, mettez-le en mode de récupération et je l'ai lié à PC par joke adb < / a>. Comment puis-je afficher la liste des périphériqu...

5  Comment vérifier le système de fichiers (/ sdcard) pour des erreurs?  ( How to check filesystem sdcard for errors ) 
Je voudrais vérifier mon / sdcard, et éventuellement d'autres partitions internes également, pour des erreurs sur le niveau du système de fichiers. Je me de...

1  Comment puis-je vérifier l'emplacement d'un fichier (E.G. Cluster ou Sector #) dans le stockage interne?  ( How can i check the location of a file e g cluster or sector in the interna ) 
J'aimerais savoir si je certains fichiers se déplace sur la mémoire flash (stockage interne), entre les écrit / mises à jour. Y a-t-il une manière que je pu...

-2  Comment puis-je faire enrichir le dossier système sans enraciner?  ( How can i make the system folder writable without rooting ) 
Mon appareil est Sprint Samsung Galaxy S III Numéro de modèle: SPH-L710 Je veux faire cela, car je veux arrêter le son de la caméra. Et je ne veux pas...

0  Pourquoi ma partition de données (non broquettée) / de données semble être vide?  ( Why my unrooted data partition appears to be empty ) 
J'ai Quelques émissions avec la partition de ma / données. Entre autres choses, lorsque je parcourt son contenu avec l'application Astro, il semble être vid...

3  Type de fichier inconnu contenant un virus  ( Unknown file type containing a virus ) 
Je vais essayer de garder l'histoire aussi courte que possible pour que vous puissiez avoir une vision plus claire de ce qui est ma préoccupation. Bien que je...

4  Quand faut-il courir FRim?  ( When should fstrim run ) 
basé sur ce thread de forum cyanogenmod , j'ai essayé Pour résoudre le retard dans la mise en marche des applications et la commutation entre les application...




© 2022 www.demandez.top All Rights Reserved. Questions et réponses Accueil Tous les droits sont réservés