Imagine um livro qualquer. Daremos para esse livro 400 páginas e diremos que o tamanho das letras compreendem mais ou menos o tamanho 8 de uma fonte de computador X qualquer. Pode você ver quanta coisa temos escrita aí? Suponha que o livro em questão foi você que escreveu. São suas memórias passadas. De repente você sente uma vontade súbita de ler novamente o que você disse nele sobre quando caiu da bicicleta pela primeira vez. Onde está? São 400 páginas! Como eu não disse quando você começou a andar de bicicleta e nem o quanto sua vida toda representa, ninguém pode, nem mesmo, ter uma idéia onde essa informação vai estar ao longo das 400 páginas, certo?
Tão logo você percebe que o único jeito é passar o olho, pelo menos, nas 400 páginas, de forma aleatória ou não, até encontrar. Depois de passar por isso, você resolveu criar algo para facilitar da próxima vez. Se o ser humano cria é porque ele precisa; isso é regra universal. Eis que você sentou-se com livro e escreveu mais 20 páginas. Nelas, você escreve o que as outras páginas descrevem e assim, quando precisar olhar tal fato outra vez, terá um ponto de referência. Meus parabéns, você acaba de criar o índice!
Usando essa mesma teoria, vamos olhar para um disco rígido qualquer: vamos chamar seus setores de páginas e os dados neles, cada byte vamos chamar de letra. Então temos um HD com várias páginas e muita coisa escrita, concorda? Como se achar diante toda essa confusão? Sim, imagine se o HD tiver que procurar cada vez que uma determinada coisa for solicitada em todo o disco? E digo mais: você sabe o que tem no seu livro porque foi você que escreveu, mas como fazer outra pessoa saber a mesma coisa? Tão logo, um componente T qualquer não pode solicitar nada para o HD, se nem ele sabe o que existe lá! Partindo daí precisamos de um índice nesse HD, algo que possa informar, o que quer que seja, sobre o que há nele e onde exatamente está. E daí surgiram o sistemas de arquivos. E eu afirmo: sem eles a informática que conhecemos não existiria, ou seja, encare como você encarar, ainda assim, de um jeito ou de outro, ele teria que ser inventando. E ele foi!
Hoje são muitos. Todos tem muito em comum e somente algum diferencial a mais. Uns não permitem escrever mais que tantas gigas; outros garantem mais segurança contra perdas de dados; outros são somente a teoria da sua necessidade, e assim vai. Enquanto no mundo Windows, hoje, o mais comum é o NTFS, no mundo
Linux o EXT3 é muito usado. Eles são um script. Um pequeno script posto em seu HD e que possui uma tabela, que é seu índice em questão. Ela sabe onde um determinado conjunto de dados começa e onde termina. Ela sabe, também, quantos bytes tem essa tal informação. E para fazer referência a ela foi criado o arquivo. O arquivo nada mais é o nome dado para essa informação. Pronto! Agora qualquer um pode chamar uma informação qualquer e o HD pode precisamente ir atrás dela. Interessante, não?
Novamente, imagine o livro. Desta vez ele não está completamente cheio. Ele tem um espaço nas páginas 44 e 378, que cabe exatamente uma letra cada uma. Você quer escrever justamente duas letras. Não há como fazer isso no livro, exceto se você quebrar colocando uma letra em cada página. E foi o que você fez. Olhando assim isso parece ridículo, mas dando esse exemplo para o HD, veremos que acontece toda hora. Seu HD está quase cheio, tendo somente 2MB disponíveis. Onde uma está no setor 34 e a outra no setor 48500, ou seja, bem distantes uma da outra. E quer você gravar 2MB. E agora? Agora entra um dos diferenciais do sistema de arquivos! Se nesse HD o sistema de arquivos foi FAT, por exemplo, será impossível gravar essa informação. Porém se for NTFS, por exemplo, ele irá quebrar o arquivo em 1 MB e colocar a primeira parte no setor 34 e a outra no setor 48500, referenciando isso na sua tabela. Assim, sempre que tal arquivo for chamado, o HD irá pegar a primeira parte no setor 34 e saberá que outra parte no setor 48500. Meus parabéns, você acaba de criar um arquivo fragmentado.
Bem, praticamente isso é um sistema de arquivos. Um pequeno script, cujo a função é gerenciar os dados postos dentro do HD e que seja fácil encontrá-los novamente. E isso é feito na formatação de disco. Antes de explicar isso vou explicar uma convenção. Cada setor tem 512 bytes, sem importar o tamanho do dispositivo (hd, disquete, pendrive, ...). O tamanho total do dispositivo (tal informação pode ser obtida por exemplo usando o cfdisk, no Linux) dividido por 512 resultará quantos setores esse disco tem. Sempre serão divisíveis exatos por 512. Dois arquivos não podem ocupar o mesmo setor.
Por exemplo, sejam dois arquivos: telefone_gatinha.txt (8 bytes) e datas_provas.txt (273 bytes). Somando isso tudo teremos somente 281 bytes, ou seja, pouco mais da metade de um setor, porém ao gravar isso no HD estaremos dando um setor para cada um. O telefone_gatinha.txt usaria 8 bytes do primeiro setor e deixaria 504 bytes livres, essas não seriam preenchidas e o segundo arquivo 281 bytes seriam usadas e 231 bytes ficariam sem uso, porém o próximo arquivo começaria no setor 3, mesmo que ele tivesse somente 1 byte. Ou seja, baseado nesses dois arquivos, você já teve 735 bytes perdidos. Porém quando usamos sistema de arquivos, esse tamanho pode ser 512 (formato físico no disco) ou algum múltiplo seu como: 1024, 2048, 4096, 8192 e assim por diante e todos ali representados em byte.
O Windows XP, por padrão em NTFS, formata os HDs com 4kb de bloco, ou seja, 4096 bytes. Cada arquivo que há no disco ocupa sempre 8 setores, mesmo ele tendo tamanho inferior a esse quantidade de bytes. Tão logo é possível afirmar que o tamanho total de um dispositivo pós formatado dividido pelo tamanho do seu bloco resultará no tamanho máximo de arquivos que esse disco poderá ter se todos esse arquivos forem inferiores ao número do bloco. Para explicar isso melhor, pegarei o exemplo de um disquete, segue abaixo seus dados pós formatados:
Espaço total (após formatado, pois sem o sistema de aquivos ele ainda é maior): 1. 457. 664 bytes (1,38mb aprox.)
Tamanho do setor (bloco): 512 bytes
Logo, dividindo o tamanho total pelo setor temos 2847 e isso é a quantidade máxima de arquivos que podemos pôr nesse disquete. Jamais ele terá mais arquivos que isso, pelo menos não enquanto tiver nesse tipo de formatação. E para atingir essa quantidade, nenhum arquivo pode ser maior que 512 bytes. Ou seja, aqui você pode ver que formatar o disco com blocos grandes reduz a quantidade de arquivos que ele poderá ter. Outro detalhe interessante é que 2847, supondo que cada arquivo tenha 1 bytes, é 2,8 kb aproximadamente, ou seja, quase nada para um dispositivo que tem 1,38MB, mesmo assim estará cheio.
Isso foi uma rápida explicação sobre o que é o sistema de arquivos, sua importância e como ele influencia o uso de um dispositivo.
Motivo do artigo
Porque você iria querer escrever em um dispositivo sem usar sistema de arquivos? Há várias razões, mas vou citar uma que está sempre na moda em computação: segurança. Usando sistema de arquivos, você até pode dar um atributo de oculto para um arquivo, mas isso não impede que ele seja encontrado. Agora se ele tiver no disco, mas não no sistema de arquivos, jamais aparecerá, até porque ele nem terá nome de arquivo, seus dados somente estarão lá.
Torna em anos luz mais complicado a vida de qualquer um que encontrar e ainda mais pra quem nem sabe que há algo lá. Imagine você poder colocar um arquivo no seu pendrive muito importante e não ter preocupação caso ela seja roubado, pois não terá acesso ao arquivo lá dentro e tão pouco saberá que ele está lá. Isso só tem um preço: como não estará no sistema de arquivos, poderá ser sobrescrito caso algo escreva nos setores que o correspondem. Ou seja, não posso garantir segurança quanto a perder o arquivo, mas posso garantir muito trabalho e dedicação de quem for tentar recuperá-lo. Também, esse artigo mostrará maneiras exatas de evitar que o mesmo seja sobrescrito e maneiras de complicar sua recuperação, talvez até, essa última, com certeza matemática. Somente você poderá trazê-lo de volta.