- WinBtrfs v1.9 adalah driver yang memungkinkan filesystem Linux Btrfs dibaca dan ditulis di Windows, dan diimplementasikan ulang dari awal tanpa memakai kode kernel Linux
- Seharusnya berjalan di Windows XP dan versi setelahnya, juga disertakan dalam sistem operasi gratis ReactOS; Btrfs yang berada di atas software RAID MD Linux memerlukan WinMD terpisah
- Cakupan fiturnya mencakup baca/tulis, RAID0/1/10/5/6, subvolume dan snapshot, reflink copy, send/receive, kompresi zlib/LZO/Zstd, dukungan LXSS, hingga pemetaan ACL, ADS, dan permission
- Instalasi dapat dilakukan dengan mengunduh rilis terbaru lalu memasang
btrfs.inf, atau menggunakan Chocolatey/Scoop; pada lingkungan Secure Boot Windows 10/11, perubahan registry atau penonaktifan Secure Boot mungkin diperlukan - Proyek ini didistribusikan dengan lisensi LGPL, tetapi tidak bertanggung jawab atas kerusakan filesystem; meski disebut semestinya cocok untuk penggunaan harian, backup tetap disarankan
Apa yang dilakukan WinBtrfs
- WinBtrfs adalah driver Windows untuk Btrfs, filesystem generasi berikutnya dari Linux
- Diimplementasikan ulang dari awal tanpa menyertakan kode kernel Linux, dan seharusnya berjalan di Windows XP dan versi setelahnya
- Juga disertakan dalam sistem operasi gratis ReactOS
- Jika filesystem Btrfs berada di atas perangkat software RAID MD yang dibuat di Linux, diperlukan WinMD agar terlihat di Windows
- Proyek terkait meliputi bootloader eksperimental Quibble yang memungkinkan Windows boot dari Btrfs, serta Ntfs2btrfs yang mengonversi filesystem NTFS di tempat
Fitur yang didukung
- Fitur dasar
- Membaca dan menulis filesystem Btrfs
- Menemukan partisi Btrfs yang biasanya diabaikan Windows
- Volume Btrfs tanpa partisi
- Baca dan tulis asinkron
- Caching, free-space cache, free space tree
- RAID dan manajemen volume
- RAID0, RAID1, RAID10
- RAID5, RAID6
- Balancing, termasuk melanjutkan balance yang dimulai di Linux
- Menambah dan menghapus perangkat
- Degraded mount
- Mengecilkan dan memperbesar volume
- Fitur filesystem
- Ekstensi shell untuk membuat dan mengidentifikasi subvolume serta snapshot
- Hard link, symbolic link, reparse point
- Sparse file, preallocation
- Reflink copy
- Subvolume send dan receive
- Scrubbing, TRIM/DISCARD
- Interoperabilitas Windows dan Linux
- Mengambil dan menetapkan ACL sebagai xattr
security.NTACL - Menyimpan Alternate Data Streams sebagai xattr; misalnya
:Zone.Identifierdisimpan sebagaiuser.Zone.Identifier - Pemetaan pengguna Linux dan pengguna Windows
- Dukungan LXSS, yaitu “Ubuntu on Windows”
- Metadata passthrough seperti permission untuk LXSS
- Dukungan flag direktori case-sensitive di Windows 10
- Mengambil dan menetapkan ACL sebagai xattr
- Kompresi dan fitur kompatibilitas
- Kompresi zlib, LZO, Zstd
- Metadata UUID incompat flag didukung berdasarkan Linux 5.0
- RAID1 3 dan 4 disk, checksum xxhash, sha256, dan blake2 didukung berdasarkan Linux 5.5
- Block group tree didukung berdasarkan Linux 6.1
Pekerjaan yang masih tersisa
- Dukungan penuh fs-verity masih tercatat sebagai item Linux 5.15
- Dukungan Zoned masih tercatat sebagai item Linux 5.11, dengan catatan bahwa HM-SMR mungkin tidak didukung di Windows
- Defragmentasi, Btrfs quota, dukungan penuh transaction log, dan dukungan TxF yaitu Windows transactions ada dalam daftar pekerjaan
Instalasi dan penghapusan
- Untuk memasang, unduh rilis terbaru, ekstrak, lalu klik kanan
btrfs.infdan pilih Install - Driver sudah ditandatangani sehingga seharusnya langsung berjalan di Windows modern
- Jika Secure Boot aktif di Windows 10 atau 11, perubahan registry mungkin diperlukan agar driver dapat dimuat
- Cara yang lebih mudah juga disebutkan, yaitu mematikan Secure Boot dari BIOS
- Windows 11 disebut mewajibkan Secure Boot secara lemah saat instalasi, tetapi setelah terpasang tetap berjalan meski dimatikan
- Instalasi melalui package manager juga tersedia
- Chocolatey:
choco install winbtrfs - Scoop:
scoop bucket add nonportable,scoop install winbtrfs-np -g
- Chocolatey:
- Penghapusan dapat dilakukan dengan perintah
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.infatau menghapus “Btrfs controller” di Device Manager - Jika harus menghapus lewat registry, set nilai
HKLM\SYSTEM\CurrentControlSet\services\btrfs\Startmenjadi 4 untuk menonaktifkan service, lalu setelah reboot hapus key tersebut danC:\Windows\System32\drivers\btrfs.sys
Build dan pemetaan pengguna
- Untuk build dengan Visual C++ 2019, buka direktorinya dan biarkan CMake memprosesnya; seharusnya berjalan jika Windows DDK terpasang dengan benar
- Untuk build di Linux dengan GCC, diperlukan cross compiler
i686-w64-mingw32ataux86_64-w64-mingw32 - Pemetaan pengguna disimpan di key registry
HKLM\SYSTEM\CurrentControlSet\services\btrfs\Mappings- Buat DWORD dengan nama SID Windows dan masukkan nilai uid Linux
- SID saat ini dapat dicek dengan
wmic useraccount get name,sid
- Pemetaan grup disimpan di bawah
GroupMappings- Entri default memetakan grup Users di Windows ke gid 100, yang biasanya
usersdi Linux - Dengan menentukan SID pengguna, file yang dibuat pengguna tertentu dapat dimasukkan ke grup tertentu
- Entri default memetakan grup Users di Windows ke gid 100, yang biasanya
- Ada catatan bahwa proses yang berjalan dengan token User Access Control membuat file sebagai SID
BUILTIN\Administrators, bukan sebagai akun pengguna
Dukungan WSL/LXSS
- Driver dapat melakukan passthrough metadata Linux ke versi LXSS terbaru
- Untuk menggunakannya, atur
/etc/wsl.confdari prompt Bash Windows dalam bentuk berikut[automount]enabled = trueoptions = "metadata"mountFsTab = false
- Perubahan akan diterapkan pada reboot berikutnya
- Disebutkan bahwa seharusnya bisa chroot ke lingkungan instalasi Linux nyata
Operasi command line
shellbtrfs.dllmenyediakan antarmuka GUI, tetapi beberapa operasi dapat dijalankan dari command line denganrundll32.exe- Karena
rundll32tidak punya cara untuk mengembalikan error code, perintah dapat gagal secara diam-diam - Perintah umum
CreateSubvol <path>CreateSnapshot <source> <destination>ReflinkCopy <source> <destination>, yang dapat menerima wildcard dan beberapa file sumber
- Perintah yang memerlukan hak administrator
SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file>RecvSubvol <stream file> <destination>StartScrub <drive>StopScrub <drive>
Batasan penting dalam troubleshooting
- Semua nama file diasumsikan dienkode sebagai UTF-8
- Pada versi akhir Windows 10 dengan Secure Boot aktif, disebut ada kondisi akibat persyaratan tanda tangan Microsoft yang tampaknya tidak dapat digunakan oleh driver open-source
- Workaround-nya adalah membuat DWORD
UpgradedSystemdiHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy, mengaturnya ke 1, lalu reboot - Atau Secure Boot dapat dimatikan dari BIOS
- Workaround-nya adalah membuat DWORD
- Drive root yang tidak case-sensitive di LXSS adalah perilaku yang di-hardcode oleh Microsoft
- Btrfs tidak dapat ditambahkan ke dialog format bawaan Windows, karena daftar filesystem di-hardcode
- Untuk format Btrfs, gunakan
mkbtrfs.exeyang disertakan - Jika tidak memerlukan opsi khusus Btrfs,
format /fs:btrfsjuga bisa digunakan
- Untuk format Btrfs, gunakan
- Synology NAS tampaknya memakai LVM pada block device, sehingga tidak dapat di-mount tanpa driver LVM untuk Windows
- Thecus NAS memakai Linux MD RAID, sehingga WinMD harus dipasang bersama
- Model permission Windows dan POSIX terlalu berbeda sehingga tidak ada pemetaan yang praktis; untuk file yang ingin dicegah agar tidak diedit di Windows, ACL Windows dapat dibuat
Perubahan v1.9
- v1.9 dirilis pada 15 Maret 2024
- Dukungan block group tree dari Linux 6.1 ditambahkan
- Masalah hang saat sistem berada di bawah beban tinggi diperbaiki
- Opsi
/blockgrouptreedan/freespacetreeditambahkan kemkbtrfs - Default
/noholesdimkbtrfsdiselaraskan menjadi aktif seperti di Linux - Dukungan instruksi CRC32C di aarch64 ditambahkan
Opsi debug dan mount
- WinBtrfs membagi pesan debug menjadi tiga level: errors/FIXMEs, warnings, dan traces
- Driver versi rilis hanya mencatat errors dan FIXMEs melalui
DbgPrint, dan dapat dilihat dengan Microsoft DebugView - Saat melaporkan masalah dan ingin melampirkan log debug lengkap, gunakan driver versi debug dan pengaturan registry
DebugLogLevel: 0 tanpa pesan, 1 errors/FIXMEs, 2 termasuk warnings, 3 semuanya hingga tracesLogDevice: opsional, perangkat serial untuk outputLogFile: opsional, file untuk output
- Opsi mount disimpan pada subkey untuk tiap UUID filesystem di bawah
HKLM\SYSTEM\CurrentControlSet\Services\btrfs - Opsi utama
Ignore: tidak memuat filesystem tersebutReadonly: tidak mengizinkan penulisan, seperti flagrodi LinuxCompress,CompressForce,CompressType: mengatur kompresi default, kompresi paksa, dan metode kompresi pilihanFlushInterval: interval flush metadata, dengan default 30 detik seperti LinuxSubvolId: ID subvolume yang akan di-mount sebagai rootSkipBalance: melewati kelanjutan balance yang sedang berjalan saat shutdown terakhirNoTrim: menonaktifkan dukungan TRIMAllowDegraded: mengizinkan mount volume degraded yang kehilangan perangkatNoDataCOW: menonaktifkan copy-on-write untuk file baru, sama seperti flagnodatacowdi Linux
Lisensi dan cakupan tanggung jawab
- Seluruh proyek didistribusikan di bawah GNU Lesser General Public Licence, yaitu LGPL
- Disebutkan bahwa penggunaan software menjadi tanggung jawab pengguna, dan proyek tidak bertanggung jawab atas kerusakan yang mungkin terjadi pada filesystem
- Meski dikatakan seharusnya cocok untuk penggunaan harian, backup tetap disarankan
- Kode pihak ketiga yang disertakan memuat pemberitahuan hak cipta dan lisensi terkait Zlib, LZO, Zstd, BLAKE2, dan SHA256
1 komentar
Komentar Hacker News
Sudah lama ingin mencobanya, tetapi setelah menelusuri issue di GitHub saya langsung mengurungkan niat
Terlihat masalah seperti blue screen, hang, lonjakan penggunaan sumber daya, dan korupsi data; kalau ada driver btrfs/ZFS yang stabil, saya rela membayar
Saya benar-benar tidak paham kenapa proyek seperti ini tidak mendapat perhatian lebih besar
Jadi meskipun masalah-masalah tadi diperbaiki, kemungkinan besar tetap akan sulit untuk melakukan boot Windows dari btrfs
Kalau di mana bumi dipijak di situ langit dijunjung, mungkin Windows memang sebaiknya dijalankan hanya lewat virtualisasi
Fakta bahwa ini adalah reimplementasi penuh tanpa memakai kode Linux itu benar-benar keren, dan dukungannya untuk XP/2k3 serta ReactOS juga luar biasa
Sepertinya saya harus mencobanya di salah satu mesin lama saya
Saya tidak yakin paling tepat menautkan ini ke mana, tetapi ada issue tahun 2019 tentang library QUIC tanpa I/O: https://github.com/aiortc/aioquic/issues/4
Akan sangat bagus kalau file system juga mengikuti pola ini
Jika logika file system bisa dipakai ulang lalu diterapkan ke Windows, FUSE, Linux, penyimpanan linear-address di wasm, dan sebagainya, portabilitas, reuse, dan kemungkinan untuk diutak-atik akan meningkat sangat besar
Tulisan terkait:
WinBtrfs – A Windows driver for the next-generation Linux filesystem Btrfs - https://news.ycombinator.com/item?id=15177002 - September 2017, 100 komentar
WinBtrfs v0.7 - https://news.ycombinator.com/item?id=12794214 - Oktober 2016, 1 komentar
Beberapa minggu lalu saya mencoba memakainya pada hard drive btrfs, tetapi tidak berhasil membuatnya berfungsi dengan baik
Setelah itu saya mengaksesnya lewat WSL; sempat beberapa kali berhasil, lalu makin lama makin sering gagal, dan akhirnya bahkan tidak bisa di-mount sama sekali
Pada akhirnya saya sadar bahwa saya bisa boot ke Linux live ISO lalu menyalin/memindahkan file antara drive Windows dan drive btrfs, dan sekarang saya memakai Fedora Workstation live ISO di USB Ventoy
Sekarang Anda juga bisa kehilangan data di btrfs dari Windows :-D
Saya sudah memakai driver ini di laptop selama beberapa waktu
Lingkungannya dipakai bersama: Linux untuk coding kerja, Windows untuk game, film, dan media
Jika khawatir soal korupsi data pada partisi dan drive btrfs, fokuslah pada opsi mount di README
Gunakan
Ignoreuntuk partisi sistem Arch Linux, danReadonlyuntuk sisanyaMeski begitu, saya juga pernah memakai mount penuh pada HDD eksternal 20TB dengan kompresi btrfs
zstd:2tanpa mengalami lonjakan CPU atau korupsiSaya sarankan membaca seluruh README
Penulisnya sudah menjawab pertanyaan-pertanyaan yang saya penasaran, bahkan lebih banyak lagi
Saya penasaran bagaimana ini bisa mengklaim mendukung RAID 5/6 “dasar dan lanjutan”
btrfs sendiri tidak benar-benar begitu, dan maksud dari “dasar/lanjutan” di sini juga tidak jelas: https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid5...
Linux btrfs pada umumnya memang mendukung RAID5, tetapi ada edge case yang sudah diketahui dan membuatnya sulit dipakai dengan aman
Praktiknya kurang lebih seperti “bisa dipakai, tetapi eksperimental dan hanya untuk pengembang”
WinBtrfs hanya mencantumkan mode RAID5 sebagai salah satu fitur, tanpa benar-benar membahas seberapa baik implementasinya
Pertanyaan di issue terkait juga ditutup tanpa jawaban yang substansial: https://github.com/maharmstone/btrfs/issues/293
Sebelum mendengar jawaban yang jelas dari pengembang tentang status dan pengujiannya, saya tidak akan mempercayakan data pada RAID 5/6
Saya tidak tahu alasannya, mungkin karena yang pertama tidak memerlukan perhitungan paritas “lanjutan” semacam itu
Saya memakai driver ini dan btrfs untuk mengisi library lebih dulu di Steam Deck
Mengunduh lewat jaringan akan memakan waktu terlalu lama, dan saat itu internet saya mungkin akan butuh 100 kali lebih lama lagi
Ini mungkin bisa menjadi file system pertama sejak FAT yang langsung bekerja di nix, Mac, dan Windows
Bagus
Kalau ada yang sudah memakainya dalam jangka panjang atau di lingkungan produksi, saya penasaran bagaimana pengalaman nyatanya
Saya lihat TRIM didukung, tapi penasaran apakah RETRIM juga didukung
Maksudnya fitur yang diperlukan untuk melepaskan area yang gagal di-TRIM pada awalnya karena antrean perintah penuh, saat optimasi drive dijalankan
Saya juga penasaran apakah ini layak dipakai sebagai pengganti NTFS dengan paritas data bagi orang yang tidak suka ReFS, dan seberapa matang dibandingkan ZFS untuk Windows
Konfigurasinya punya partisi Windows, partisi Linux (btrfs di atas LUKS), dan partisi btrfs ketiga untuk menyimpan file
Saya tidak sering memakainya, tapi saat dipakai, rasanya sampai tidak sadar kalau itu ada
Terasa seolah Windows memang sejak awal bisa membaca btrfs secara native, dan untuk penggunaan sebatas akses, modifikasi, dan penghapusan file, saya tidak memakai fitur “lanjutan” apa pun
Saat saya sadar dan membatalkan build-nya, muncul dua folder dengan nama yang sama tetapi isi berbeda, dan saya harus menghapus folder dengan nama yang sama itu dua kali
Sepertinya driver ini punya masalah konkurensi
“Win OpenZFS driver and WinBtrfs driver dont play well with each other”
https://github.com/openzfsonwindows/openzfs/issues/364
Dari yang saya dengar, BTRFS punya daftar bug yang sangat panjang, sampai-sampai sedikit salah sentuh saja bisa membuatnya macet atau merusak data
Memaksa sesuatu yang keandalannya diragukan bahkan di sistem operasi native ke Windows itu nyaris gila
Mencobanya untuk senang-senang tidak masalah, tapi saya sama sekali tidak akan mempercayakan data sungguhan ke kombinasi ini
“Di mirror 2-disk saya sih jalan dengan baik” itu cuma anekdot, bukan data
Saya penasaran apakah dengan ini boot Windows 10/11 dari USB stick Windows yang diformat btrfs jadi memungkinkan
Dari pengalaman memakai Windows 10 seperti itu setiap hari selama beberapa waktu, itu bekerja cukup baik, meski ada beberapa hal yang perlu diperhatikan
Anda butuh koneksi USB yang stabil, enclosure drive USB dengan chip kontroler yang stabil dan tidak mudah panas
Drive-nya juga harus tahan terhadap kehilangan daya
Sayangnya, saya tidak tahu sumber yang mengevaluasi kemampuan penanganan kehilangan daya
Beberapa drive bisa mengalami masalah serius saat listrik terputus mendadak
Saya punya pengalaman baik dengan SSD SATA enterprise Intel dan drive NVMe di Dockcase yang punya kapasitor
Jika drive tiba-tiba tidak terlihat, menyalakan ulang dayanya bisa membantu: https://dfarq.homeip.net/fix-dead-ssd/
Sebaiknya atur juga backup otomatis
Ini sangat berguna untuk pengujian performa atau pembaruan firmware perangkat keras yang khusus Windows
Saat dipakai berpindah-pindah komputer, setelah boot Windows sering bingung lalu perlu reboot, dan setelah itu biasanya berfungsi
Namun saya belum pernah mencoba WinBTRFS atau proyek bootloader terpisah, dan bootloader itu tampaknya sedang rusak sejak beberapa bulan lalu
Menjalankan boot file VHD Windows dengan Ventoy juga mungkin menjadi opsi yang cukup baik
Anda juga memerlukan bootloader terpisah
Penulisnya membuat implementasi bernama Quibble, dan ini juga mendukung btrfs
[0] https://github.com/maharmstone/quibble