Uma das formas de armazenamento de informações em
microcomputadores (PC) ou em outros sistemas computacionais mais sofisticados,
é a utilização de dispositivos com funções específicas para esse fim,
conhecidos como discos rígidos ou HDs. Contudo por si só, esses dispositivos
não tem a capacidade de organizar e gerenciar o espaço destinado ao armazenamento
de dados.
Nesse ponto entram as funcionalidades do Sistema de
Arquivos, também conhecido como File System, que atua como um intermediário
entre o disco rígido e as informações a serem armazenadas e tem a função de
gerenciar processos que determinam como os dados podem ser gravados, copiados,
alterados e até apagados.
Em resumo, toda e qualquer manipulação de dados em um
dispositivo de mídia, necessita de um Sistema de Arquivos para que essas ações
sejam possíveis, se não houver uma estrutura de alocação arquivos e manipulação
é impossível gravar dados.
Ao trabalharmos com discos rígidos ou HDs é necessário
prepará-los, fazendo uma formatação física. Este processo divide o disco em
trilhas (são círculos que começam no centro do disco e vão até a sua borda,) e
setores (subdivisões de cada trilha, trechos regulares). Um conjunto de trilhas
recebe o nome de cilindro (trilhas acessadas por varias cabeças de leituras, em
vários discos empilhados). A formatação física já vem de fábrica e pode ser
alterada se o usuário quiser dividir o disco em partições. Depois deve-se fazer
uma formatação lógica, que nada mais é do que "instalar" o Sistema de
Arquivos no dispositivo de armazenamento.
Cluster
Um cluster é a menor parcela do HD que pode ser acessada
pelo sistema operacional. Cada cluster tem um endereço único, um arquivo grande
é dividido em vários clusters, mas um cluster não pode conter mais de um
arquivo, por menor que seja.
O tamanho dos clusters pode variar em relação ao sistema
de arquivos que ele utiliza, quanto menores forem os clusters, menor será a
quantidade de espaço desperdiçada no HD, sobretudo ao gravar vários arquivos
pequenos, já que mesmo com apenas 1 byte de tamanho, qualquer arquivo ocupará
um cluster inteiro.
Muitos usuários já ouviram falar em partições FAT ou
FAT32 e NTFS, sem saber ao certo o que isso significa. Essas são siglas de
Sistemas de Arquivos que possuem características estruturais e organizacionais,
totalmente diferenciadas, que são utilizadas varias versões do sistema operacional
Windows.
Os sistemas de arquivos é a parte do SO responsável pelo
gerenciamento dos arquivos (estrutura, identificação, acesso, utilização,
proteção e implementação). Ou seja, é um conjunto de tipos abstratos de dados
que são implementados para o armazenamento, a organização hierárquica, a
manipulação, navegação, acesso e recuperação de dados.
Entenda que um arquivo é um recipiente no qual os dados
são armazenados, tendo ele um significado para o sistema ou usuário, e estes
podem ser programas executáveis, texto, figura, etc. Todos os arquivos possuem
um nome o qual o usuário faz referência a ele. Além do nome, cada arquivo
possui uma série de outros atributos que são mantidos pelo sistema operacional
como tipo de conteúdo, tamanho, data e hora do último acesso, data e hora da
última alteração, lista de usuários que podem acessar o arquivo, etc.
A forma como os dados são dispostos dentro de um arquivo
determina sua estrutura interna. Cada tipo de arquivo possui uma estrutura
interna apropriada para a sua finalidade. Por exemplo, arquivos de texto são
organizados em linha ou parágrafos.
Discos Rígidos
Os discos rígidos são compostos por vários discos
internos, onde cada um deles é dividido em círculos concêntricos chamados de
cilindros ou trilhas, e nestas trilhas temos uma certa quantidade de setores.
Cada setor possui, normalmente, 512 bytes de informações. Para descobrir a
capacidade total de um HD, basta multiplicar o tamanho do setor pela quantidade
total de setores que ele tem.
Vale lembrar que 1 KB é representado por 1024 bytes, e
não 1000 bytes como muitos pensam.
O significado da palavra FAT é Tabela de Alocação de
Arquivos (File Allocation Table) que seria um mapa de utilização do disco.
Graças a isto, o SO saberá onde determinado arquivo está.
Normalmente é reconhecido por todos os Sistemas
Operacionais, também é utilizado em cartões de memória de estado sólido, e não
trabalham com setores, mas sim com unidades de clusters que são conjuntos de
setores.
Uma característica marcante é a capacidade de nomear os
arquivos somente com 8 caracteres + extensão. Caso seja excedido o valor de
caracteres, os caracteres excedidos (do nome do ficheiro) desaparecerão e no
lugar deles aparecerá ~1 ou ~2 (se já existir um outro arquivo com os 8 primeiros
caracteres iguais).
Existe um inconveniente que quando ficheiros são apagados
e novos ficheiros são escritos no suporte, as suas partes tendem a
dispersar-se, fragmentando-se por todo o espaço disponível, tornando a leitura
e a escrita um processo lento. Para isso, precisamos desfragmentar o disco para
um melhor desempenho na sua função de leitura e gravação.
Outro problema é que o FAT16 não reconhece mais que 2GB
por ser de 16 bits, utilizando clusters com no máximo 32 KB. Caso haja um disco
com mais de 2GB, serão necessário particioná-lo em pedaços máximos de 2GB.
FAT é a sigla para File Allocation Table (ou tabela de
alocação de arquivos).
O sistema de arquivos FAT32 é basicamente uma evolução do
FAT convencional (também conhecido como FAT16). Sua primeira versão foi
desenvolvida no ano de 1980, para atender às necessidades daquela época
(MS-DOS). No início, ele trabalhava somente com 12 bits de endereçamento, valor
que passou pra 16 e 1987. Finalmente não ano de 1996 passou a usar os 32 bits
versão que é utilizada até hoje.
Características
A Tabela de Alocação de Arquivos é um mapa de utilização
do disco. Graças a ele, o sistema operacional é capaz de saber exatamente onde
um determinado arquivo está armazenado.
Uma diferença visível entre as duas versões é que FAT32
suporta nomes de arquivos longos (até 256 caracteres), enquanto o FAT16 suporta
apenas nomes de arquivos curtos (até 8 caracteres + extensão).
Um dos maiores problemas do FAT diz respeito à segurança,
pois neste sistema os arquivos podem ser lidos ou escritos por qualquer usuário
do sistema.
O sistema de arquivos FAT não trabalha diretamente com
cada setor, mas sim com um grupo de setores. Esse grupo é chamado de cluster (ou
unidade de alocação). Se por exemplo, um disco com setor de 512 bytes, tiver 5
KB de tamanho, ele terá 10 setores e 5 clusters, se cada cluster ocupar dois
setores. Sendo assim, quando o FAT precisar acessar um determinado setor,
primeiro ele descobre em qual cluster ele se encontra. É válido citar que tanto
o FAT quanto o FAT32 trabalham de acordo com este princípio.
Já neste, suporta partições de até 2 TB, tamanho de
arquivos de 4 GB e o nome dos arquivos passou de 8 para 256 caracteres e
superou o antigo limite de 3 caracteres para a extensão, embora este padrão
ainda seja largamente utilizado.
Com o FAT32, o desperdício em disco foi sensivelmente
reduzido. O FAT16, seu antecessor, utilizava clusters de até 64 KB enquanto o
FAT32 pode utilizar clusters de 4 KB. Se um arquivo ocupa 4 KB de espaço, tanto
no FAT16 como no FAT32 a ocupação será de 1 cluster, porém, no caso do FAT16 os
60 KB restantes serão alocados, apesar de ficarem fisicamente vazios.
Tem a desvantagem de ser 6% mais lenta que FAT16 e a
incompatibilidade com SO antigos.
Não possui recursos de segurança como o NTFS. Utiliza uma
cópia backup da tabela de alocação como sistema de segurança para corrupções de
arquivos. Este procedimento é ineficiente, pois uma queda de energia durante
uma operação que modifique os metadados pode tornar a partição inacessível ou
corromper severamente diversos arquivos.
Fonte:
http://www.diegomacedo.com.br/sistemas-de-arquivos-ntfs-fat16-fat32-ext2-e-ext3/
NTFS
O NTFS (New Technology File System) é um sistema de
arquivos que surgiu com o lançamento do Windows NT, e passou a ser bem aceito e
utilizado nas outras versões do Windows posteriormente.
Uma dessas vantagens diz respeito ao quesito
“recuperação”: em caso de falhas, como o desligamento repentino do computador,
o NTFS é capaz de reverter os dados à condição anterior ao incidente. Isso é
possível, em parte, porque, durante o processo de boot, o sistema operacional
consulta um arquivo de log que registra todas as operações efetuadas e entra em
ação ao identificar nele os pontos problemáticos. Ainda neste aspecto, o NTFS
também suporta redundância de dados, isto é, replicação, como o que é feito por
sistemas RAID, por exemplo.
Algumas características são:
Neste modelo, temos o tamanho limite do arquivo de acordo
com o tamanho do volume;
Os nomes dos arquivos podem ter 32 caracteres;
Tem suporte a criptografia, indexação e compactação;
Seus clusters podem chegar a 512 bytes;
É mais seguro que o FAT;
Permite política de segurança e gerenciamento;
Menos fragmentação;
Melhor desempenho;
Recuperação de erros mais fácil;
Caso seja usado em mídias, podem se corromper mais
facilmente;
É um pouco mais lenta que o FAT32 devido as diretivas de
segurança que o FAT32 não tem e precisam ser acessados durante leitura e
gravação de dados;
Utiliza a tabela MFT (Master File Table) para registrar a
utilização de cada cluster de um disco;
NTFS é a sigla de New Technology File System (Nova
Tecnologia de Sistema de Arquivos)
O Sistema foi desenvolvido no ano de 1993, com o objetivo
de ser o Sistema de Arquivos do Windows NT, sua criação foi uma necessidade,
pois os sistemas baseados em MS-DOS não eram estáveis o suficiente para a
execução em servidores. O sistema passou a possuir novos recursos como a
configuração de permissões em arquivos ou pastas, encriptação e compactação
nativas e transparentes ao usuário, volumes extendidos e mais uma gama de
funções que a maioria dos usuários nem chega a conhecer. Na década de 2000 os sistemas
operacionais Windows passaram a usar o padrão NT, até hoje.
Confiabilidade: O NTFS foi criado para ser o mais
confiável possível e necessitar do mínimo possível de manutenção ao sistema de
arquivos.
Segurança: Através de permissões de arquivos e pastas, o
NTFS permite controlar o acesso aos dados.
Expansibilidade: Um sistema de arquivos feito para
servidores não pode se dar ao luxo de suportar apenas os discos rígidos mais
comuns. Ao contrário do FAT, que somente suporta partições de 4Gb, o NTFS foi
desenhado para suportar discos de até (pasmem!) 16 exabytes (264 bytes).
Eficiência: O FAT desperdiçava enormes quantidades de
espaço em disco. Com o NTFS, esses desperdícios foram evitados ao máximo.
Nomes de arquivos: Ao contrário do FAT (16 bits), o NTFS
suporta nomes de arquivos e pastas com até 255 caracteres.
Ext2 foi projetado e implementado para corrigir as
deficiências do Ext e prover um sistema que respeitasse a semântica UNIX. A
influência do UNIX pode ser vista, por exemplo, na utilização de grupos de
blocos, que são análogos aos grupos de cilindros utilizados pelo FFS. O bloco,
que consiste num conjunto de setores (cada setor tem 512 bytes), é a menor
unidade de alocação para o Ext2. O tamanho pode ser de 1024, 2048 ou 4096 bytes
e é definido na formatação.
Quando é realizada uma operação de escrita em um arquivo,
o Ext2 tenta, sempre que possível, alocar blocos de dados no mesmo grupo que
contém o nó-i. Esse comportamento reduz o movimento da(s) cabeça(s) de leitura-gravação
da unidade de disco.
Em um sistema de arquivos ocorrem dois tipos de
fragmentação: (i) a fragmentação interna (ou de espaço) é causada pelo fato do
tamanho do arquivo geralmente não ser múltiplo do tamanho do bloco (portanto o
último bloco terá um espaço não utilizado) — a consequência é a perda de
espaço; (ii) a fragmentação externa (ou de arquivo) decorre da impossibilidade
do sistema determinar, a priori, qual o tamanho do arquivo (p.ex., arquivos de
texto e de logs são muito modificados, e o seu tamanho pode aumentar ou
diminuir) — assim um arquivo pode alocar blocos não contíguos, prejudicando o
desempenho.
Para diminuir o impacto do primeiro tipo, existem duas
estratégias básicas. A primeira, mais simples, é determinar, na formatação, o
menor tamanho de bloco possível. O Ext2 permite tamanhos de blocos de 1024,
2048 e 4096 bytes. Um tamanho de bloco pequeno, como 1024 bytes, diminui a
fragmentação e perda de espaço, mas em contrapartida gera um impacto negativo
no desempenho, pois acarreta o gerenciamento de uma maior quantidade de blocos.
O tamanho de bloco padrão para volumes grandes é de 4096 bytes.
A segunda estratégia é alocar a parte final de um
arquivo, menor que o tamanho de um bloco, juntamente com pedaços de outros
arquivos. O Reiserfs chama esse método de tail packing; o UFS usa fragmentos,
que são submúltiplos do tamanho do bloco. Apesar do Ext2 possuir, no
superbloco, a previsão para uso de fragmentos, esse método não foi
implementado.
Para diminuir o impacto da fragmentação externa, o Ext2
pré-aloca (reserva) até oito blocos quando um arquivo é aberto para gravação.
Esses blocos reservados, quando possível, são adjacentes ao último bloco
utilizado pelo arquivo. [CARD, TS’O e TWEEDIE, 1994]
O Ext3 (Third Extended file system) é um sistema de
arquivos desenvolvido por Stephen C. Tweedie para o Linux, que acrescenta
alguns recursos ao Ext2, dos quais o mais visível é o journaling, que consiste
em um registro (log ou journal) de transações cuja finalidade é recuperar o
sistema em caso de desligamento não programado.
Há três níveis de journaling disponíveis na implementação
do Ext3:
Journal: os metadados e os dados (conteúdo) dos arquivos
são escritos no journal antes de serem de fato escritos no sistema de arquivos
principal. Isso aumenta a confiabilidade do sistema com uma perda de
desempenho, devido a necessidade de todos os dados serem escritos no disco duas
vezes.
Writeback: os metadados são escritos no journal mas não o
conteúdo dos arquivos. Essa opção permite um melhor desempenho em relação ao
modo journal, porém introduz o risco de escrita fora de ordem onde, por
exemplo, arquivos que são apensados durante um crash podem ter adicionados a
eles trechos de lixo na próxima montagem.
Ordered: é como o writeback, mas força que a escrita do
conteúdo dos arquivos seja feita após a marcação de seus metadados como
escritos no journal. Esse é considerado um meio-termo aceitável entre
confiabilidade e performance, sendo, portanto, o nível padrão.
Embora o seu desempenho (velocidade) seja menos atrativo
que o de outros sistemas de arquivos (como ReiserFS e XFS), ele tem a
importante vantagem de permitir que seja feita a atualização direta a partir de
um sistema com ext2, sem a necessidade de realizar um backup e restaurar
posteriormente os dados, bem como o menor consumo de processamento.
Enquanto em alguns contextos a falta de funções de
sistemas de arquivos “modernos”, como alocação dinâmica de inodes e estruturas
de dados em árvore, poderia ser considerada uma desvantagem, em termos de “recuperabilidade”
isso dá ao ext3 uma significante vantagem sobre sistemas de arquivos que
possuem-nas. Os metadados do sistema de arquivos estão todos em locais fixos e
bem conhecidos, e há certa redundância inerente à estrutura de dados, que
permite que sistemas ext2 e ext3 sejam recuperáveis no caso de uma corrupção de
dados significante, em que sistemas de arquivos em árvore não seriam
recuperáveis.
O que é Ext4 e Como funciona o sistema de arquivos ext4?
Introdução
Ext4 é a evolução do sistema de arquivos mais usados no
Linux, o Ext3. De muitas maneiras, Ext4 é uma profunda melhoria sobre o Ext3, sendo o Ext3, com muitas melhorias
frente o Ext2. No Ext3 foi principalmente a adição de Journaling sobre o Ext2,
mas Ext4 teve mudanças importantes na estrutura do sistema de arquivos
destinado ao armazenamento de dados. O resultado é um sistema de arquivos com
um designer aperfeiçoado, melhor performance, confiável e com muitos recursos.
Compatibilidade
Um sistema de arquivos Ext3 existente, pode ser migrado
para Ext4 com um procedimento fácil, onde consiste a execução de um casal de
comandos em modo “read-only” (descrito na próxima seção). Por meio disto você
melhora a performance, limites de armazenamentos e recursos do sistema de
arquivos corrente, com ou sem a “reformatação” e/ou reinstalação do SO e
softwares “environment”. Se você precisa das vantagens do Ext4 em um sistema em
produção, você pode atualizar o sistema de arquivos. O processo é seguro é não
há riscos para seus dados (obviamente, fazer backup de dados críticos é
recomendado, pois você está atualizando seu sistema de arquivos). O Ext4 vai
usar uma nova estrutura de dados somente em novos dados, a estrutura antiga
continuará intocada, é será possível para leitura/escrita se for preciso. Desta
forma, é claro, assim que uma vez convertido o sistema de arquivos para Ext4,
você não vai poder voltar para o Ext3 novamente (embora há uma possibilidade,
descrita na próxima seção, montando um sistema de arquivos Ext3 com Ext4 com ou
sem o uso de um novo disco formatado, e você poderá montar com o Ext3
novamente, porém você irá perder todas as vantagens do Ext4).
Sistema de arquivos ou arquivos grandes
Atualmente, Ext3 suporta 16TB de tamanho máximo no
sistema de arquivos, e 2TB de tamanho máximo de um arquivo. Ext4 adiciona
48-bit endereçados, obtendo assim 1EB de tamanho máximo de sistema de arquivos
e 16TB de tamanho máximo de arquivos. 1 EB = 1,048,576 TB (1 EB = 1024 PB, 1 PB
= 1024 TB, 1 TB = 1024 GB). Porque 48-bit e não 64-bit? Há algumas limitações
daquele que pode precisar que seja fixado antes da construção do Ext4 enchendo
a capacidade de 64-bit, no qual não tem como ser endereçado no Ext4. A
estrutura de dados do Ext4 tem que ser desenhada mantendo em mente, um recurso
de atualização para o Ext4 implementando completamente suporte a 64-bit até
algum ponto. 1EB pode ser suficiente (realmente enquanto isso acontecer).
(Note: o código para criar sistemas de arquivos grandes como 16TB não é estável
nas versões do e2fsprogs).
scabilidade de subdiretórios
Atualmente a possibilidade máxima de número de
subdiretórios contendo um único diretório no Ext3 é 32.000. Ext4 quebra esse
limite, e possibilita um número ilimitado de subdiretórios.
Os tradicionais sistemas de arquivos derivados do Unix
como o Ext3, utilizam um esquema de mapeamento indireto de blocos para manter
cada trilho do bloco usado correspondente no dado de um arquivo. Isto é
ineficiente para arquivos grandes, especialmente um arquivo grande deletado
e/ou operações “truncate”, porque o mapeamento mantém uma entrada para muitos
blocos únicos, e grandes arquivos tem muitos blocos – > mapeamentos enormes,
lentidão para o manuseio. Os sistemas de arquivos modernos usam uma abordagem
diferente chamada “extends”. Um extends é basicamente um punhado de blocos
físicos continuo. Isto pode ser basicamente definido: “Os dados no próximo
bloco n”. Por exemplo, um arquivo de 100MB pode ser alocado em um único extends
deste tamanho, em vez de precisar da criação de um mapeamento indireto para
25600 blocos ( 4KB por bloco). Arquivos grandes são divididos em diversos
extends. Extends melhora a performance e também ajuda a reduzir a fragmentação,
uma vez que incentiva o continuo “layouts” do disco.
Alocação multiblock
Quando o EXT3 precisa de nova escrita de dados no disco,
há um alocador de blocos que decide quais blocos livres deverá ser usado para a
escrita do dado. Mas o alocador de blocos do Ext3 somente alocar um bloco (4KB)
em um momento. Esta forma que o sistema precisa para escrever 100MB de dados
mencionado anteriormente em outro ponto, será necessário para chamar o alocador
de blocos 25600 vezes (isto simplesmente para 100MB!). Não só isto é
ineficiente, como também não permite que o bloco de alocação utilize a política
de alocação porque ele não sabe como o total de muitos dados deve ter a
alocação iniciada, ele apenas conhece sobre um simples bloco. Ext4 usa
“multiblock allocator” (mballoc), no qual, aloca muitos blocos em uma simples
chamada, em vez de um simples bloco por chamada, evitando um monte de overhead.
Isto melhora a performance, e é especialmente útil com “alocação atrasada” e
extends. Este novo recurso não afeta o formato do disco. Também, note que o
Ext4 blocos/inode tem outras melhorias no alocador, descrição e detalhes neste
documento (http://ols.fedoraproject.org/OLS/Reprints-2008/kumar-reprint.pdf).
Atraso na alocação
Atraso na alocação
(http://en.wikipedia.org/wiki/Allocate-on-flush) é um recurso de performance
(isto não muda o formato do disco) encontrado em poucos sistemas de arquivos
modernos, tais como o XFS, ZFS, btrfs ou Reiser 4, que constitui em um atraso
na alocação de blocos tanto quando possível, contrário aos tradicionais
sistemas de arquivos (tais como o Ext3, Reiser3, etc) fazem: alocando os blocos
com a maior brevidade possível. Por exemplo, em um processo de escrita, o
código do sistema de arquivos irá atribuir imediatamente os blocos quando os
dados forem coletados – mesmo se os dados não estiverem sendo escritos agora
para o disco, eles vão ser mantidos em cache durante um tempo. Esta abordagem
tem algumas desvantagens.Por exemplo, quando um processo esta escrevendo
continuamente em um arquivo, crescente, sucessivamente sendo escritos
atribuindo blocos para os dados, mas ele não sabe se o arquivo se manterá
crescente. Atrasando a alocação, por outro lado, não afetaria os blocos
imediatamente quando o processo de escrita, sim, ela atrasa a alocação dos
blocos, enquanto o arquivo é mantido em cache, até que ele esteja realmente indo
para escrito no disco. Isto da ao bloco de alocação a capacidade de alocar em
situações em que sistemas antigos não poderia. Atraso na alocação trabalha
muito bem com as duas características anteriormente mencionadas, extents e
alocação multiblock, porque, em muitos casos um trabalho em que o arquivo é
gravado para o último disco que será atribuído em blocos extends, cuja alocação
é feita com o mballoc. O desempenho é muito melhor, e a fragmentação é muito
melhorada em alguns workloads.
fsck rápido
Fsck é uma operação muito lenta, especialmente o primeiro
passo: checagem de todos os inodes em um sistema de arquivos. No Ext4, até o
fim de cada grupo da tabela de inode estará armazenado uma lista de inodes
inutilizados ( com checksum, por segurança), assim o fsck não irá checar estes
inodes. O resultado final é que o tempo do fsck melhorou de 2 a 20 vezes,
dependendo do número usado de inodes
(http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4). Deve-se notar que
é o fsck, e não o Ext4, que irá montar a lista de inodes inutilizados. Isso
significa que você deve executar o fsck para obter a lista de inodes
inutilizados construída, e só na próxima execução do fsck será mais rápida
(você precisa passar o fsck, a fim de converter um ext3 filesystem para Ext4 de
qualquer forma). Há também uma característica que ajuda a acelerar o fsck –
“flexible block groups” – que também acelera as operações em arquivos.
Journal checksumming
O Journal é mais utilizado na parte do disco, construindo
os blocos mais propensos a falhas de hardware. A recuperação de um journal corrompido pode levar a uma corrupção
massiva. Ext4 checksums do dados de journal verificando se os blocos de journal
estão falhando ou corrompendo. Mas “journal checksumming” tem um bonus: ele
permite para conversão e gravação em duas-fases, sendo no Ext3 o journal em
única fase, acelerando a operação no sistema de arquivos para mais de 20% em
alguns casos – assim a reabilitação e a performance são melhoradas ao mesmo
tempo (Nota: parte dos novos recursos e melhorias de performance, e
“asyncrhonous logging”, está desativada por padrão e será ativada em versões
futuras).
Este é uma opção que melhora a integridade de um sistema
de arquivos ao custo de cerca de desempenho (você pode desabilitar isso com
“mount -o barrier=0″, recomendado que seja testado com um benchmarking). Neste
artigo da LWN (http://lwn.net/Articles/283161/): “O código do sistema de
arquivos tem, antes de escrever [journaling] e gravando o registro, ter certeza
absoluta de todas as informações de operações para a criação do journaling.
Apenas escrever, no bom sentido, é insuficiente; os dispositivos atuais mantêm
grandes chache interno e reordenam operações para melhor performance. Portanto,
os sistemas de arquivos devem explicitamente instruir o disco para obter todos
os dados do journaling antes da escrita e gravação das alterações; se a
gravação dos registros forem escritas em primeiro lugar, o journaling pode ser
corrompido. No kernel, os subsistemas de blocos de I/O torna essa capacidade
disponível através de uso de barreiras, na sua essência, uma barreira impede a
escrita de qualquer bloco após a barreira até que todos os blocos escritos
antes da barreira sejam gravados na mídia. Ao utilizar barreiras, o sistema de arquivos
pode ter certeza que sua estrutura em disco permaneçam consistentes em todo o
momento”.
HFS+
o HFS+ (Hierarchical File System plus, ou sistema de
arquivos hierárquico estendido). Ele é a atualização do HFS, apresentado em
1985 pela Apple e usado por anos em seus sistemas operacionais.
O HFS+ também é conhecido como sistema de arquivos Mac OS
X Extended, e supera o formato HFS em vários quesitos: pode trabalhar com
endereços de bloco de arquivos de até 32bits, contra 16bits do sistema
anterior; aceita nomes de arquivos com até 255 caracteres, em vez de apenas 31;
tem formato de nome de arquivo Unicode, em vez do já antiquado MacRoman; e
entre outros, o que mais gosto, que é a possibilidade de lidar com arquivos de
até 8EB (Exabytes)! Para se ter uma idéia, um Exabyte dá mil Petabytes, um
milhão de Terabytes, ou um bilhão de Gigabytes. Acredito que os editores de
vídeo não teriam problemas para gravar seus clipes com esse formato…
Apesar disso, existe uma pequena diferença entre “poder”
e “ser”. O formato NTFS que existe nos Windows NT, XP, 2003 e Vista, por
exemplo, alcança o dobro esse valor como máximo tamanho de um único arquivo.
Por outro lado, a implementação real só permite um limite de quase 16TB, ou
aproximadamente 16.000GB. Isso dá um banho de água do Oceano Ártico nos antigos
FAT16 e HFS. O limite de tamanho de arquivos para estes é de 2GB.
Podemos ver em que formato se encontra qualquer disco
conectado a um Mac através do atalho de teclas Command-I sobre o mesmo. No caso
do nosso querido sistema X, a opção de formato HFS+ já existe há algum tempo,
então é provável que apareça a designação Mac OS X Extended no local onde
indica o respectivo formato.
Além disso, ainda há outros termos. Por exemplo, quando
vamos formatar um disco com o Disk Utility, vemos as seguintes opções:
Mac OS Extended (Journaled): de acordo com a Apple, o
formato journaled foi apresentado no OS X 10.2.2 Server, e sua função é
aumentar a segurança quanto ao armazenamento de dados, no que diz respeito a
evitar falhas de integridade em casos extremos. Um disco com essa
característica mantém registro de todas as suas atividades, e em caso de
instabilidade ou travamento do sistema, esse registro — um journal, que pode
ser entendido como “relatório” — é usado para restaurar o estado do sistema ao
que tenha sido gravado, depois do reinicio do sistema. Conceito muito parecido
ao rollback em Banco de Dados.
Mac OS Extended: é possível ter um disco HFS+ sem a opção
de journaling. Também se pode desabilitar essa função, através de comandos via
Terminal, para quem precise ganhar desempenho em computadores mais lentos. O
risco de perda de dados aqui é maior que na opção anterior.
Mac OS Extended (Case-sensitive, Journaled): combinação
da primeira opção, respeitando as diferenças entre maiúsculas e minúsculas.
Algo parecido com o que acontece no UNIX.
Mac OS Extended (Case-sensitive): igual ao anterior, só
que sem journaling.
MS-DOS (FAT): seria o FAT32, da Microsoft. Formatar um
disco com essa especificação garante compatibilidade integral entre quaisquer
sistemas operacionais, porém há a limitação de tamanho de arquivos a 4GB, o que
pode ser um problema para editores de vídeo e outras pessoas que trabalhem com
arquivos de tamanho grande. Também um problema para quem lida com imagens de DVD-DL,
já que o dual-layer consiste exatamente em levar o tamanho de um DVD normal a
quase 8,5GB.
Tirando a opção MS-DOS (FAT), todas as outras são algum
tipo de HFS+, e ainda havia uma opção UFS (UNIX File System), para quem
quisesse, por alguma razão, usar o formato do sistema UNIX. O journaling é
sempre aconselhado, por aumentar a segurança na manipulação de dados, e
diminuir o risco de perdas em caso de que o computador pare de funcionar, trave
ou fique sem energia elétrica, por falta de luz, por exemplo.
Hoje em dia, para quem precise trabalhar com arquivos
muito grandes, eu recomendaria o uso do formato HFS+ Journaled para qualquer
disco, mesmo que ele seja utilizado depois em computadores com Windows. Existe
um programa muito bom da MediaFour, chamado MacDrive, que é pago, mas pela
função que tem, até sai barato. Permite ver e trabalhar com qualquer disco,
dentro do Windows, com formatos HFS e HFS+, em todas as variações. Isso garante
a possibilidade de abrir arquivos maiores que 4GB de tamanho nos sistemas
operacionais da Microsoft e da Apple, sem qualquer problema.
Há que lembrar sempre que, de modo nativo, o Mac OS X não
consegue permitir acesso completo a arquivos em discos com formato NTFS, usado
nos Windows 2000, XP e Vista. Creio que também há soluções para isso, apesar de
que eu não conheço nenhuma de fácil uso e que funcione de modo parecido ao
MacDrive. Talvez algum dia HFS+ e NTFS se comuniquem, como já acontece com o
formato da Apple e o FAT32.