¿Cómo puedo verificar la ubicación de un archivo (por ejemplo, el clúster o el sector #) en el almacenamiento interno? -- internal-storage campo con file-system camp android Relacionados El problema

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


1
vote

problema

Español

Me gustaría saber si cierto archivo se mueve en la memoria flash (almacenamiento interno), entre las escrituras / actualizaciones a él.

¿Hay alguna forma en que puedo obtener la ubicación del archivo en la memoria flash?
(Número de clúster, número de sector, etc.)

Estoy usando Android V8,
y puede instalar usar una aplicación para eso,
o use la línea de comandos, si existe un comando correspondiente en el indicador de comandos de Linux que tiene Android.

Original en ingles

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.

     

Lista de respuestas

0
 
vote

Supongo diciendo cluster te refieres a Windows ' unidad de asignación , comúnmente llamada bloque en el mundo de Linux. Es una unidad de almacenamiento de datos que utiliza un sistema de archivos. Un grupo / bloque puede consistir o corresponder a varios sectores en medios de almacenamiento subyacentes (HDD o almacenamiento flash). El sector es la unidad atómica mínima de almacenamiento, un sistema operativo puede leer o escribir. El tamaño de bloque se decide en el momento de la creación de sistemas de archivos, es decir, cuando formamos una partición ( high-level formatting ). Las particiones y los sistemas de archivos hacen que sea fácil categorizar y organizar nuestros datos en el dispositivo de almacenamiento físico.

drives de disco duro

"sector" puede referirse a un sector físico o o . En los primeros días de HDD, solo hubo sectores físicos creados al dividir grupos / pistas en discos giratorios en piezas pequeñas. C ylinder / h EAD / s s s l ogical b Lock A Ddressing (LBA) se ideó. En lugar de tratar directamente con los sectores físicos, OS ahora habla con el firmware del controlador de disco (a través de comandos SATA / SCSI) que refiere un número LBA. El firmware a cambio mantiene un LBA a CHS Mapeo mismo, que incluye ecc , LISTA G (tabla de defectos del disco), etc. Esta asignación (1: 1 / secuencenced / lineal) ( ref ) se crea durante low-level formatting de la unidad de disco cuando la fabricación, que nunca cambia, excepto si algún sector está marcado por mal y se remuya a algún sector de repuesto . Por lo tanto, el sistema operativo / archivos de archivos es consciente de la geometría física del disco, que es propuesta a la geometría de LBAS.

flash storage

En medios flash (SSD, EMMC, UFS, tarjetas SD, etc.) No hay discos giratorios y, por lo tanto, no hay cilindros. NAND FLASH está hecho de células de silicona, cada celda consiste en una ( s ingle- l evel- c ell), dos ( M ulti- lc ), tres ( t riple- lc ) o cuatro ( q uad - Bits de lc ). Las células se agrupan en páginas (por ejemplo, de 4kb) y páginas en bloques de borrado (por ejemplo, de 128 kb). LBAS a p hisical B Lock A Ddresses Mapping está completamente controlado por f lags t Ranslation l Ayer; Una parte del firmware del controlador Flash. OS no sabe nada al respecto, puede ver en el máximo la LBA, no lo que está sucediendo debajo de ella. Ni siquiera el ecc de celdas de memoria fallidas, y por eso no nos damos cuenta de la mala salud de EMMC a menos que falle, excepto leyendo EXT_CSD (requiere root) usando mmc-utils o de /sys/class/mmc_host/*/*/life_time (si es compatible con el controlador).

Dado que una página de memoria no se puede sobrescribir, a diferencia de los HDD, todo ERASEBLOCK tiene que ser borrado primero antes de ser programado (escrito). Un efecto secundario es que varias páginas se borran / reescritas y los cambios de mapeo físico incluso si se edita un archivo pequeño. Este innecesario leído-modify-write ( RMW ) se llama w rite a mplification. En HDD, los archivos no se reemplazan físicamente a menos que sean acortados o alargados. OS es consciente de estos cambios físicos en HDD, pero no en la memoria flash.

¿Qué es el sector?

Entonces, después de todo, a lo que nos preocupa es el sector lógico. El almacenamiento de medios informa al sistema operativo de su tamaño del sector lógico pero "el predeterminado de 512 cubre la mayoría de los hardware" porque HDDS han estado usando 512B de Early Days, aunque las cosas han cambiado con Formato 4kn para HDD también. ABCDEFGHIJKLMN5 es el tamaño en lo que ve el sistema operativo, en real, es un poco más grande para hacer un poco de espacio para el encabezado, el ECC, etc. El tamaño del sector físico en el almacenamiento flash es sin uso a nosotros.


sus consultas:

Me gustaría saber si un determinado archivo se mueve en la memoria flash (almacenamiento interno), entre las escrituras / actualizaciones a él.

Depende de la definición de "Mover" . En el almacenamiento de flash, incluso si no escribe a un archivo, puede seguir cambiando su verdadera ubicación física debido al fondo g arback c oloection; un fenómeno controlado por FTL internamente para reducir WA, para lograr la nivelación de desgaste y para proporcionar un rendimiento de alto rendimiento ( OPERACIONES ) al eliminar Páginas no válidas en el fondo ( Borrar Operaciones).

¿Hay alguna forma en que puedo obtener la ubicación del archivo en la memoria flash (número de clúster, número de sector, etc.)?

Sí, puede obtener las direcciones de bloques de sistema de archivos de un archivo que tenga un mapeo lineal con LBA de dispositivo de bloqueo subyacente (partición). Pero estas direcciones no son la ubicación real / física del archivo en la memoria flash . Sin embargo, por lo general, uno no se ocupa de la verdadera ubicación física, a menos que se haya involucrado algún forense o recuperación de datos.

Ejemplo

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

Así que el tamaño del sector aquí es 512B, mientras que el tamaño de bloque de sistemas de archivos es 4kib. Vamos a crear un archivo de prueba:

  ~# 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 también se puede usar en lugar de filefrag

Archivo creado (de 7 bytes Tamaño) ocupa 1 bloque de sistema de archivos. ABCDEFGHIJKLMNABCDEFGHIJKLMN10 Convierte el tamaño del bloque (4096b) al tamaño del sector (512b). "Test_File" debe ser el sector 307200 TH , lo mismo para la partición y el sistema de archivos porque el sistema de archivos ocupa la partición completa:

  low-level formatting1  

Leamos el archivo directamente desde la partición:

  low-level formatting2  

está ahí. Ahora localice el archivo desde el inicio de EMMC:

  low-level formatting3  

Entonces, incluso si se eliminan el sistema de archivos y la partición, puede leer el archivo (siempre que no esté sobrescrito).

Vamos a hacer un poco más de excavación:

  low-level formatting4  

El archivo se elimina de sistema de archivos, pero físicamente todavía allí. Pedamos que FTL lo elimine permanentemente:

  low-level formatting5  

y se ha ido. Pero lo más probable es que todavía esté allí en algún lugar en o ver- p rocitioning espacio, programado para ser borrado en el próximo GC , simplemente no sabemos dónde está.

Nota:

  • low-level formatting6 en las particiones desnudas es un asesino. ¡Sea cauteloso!
  • low-level formatting7 y low-level formatting8 son parte de son parte de son parte de son parte de e2fsprogs . ABCDEFGHIJKLMNABCDEFGHIJKLMN19 no se envía con Android, construir desde su origen o probar este < / a>. ABCDEFGHIJKLMNABCDEFGHIJKLMN20 es un applet Busybox.

relacionado:

  • ¿Cuándo debería funcionar FSTIM?
  • ¿Qué hace que la recuperación de datos eliminados sea difícil / imposible?

 

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?
 
 

Relacionados problema

0  Almacenamiento de aplicaciones en almacenamiento interno  ( Storing apps on internal storage ) 
He comprado recientemente a Karbonn A15, estoy enfrentando 2 problemas en él. Cómo almacenar imágenes tomadas de la cámara a la tarjeta SD, actualmente est...

1  1,5 GB de datos en internos (datos del sistema) - ¿Cómo puedo eliminar?  ( 1 5gb of data in internal system data how can i delete ) 
Parece que tengo 1,5 GB de datos en internos (datos del sistema): ¿cómo puedo eliminar? ...

0  Bajo almacenamiento interno, memoria de mensajes completos y problemas de lentitud en Samsung Galaxy y DuoS Lite  ( Low internal storage message memory full and sluggishness problems on samsung g ) 
Actualmente fijo ese error al desinstalar todos los programas de memoria internos y reinstalarlos (en otras palabras, formatear su caché de datos). También en...

9  Mueva el almacenamiento de correo desde la memoria interna del teléfono a la tarjeta SD  ( Move mail storage from phones internal memory to the sd card ) 
No estoy demasiado preocupado por el aspecto de seguridad de poner mi correo en la tarjeta SD, sin embargo, estoy muy interesado en mover el almacenamiento de...

1  Error al migrar datos de MicroSD internos al almacenamiento interno a pesar del espacio disponible aparente  ( Error when migrating data from internal microsd to internal storage despite appa ) 
Tengo un MOTO G3 (Android 6.0) con un microSD de 2 GB que configuré para usarlo como almacenamiento interno. Ha estado trabajando bien durante años, pero quie...

1  Después de eliminar la aplicación de sistema antiguo e instalar la nueva versión, se cierran  ( After removing old system app and installing the new version it forces close ) 
Estoy usando una ROM personalizada de CyanogenMod 7 (Android 2.3.5) en ZTE Racer. La ROM vino con algunas aplicaciones de sistema predeterminado como Gmail, G...

1  ¿Es posible dejar algunas aplicaciones en la memoria interna mientras usa S2E?  ( Is it possible to leave some apps in the internal memory while using s2e ) 
bueno, ¿es posible? Tengo un Galaxy Ace con la ROM oficial de CyanogenMod. Solo tengo una tarjeta Micro SD de clase 4 y está utilizando la aplicación SD Speed...

0  ¡Mi deseo HTC se ha llenado repentinamente y está mostrando el "espacio en disco bajo!" Mensaje [duplicado]  ( My htc desire has suddenly become full and is displaying the disk space low m ) 
Esta pregunta ya tiene respuestas aquí : cerrado 9 años . posible duplicado: Desire HTC ba...

6  Almacenamiento interno, Almacenamiento de teléfonos y Tarjeta SD  ( Internal storage phone storage and sd card ) 
Soy nuevo en Android (v4.0.4) y tratando de entenderlo. Al observar la configuración de almacenamiento, encontré que los siguientes se enumeran: almacen...

17  ¿Por qué los jugadores de música no pueden encontrar mis archivos de audio?  ( Why cant music players find my audio files ) 
En mi nexo 4, hay una carpeta llamada /sdcard/Music/ (o simplemente /Music cuando está navegando por el almacenamiento del teléfono; Windows 7 lo llama C...

0  ¿Cuánto espacio en el disco utiliza Android 2.3.3 y sus aplicaciones predeterminadas?  ( How much disk space does android 2 3 3 and its default apps use ) 
Los diferentes teléfonos anuncian diferentes espacios en disco totales. Cuando recibe un teléfono nuevo con Android 2.3.3 y sus aplicaciones predeterminadas, ...

13  "Almacenamiento insuficiente" al intentar instalar nueva aplicación  ( Insufficient storage when trying to install new app ) 
Cada vez que voy a instalar una nueva aplicación, recibo el mensaje "Almacenamiento insuficiente" y no se puede instalar nada ! Estoy usando Samsung GT1906...

0  ¿Qué datos contiene la aplicación Google Drive en un teléfono inteligente Android?  ( What data does the google drive app contain in an android smartphone ) 
Quiero eliminar algunos de mis datos de Aplicaciones de Android debido a problemas de almacenamiento. Veo que mi aplicación de Google Drive contiene muchos da...

2  ¿Por qué una aplicación guardada de tarjeta SD utiliza la memoria del teléfono?  ( Why an sd card saved app uses phone memory ) 
últimamente tuve problemas con la memoria interna de My Teléfono (Samsung Galaxy Mini GT-S5570) aw, así como con la memoria SMS. Borraron todos los mensajes n...

1  Tengo una tarjeta SD y todavía dice que el error en el almacenamiento suficiente [duplicar]  ( I have an sd card and it still says that error in sufficient storage ) 
Esta pregunta ya tiene respuestas aquí : Cómo instalar aplicaciones de Android a la tarjeta SD por d...




© 2021 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos