Por que todos os dados em um dispositivo de armazenamento devem ser perdidos quando seu sistema de arquivos é alterado?

0

Eu sei essas coisas sobre dispositivos de armazenamento:

  • Eles são separados em duas partes: a tabela de arquivos e os dados do arquivo
  • A maneira como esses trabalhos são ditados pelo sistema de arquivos
  • Todos os sistemas de arquivos possuem uma tabela de arquivos e dados de arquivos
  • A tabela de arquivos pode ser alterada sem alterar os dados do arquivo e vice-versa
  • Um arquivo pode ser removido da tabela de arquivos para uma exclusão rápida sem realmente remover os dados do arquivo

Então, minha pergunta é: quando você altera o sistema de arquivos em (ou "formato") uma unidade, por que todos os dados do arquivo devem ser perdidos? O computador não consegue se lembrar do arquivo? e recriá-lo no formato do novo sistema?

Tenho certeza de que você se depararia com alguns problemas com uma unidade completamente cheia se o novo sistema de arquivos exigir uma tabela maior do que o sistema antigo, mas, além disso, não vejo por que isso não pode ser feito .

Eu também sei que depois de um "formato rápido" (onde apenas a tabela de arquivos é substituída, mas a nova está vazia) que todos os dados do arquivo ainda estão lá e podem ser recuperados com ferramentas forenses.

    
por Supuhstar 23.06.2014 / 16:50

3 respostas

1

Você parece estar pensando que há duas áreas separadas e bem definidas em um dispositivo de armazenamento: a "tabela de arquivos" (metadados) e os "dados de arquivo" (dados), para que você possa manter a área de dados intacta enquanto a área de metadados é apagada e recriada.

Não é esse o caso. Não apenas cada sistema de arquivos coloca seus metadados fixos em um lugar diferente, mas também na maioria dos sistemas de arquivos, parte dos metadados é misturada com os dados. Isso geralmente acontece com diretórios, que são tratados internamente de maneira semelhante a um "arquivo especial".

Por exemplo, você tem o FAT32 com sua área de metadados no início do dispositivo de armazenamento, além de diretórios misturados com os dados; NTFS, que o IIRC tem sua principal área de metadados (a MFT) em um local fixo no meio do dispositivo de armazenamento; a família ext (ext2, ext3, ext4) que divide o dispositivo de armazenamento em "grupos de blocos", cada um com seus próprios metadados em locais fixos, assim você tem várias áreas de metadados espalhadas pelo dispositivo de armazenamento, além de diretórios armazenados como arquivos especiais; e btrfs, que usa uma estrutura de árvore na qual a maioria dos metadados pode estar em praticamente qualquer lugar.

Como você pode ver, o que são dados em um sistema de arquivos podem se sobrepor ao que é um metadado em outro sistema de arquivos. Para converter de um sistema de arquivos para outro, não somente a ferramenta de conversão teria que converter a estrutura de diretórios, mas também teria que mover parte dos dados para fora do caminho. Isso pode ser feito (veja por exemplo uma conversão de ext3 / ext4 para btrfs ), mas como é complexo e raramente feito (a maioria dos dispositivos de armazenamento é formatada uma vez com um sistema de arquivos e continua sendo usada pelo resto da vida), não há muito incentivo para implementá-lo (e testá-lo, o que é importante quando se lida com os dados do usuário). / p>     

por 25.11.2014 / 11:49
2

They're separated into two parts: the file table and the file data

Semi-verdadeiro, na prática, a maioria dos sistemas de arquivos armazenará alguns metadados em locais fixos e outros metadados como "arquivos especiais". Exatamente quais metadados são armazenados onde dependerá do sistema de arquivos.

Geralmente, os locais fixos não estão todos no início, mas são distribuídos pelo volume de armazenamento de alguma forma.

So, my question is: when you change the file system on (or "format") a drive, why must all the file data be lost? Can't a computer simply remember the file table and re-create it in the format of the new system?

Converter um sistema de arquivos no local é complicado por vários motivos.

  1. O layout dos metadados certamente será diferente, isso basicamente significa que você precisa manter todos os metadados antigos até que todos os novos metadados tenham sido gerados.
  2. Os metadados podem ser grandes demais para serem armazenados na memória. Portanto, simplesmente ler todos os metadados antigos e depois escrever todos os novos com base na cópia na memória não é uma boa opção.
  3. A maioria dos sistemas de arquivos armazena metadados significativos em locais fixos. Isso significa que, para muitas conversões, uma ferramenta não pode simplesmente criar os novos metadados "nas lacunas" deixadas pelos dados / metadados antigos.
  4. Os dados em si podem ser armazenados de uma maneira diferente, por exemplo, em clusters NTFS estão sempre alinhados, enquanto que no FAT eles não precisam estar. Alguns sistemas de arquivos podem compactar dados.

Nenhum desses problemas é insuperável, mas eles significam que escrever um conversor de sistema de arquivos é uma tarefa difícil e que executá-lo geralmente acarreta um risco não negligenciável de perda de dados.

Estou ciente dos seguintes conversores.

  • O Windows 98 e o ME vêm com um conversor que pode converter de FAT16 para FAT32. No Windows 98 isso é facilmente visível, mas afaict no windows ME eles fizeram apenas linha de comando.
  • O Windows 2000 e versões posteriores vêm com um conversor que pode converter de FAT16 e FAT32 para NTFS. Novamente, este conversor é apenas a linha de comando. Também AIUI o processo de conversão, por vezes, resulta em clusters de 512 bytes devido ao problema de alinhamento que mencionei acima.
  • As ferramentas para o BTRFS vêm com um programa que pode converter o ext2 / 3/4 para o BTRFS.
  • Existe uma ferramenta para o Linux chamada fstransform, o readme afirma que suporta ext2, ext3, ext4 e reiserfs. Parece que ele usa alguns truques com arquivos esparsos para fazer com que os drivers do sistema de arquivos no kernel façam o trabalho pesado e, assim, pode, teoricamente, trabalhar com qualquer sistema de arquivos Linux que suporte certos recursos. Aparentemente, há também algum suporte experimental para NTFS ( link ).
por 13.06.2018 / 17:54
0

when you change the file system on (or "format") a drive, why must all the file data be lost?

Não precisa ser. Normalmente, a formatação de uma unidade é feita para inicializar uma nova unidade sem dados ou descartar os dados nela contidos.

Se você tiver uma mídia de armazenamento com dados nela, poderá alterar facilmente a estrutura do sistema de arquivos de um para outro (por exemplo, FAT - > ext3) de diversas maneiras. Isso não é feito com muita frequência por usuários finais nem em ambientes multiusuários. A abordagem varia dependendo dos detalhes que você não forneceu. Note que nem todas as suas suposições são necessariamente válidas.

Para saber mais sobre o link do sistema de arquivos.

    
por 23.06.2014 / 18:36