Tecnologia Ntfs2btrfs para converter em in-place o sistema de arquivos NTFS para o Btrfs open source
(github.com/maharmstone)- Ntfs2btrfs é uma ferramenta que converte em in-place o sistema de arquivos Microsoft NTFS para o sistema de arquivos open source Btrfs, funcionando de forma semelhante ao
btrfs-convertpara ext2 - Antes da conversão, a imagem original é salva em
image/ntfs.imgcomo uma cópia reflink; para manter o resultado da conversão, é possível excluir essa imagem para liberar espaço - No Windows, execute
ntfs2btrfs.exe D:\no Prompt de Comando com privilégios de administrador; no Linux, executentfs2btrfs /dev/sda1como root - Não funciona em unidade de boot nem em unidades com o pagefile atualmente em uso; ao usar o WinBtrfs, é preciso remover a flag readonly do subvolume
imagepara poder excluí-lo - O suporte inclui arquivos, diretórios, links simbólicos, descritores de segurança, fluxos de dados alternativos, rollback do NTFS e preservação de metadados LXSS, mas não oferece suporte a arquivos criptografados nem a tamanhos de cluster incomuns
O que o Ntfs2btrfs faz
- Ntfs2btrfs é uma ferramenta para conversão em in-place de sistemas de arquivos NTFS para Btrfs
- A imagem original é salva em
image/ntfs.imgcomo uma cópia reflink- Se quiser manter o resultado da conversão, é possível apagar esse arquivo para liberar espaço
- A ferramenta é descrita como estável, mas inclui o aviso de que o autor não se responsabiliza caso surjam problemas
- Também há referência ao WinBtrfs, driver de sistema de arquivos Btrfs para Windows, como projeto relacionado
- É usado o código ntfs-3g-system-compression de Eric Biggers, que fez engenharia reversa do “WOF compressed data” do Windows 10
Como usar e limitações
- No Windows, execute no Prompt de Comando com privilégios de administrador
ntfs2btrfs.exe D:\
- No Linux, especifique o dispositivo de bloco com privilégios de root
ntfs2btrfs /dev/sda1
- No Windows, os seguintes alvos não podem ser convertidos
-
Unidade de boot
- Unidade com pagefile atualmente em uso
- Ao usar o WinBtrfs, para excluir o subvolume
image, primeiro é necessário remover a flag readonly
-
Caminhos de instalação
- No Windows, é possível baixar o arquivo Zip mais recente na página de Releases ou usar o Scoop
- Há pacotes disponíveis para diferentes distribuições Linux
- Em outras distribuições ou sistemas operacionais, é necessário compilar manualmente
Compilação e dependências
- No Windows, abra o diretório do código-fonte com uma versão recente do MSVC e execute Compile a partir de
CMakeLists.txt - No Linux, faça o build com
cmakeemakemkdir buildcd buildcmake ..make
- O build requer libfmt, que pode ser instalado pelo gerenciador de pacotes
- O suporte a compressão requer zlib, lzo, zstd
- É possível desativar esse suporte com as opções do CMake
WITH_ZLIB,WITH_LZO,WITH_ZSTD
- É possível desativar esse suporte com as opções do CMake
Recursos suportados
- Os itens abaixo podem ser convertidos ou preservados
-
Arquivos
-
Diretórios
- Links simbólicos
- Outros reparse points
- Descritores de segurança
- Fluxos de dados alternativos
- Atributos DOS
hidden,systemetc.- Rollback para a imagem NTFS original
- Preservação de metadados LXSS
-
Itens não suportados
- Os antigos atributos estendidos do Windows não são suportados
- Fluxos de dados alternativos grandes, acima de 16KB, não são suportados
- A preservação da flag de case-sensitivity não é suportada
- Tamanhos de cluster incomuns, diferentes de 4KB, não são suportados
- Arquivos criptografados não são suportados
Principais mudanças visíveis no histórico
- A release de 2025-06-16 corrige problemas de compilação com o GCC 15
- A release de 2024-01-15 corrige um problema de compilação causado pelo fato de o
-Werror=incompatible-pointer-typespassar a vir ativado por padrão no GCC 14 - A release de 2023-05-01 corrige um problema na ordem de inline extent items e outro no valor de level de metadata items
- Está indicado que ambos os problemas não eram diagnosticados por
btrfs check - ADS com nomes excessivamente longos passaram a ser ignorados
- Está indicado que ambos os problemas não eram diagnosticados por
- A release de 2022-08-12 inclui a opção
--no-datasum, preservação de metadados LXSS/WSL, correção no reconhecimento de letras de unidade minúsculas e correção de corrupção ao posicionar arquivos na última área de 1MB - A release de 2021-09-23 adiciona suporte a compressão no Btrfs e suporte a rollback
- A compressão suporta zlib, lzo, zstd
- O algoritmo de hash passa a oferecer suporte adicional a
xxhash,sha256,blake2 - Também há suporte a descritores de segurança no estilo NT4
- A velocidade de conversão foi melhorada em volumes com muitos inodes
- Também foi corrigido um bug de corrupção de sistema de arquivos que o
btrfs checknão conseguia detectar
- A release de 2021-01-05 inclui correções relacionadas a compressão NTFS, “WOF compressed data” e arquivos esparsos
Ao inicializar o Windows a partir do Btrfs
- É indicado que inicializar o Windows a partir de um Btrfs convertido por esta ferramenta pode ser possível, desde que as condições sejam adequadas
- Há referência ao projeto relacionado Quibble
1 comentários
Comentários do Hacker News
O link para o Quibble, que fez uma engenharia reversa aberta e extensível do bootloader do kernel do Windows, foi muito mais interessante: https://github.com/maharmstone/quibble
Se eu fosse fazer isso no ZFS, acho que adicionaria uma camada que lê outros formatos de sistema de arquivos e sintetiza ponteiros de bloco do ZFS
Assim, o ZFS poderia ler outro sistema de arquivos e, durante as escritas, regravar tudo aos poucos. Se o ZFS tivesse um recurso de reescrita de ponteiros de bloco, daria para mandar regravar tudo e concluir a conversão, mas já expliquei antes que o ZFS não é um sistema de arquivos CAS (armazenamento endereçado por conteúdo) de verdade, então ele não tem esse recurso e nem pode ter
Alguém aqui que usa BTRFS pode dizer como está a estabilidade hoje em dia? Antigamente eu via muitos casos assustadores
Nunca tive problemas, mas é irritante que o espaço livre que o BTRFS acha que existe nem sempre bata com o que o restante do sistema operacional acha. Ainda assim, raramente isso virou um problema de fato
Exceto para cargas de trabalho de banco de dados, vejo como o principal sistema de arquivos do Linux, a ponto de não entender por que alguém usaria outro
Tentei acessar e consertar a partição quebrada por um ambiente de instalação paralelo, mas não adiantou
Eu precisava disso 2 meses atrás. Tive que formatar a partir de NTFS um disco rígido com mais de 10 TB de dados
Projeto bacana
Eu ficaria bem surpreso se ele também suportasse arquivos com compressão LZX
É diferente da compactação de arquivos da época do Windows 2000, e é um recurso que precisa ser ativado com
compact.exe /C /EXE:LZX (filename)https://github.com/search?q=repo%3Amaharmstone%2Fntfs2btrfs%...
Usei isso no passado e o resultado foi um disco somente leitura. Espero que tenha melhorado desde então
O grau de imprudência que se vê aqui estoura qualquer escala
O método padrão é reservar, no sistema de arquivos antigo, um arquivo grande para os metadados do novo sistema de arquivos e então percorrer todos os arquivos do sistema antigo, usando
fiemap()para criar novos extents que apontem para os dados existentes. As escritas são feitas apenas no espaço reservadoO superbloco só é sobrescrito no final, e antes disso é possível verificar se o conteúdo do sistema de arquivos antigo e do novo é o mesmo
Na época, mexendo nisso, acabei rastreando alguns bugs bem desagradáveis, e espero que agora esteja mais estável
Como outros disseram, dá para fazer isso em escala de forma sistemática, mas obviamente exige cuidado
“WinBtrfs é um driver para Windows do Btrfs, o sistema de arquivos Linux de próxima geração. Ele foi reimplementado do zero, não contém código do kernel Linux e deve funcionar em qualquer versão a partir do Windows XP. Também está incluído como parte do ReactOS, um sistema operacional livre.”
Esse texto vem da página do mantenedor do ntfs2btrfs
https://github.com/maharmstone/btrfs
Sei que este é outro caso, mas o tempo investido nesses dados vale muito mais do que um disco novo. Pessoalmente, não acho que valha o risco. Se os dados não forem importantes, ou se houver bons backups e você quiser ajudar a caçar bugs, aí talvez valha tentar
É muito legal, mas acho que a maioria das pessoas só vai descobrir isso pelo menos uma semana depois de terminar a formatação de um drive NTFS que vinha adiando havia 2 anos