Uma breve introdução aos sistemas de arquivos Introdução Sistema de arquivos = Banco de dados Partição Formatação Clusters Clusters x Espaço x Desempenho Fragmentação Quotas Journaling Transações Atômicas Introdução Este artigo tem por objetivo mostrar algumas técnicas utilizadas nos sistemas de arquivos, também conhecidos como file systems. Os sistemas de arquivos são transparentes para o usuário. Toda vez que você salvar um arquivo, na realidade o seu sistema operacional solicita ao seu sistema de arquivos os recursos necessários para gravar o seu arquivo, ou seja, o sistema de arquivos aloca o espaço físico e também se encarrega de colocar uma entrada nova numa tabela que você não tem acesso e apontando para o seu arquivo salvo. São exemplos de sistemas de arquivos: File Allocation Table – FAT 12/16/32, New Tecnology File System – NTFS, Second/Third Extended File System – EXT 2/3, REISERFS, REISER4, XFS, JFS, ZFS. Sistema de arquivos = Banco de dados Um sistema de arquivos é um banco de dados. Mas o que é um banco de dados? Um banco de dados é uma coleção de dados que estão relecionadas com um domínio. Independente dos dados que houverem no seu computador, todos os seus arquivos constituem um banco de dados pois, você é o "domínio" do banco de dados. Todos os seus dados constituem um banco de dados por que eles pertencem a você. O domínio é neste caso o usuário. Partição A partição é uma divisão criada por softwares para distinguir os limites de um conjunto de dados. Ou seja, é o tamanho físico definido para ser utilizado pelo seu sistema de arquivos (banco de dados). Cada sistema de arquivos usa um padrão de partição e formatação, portanto, faz-se necessário a utilização de softwares específicos para cada sistema de arquivos. Embora hajam casos onde podemos utilizar um software único para os tipos mais comuns de partição que são o FAT 16/32, NTFS, EXT 2/3, REISERFS, REISER4. Formatação A formatação é a preparação do espaço alocado para a inserção, remoção e atualização de dados. Na prática, a formatação é a tarefa de dizer ao sistema de arquivos que uma parte do seu disco rígido está preparada (indexada) para alocar dados (ou arquivos, conjuntos de zeros e uns). Clusters O que são clusters? Os clusters ou ainda inodes são espaços de tamanhos variados que são criados pela formatação para alocar os seus dados. Quando o sistema de arquivos é formatado, o software formatador é encarregado de a partir do espaço disponível para a partição, identificar o tamanho do cluster do sistema de arquivos. É importante citar que os clusters dos sistemas de arquivos não tem relação alguma com sistemas distribuídos. Clusters x Espaço x Desempenho Com a alta capacidade dos discos rígidos atuais (e que aumentam de tempos em tempos), notamos que alguns sistemas de arquivos não estavam preparados para os dias de hoje. Por que alguns sistemas de arquivos tem sérias limitações quanto a sua capacidade de armazenamento e além disso também há um outro problema sério com relação ao espaço e ao desempenho, como os clusters precisam ser maiores para poder permitir a utilização total do espaço em disco, o software que formata o sistema de arquivos, usa um cluster maior e isso acaba fazendo com que uma porcentagem pequena (ainda sim considerável em alguns casos) do espaço do seu disco rígido seja desperdiçada. Em compensação, há um ganho de velocidade com um cluster maior. Pois o disco rígido não necessita ler pequenos pedaços. Por outro lado, clusters pequenos diminuem o desempenho do sistema de arquivos. Fragmentação A fragmentação também é fruto de um projeto de sistemas de arquivos que resolviam apenas as necessidades passadas (discos rígidos pequenos). A fragmentação nada mais é que uma alocação de arquivos desordenada. Isto é, quando salvamos um arquivo, ao invés do sistema de arquivos colocar todos os clusters juntos, em ordem sequencial, o sistema de arquivos coloca em qualquer outro lugar do disco rígido fazendo com que os dados fiquem espalhados pelo disco rígido, demorando mais para acessar o arquivo. Por isso há os famosos "desfragmentadores". Eles são os responsáveis pela reordenação dos dados contidos no disco rígido. O problema da fragmentação é encontrado nos seguintes sistemas de arquivos (embora não seja exclusividade deles): FAT 16/32, NTFS. Quotas Em sistemas de arquivos modernos, temos este recurso chamado quota. Este recurso nos permite definir o quanto de espaço deve estar disponível para um determinado usuário, permitindo assim, um maior controle do espaço que um usuário pode utilizar para guardar seus arquivos. Para implementar um sistema de quota, o sistema operacional deve trabalhar em conjunto com o sistema de arquivo para prover este serviço. O sistemas operacionais que suportam quotas são: Windows 2000, XP, 2003, Linux, entre outros. Journaling O termo "journaling" vem de "journal" que neste caso significa “log”, de registro. Na realidade, o journaling é neste caso uma técnica onde sistemas de arquivos modernos podem gravar o foi feito no sistema de arquivos. Por exemplo, você clicou em salvar, neste momento o sistema de arquivos registra num arquivo (que nós não temos acesso) a operação salvar foi ativada para o arquivo “xyz.txt”. Por que o journaling é um recurso importante? Por que ele permite uma rápida recuperação dos arquivos que foram eventualmente danificados por queda de energia ou algum outro evento onde ocorra a perda de dados. Além disso, percebemos que o journaling é uma técnica com estreita relação com técnica de transação atômica. O Journaling está disponível nos seguintes sistemas de arquivos: NTFS, EXT3, REISERFS, REISER4, XFS, JFS, ZFS, entre outros. Transações Atômicas A transação atômica é um recurso que já existia em bancos de dados tradicionais (Oracle, ...). O objetivo das transações atômicas é garantir a consistência de um sistema de arquivos. Isto é, garantir que nenhum arquivo foi gravado de errado. Então, quando um arquivo é salvo, o próprio sistema de arquivos verifica se o arquivo salvo com sucesso.