# HPFS

O HPFS é o sistema de arquivos utilizado pelo OS/2 da IBM, com recursos que se aproximam muito dos permitidos pelo NTFS como nome de arquivos com até 255 caracteres incluindo espaços, partições de até 512 GB (no HPFS386) e unidades de alocação de 512 bytes. Embora muito eficiente, este sistema de arquivos caiu em desuso juntamente com o OS/2, sendo suportado atualmente somente pelo Linux. $^[$

## Visão geral

Comparado com o FAT, o HPFS forneceu uma série de recursos adicionais:
* Suporte para nomes de arquivos de caixas mistas, em diferentes páginas de códigos
* Suporte para nomes de arquivo longos (255 caracteres em oposição ao sistema de 8.3 caracteres do FAT)
* Uso mais eficiente do espaço em disco (os arquivos são armazenados usando diretamente os setores ao invés de usar clusters de vários setores)
* Uma arquitetura interna que mantém os itens relacionados próximos uns dos outros no volume de disco
* Menor fragmentação de dados
* Alocaçao de espaço baseado em extents
* Rótulos de datas separados para última modificação, último acesso e criação (em oposição a última modificação apenas em implementações do FAT na época)
* Uma estrutura de árvore B+ para diretórios
* Diretório raiz localizado no ponto médio, em vez do início do disco, para ter tempos de acesso médio mais rápidos
HPFS também pode manter 64 KiB de metadados ("atributos estendidos") por arquivo.
A IBM oferece dois tipos de drivers IFS para este sistema de arquivos:
* O driver padrão com um cache limitado a 2 MiB
* O HPFS386, este sendo fornecido com determinadas versões de servidor do OS/2, ou como componente adicionado para as versões de servidor que não vieram com ele
O cache do HPFS386 é limitado pela quantidade de memória disponível na arena de memória do sistema OS/2 e foi implementado em linguagem de montagem de 32 bits. HPFS386 é um driver de camada 0 (permitindo acesso direto ao hardware e interação direta com o kernel) com propriedades de rede SMB incorporadas que são utilizáveis por vários daemons de servidores, enquanto HPFS é um driver de camada 3. Assim, o HPFS386 é mais rápido que o HPFS e altamente otimizado para aplicações de servidor. Também é altamente ajustável por administradores experientes.
Embora a IBM ainda tenha direitos sobre o HPFS, o acordo deles com a Microsoft para continuar licenciando a versão HPFS386 depende de pagar a Microsoft uma taxa de licenciamento por cada cópia vendida. Este foi um resultado da colaboração da Microsoft e da IBM, que a IBM e a Microsoft tinham o direito de usar a tecnologia Windows e OS/2. A Microsoft utilizou o HPFS no Windows NT.
Devido à dependência da Microsoft, tamanho de partição limitado, limite de tamanho de arquivo de 2 GiB e tempos de verificação de disco longos após uma falha, a IBM portou o sistema de arquivos com journaling JFS para o OS/2 como um substituto.
O DOS e o Linux suportam o HPFS através de drivers de terceiros. O Windows NT nas versões 3.51 (4.0) e anteriores tinham suporte nativo para o HPFS.

## Suporte nativo no Windows

Windows 95 e seus sucessores Windows 98 e Windows Me podem ler/escrever no HPFS somente quando mapeado através de um compartilhamento de rede, mas não podem lê-lo a partir de um disco local. Eles listavam as partições NTFS de computadores em rede como "HPFS", porque NTFS e HPFS compartilham o mesmo número de identificação do sistema de arquivos na tabela de partição.
Windows NT 3.1 e 3.5 possuem suporte nativo de leitura/gravação para discos locais e podem até mesmo serem instalados em uma partição HPFS. Isso ocorre porque o Windows NT originalmente seria uma versão do OS/2.
Windows NT 3.51 também pode ler e escrever a partir de unidades locais formatadas em HPFS. No entanto, a Microsoft desencorajou o uso do HPFS no Windows NT 4 e em versões posteriores apesar das atualizações para o NT 4.1 operarem satisfatoriamente com servidores pré-formatados com o HPFS. A Microsoft até removeu a capacidade do NT 3.51 para formatar um sistema de arquivos HPFS. A partir do Windows NT 4, o driver do sistema de arquivos PINBALL.SYS que habilita o acesso leitura/gravação não é mais incluído em uma instalação padrão. As versões mais recentes do Windows não são fornecidas com este driver.
A Microsoft manteve os direitos das tecnologias do OS/2, incluindo o sistema de arquivos HPFS, depois que eles cessaram a colaboração com a IBM. Desde que o Windows NT 3.1 foi projetado para uso mais rigoroso (classe empresarial) que as versões anteriores do Windows, ele incluiu o suporte para HPFS (e o NTFS) dando-lhe uma capacidade de armazenamento maior do que os sistemas de arquivos FAT12 e FAT16. No entanto, uma vez que o HPFS não possui journaling, qualquer recuperação após um desligamento inesperado ou outro estado de erro leva progressivamente mais tempo para serem completadas à medida que o sistema de arquivos cresce. Um utilitário como o CHKDSK precisaria verificar cada entrada no sistema de arquivos para garantir que não existam erros, um problema que é vastamente reduzido no NTFS, onde o jornal é simplesmente reproduzido.