Sistema de Arquivo Hierárquico

Sistema de arquivos hierárquico HFS
Desenvolvedor Apple Inc.
nome inglês Sistema de Arquivo Hierárquico
Introdução 17 de julho de 1985
( Sistema 2.1 )
Identificador de partição Apple HFS ( Apple Partition Map )
0xAF ( MBR )
Estrutura
Conteúdo dos diretórios Árvore B *
Alocação de arquivo Bitmap
Blocos ruins Árvore B *
Limitações
Tamanho máximo do arquivo 2 GiB
Número máximo de arquivos 65.535
Tamanho máximo do nome do arquivo 31 caracteres
Tamanho máximo do volume 2 TiB
Caracteres permitidos em nomes de arquivo Todos os valores de 8 bits,
exceto ":".
Características
Datas gravadas Criação, modificação, backup
Intervalo de datas 1 ° de janeiro de 1904 - 6 de fevereiro de 2040
Forks Apenas 2 (dados e recursos)
Atributos Cor (3 bits), cadeado, ícones personalizáveis, arquivo, oculto, alias, sistema, initado, sem recursos INIT, compartilhamento, área de trabalho
Permissões AppleShare
Compressão integrada Sim (parte três), empilhador
Criptografia integrada Não

O Hierarchical File System ( HFS ) é um sistema de arquivos proprietário desenvolvido pela Apple para o sistema operacional Mac OS . Projetado originalmente para disquetes e discos rígidos , também pode ser usado em mídia somente leitura, como CD-ROMs . HFS é geralmente referido como "Mac OS Standard" e seu sucessor HFS + como "Mac OS Extended".

O Hierarchical File System , ou HFS, também é outro sistema de arquivos usado em z / OS , um sistema operacional IBM para mainframe .

História

O HFS foi introduzido pela Apple em setembro de 1985 para substituir o Macintosh File System (MFS), o sistema de arquivos original que foi lançado no ano anterior com o computador Macintosh . Desenvolvido por Patrick Dirks e Bill Bruffey, o HFS compartilha vários recursos de design com o MFS que não estavam disponíveis em outros sistemas de arquivos na época (como DOS e FAT ). Os arquivos podem ser vários bifurcações , permitindo que o código-fonte seja armazenado separadamente de recursos (in) , como ícones para torná-los fáceis de localizar (acomodar vários países). As pastas foram referenciadas com identificadores de arquivo exclusivos em vez de nomes de arquivo, e os nomes de arquivo podem ter 255 caracteres (embora o Finder só suporte 31 caracteres).

O MFS foi otimizado para uso em mídias muito pequenas e lentas, como disquetes . O HFS foi introduzido para superar alguns dos problemas de desempenho associados à introdução de mídias maiores, especialmente discos rígidos . A principal preocupação é o tempo necessário para exibir o conteúdo de uma pasta. No MFS, todas as informações de arquivos e diretórios eram armazenadas em um único arquivo, que, para o sistema de pesquisa, criava uma lista de arquivos armazenados em uma pasta específica. Funcionou bem com um sistema de algumas centenas de kilobytes de armazenamento e centenas de pastas, mas como os sistemas estavam usando megabytes e milhares de arquivos, o desempenho diminuiu rapidamente.

Para acomodar sistemas de arquivos grandes, o HFS substitui a tabela de arquivos pelo Arquivo de Catálogo , que usa uma estrutura de árvore B e permite que as pesquisas sejam realizadas muito rapidamente, independentemente do tamanho da árvore. O HFS também redesenhou várias estruturas e, para organizar mais arquivos, usa inteiros de 32 bits (em vez de 16). Mas, como o MFS, o próprio arquivo de catálogo limita o HFS para armazenar no máximo 65.535 arquivos.

Embora o HFS seja um sistema de arquivos proprietário, ele é feito de forma que haja soluções para o uso de unidades formatadas em HFS com sistemas operacionais mais modernos.

Em 1998, a Apple lançou o HFS + por causa da alocação ineficiente de espaço em disco para o HFS. Este novo sistema de arquivos traz outras melhorias. O HFS ainda pode ser lido pelas versões atuais do Mac OS, mas no Mac OS X um volume HFS não pode ser usado para inicializar (iniciar), assim como as versões recentes do Windows não podem ser instaladas em uma partição FAT16 .

Projeto

O Hierarchical File System divide um volume lógico em blocos de 512 bytes. Esses blocos lógicos são agrupados em blocos de alocação, que podem conter um ou mais blocos lógicos, dependendo do tamanho total. O HFS usa um valor de 16 bits para alocação de endereço de bloco, o que limita o número de blocos de alocação a 65.536.

