Sistema de arquivos hierárquico - Hierarchical File System

HFS
Desenvolvedor (s) computador Apple
Nome completo Sistema de Arquivo Hierárquico
Introduzido 17 de setembro de 1985 ; 35 anos atrás com System 2.1 ( 17/09/1985 )
Identificador de partição Apple_HFS( Mapa de partição Apple )
0xAF( MBR ) HFS e HFS +
Estruturas
Conteúdo do diretório Árvore B
Alocação de arquivo Bitmap
Blocos ruins Árvore B
Limites
Máx. tamanho do volume TB ( 2 × 1024 4 bytes )
Máx. tamanho do arquivo GB ( 2 × 1024 3 bytes )
Máx. número de arquivos 65535
Máx. comprimento do nome do arquivo 31 caracteres
Caracteres permitidos em nomes de arquivos Todos os valores de 8 bits, exceto dois pontos ":". Nulos desencorajados e não impressos.
Características
Datas gravadas Criação, modificação, backup
Intervalo de datas 1 ° de janeiro de 1904 - 6 de fevereiro de 2040
Resolução de data 1s
Forks Apenas 2 (dados e recursos)
Atributos Cor (3 bits, todos os outros sinalizadores de 1 bit), bloqueado, ícone personalizado, pacote, invisível, alias, sistema, papel de carta, inited, sem recursos INIT, compartilhado, área de trabalho
Permissões do sistema de arquivos AppleShare
Compressão transparente Sim (terceiros), Empilhador
Criptografia transparente Não
Outro
Sistemas operacionais suportados Mac OS clássico , macOS , Linux , Microsoft Windows (por meio de drivers MacDrive ou Boot Camp IFS )

Hierarchical File System ( HFS ) é um sistema de arquivos proprietário desenvolvido pela Apple Inc. para uso em sistemas de computador que executam Mac OS . Projetado originalmente para uso em disquetes e discos rígidos , ele também pode ser encontrado em mídia somente leitura, como CD-ROMs . HFS também é conhecido como Mac OS Standard (ou "HFS Standard"), enquanto seu sucessor, HFS Plus , também é chamado de Mac OS Extended (ou "HFS Extended").

Com a introdução do Mac OS X 10.6 , a Apple abandonou o suporte para formatação ou gravação de discos e imagens HFS , que permanecem com suporte como volumes somente leitura . A partir do macOS 10.15 , os discos HFS não podem mais ser lidos.

História

A Apple lançou o HFS em setembro de 1985, especificamente para oferecer suporte ao primeiro disco rígido da Apple para Macintosh, substituindo o Macintosh File System (MFS), o sistema de arquivos original que havia sido introduzido um ano e meio antes com o primeiro computador Macintosh . O HFS baseou-se fortemente no primeiro sistema operacional hierárquico ( SOS ) da Apple para o Apple III com falha , que também serviu de base para sistemas de arquivos hierárquicos no Apple IIe e no Apple Lisa . O HFS foi desenvolvido por Patrick Dirks e Bill Bruffey. Ele compartilhava vários recursos de design com o MFS que não estavam disponíveis em outros sistemas de arquivos da época (como o FAT do DOS ). Os arquivos podem ter várias bifurcações (normalmente uma bifurcação de dados e uma bifurcação de recurso ), o que permite que os dados principais do arquivo sejam armazenados separadamente dos recursos, como ícones que podem precisar ser localizados. Os arquivos eram referenciados com IDs de arquivo exclusivos em vez de nomes de arquivo, e os nomes de arquivo podiam ter 255 caracteres (embora o Finder só suportasse um máximo de 31 caracteres).

No entanto, o MFS foi otimizado para ser usado em mídias muito pequenas e lentas, ou seja, disquetes , então o HFS foi introduzido para superar alguns dos problemas de desempenho que surgiram com a introdução de mídias maiores, principalmente discos rígidos . A principal preocupação era o tempo necessário para exibir o conteúdo de uma pasta. No MFS, todas as informações de listagem de arquivos e diretórios eram armazenadas em um único arquivo, que o sistema precisava pesquisar para construir uma lista dos arquivos armazenados em uma pasta específica. Isso funcionou bem com um sistema com algumas centenas de kilobytes de armazenamento e talvez uma centena de arquivos, mas à medida que os sistemas cresciam para megabytes e milhares de arquivos, o desempenho diminuía rapidamente.

