web-dev-qa-db-pt.com

Os metadados não ocupam tamanho algum?

Eu coloquei 4096 caracteres em um arquivo de texto e salve-o. Como cada caractere tem 1 byte, o tamanho do arquivo de texto deve ser 4K byte. Como você vê abaixo, tudo bem:

enter image description here

Eu conecto minha memória flash ao meu computador. o espaço livre na memória flash é 1,717,518,336 bytes:

enter image description here

Eu criei uma cópia do arquivo na minha memória flash. E, novamente, dê uma olhada no espaço livre. possui 1,717,514,240 bytes espaço livre:

enter image description here

Vamos ver qual é a diferença:

1.717.518.336 - 1.717.514.240 = 4096 bytes


Minha pergunta:

Q1:

Como você pode ver na última foto acima, o único espaço que o arquivo ocupa no flash é o espaço para seu conteúdo [caracteres]. Então, onde está o arquivo de metadados?

Quero dizer, quando movo o arquivo para outro computador, como ele entende o nome do arquivo, o proprietário do arquivo, a data de criação e modificação e ...?

Não ocupa nenhum tamanho? !!

Q2:

Posso ver o arquivo de metadados na memória flash?

enter image description here

Aprecie seu tempo e consideração.

51
TheGoodUser

Sim, os metadados ocupam espaço. No NTFS, ele ocupa 1024 bytes, para ser específico. No entanto, as informações não são armazenadas no arquivo, mas na tabela de arquivos mestre MFT. Especificamente no registro MFT # 4 $AttrDef.

Consulte este artigo da Technet para obter detalhes: a tabela 3.5 contém todos os registros MFT definidos.

Quando um volume é formatado com NTFS, um arquivo MFT (Master File Table) e outras partes de metadados são criados. Metadados são os arquivos que o NTFS usa para implementar a estrutura do sistema de arquivos. O NTFS reserva os 16 primeiros registros da MFT para arquivos de metadados.

O NTFS cria um registro de arquivo para cada arquivo e um registro de diretório para cada diretório criado em um volume NTFS. A MFT inclui um registro de arquivo separado para a própria MFT. Esses registros de arquivo e diretório são armazenados na MFT. Os atributos do arquivo são gravados no espaço alocado na MFT. Além dos atributos do arquivo, cada registro contém informações sobre a posição do registro na MFT.

Observe que outros sistemas de arquivos podem lidar de maneira diferente com os metadados.

EDIT: Na seção de comentários, foi indicado que esta resposta está faltando porque o OP solicitou metadados nos sistemas de arquivos FAT32, não no NTFS. Se eu soubesse, removeria o atributo "resposta correta". Portanto, forneço informações adicionais que respondem à pergunta em relação ao FAT32.

O FAT32 salva metadados simples, como visibilidade ou tempo de modificação de cada arquivo e pasta em uma entrada na pasta pai do arquivo ou pasta, criando uma árvore abaixo da pasta raiz do FS. Conforme apontado em relação ao NTFS, este não é um arquivo, mas salvo dentro da estrutura de dados da pasta. A entrada originalmente tinha 32 bytes e continha os seguintes atributos:

Name (8.3) xxxxxxxx.yyy. (88 bits)

Attribute byte (8 bits of information, described later in this section).

One reserved byte.

Create time (24 bits).

Create date (16 bits).

Last access date (16 bits).

Two reserved bytes.

Last modified time (16 bits).

Last modified date (16 bits).

Starting cluster number in the file allocation table (16 bits).

File size (32 bits).

A lista foi retirada de este artigo da Microsoft Technet e refere-se ao FAT16. Como o tamanho do cluster do FAT32 pode ser de 32 bits e o nome dos arquivos pode ser maior que 8,3, a tabela não é totalmente precisa. Para acomodar nomes de arquivos longos e discos maiores, o FAT32 modifica alguns comportamentos que podem ser lidos na Wikipedia aqui , mas a idéia básica é válida.

50
bjanssen

Não ocupa nenhum tamanho? !!

Sim, mas é uma pequena entrada em um grande bloco pré-alocado. Esse bloco é contado na parte "usada" do seu disco. Adicionar uma entrada dentro desse bloco não exige que o bloco seja expandido.

Dependendo do sistema de arquivos, eventualmente o bloco será preenchido e estendido de alguma forma após a adição de vários nomes de arquivos.

Posso ver o arquivo de metadados na memória flash?

Não facilmente

Como Ruslan e Blorgbeard comentaram. Você pode instalar um visualizador hexadecimal como HxD , que permitirá visualizar (e editar - tenha muito cuidado) os dados brutos do sistema de arquivos. Mas você terá que fazer a interpretação em relação a quais bytes pertencem a quais estruturas do sistema de arquivos. Para isso, você precisará de uma boa documentação do sistema de arquivos específico usado no disco flash. É provável que o FAT32 seja mais simples de entender do que qualquer uma das muitas variantes do NTFS. Consulte Entendendo os sistemas de arquivos FAT32 por exemplo.

26
RedGrittyBrick

Os metadados não são armazenados (nem relatados pelas ferramentas comuns de gerenciamento de arquivos) como arquivos, são armazenados nos dados do sistema de arquivos em disco.

