1 poin oleh GN⁺ 2024-12-01 | 1 komentar | Bagikan ke WhatsApp
  • Ntfs2btrfs adalah alat untuk mengonversi sistem file Microsoft NTFS secara in-place ke sistem file open source Btrfs, dan bekerja dengan cara yang mirip dengan btrfs-convert untuk ext2
  • Sebelum konversi, image asli disimpan sebagai salinan reflink di image/ntfs.img; jika ingin mempertahankan hasil konversi, image ini dapat dihapus untuk mengosongkan ruang
  • Di Windows, jalankan ntfs2btrfs.exe D:\ dari Command Prompt administrator, sedangkan di Linux jalankan ntfs2btrfs /dev/sda1 dengan hak root
  • Tidak berfungsi pada drive boot atau drive yang memiliki pagefile yang sedang digunakan; saat menggunakan WinBtrfs, flag readonly pada subvolume image harus dilepas agar dapat dihapus
  • Cakupan dukungan mencakup file, direktori, symbolic link, security descriptor, alternate data stream, rollback NTFS, dan pelestarian metadata LXSS, tetapi tidak mendukung file terenkripsi dan ukuran cluster yang tidak biasa

Apa yang dilakukan Ntfs2btrfs

  • Ntfs2btrfs adalah alat untuk mengonversi secara in-place sistem file NTFS ke Btrfs
  • Image asli disimpan sebagai salinan reflink di image/ntfs.img
    • Jika ingin mempertahankan hasil konversi, file ini dapat dihapus untuk mengosongkan ruang
  • Alat ini disebut stabil, tetapi disertai peringatan bahwa penulis tidak bertanggung jawab jika terjadi masalah
  • Driver sistem file Btrfs untuk Windows, WinBtrfs, juga ditautkan sebagai proyek yang layak dilihat bersama
  • Kode ntfs-3g-system-compression dari Eric Biggers, yang merekayasa balik “WOF compressed data” pada Windows 10, digunakan di sini

Cara penggunaan dan batasan

  • Di Windows, jalankan dari Command Prompt administrator
    • ntfs2btrfs.exe D:\
  • Di Linux, tentukan block device dengan hak root
    • ntfs2btrfs /dev/sda1
  • Di Windows, target berikut tidak dapat dikonversi
    • Drive boot

      • Drive yang memiliki pagefile yang sedang digunakan
      • Jika menggunakan WinBtrfs, untuk menghapus subvolume image, flag readonly harus dilepas terlebih dahulu

Jalur instalasi

  • Di Windows, Anda dapat mengunduh file Zip terbaru dari halaman Releases atau menggunakan Scoop
  • Paket disediakan untuk beberapa distribusi Linux
  • Untuk distribusi atau sistem operasi lain, harus dikompilasi sendiri

Kompilasi dan dependensi

  • Di Windows, buka direktori sumber dengan versi terbaru MSVC dan jalankan Compile dari CMakeLists.txt
  • Di Linux, build dengan cmake dan make
    • mkdir build
    • cd build
    • cmake ..
    • make
  • Build memerlukan libfmt, yang dapat diinstal melalui package manager
  • Dukungan kompresi memerlukan zlib, lzo, dan zstd
    • Dukungan tersebut dapat dinonaktifkan dengan opsi CMake WITH_ZLIB, WITH_LZO, WITH_ZSTD

Fitur yang didukung

  • Item berikut dapat dikonversi atau dipertahankan
    • File

    • Direktori

      • Symbolic link
      • Reparse point lainnya
      • Security descriptor
      • Alternate data stream
      • Atribut DOS
      • hidden, system, dan lainnya
      • Rollback ke image NTFS asli
      • Pelestarian metadata LXSS

Item yang tidak didukung

  • Extended attribute lama Windows tidak didukung
  • Alternate data stream besar yang melebihi 16KB tidak didukung
  • Pelestarian flag case-sensitivity tidak didukung
  • Ukuran cluster tidak biasa selain 4KB tidak didukung
  • File terenkripsi tidak didukung

Perubahan utama yang terlihat dari riwayat perubahan

  • Rilis 2025-06-16 memperbaiki masalah kompilasi dengan GCC 15
  • Rilis 2024-01-15 memperbaiki masalah kompilasi yang muncul karena -Werror=incompatible-pointer-types diaktifkan secara default pada GCC 14
  • Rilis 2023-05-01 memperbaiki masalah urutan inline extent item dan masalah nilai level metadata item
    • Kedua masalah tersebut disebut tidak terdiagnosis oleh btrfs check
    • ADS dengan nama yang terlalu panjang diubah agar dilewati
  • Rilis 2022-08-12 mencakup opsi --no-datasum, pelestarian metadata LXSS/WSL, perbaikan pengenalan huruf drive kecil, dan perbaikan kerusakan saat menempatkan file di area 1MB terakhir
  • Rilis 2021-09-23 menambahkan dukungan kompresi Btrfs dan dukungan rollback
    • Kompresi mendukung zlib, lzo, dan zstd
    • Algoritme hash juga menambahkan dukungan untuk xxhash, sha256, dan blake2
    • Security descriptor gaya NT4 juga didukung
    • Kecepatan konversi untuk volume dengan banyak inode ditingkatkan
    • Bug kerusakan sistem file yang tidak dapat ditangkap oleh btrfs check juga diperbaiki
  • Rilis 2021-01-05 mencakup perbaikan untuk kompresi NTFS, “WOF compressed data”, dan masalah terkait sparse file