A solução foi substituir a estrutura de diretório do MFS por uma mais adequada para sistemas de arquivos maiores. O HFS substituiu a estrutura de tabela plana pelo Arquivo de Catálogo, que usa uma estrutura de árvore B que pode ser pesquisada muito rapidamente, independentemente do tamanho. O HFS também redesenhou várias estruturas para poder conter números maiores, os inteiros de 16 bits sendo substituídos por 32 bits quase universalmente. Estranhamente, um dos poucos lugares em que esse "upsizing" não ocorreu foi o próprio diretório de arquivos, o que limita o HFS a um total de 65.535 arquivos em cada disco lógico.

Embora HFS seja um formato de sistema de arquivos proprietário, ele está bem documentado; geralmente há soluções disponíveis para acessar discos formatados em HFS da maioria dos sistemas operacionais modernos .

A Apple introduziu o HFS por necessidade com sua primeira oferta de disco rígido de 20 MB para o Macintosh em setembro de 1985, onde foi carregado na RAM a partir de um disquete MFS na inicialização usando um arquivo de patch ("Disco Rígido 20"). No entanto, o HFS não foi amplamente introduzido até que foi incluído na ROM de 128K que estreou com o Macintosh Plus em janeiro de 1986, junto com a unidade de disquete maior de 800 KB para o Macintosh que também usava HFS. A introdução do HFS foi o primeiro avanço da Apple a deixar para trás um modelo de computador Macintosh: o Macintosh original de 128K , que não tinha memória suficiente para carregar o código HFS e foi imediatamente descontinuado.

Em 1998, a Apple lançou o HFS Plus para lidar com a alocação ineficiente de espaço em disco no HFS e para adicionar outras melhorias. O HFS ainda é compatível com as versões atuais do Mac OS, mas a partir do Mac OS X , um volume HFS não pode ser usado para inicializar , e a partir do Mac OS X 10.6 (Snow Leopard), os volumes HFS são somente leitura e não podem ser criados ou Atualizada. No macOS Sierra (10.12), as notas de lançamento da Apple afirmam que "O sistema de arquivos padrão HFS não é mais compatível." No entanto, o suporte ao padrão HFS somente leitura ainda está presente no Sierra e funciona como nas versões anteriores.

Projeto

Um volume de armazenamento é inerentemente dividido em blocos lógicos de 512 bytes. O Hierarchical File System agrupa esses blocos lógicos em blocos de alocação , que podem conter um ou mais blocos lógicos, dependendo do tamanho total do volume. O HFS usa um valor de 16 bits para endereçar blocos de alocação, limitando o número de blocos de alocação a 65.535 (2 16 -1).

Cinco estruturas formam um volume HFS:

  1. Os blocos lógicos 0 e 1 do volume são os blocos de inicialização , que contêm informações de 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 (também conhecido como MDB ). Isso define uma ampla variedade de dados sobre o próprio volume, por exemplo, carimbos de data e hora para quando o volume foi criado, a localização de outras estruturas de volume, como o Bitmap de Volume ou o tamanho de estruturas lógicas, como blocos de alocação. Também há uma duplicata do MDB chamada Bloco de Diretório Mestre Alternativo (também conhecido como MDB Alternativo ), localizada na extremidade oposta do volume, do penúltimo bloco lógico. Destina-se principalmente ao uso por utilitários de disco e só é atualizado quando o arquivo de catálogo ou o arquivo de estouro de extensões aumentam de tamanho.
  3. O bloco lógico 3 é o bloco inicial do Bitmap de Volume , que mantém o controle de quais blocos de alocação estão em uso e quais são gratuitos. Cada bloco de alocação no volume é representado por um bit no mapa: se o bit estiver definido, o bloco está em uso; se estiver claro, o bloco está livre para ser usado. Como o Bitmap de Volume deve ter um bit para representar cada bloco de alocação, seu tamanho é determinado pelo tamanho do próprio volume.
  4. O Extent Overflow File é uma árvore B que contém extensões extras que registram quais blocos de alocação são alocados para quais arquivos, uma vez que as três extensões iniciais no Arquivo de Catálogo são usadas. Versões posteriores também adicionaram a capacidade do Extent Overflow File de armazenar extensões que registram blocos inválidos, para evitar que o sistema de arquivos tente alocar um bloco inválido para um arquivo.
  5. O Arquivo de Catálogo é outra árvore B que contém registros para todos os arquivos e diretórios armazenados no volume. Ele armazena quatro tipos de registros. 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 e um registro de diretório. Arquivos e diretórios no Arquivo de Catálogo são localizados por seu ID de Nó de Catálogo exclusivo (ou CNID ).
    • Um File Thread Record armazena apenas o nome do arquivo e o CNID de seu diretório pai.
    • Um registro de arquivo armazena uma variedade de metadados sobre o arquivo, incluindo seu CNID, o tamanho do arquivo, três carimbos de data / hora (quando o arquivo foi criado, última modificação, último backup), as primeiras extensões de arquivo dos dados e bifurcações de recursos e ponteiros aos primeiros dados do arquivo e registros de extensão de recursos no Arquivo de estouro de extensão. O Registro de Arquivo também armazena dois campos de 16 bytes que são usados ​​pelo Finder para armazenar atributos sobre o arquivo, incluindo coisas como o código do criador , o código do tipo , a janela em que o arquivo deve aparecer e sua localização dentro da janela.
    • Um Directory Thread Record armazena apenas o nome do diretório e o CNID de seu diretório pai.
    • Um registro de diretório que armazena dados como o número de arquivos armazenados no diretório, o CNID do diretório, três carimbos de data / hora (quando o diretório foi criado, última modificação, último backup). Como o File Record, o Directory Record também armazena dois campos de 16 bytes para uso pelo Finder. Estes armazenam coisas como largura e altura e coordenadas x e y para a janela usada para exibir o conteúdo do diretório, o modo de exibição (visualização de ícone, visualização de lista, etc.) da janela e a posição de rolagem da janela bar.

