# ReFS

Resilient File System (ReFS), codinomeado "Protogon", é um sistema de arquivos proprietário da Microsoft introduzido com o Windows Server 2012 com a intenção de se tornar o sistema de arquivos de "próxima geração" após o NTFS.
O ReFS foi projetado para superar problemas que se tornaram significativos ao longo dos anos desde que o NTFS foi concebido, que estão relacionados com a forma como os requisitos de armazenamento de dados foram mudados. As principais vantagens de design do ReFS incluem verificação automática de integridade e limpeza de dados, remoção da necessidade de rodar o chkdsk, proteção contra degradação de dados, manuseio de falha no disco rígido e redundância, integração da funcionalidade RAID, uma mudança para cópia/alocação em gravação para atualizações de dados e metadados, manejo de caminhos e nomes de arquivos muito longos e virtualização e agrupamento de armazenamento, incluindo volumes lógicos de tamanho quase arbitrário (não relacionados aos tamanhos físicos das unidades usadas).
Esses requisitos surgiram a partir de duas grandes mudanças nos sistemas de armazenamento e uso — o tamanho do armazenamento em uso (conjuntos grandes ou enormes de unidades de vários terabytes agora sendo bastante comuns), e a necessidade de uma confiabilidade contínua. Como resultado, o sistema de arquivos precisa ter auto-reparação (para impedir que a verificação do disco seja impraticantemente lenta ou perturbadora) juntamente com abstração ou virtualização entre discos físicos e volumes lógicos.
ReFS foi inicialmente adicionado somente ao Windows Server 2012, com o objetivo de migração gradual para sistemas de consumidor em futuras versões; isso foi feito a partir do Windows 8.1. Nas versões iniciais, foram removidos alguns recursos que existiam no NTFS, como cotas de disco, fluxos de dados alternativos e atributos estendidos. Alguns deles foram re-implementados em versões posteriores do ReFS.
Em versões iniciais (2012-2013), o ReFS foi semelhante ou ligeiramente mais rápido que o NTFS na maioria dos testes, mas muito mais lento quando a verificação de integridade total foi ativada, um resultado atribuído à relativa novidade do ReFS. Preocupações de pré-lançamento também foram expressas sobre o recurso Storage Spaces, o sistema de armazenamento projetado para apoiar o ReFS, que poderia falhar de maneira que impedisse o ReFS se recuperar automaticamente.
O tamanho do cluster de um volume do ReFS é de 4 KiB ou 64 KiB.

## Alterações de recursos em comparação com NTFS
### Principais características novas
#### Maior confiabilidade para estruturas no disco

    O ReFS usa árvores B+ para todas as estruturas no disco, incluindo todos os metadados e dados de arquivos. Os metadados e dados de arquivos são organizados em tabelas semelhantes a um banco de dados relacional. O tamanho do arquivo, o número de arquivos em uma pasta, o tamanho total do volume e o número de pastas em um volume são limitados por números de 64 bits; como resultado, o ReFS suporta um tamanho máximo de arquivo de 16 exbibytes (2$^{64}$−1 bytes), um número máximo de 18.4 × 10$^{18}$ diretórios e um tamanho máximo de volume de 1 yobibyte (2$^{80}$ bytes) (com clusters de 64 KiB) o que permite grande escalabilidade sem limites práticos no tamanho do arquivo e diretório (os limites de hardware ainda se aplicam). O espaço livre é contado por um alocador hierárquico que inclui três tabelas separadas para grandes, médios e pequenos pedaços.

#### Resiliência incorporada

    O ReFS usa a alocação em gravação como estratégia de atualização para os metadados, que aloca novos pedaços para cada transação de atualização e usa grandes lotes de E/S. Todos os metadados do ReFS possuem somas de verificação de 64 bits que são armazenadas de forma independente. Os dados dos arquivos podem ter uma soma de verificação opcional em um "fluxo de integridade" separado, caso em que a estratégia de atualização do arquivo também implementa a alocação em gravação para os dados do arquivo; Isso é controlado por um novo atributo de "integridade" aplicável tanto aos arquivos quanto aos diretórios. Se os dados do arquivo ou os metadados se tornarem corrompidos, o arquivo pode ser excluído sem precisar desligar todo o volume para fazer manutenção e depois ser restaurado a partir do backup. Como resultado da resiliência incorporada, os administradores não precisam executar periodicamente ferramentas de verificação de erros, como o CHKDSK quando se usa o ReFS.

#### Compatibilidade com APIs e tecnologias existentes

    O ReFS suporta apenas um subconjunto de recursos do NTFS, e apenas APIs Win32 que são "amplamente adotadas"; mas não requer novas APIs do sistema e a maioria dos filtros do sistema de arquivos continuam a funcionar com os volumes do ReFS. O ReFS suporta muitos recursos existentes do Windows e do NTFS, como a criptografia do BitLocker, listas de controle de acesso, USN Journal, notificações de mudança, links simbólicos, pontos de junção, pontos de montagem, pontos de análise, instantâneos de volume, IDs de arquivos e oplock. O ReFS integra-se perfeitamente com o Storage Spaces, uma camada de virtualização de armazenamento que permite o espelhamento e o armazenamento de dados, além de compartilhar pools de armazenamento entre máquinas. Os recursos de resiliência do ReFS melhoram o recurso de espelhamento fornecido pelos Espaços de Armazenamento e podem detectar se alguma cópia espelhada de arquivos se torna corrupta usando um processo de limpeza de dados, que periodicamente lê todas as cópias espelhadas e verifica suas somas de verificação, em seguida, substitui cópias ruins por boas.

