Como posso verificar a localização de um arquivo (por exemplo, cluster ou setor #) no armazenamento interno? -- internal-storage campo com file-system camp android Relacionado O problema

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


1
vote

problema

português

Eu gostaria de saber se eu determinado arquivo se move na memória flash (armazenamento interno), entre gravações / atualizações a ele.

Há alguma maneira de obter a localização do arquivo na memória flash?
(Número do cluster, número do setor, etc)

Eu estou usando o Android v8,
e pode instalar usar um aplicativo para isso,
ou use a linha de comando, se existir um comando relevante no comando linux - solicitar que o Android tenha.

Inglês Original

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 respostas

0
 
vote

Eu suponho dizendo cluster Você quer dizer Windows ' Unidade de alocação , comumente chamada bloco no mundo Linux. É uma unidade de armazenamento de dados que um sistema de arquivos usa. Um cluster / bloco pode consistir ou corresponder a vários setores na mídia de armazenamento subjacente (HDD ou armazenamento flash). O setor é a unidade atômica mínima de armazenamento, um sistema operacional pode ler ou escrever. O tamanho do bloco é decidido no momento da criação do sistema de arquivos I.E. Quando formamos uma partição ( high-level formatting ). Partições e sistemas de arquivos facilitam a categorização e organizar nossos dados no dispositivo de armazenamento físico.

drives de disco rígido

"setor" pode se referir a um setor físico ou . Nos primeiros dias dos HDDs, havia apenas setores físicos criados pela divisão de clusters / faixas em discos rotativos em pequenas partes. c ylinder / h ead / s etor (chs) tem sido um método popular de endereçamento antes do l ogical b bloqueio A ddressing (LBA) foi concebido. Em vez de lidar diretamente com setores físicos, o sistema operacional agora fala com firmware do controlador de disco (através de comandos SATA / SCSI) referindo um número de LBA. Firmware no retorno mantém um LBA para o mapeamento de CHS em si, que inclui ECC , G-list (tabela de defeito do disco) etc. Este mapeamento (1: 1 / sequenciado / linear) ( ref ) é criado durante low-level formatting da unidade de disco ao fabricar, que nunca muda, exceto se algum setor estiver marcado em algum setor sobressalente. . Assim, o sistema operacional / sistema de arquivos está ciente da geometria física do disco, que é propotional para a geometria de LBAs.

armazenamento flash

Na mídia flash (SSDs, EMMC, UFS, cartões SD, etc.) Não há discos rotativos e, portanto, sem cilindros. A NAND Flash é feita de células de silício, cada célula consiste de um ( s ingle- l evel- c ell), dois ( M ulti- lc ), três ( t riple- lc ) ou quatro ( q uad - lc ) bits. As células são agrupadas em páginas (por exemplo, de 4KB) e páginas em blocos de apagamento (por exemplo, de 128 kb). Lbas para p hysical b bloqueio um mapeamento de ddresses é totalmente controlado por f lash t ranslation l ayer; uma parte do firmware do controlador flash. OS não sabe nada sobre isso, pode ver no máximo os lbas, não o que está acontecendo abaixo dele. Nem mesmo o ECC de células de memória falhada, e é por isso que não percebemos o Mau saúde do EMMC, a menos que falhe, exceto lendo ABCDEFGHIJKLMNABCDEFGHIJKLMN2 (requer raiz) usando MMC-utils ou de /sys/class/mmc_host/*/*/life_time (se o driver suporta).

Como uma página da memória não pode ser apenas sobrescrita ao contrário do HDDs, um Eraseblock tem que ser apagado primeiro antes de ser programado (escrito). Um efeito colateral é que várias páginas são apagadas / reescritas e as alterações físicas de mapeamento, mesmo que um pequeno arquivo seja editado. Esta gravação de leitura desnecessária - escrita ( RMW ) é chamado w rite a mplification. Em HDDs, os arquivos não são fisicamente substituídos, a menos que encurtados ou alongados. O sistema operacional está ciente dessas alterações físicas no HDD, mas não na memória flash.

o que é setor?

Então, depois de tudo o que estamos preocupados é o setor lógico. Mídia de armazenamento informa o sistema operacional do tamanho do setor lógico, mas "o https://android.googlesource.com/kernel/common/+/refs/heads/ ndroid-3.18 / bloco / blk-settings.c # 374 "rel =" nofollow noreferro "> padrão de 512 A maioria dos hardware" porque os HDDs estão usando ABCDEFGHIJKLMNABCDEFGHIJKLMN4 Os primeiros dias, embora as coisas tenham mudado com formato 4kn para o HDDS também. Abcdefghijklmn5 é o tamanho que OS vê, no real é um pouco maior para fazer algum espaço para o cabeçalho, ECC etc. O tamanho do setor físico no armazenamento flash é de nenhum uso para nós.


suas consultas:

.

Eu gostaria de saber se um determinado arquivo se move na memória flash (armazenamento interno), entre gravações / atualizações a ele.

Depende da definição de "mover" . No Armazenamento do Flash, mesmo que você não escreva em um arquivo, ele pode continuar mudando sua verdadeira localização física devido ao fundo g ária c Ollection; Um fenômeno controlado pela FTL internamente para reduzir o wa, para alcançar nivelamento de desgaste e para fornecer rendimento de alta gravação ( Programa Operações) por exclusão páginas inválidas no fundo ( apagamento operações).

.

Existe alguma maneira de obter o local do arquivo na memória flash (número do cluster, número do setor, etc.)?

Sim, você pode obter os endereços de blocos do sistema de arquivos de um arquivo que possuem um mapeamento linear com LBAs de dispositivo de bloco subjacente (partição). Mas esses endereços não são a localização real / física do arquivo na memória flash . No entanto, geralmente não se preocupa com a verdadeira localização física, a menos que algum forense ou recuperação de dados esteja envolvido.

exemplo

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

Assim, o tamanho do setor aqui é 512B enquanto o tamanho do bloco do sistema de arquivos é de 4kib. Vamos criar um arquivo de teste:

  ~# 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 também pode ser usado no lugar de ABCDEFGHIJKLMNABCDEFGHIJKLMN9

File criado (de 7 bytes tamanho) ocupa 1 bloco do sistema de arquivos. low-level formatting0 Converte tamanho do bloco (4096b) para o tamanho do setor (512B). "Test_File" deve ser no setor 307200 th, mesmo para partição e sistema de arquivos, pois o sistema de arquivos ocupa uma partição inteira:

  low-level formatting1   

Vamos ler o arquivo diretamente da partição:

  low-level formatting2   

Está lá. Agora localize o arquivo desde o início do EMMC:

  low-level formatting3   

Portanto, mesmo se o sistema de arquivos e partição forem excluídos, você pode ler o arquivo (desde que ele não seja sobrescrito).

Vamos fazer mais algumas escavar:

  low-level formatting4   

O arquivo é excluído do sistema de arquivos, mas ainda ainda está lá. Vamos pedir FTL para excluí-lo permanentemente:

  low-level formatting5   

e se foi. Mas provavelmente ainda está lá em algum lugar em o ver- p espaço de rovisioning, programado para ser apagado no próximo gc , só nós não sabemos onde é.

nota:

  • low-level formatting6 em partições nuas é um assassino. Seja cauteloso!
  • low-level formatting7 e low-level formatting8 faz parte de e2fsprogs . low-level formatting9 não é enviado com o Android, construir da origem ou tente este < / a>. EXT_CSD0 é um applet busybox.

relacionado:

  • quando deve fstrim executar?
  • O que torna a recuperação de dados excluídos difíceis / impossível?

 

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?
 
 

Perguntas relacionadas

0  Baixo armazenamento interno, memória de mensagem completa e lentos problemas no Samsung Galaxy y Duos Lite  ( Low internal storage message memory full and sluggishness problems on samsung g ) 
Atualmente, consertei esse erro desinstalando todos os programas de memória interna e reinstalá-los (em outras palavras, formatando seu cache de dados). Eu ta...

1  1,5 GB de dados em internos (dados do sistema) - Como posso excluir?  ( 1 5gb of data in internal system data how can i delete ) 
Parece que tenho 1,5 GB de dados em internos (dados do sistema) - como posso deletar? ...

9  Mover o armazenamento de correio da memória interna do telefone para o cartão SD  ( Move mail storage from phones internal memory to the sd card ) 
Eu não estou muito preocupado com o aspecto de segurança de colocar meu e-mail no cartão SD, no entanto estou muito interessado em mover o armazenamento de em...

1  Eu tenho um cartão SD e ainda diz esse erro em armazenamento suficiente [duplicado]  ( I have an sd card and it still says that error in sufficient storage ) 
. Esta pergunta já tem respostas aqui : como instalar aplicativos Android para o cartão SD por padrão...

0  Quais dados o aplicativo do Google Drive contém em um smartphone Android?  ( What data does the google drive app contain in an android smartphone ) 
Eu quero excluir alguns dos dados do My Android Apps devido a problemas de armazenamento. Eu vejo que meu aplicativo do Google Drive contém muitos dados e cac...

1  Erro ao migrar dados do microSD interno para armazenamento interno, apesar do espaço disponível aparente  ( Error when migrating data from internal microsd to internal storage despite appa ) 
Eu tenho um Moto G3 (Android 6.0) com um microSD de 2GB que configurei para usar como armazenamento interno. Tem funcionamento bem há anos, mas quero atualiza...

1  É possível deixar alguns aplicativos na memória interna ao usar S2e?  ( Is it possible to leave some apps in the internal memory while using s2e ) 
Bem, é possível? Eu tenho uma galáxia com o oficial cyanogenmod rom. Eu só tenho um cartão Micro SD de classe 4 e está usando o aplicativo de aumento de veloc...

17  Por que os jogadores de música não conseguem encontrar meus arquivos de áudio?  ( Why cant music players find my audio files ) 
No meu Nexus 4, há uma pasta chamada /sdcard/Music/ (ou apenas /Music ao navegar no armazenamento do telefone; o Windows 7 chama-o abcdefghijklmn2 ) e eu...

0  Armazenando aplicativos no armazenamento interno  ( Storing apps on internal storage ) 
Eu comprei recentemente Karbonn A15, estou enfrentando 2 problemas nele. . Como armazenar imagens tiradas da câmera para cartão SD, atualmente sua armazenag...

2  Por que um aplicativo salvo cartão SD usa memória do telefone  ( Why an sd card saved app uses phone memory ) 
Ultimamente eu tive problemas com a memória interna do meu telefone (Samsung Galaxy Mini GT-S5570), bem como com a memória SMS. Eu apaguei todas as mensagens ...

6  Armazenamento interno, armazenamento do telefone e cartão SD  ( Internal storage phone storage and sd card ) 
Eu sou novo para Android (v4.0.4) e tentando entendê-lo. olhando para a configuração de armazenamento, achei que os seguintes são listados: armazenament...

13  "Armazenamento insuficiente" ao tentar instalar o novo aplicativo  ( Insufficient storage when trying to install new app ) 
Toda vez que eu vou instalar um novo aplicativo, recebo a mensagem "armazenamento insuficiente" e um incapaz de instalar qualquer coisa ! Eu estou usando a...

1  Depois de remover o aplicativo antigo do sistema e instalar a nova versão, forças fechadas  ( After removing old system app and installing the new version it forces close ) 
Estou usando uma ROM personalizada de CyanogenMod 7 (Android 2.3.5) no ZTE Racer. A ROM veio com alguns aplicativos padrão do sistema como o Gmail, o Google T...

0  Meu desejo HTC ficou de repente e está exibindo o "espaço em disco BAIXO!" MENSAGEM [DUPLICADO]  ( My htc desire has suddenly become full and is displaying the disk space low m ) 
. Esta pergunta já tem respostas aqui : fechado 9 anos atrás . . Duplicado possível: HTC dese...

0  Quanto espaço em disco o Android 2.3.3 e seus aplicativos padrão usam?  ( How much disk space does android 2 3 3 and its default apps use ) 
Diferentes telefones anunciam diferentes espaço em disco total. Quando você obtém um novo telefone com o Android 2.3.3 e seus aplicativos padrão, quanto espaç...




© 2021 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.