Limitações

O Arquivo de Catálogo, que armazena todos os registros de arquivos e diretórios em uma única estrutura de dados, resulta em problemas de desempenho quando o sistema permite multitarefa , pois apenas um programa pode gravar nesta estrutura por vez, o que significa que muitos programas podem estar esperando na fila devido a um programa "monopolizar" o sistema. É também uma preocupação séria de confiabilidade, já que danos a esse arquivo podem destruir todo o sistema de arquivos. Isso contrasta com outros sistemas de arquivos que armazenam arquivos e registros de diretório em estruturas separadas (como o sistema de arquivos FAT do DOS ou o Sistema de Arquivos Unix ), onde ter uma estrutura distribuída pelo disco significa que danificar um único diretório geralmente não é fatal e os dados possivelmente pode ser reconstruído com dados mantidos nas partes não danificadas.

Além disso, o limite de 65.535 blocos de alocação resultou em arquivos com um tamanho "mínimo" equivalente a 1 / 65.535º do tamanho do disco. Portanto, qualquer volume, independentemente do tamanho, só poderia armazenar no máximo 65.535 arquivos. Além disso, qualquer arquivo teria alocado mais espaço do que realmente necessário, até o tamanho do bloco de alocação. Quando os discos eram pequenos, isso era de pouca importância, porque o tamanho do bloco de alocação individual era trivial, mas conforme os discos começaram a se aproximar da marca de 1 GB, a menor quantidade de espaço que qualquer arquivo poderia ocupar (um único bloco de alocação) tornou-se excessivamente grande , desperdiçando uma quantidade significativa de espaço em disco. Por exemplo, em um disco de 1 GB, o tamanho do bloco de alocação em HFS é 16 KB, portanto, mesmo um arquivo de 1 byte ocuparia 16 KB de espaço em disco. Essa situação era menos problemática para usuários com arquivos grandes (como imagens, bancos de dados ou áudio) porque esses arquivos maiores desperdiçavam menos espaço como porcentagem do tamanho do arquivo. Os usuários com muitos arquivos pequenos, por outro lado, podem perder uma grande quantidade de espaço devido ao grande tamanho do bloco de alocação. Isso tornou o particionamento de discos em volumes lógicos menores muito atraente para usuários de Mac, porque pequenos documentos armazenados em um volume menor ocupariam muito menos espaço do que se residissem em uma partição grande. O mesmo problema existia no sistema de arquivos FAT16.

O HFS salva a capitalização de um arquivo que é criado ou renomeado, mas não faz distinção entre maiúsculas e minúsculas na operação.

De acordo com bombich.com, o HFS não é mais compatível com Catalina e versões futuras do macOS.

Veja também

Referências

links externos