### Recursos removidos

Alguns recursos do NTFS não são implementados no ReFS. Estes incluem IDs de objetos, nomes de arquivos 8.3, compressão NTFS, Encrypting File System (EFS), NTFS transacional, hard links, atributos estendidos, e cotas de disco. Além disso, o Windows não pode ser inicializado a partir de um volume ReFS. Discos dinâmicos com volumes espelhados ou listrados são substituídos por pools de armazenamento espelhados ou listrados fornecidos pelo Storage Spaces; no entanto, a correção automática de erros só é suportada em espaços espelhados. A desduplicação de dados que estava ausente nas versões iniciais do ReFS, foi implementada na v3.2, estreando no Windows Server v1709.
O suporte para fluxos de dados alternativos não foi inicialmente implementado no ReFS. No Windows 8.1 64-bit e no Server 2012 R2, o sistema de arquivos voltou a ter suporte para fluxos de dados alternativos, com comprimentos de até 128K e correção automática de corrupção quando os fluxos de integridade são usados em espaços de paridade. O ReFS inicialmente não era adequado para a atribuição de instâncias do Microsoft SQL Server devido à ausência de fluxos de dados alternativos.
A partir de março de 2015, uma revisão do estado do ReFS em WindowsNetworking.com afirmou que:
   "Você não pode (pelo menos neste momento) inicializar o Windows a partir de um volume do Refs e as primeiras versões do ReFS não incluem a compressão e criptografia no nível do arquivo, cotas de disco ou links rígidos, todos os quais são vantagens do NTFS sobre os sistemas de arquivos FAT. Observe que o ReFS suporta arquivos esparsos, reparse points, nomes de arquivos sensíveis a maiúsculas e minúsculas e Unicode em nomes de arquivos e talvez o mais importante, ele preserva e impõe listas de controle de acesso (ACLs).
   É óbvio que o ReFS em sua iteração atual não é um substituto para o NTFS ... porque alguns aplicativos que dependem de recursos específicos do NTFS podem não funcionar com o ReFS [... contudo ...] O armazenamento da maioria dos dados convencionais não exige suporte aos recursos específicos do NTFS que não são suportados pelo ReFS e, portanto, o ReFS pode lidar bem com esse dever. Seu principal caso de uso está em servidores de arquivos que armazenam quantidades extremamente grandes de dados. Ele também possui mecanismos de integridade e recuperação de dados incorporados ao sistema de arquivos. Isso significa que as ferramentas que são projetadas para detectar e reparar a corrupção de arquivos em outros sistemas de arquivos não são necessárias, então sua incompatibilidade com o ReFS não é realmente um problema. Além disso, embora o ReFS não ofereça suporte à criptografia de nível de arquivo (criptografia do sistema de arquivos), o BitLocker pode ser usado para proteger os volumes do ReFS, por isso esse não é um grande problema [...]
   O ReFS tem algumas vantagens distintas em relação ao atual sistema de arquivos do Windows NTFS, mas também tem algumas desvantagens. Possui poderes de auto-reparação, capacidade de reparar arquivos sem precisar de tempo para fazer manutenção, menos risco de dados serem perdidos quando houver uma falha de energia (devido à forma como ele grava metadados), e, claro, a capacidade de criar volumes e arquivos enormes e até mesmo fornecer nomes de arquivos com mais de 255 caracteres se desejar. Mas ainda não está pronto para o horário nobre."

## Comparações de desempenho e de concorrentes

Outros sistemas operacionais possuem sistemas de arquivos concorrentes para o ReFS, dos quais os mais conhecidos são o ZFS e o Btrfs, no sentido de que todos os três são projetados para integrar proteção de dados, instantâneos, e recuperação silenciosa de alta velocidade de corrupção e de erros de dados rodando em plano de fundo.
Em 2012, o site Phoronix escreveu uma análise do ReFS vs Btrfs, um sistema de arquivos baseado em cópia em gravação para o Linux. Suas características são semelhantes, com ambos suportando somas de verificação, uso de discos múltiplos em RAID, e detecção/correção de erros. No entanto, o ReFS não possui instantâneos baseados em cópia em gravação e compressão, ambos encontrados no Btrfs e no ZFS.
Em 2014, uma análise do ReFS e a avaliação da sua prontidão para o uso da produção concluíram que o ReFS tinha pelo menos algumas vantagens em relação a dois dos principais concorrentes do sistema de arquivos.
* ZFS (usado no Solaris, illumos, FreeBSD e outros) foi amplamente criticado por seus requisitos de memória comparativamente extremos de muitos gigabytes de RAM para desduplicação on-line, o que o descartou para uso em um grande número de sistemas médios e menores. No entanto, desligando a desduplicação on-line no ZFS, pois esse recurso não é suportado no ReFS, produz uma comparação mais justa entre os dois sistemas de arquivos, uma vez que o ZFS tem um requisito de memória de apenas algumas centenas de megabytes.
* Soluções que utilizam métodos proprietários, como a da empresa Drobo, não têm retorno se a empresa por trás deles falir.