- Ntfs2btrfs est un outil qui convertit sur place le système de fichiers Microsoft NTFS vers le système de fichiers open source Btrfs, avec un fonctionnement similaire à
btrfs-convertpour ext2 - Avant la conversion, l’image d’origine est enregistrée dans
image/ntfs.imgsous forme de copie reflink ; si vous souhaitez conserver le résultat de la conversion, vous pouvez supprimer cette image pour libérer de l’espace - Sous Windows, il s’exécute depuis une invite de commandes administrateur avec
ntfs2btrfs.exe D:\; sous Linux, il s’exécute avec les droits root viantfs2btrfs /dev/sda1 - Il ne fonctionne pas sur le disque de démarrage ni sur un disque contenant le pagefile actuellement utilisé ; avec WinBtrfs, il faut retirer le drapeau readonly du sous-volume
imageavant de pouvoir le supprimer - Le périmètre pris en charge inclut les fichiers, répertoires, liens symboliques, descripteurs de sécurité, flux de données alternatifs, rollback NTFS et préservation des métadonnées LXSS, mais pas les fichiers chiffrés ni les tailles de cluster atypiques
Ce que fait Ntfs2btrfs
- Ntfs2btrfs est un outil qui convertit sur place un système de fichiers NTFS en Btrfs
- L’image d’origine est enregistrée dans
image/ntfs.imgsous forme de copie reflink- Si vous souhaitez conserver le résultat de la conversion, vous pouvez supprimer ce fichier pour libérer de l’espace
- L’outil est présenté comme stable, mais il comporte un avertissement indiquant que l’auteur n’est pas responsable en cas de problème
- Le pilote de système de fichiers Btrfs pour Windows, WinBtrfs, est également lié comme projet à consulter
- Le code ntfs-3g-system-compression d’Eric Biggers, qui a rétroconçu les “WOF compressed data” de Windows 10, est utilisé
Utilisation et limitations
- Sous Windows, il s’exécute depuis une invite de commandes administrateur
ntfs2btrfs.exe D:\
- Sous Linux, il faut indiquer un périphérique bloc avec les droits root
ntfs2btrfs /dev/sda1
- Sous Windows, les cibles suivantes ne peuvent pas être converties
-
Disque de démarrage
- Disque contenant le pagefile actuellement utilisé
- Si vous utilisez WinBtrfs, pour supprimer le sous-volume
image, il faut d’abord retirer le drapeau readonly
-
Méthodes d’installation
- Sous Windows, vous pouvez récupérer le dernier fichier Zip depuis la page Releases ou utiliser Scoop
- Des paquets sont fournis selon les distributions Linux
- Sur d’autres distributions ou systèmes d’exploitation, il faut compiler soi-même
Compilation et dépendances
- Sous Windows, ouvrez le répertoire source avec une version récente de MSVC et lancez Compile depuis
CMakeLists.txt - Sous Linux, la construction se fait avec
cmakeetmakemkdir buildcd buildcmake ..make
- La compilation nécessite libfmt, qui peut être installé via le gestionnaire de paquets
- La prise en charge de la compression nécessite zlib, lzo et zstd
- Les options CMake
WITH_ZLIB,WITH_LZOetWITH_ZSTDpermettent de désactiver ces prises en charge
- Les options CMake
Fonctionnalités prises en charge
- Les éléments suivants peuvent être convertis ou préservés
-
Fichiers
-
Répertoires
- Liens symboliques
- Autres reparse points
- Descripteurs de sécurité
- Flux de données alternatifs
- Attributs DOS
- hidden, system, etc.
- Rollback vers l’image NTFS d’origine
- Préservation des métadonnées LXSS
-
Éléments non pris en charge
- Les anciens attributs étendus de Windows ne sont pas pris en charge
- Les grands flux de données alternatifs dépassant 16 Ko ne sont pas pris en charge
- La préservation du drapeau case-sensitivity n’est pas prise en charge
- Les tailles de cluster atypiques autres que 4 Ko ne sont pas prises en charge
- Les fichiers chiffrés ne sont pas pris en charge
Principaux changements visibles dans l’historique
- La version du 2025-06-16 corrige un problème de compilation avec GCC 15
- La version du 2024-01-15 corrige un problème de compilation apparu avec GCC 14, où
-Werror=incompatible-pointer-typesest activé par défaut - La version du 2023-05-01 corrige un problème d’ordre des inline extent items et un problème de valeur de level des metadata items
- Il est indiqué que ces deux problèmes ne sont pas diagnostiqués par
btrfs check - Les ADS dont le nom est trop long sont désormais ignorés
- Il est indiqué que ces deux problèmes ne sont pas diagnostiqués par
- La version du 2022-08-12 inclut l’option
--no-datasum, la préservation des métadonnées LXSS/WSL, la correction de la reconnaissance des lettres de lecteur en minuscules, ainsi qu’une correction de corruption lors du placement de fichiers dans le dernier segment de 1 Mo - La version du 2021-09-23 ajoute la prise en charge de la compression Btrfs et du rollback
- La compression prend en charge zlib, lzo et zstd
- Les algorithmes de hachage
xxhash,sha256etblake2sont également pris en charge - Les descripteurs de sécurité de style NT4 sont aussi pris en charge
- La vitesse de conversion des volumes comportant beaucoup d’inodes a été améliorée
- Un bug de corruption du système de fichiers que
btrfs checkne détectait pas a également été corrigé
- La version du 2021-01-05 inclut des corrections liées à la compression NTFS, aux “WOF compressed data” et aux sparse files
Démarrer Windows depuis Btrfs
- Il est indiqué qu’il est possible, sous certaines conditions, de démarrer Windows depuis un Btrfs converti avec cet outil
- Quibble est lié comme projet associé
1 commentaires
Commentaires sur Hacker News
Le lien vers Quibble, qui a rétroconçu le chargeur de démarrage du noyau Windows de façon ouverte et extensible, était bien plus intéressant : https://github.com/maharmstone/quibble
Si ZFS faisait ça, il ajouterait probablement une couche capable de lire d'autres formats de systèmes de fichiers et de synthétiser des pointeurs de blocs ZFS
ZFS pourrait alors lire d'autres systèmes de fichiers et, au fil des écritures, tout réécrire lentement. Si ZFS avait une fonction de réécriture des pointeurs de blocs, il pourrait forcer une réécriture complète pour terminer la conversion, mais j'ai déjà expliqué auparavant que ZFS n'est pas un véritable système de fichiers à stockage adressé par le contenu (CAS), donc il n'a pas et ne peut pas avoir une telle fonction
S'il y a des gens ici qui utilisent BTRFS, quelqu'un peut dire à quoi ressemble sa stabilité de nos jours ? J'ai vu beaucoup de cas effrayants autrefois
Je n'ai jamais eu de problème, mais c'est agaçant que l'espace libre vu par BTRFS ne corresponde pas toujours à celui vu par le reste du système d'exploitation. Cela dit, ça cause rarement un vrai souci
Hors charges de travail de base de données, j'en suis presque à me demander pourquoi utiliser un autre système de fichiers ; pour moi c'est le système de fichiers de référence sous Linux
J'ai essayé d'accéder à la partition cassée depuis une installation en parallèle pour la réparer, mais sans résultat
J'aurais eu besoin de ça il y a deux mois. J'ai dû reformater un disque dur contenant plus de 10 To de données depuis NTFS
Super projet
Je serais assez impressionné si ça prenait aussi en charge les fichiers avec compression LZX
Ce n'est pas la compression de fichiers de l'époque Windows 2000, c'est une fonctionnalité qu'il faut activer avec
compact.exe /C /EXE:LZX (filename)https://github.com/search?q=repo%3Amaharmstone%2Fntfs2btrfs%...
Je l'avais essayé il y a longtemps, et le résultat avait été un disque en lecture seule. J'espère que c'est mieux maintenant
Le niveau de témérité qu'on voit ici dépasse l'entendement
La méthode standard consiste à réserver sur l'ancien système de fichiers un gros fichier pour les métadonnées du nouveau, puis à parcourir tous les fichiers de l'ancien système et à créer, avec
fiemap(), de nouvelles extents pointant vers les données existantes. On n'écrit que dans l'espace réservéLe superbloc n'est écrasé qu'à la toute fin, et avant cela on peut vérifier que le contenu de l'ancien et du nouveau système de fichiers est identique
En bricolant avec ça à l'époque, j'avais traqué quelques bugs assez vicieux, donc j'espère que c'est plus stable aujourd'hui
Comme d'autres l'ont dit, on peut le faire de manière systématique et à grande échelle, mais il faut évidemment rester prudent
« WinBtrfs est un pilote Windows pour le système de fichiers Btrfs, le système de fichiers Linux de nouvelle génération. Il a été réimplémenté depuis zéro, sans inclure de code du noyau Linux, et devrait fonctionner sur toutes les versions de Windows depuis Windows XP. Il est également inclus dans le système d'exploitation libre ReactOS. »
Cela vient de la page du mainteneur de ntfs2btrfs
https://github.com/maharmstone/btrfs
Je sais que c'est un cas différent, mais le temps investi dans ces données vaut bien plus qu'un nouveau disque. Personnellement, le risque n'en vaut pas la peine. Si les données n'ont pas beaucoup d'importance, ou qu'elles sont bien sauvegardées et que vous voulez aider à traquer les bugs, pourquoi pas
C'est vraiment génial, mais la plupart des gens ne découvriront ça qu'au moins une semaine après avoir enfin terminé le formatage de leur disque NTFS qu'ils repoussaient depuis deux ans