Jika mem-boot Windows dari Btrfs

  • Mem-boot Windows dari Btrfs yang dikonversi dengan alat ini disebut memungkinkan jika syaratnya terpenuhi
  • Quibble ditautkan sebagai proyek terkait

1 komentar

 
GN⁺ 2024-12-01
Komentar Hacker News
  • Tautan ke Quibble, yang secara terbuka dan dapat diperluas merekayasa balik bootloader kernel Windows, jauh lebih menarik: https://github.com/maharmstone/quibble

  • Kalau melakukan ini di ZFS, rasanya akan menambahkan lapisan yang membaca format filesystem lain lalu mensintesis ZFS block pointer
    Dengan begitu ZFS bisa membaca filesystem lain, dan dalam proses penulisan bisa perlahan menulis ulang semuanya. Jika ZFS punya fitur penulisan ulang block pointer, kita bisa membuatnya menulis ulang semuanya untuk menyelesaikan konversi, tetapi saya pernah menjelaskan bahwa ZFS bukan filesystem content-addressable storage (CAS) yang benar, jadi fitur seperti itu tidak ada dan tidak bisa dimiliki

  • Kalau ada yang memakai BTRFS di sini, bisa ceritakan bagaimana stabilitasnya belakangan ini? Dulu saya melihat banyak kasus yang menakutkan

    • Karena ini default di openSUSE, saya sudah memakainya beberapa tahun di PC utama dan laptop, dan ternyata snapshot adalah fitur yang tidak saya sadari saya inginkan
      Belum pernah ada masalah, tetapi agak menjengkelkan bahwa ruang kosong menurut BTRFS dan ruang kosong menurut bagian lain sistem operasi tidak selalu sama. Meski begitu, jarang sekali benar-benar menjadi masalah
    • Saya sudah memakai hanya BTRFS selama lebih dari 10 tahun di laptop pribadi, server, dan perangkat embedded, dan tidak pernah sekalipun bermasalah
      Kecuali untuk beban kerja database, saya menganggapnya sebagai filesystem utama Linux sampai-sampai tidak mengerti kenapa orang memakai filesystem lain
    • Sudah beberapa tahun memakainya di perangkat pribadi dan untuk backup btrbk, tanpa masalah
    • Belum sampai 1 tahun, di Tumbleweed, ketika disk penuh, semuanya rusak
      Saya mencoba mengakses partisi yang rusak dari lingkungan instalasi paralel untuk memperbaikinya, tetapi tidak berhasil
    • Btrfs perlahan menggerogoti data saya. File kecil atau beberapa sektor dari file besar secara acak berubah seluruhnya menjadi nilai null
  • Saya membutuhkan ini 2 bulan lalu. Saya harus memformat hard disk dari NTFS yang berisi lebih dari 10 TB data
    Proyek yang keren

  • Akan cukup mengejutkan kalau sampai mendukung file yang memakai kompresi LZX
    Ini berbeda dari kompresi file era Windows 2000, dan harus diaktifkan dengan compact.exe /C /EXE:LZX (filename)

  • Pernah mencobanya dulu, dan hasilnya adalah disk read-only. Semoga sudah lebih baik dibanding saat itu

  • Tingkat kene(k)atan yang terlihat di sini benar-benar menembus grafik

    • Ini tidak seberbahaya yang dibayangkan
      Cara standarnya adalah mencadangkan sebuah file besar di filesystem lama untuk metadata filesystem baru, lalu menelusuri semua file di filesystem lama dan memakai fiemap() untuk membuat extent baru yang menunjuk ke data lama. Penulisan hanya dilakukan ke ruang yang sudah dicadangkan
      Superblock baru ditimpa paling akhir, dan sebelum itu isi filesystem lama dan baru bisa diverifikasi apakah sama
    • Beberapa tahun lalu, ini lebih mirip level menjuggling gergaji mesin: https://github.com/maharmstone/ntfs2btrfs/issues/9
      Saat mengutak-atiknya waktu itu, saya melacak beberapa bug yang cukup menyebalkan, dan semoga sekarang sudah lebih stabil
    • Apple juga melakukan hal serupa dari HFS+ ke APFS pada miliaran instalasi OS X/iOS sungguhan
      Seperti yang dikatakan orang lain, ini bisa dilakukan secara sistematis dalam skala besar, tetapi tentu saja perlu kehati-hatian
    • Ini bukan btrfs milik Linux
      “WinBtrfs adalah driver Windows untuk Btrfs, filesystem Linux generasi berikutnya. Ini diimplementasikan ulang dari nol, tidak berisi kode kernel Linux, dan seharusnya bekerja pada semua versi Windows sejak Windows XP. Ini juga disertakan sebagai bagian dari ReactOS, sistem operasi bebas.”
      Kutipan ini diambil dari halaman pengelola ntfs2btrfs
      https://github.com/maharmstone/btrfs
    • Setelah pernah melihat Windows rusak dua kali karena upgrade in-place, saya lebih memilih membeli disk atau komputer baru dan mulai dari awal
      Saya tahu ini kasus yang berbeda, tetapi waktu yang terkandung dalam data itu jauh lebih berharga daripada disk baru. Secara pribadi, risikonya tidak sepadan. Kalau datanya tidak penting, atau backup-nya bagus dan ingin berkontribusi menangkap bug, mungkin bisa dicoba
  • Ini benar-benar keren, tetapi kemungkinan besar banyak orang baru tahu soal ini setidaknya seminggu setelah mereka menyelesaikan format drive NTFS yang sudah ditunda selama 2 tahun