Existem cinco estruturas que constituem um volume de HFS:

  1. Os blocos lógicos 0 e 1 do volume são os setores de inicialização que contêm informações sobre a inicialização do sistema. Por exemplo, os nomes dos arquivos do sistema e do Shell (geralmente o Finder ) que são carregados na inicialização.
  2. O bloco lógico 2 contém o bloco de diretório mestre (alias MDB ). Este MDB define uma ampla variedade de informações sobre o próprio volume, como data e hora de criação, localização de outros volumes, tamanhos de estruturas lógicas e alocação de blocos. Também há uma duplicata do MDB chamada Alternate Master Directory Block (também conhecido como Alternate MDB ), localizada na extremidade oposta do volume no penúltimo bloco lógico. Isso é principalmente para uso de utilitário e disco quando a atualização do catálogo de arquivos ou arquivo de estouro de extensões é instalado.
  3. O bloco lógico 3 é o início do volume de bitmap , que mantém o controle da alocação de blocos usados ​​ou livres. Cada bloco de alocação no volume é representado por uma marca; Se estiver livre, o bloco pode ser usado. O tamanho do Volume do Bitmap é determinado pelo tamanho do próprio volume.
  4. O Extents Overflow File é uma árvore B * que permite que o sistema gerencie blocos defeituosos em um arquivo.
  5. O Catálogo de Arquivos é outra árvore B * , que contém registros para todos os arquivos e diretórios armazenados no volume. Ele armazena quatro tipos de documentos. Cada arquivo consiste em um registro de thread de arquivo e um registro de arquivo, enquanto cada diretório consiste em um registro de thread de diretório, um registro de diretório. Arquivos e diretórios no catálogo de arquivos são localizados por seu ID de nó de catálogo exclusivo (ou CNID ).
    • Um File Thread Record apenas armazena o nome do arquivo e CNID de seu diretório pai.
    • Um registro de arquivo armazena metadados sobre o arquivo, incluindo seus CNIDs, tamanho do arquivo, três datas (criado, última modificação e último salvo). O arquivo também armazena dois campos de 16 bytes que são usados ​​pelo Finder para armazenar atributos em arquivos.
    • Um Directory Thread Record apenas armazena o nome do diretório e o CNID de seu diretório pai.
    • Um registro de diretório armazena dados como o número de arquivos armazenados no diretório, o CNID do diretório, três datas (criado, última modificação e último salvo). Como o File Record, o Directory Record armazena dois campos de 16 bytes usados ​​pelo Finder. Para armazenar informações de exibição, como largura e altura, coordenadas xey da janela, modo de exibição (ícone, lista, etc.) e sua posição na barra de rolagem.

Problemas

O catálogo de arquivos, que armazena todos os arquivos e diretórios em uma única estrutura de dados, tem problemas de desempenho. Quando o sistema permite multitarefa , apenas um programa pode gravar em um arquivo por vez, o que significa que muitos programas podem acabar na fila devido a um "arco" no sistema. Nesse caso, o dano a um arquivo pode destruir todo o sistema de arquivos. Isso contrasta com outros sistemas de arquivos que armazenam arquivos e pastas em estruturas separadas (como Microsoft e FAT ou o Sistema de Arquivos Unix ), onde a estrutura é distribuída por todo o disco. Isso significa que danificar um único diretório geralmente não é perigoso e os dados podem ser recuperados na parte não danificada.

Além disso, o limite de 65 535 blocos de arquivo licenças ( aglomerados ) resultou em tamanho do bloco mínimo equivalente a 1/65 535 th do tamanho da unidade, mesmo para ficheiros com apenas alguns bytes. Quando os discos eram pequenos, isso não era importante, pois os tamanhos dos blocos de alocação individuais eram reduzidos, mas assim que os discos começaram a se aproximar de 1  GiB , o tamanho mínimo do bloco ficou muito grande, desperdiçando muito espaço em disco. Por exemplo, em um disco de 1  GiB , o tamanho dos blocos de alocação com HFS é de 16 KB, mesmo para um arquivo de 1 byte. Isso é menos problemático para usuários com arquivos grandes (como imagens, bancos de dados ou áudio), que desperdiçam menos espaço. Os usuários com um grande número de arquivos pequenos, por outro lado, podem perder muito espaço devido ao tamanho dos blocos de alocação. A divisão de disco feita em pequenos volumes lógicos (partições) é muito atraente para usuários de Mac, porque pequenos documentos armazenados em um volume menor ocupariam muito menos espaço do que em uma partição grande. O mesmo problema existe no FAT16 .