Dependendo da natureza/versão do sistema de arquivos, cada entrada precisará de uma quantidade de espaço em disco para representar as informações de metadados.

Além do espaço alocado na tabela mestre de arquivos, alguns sistemas de arquivos também manterão o diário sobre a alteração de arquivos (ocupando espaço extra), e alguns sistemas de arquivos podem ser estendidos com campos extras contendo metadados para fins especiais.

Portanto, tecnicamente, os metadados ocupam espaço em disco, mas isso não é levado em consideração pela maioria dos utilitários de gerenciamento de arquivos que funcionam com a API do sistema de chamada que consulta o sistema de arquivos por espaço arquivo, não por espaço metadados .

E essa abstração é apenas a ponta do iceberg, pois o próprio sistema de arquivos trabalha em uma abstração do espaço físico em disco subjacente, fornecido por rotinas de disco de baixo nível; portanto, apenas a lógica interna do disco saberá quantas posições reais de memória estão disponíveis para níveis mais altos. e quantos estão marcados como não confiáveis, reservados ou usados ​​para soma de verificação.

7
Dice9

Os metadados dependem do sistema de arquivos. Os sistemas de arquivos mais básicos geralmente usados ​​em mídia trocável são baseados em um sistema de arquivos DOS (FAT). O DOS não possui usuários e permissões. Ou, mais corretamente, algumas dessas informações são transportadas no 8º bit de dados do nome do arquivo. A única sobrecarga de recurso usada em um DOS FS básico é contabilizar os blocos do arquivo ou o diretório em que ele está - e esse bloco provavelmente já está comprometido para manipular ".", Já. IOW, adicionar um arquivo vazio não adicionaria outro bit de armazenamento, mas alteraria alguns bits consumidos e alocados existentes.

Quando você usa sistemas de arquivos mais avançados, com diários e usuários de diário, obtém metadados e entradas de diário e, possivelmente, uma cadeia forense para recuperar versões de arquivos anteriores, etc. Em seguida, um pequeno arquivo pode explodir no armazenamento usado.

Portanto, verifique o tipo FS. Se for FAT, provavelmente você não terá um usuário gravado em metadados na mídia. Portanto ... não há espaço usado. :)

Um bom exemplo de um FAT FS é uma implementação de código aberto - e você pode ver que a lista de operações disponíveis não inclui "obter/configurar usuário" e "verificar o acesso pelo usuário". Sem identidade = sem armazenamento dessa identidade.

3
JezC

Como você pode ver na última foto acima, o único espaço que o arquivo ocupa no flash é o espaço para seu conteúdo [caracteres]. Então, onde está o arquivo de metadados?

O "arquivo de metadados" é o diretório que contém o arquivo. Isso é basicamente o que é um diretório - uma coleção de metadados que descrevem o conteúdo do diretório.

Quero dizer, quando movo o arquivo para outro computador, como ele entende o nome do arquivo, o proprietário do arquivo, a data de criação e modificação e ...?

Não ocupa nenhum tamanho? !!

Sim, no diretório Na maioria dos itens de arquivo, o mesmo arquivo pode ter dois nomes diferentes se estiver vinculado a dois diretórios diferentes.

Posso ver o arquivo de metadados na memória flash?

Se o seu sistema de arquivos suportar, você poderá vê-lo olhando o tamanho do diretório.

2
David Schwartz

Onde os metadados são mantidos?

Quando falamos de metadados, existem dois tipos de metadados.

O primeiro tipo inclui data de criação, data da última modificação, data do último acesso. Dependendo do sistema de arquivos (ou seja, NTFS/FAT/Ext3 etc ...), haverá diferentes "metadados" disponíveis, por exemplo, proprietário do Windows e permissão no NTFS.

O primeiro tipo se aplica a todos os arquivos, por exemplo o arquivo .txt no seu exemplo.

Todos os sistemas de arquivos pré-alocam espaços para conter esses metadados na tabela mestre de arquivos (MFT para NTFS, alguns outros nomes para outro sistema de arquivos), que não é diretamente acessível pelos usuários. Como a MFT não é contada como parte da capacidade da unidade, não há espaço de armazenamento "adicional" necessário.

O segundo tipo de "metadados" é definido pelo tipo de arquivo ou aplicativo. Por exemplo, os documentos do Office mantêm "Autor", "Assunto" e outros metadados; As imagens JPEG mantêm um conjunto de dados EXIF, incluindo "data da foto tirada", "modelo da câmera", "velocidade do obturador"; enquanto o som MP3 contém "album", "track #", "bitrate" ...

O segundo tipo ocupa espaço adicional, porque esses "metadados" fazem parte do arquivo.


tamanho diferente na unidade diferente

Quando seu arquivo de texto está em C:\, ele ocupa 4K. Ele fica com 1K de tamanho quando você o coloca na sua unidade flash H:\. Isso ocorre porque diferentes "tamanhos de bloco" para as diferentes partições.

Os arquivos são espaços alocados em bloco. Portanto, em um sistema de arquivos com tamanho de bloco 4K, 1 byte é alocado em 4K, enquanto 4.097 bytes (4K + 1 byte) são alocados em 8K.

Aparentemente, seu C: está formatado com tamanho de bloco de 4K, enquanto H: é formatado com tamanho de bloco de 1K, resultando na diferença.

2
Kenneth L