1 points par GN⁺ 2024-12-01 | 1 commentaires | Partager sur WhatsApp
  • 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-convert pour ext2
  • Avant la conversion, l’image d’origine est enregistrée dans image/ntfs.img sous 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 via ntfs2btrfs /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 image avant 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.img sous 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 cmake et make
    • mkdir build
    • cd build
    • cmake ..
    • 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_LZO et WITH_ZSTD permettent de désactiver ces prises en charge

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-types est 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
  • 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, sha256 et blake2 sont é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 check ne 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

 
GN⁺ 2024-12-01
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

    • C'est la valeur par défaut d'openSUSE, donc je l'utilise sur mon PC principal et mon portable depuis des années, et j'ai découvert que les snapshots étaient une fonctionnalité dont j'ignorais avoir besoin
      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
    • J'utilise uniquement BTRFS depuis plus de 10 ans sur des portables personnels, des serveurs et des appareils embarqués, et je n'ai jamais eu le moindre problème
      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
    • Je l'utilise depuis des années sur mes machines personnelles et pour les sauvegardes btrbk, sans aucun problème
    • Ça a explosé sur Tumbleweed quand le disque s'est rempli, alors que ça faisait moins d'un an
      J'ai essayé d'accéder à la partition cassée depuis une installation en parallèle pour la réparer, mais sans résultat
    • Btrfs est en train de grignoter mes données petit à petit. De petits fichiers ou certains secteurs de gros fichiers deviennent aléatoirement entièrement remplis de valeurs nulles
  • 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)

  • 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

    • Ce n'est pas aussi risqué qu'on pourrait le croire
      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
    • Il y a quelques années, c'était plus proche du jonglage à la tronçonneuse : https://github.com/maharmstone/ntfs2btrfs/issues/9
      En bricolant avec ça à l'époque, j'avais traqué quelques bugs assez vicieux, donc j'espère que c'est plus stable aujourd'hui
    • Apple a aussi fait quelque chose de similaire, en passant de HFS+ à APFS, dans des déploiements réels d'OS X/iOS à l'échelle de milliards d'appareils
      Comme d'autres l'ont dit, on peut le faire de manière systématique et à grande échelle, mais il faut évidemment rester prudent
    • Ce n'est pas le btrfs de Linux
      « 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
    • Ayant déjà vu Windows casser deux fois lors de mises à niveau sur place, j'achèterais simplement un nouveau disque ou un nouvel ordinateur et je repartirais de zéro
      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