- WinBtrfs v1.9 एक ड्राइवर है जो Linux फ़ाइलसिस्टम Btrfs को Windows पर पढ़ने और लिखने की सुविधा देता है, और इसे Linux kernel code का उपयोग किए बिना शुरू से दोबारा implement किया गया है
- यह Windows XP के बाद के वर्ज़न पर काम करना चाहिए, और मुफ़्त operating system ReactOS में भी शामिल है; Linux के MD software RAID के ऊपर बने Btrfs के लिए अलग WinMD की ज़रूरत होती है
- फीचर दायरे में read/write, RAID0/1/10/5/6, subvolume·snapshot, reflink copy, send/receive, zlib/LZO/Zstd compression, LXSS support, ACL·ADS·permission mapping तक शामिल हैं
- इंस्टॉल करने के लिए latest release डाउनलोड करके
btrfs.infइंस्टॉल किया जा सकता है, या Chocolatey·Scoop का उपयोग किया जा सकता है; Windows 10/11 के Secure Boot environment में registry बदलनी पड़ सकती है या Secure Boot disable करना पड़ सकता है - प्रोजेक्ट LGPL के तहत वितरित किया जाता है, लेकिन फ़ाइलसिस्टम corruption के लिए ज़िम्मेदारी नहीं लेता, और रोज़मर्रा के उपयोग के लिए उपयुक्त होने का दावा करते हुए भी backup की सिफारिश करता है
WinBtrfs क्या करता है
- WinBtrfs Linux के next-generation फ़ाइलसिस्टम Btrfs के लिए Windows ड्राइवर है
- इसमें Linux kernel code शामिल नहीं है और इसे शुरू से दोबारा implement किया गया है, तथा यह Windows XP के बाद के वर्ज़न पर काम करना चाहिए
- यह मुफ़्त operating system ReactOS में भी शामिल है
- अगर Btrfs फ़ाइलसिस्टम Linux में बने MD software RAID डिवाइस के ऊपर है, तो उसे Windows में दिखाने के लिए WinMD की ज़रूरत होती है
- संबंधित प्रोजेक्ट्स में experimental bootloader Quibble शामिल है, जो Windows को Btrfs से boot करने देता है, और Ntfs2btrfs, जो NTFS फ़ाइलसिस्टम को in-place convert करता है
समर्थित फीचर्स
- बुनियादी फीचर्स
- Btrfs फ़ाइलसिस्टम पढ़ना और लिखना
- Windows द्वारा सामान्यतः ignore किए जाने वाले Btrfs partition की पहचान
- partition-less Btrfs volume
- asynchronous read और write
- caching, free-space cache, free space tree
- RAID और volume management
- RAID0, RAID1, RAID10
- RAID5, RAID6
- Linux में शुरू हुए balance को resume करना सहित balancing
- डिवाइस जोड़ना और हटाना
- degraded mount
- volume shrink और expand
- फ़ाइलसिस्टम फीचर्स
- subvolume और snapshot बनाने/पहचानने के लिए shell extension
- hard link, symbolic link, reparse point
- sparse file, preallocation
- reflink copy
- subvolume send और receive
- scrubbing, TRIM/DISCARD
- Windows·Linux interoperability
- ACL को xattr
security.NTACLके रूप में लाना और सेट करना - Alternate Data Streams को xattr के रूप में स्टोर करना; उदाहरण के लिए
:Zone.Identifierकोuser.Zone.Identifierके रूप में स्टोर किया जाता है - Linux users और Windows users mapping
- LXSS, यानी “Ubuntu on Windows” support
- LXSS के लिए permissions आदि metadata passthrough
- Windows 10 के case-sensitive directory flag का support
- ACL को xattr
- compression और compatibility फीचर्स
- zlib, LZO, Zstd compression
- Metadata UUID incompat flag का support Linux 5.0 के आधार पर
- 3·4-disk RAID1, xxhash·sha256·blake2 checksum का support Linux 5.5 के आधार पर
- block group tree का support Linux 6.1 के आधार पर
अभी बाकी काम
- fs-verity का पूरा support अभी Linux 5.15 item के रूप में बाकी है
- Zoned support अभी Linux 5.11 item के रूप में बाकी है, और यह संकेत है कि HM-SMR Windows में समर्थित नहीं हो सकता
- defragmentation, Btrfs quota, पूरा transaction log support, और Windows transactions यानी TxF support to-do list में हैं
इंस्टॉलेशन और हटाना
- इंस्टॉल करने के लिए latest release डाउनलोड करें, unzip करें, फिर
btrfs.infपर right-click करके Install चुनें - ड्राइवर signed है, इसलिए नए Windows वर्ज़न पर इसे सीधे काम करना चाहिए
- अगर Windows 10 या 11 में Secure Boot enabled है, तो ड्राइवर लोड करने के लिए registry change की ज़रूरत पड़ सकती है
- एक आसान तरीका BIOS में Secure Boot बंद करना भी बताया गया है
- Windows 11 इंस्टॉल के समय Secure Boot को ढीले तौर पर required मानता है, लेकिन इंस्टॉल के बाद इसे बंद करने पर भी सिस्टम काम करता है
- package manager से इंस्टॉल करना भी संभव है
- Chocolatey:
choco install winbtrfs - Scoop:
scoop bucket add nonportable,scoop install winbtrfs-np -g
- Chocolatey:
- हटाने के लिए
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.infकमांड या Device Manager में “Btrfs controller” हटाया जा सकता है - अगर registry से हटाना हो, तो
HKLM\SYSTEM\CurrentControlSet\services\btrfs\Startvalue को 4 पर सेट करके service disable करें, reboot करें, फिर key औरC:\Windows\System32\drivers\btrfs.sysको delete करें
build और user mapping
- Visual C++ 2019 से build करने के लिए directory खोलें और CMake को प्रोसेस करने दें; अगर Windows DDK ठीक से इंस्टॉल है, तो यह काम करना चाहिए
- Linux पर GCC से build करने के लिए
i686-w64-mingw32याx86_64-w64-mingw32cross compiler की ज़रूरत होती है - user mapping
HKLM\SYSTEM\CurrentControlSet\services\btrfs\Mappingsregistry key में स्टोर होती है- Windows SID नाम का DWORD बनाकर उसमें Linux uid value डालें
- मौजूदा SID को
wmic useraccount get name,sidसे देखा जा सकता है
- group mapping
GroupMappingsके तहत स्टोर होती है- default entry Windows के Users group को Linux में आम तौर पर
usersवाले gid 100 से map करती है - user SID specify करके यह तय किया जा सकता है कि किसी खास user द्वारा बनाई गई file किस group की हो
- default entry Windows के Users group को Linux में आम तौर पर
- ध्यान रहे कि User Access Control token के तहत चलने वाले process user account के बजाय
BUILTIN\AdministratorsSID के नाम से file बनाते हैं
WSL/LXSS support
- ड्राइवर नए LXSS वर्ज़न में Linux metadata को passthrough कर सकता है
- इसे उपयोग करने के लिए Windows के Bash prompt में
/etc/wsl.confको इस रूप में सेट करें[automount]enabled = trueoptions = "metadata"mountFsTab = false
- बदलाव अगले reboot पर लागू होंगे
- बताया गया है कि इससे वास्तविक Linux install environment में chroot करना संभव होना चाहिए
command-line काम
shellbtrfs.dllGUI interface देता है, लेकिन कुछ कामrundll32.exeसे command line पर भी चलाए जा सकते हैंrundll32में error code लौटाने का तरीका नहीं है, इसलिए command चुपचाप fail हो सकती है- सामान्य कमांड
CreateSubvol <path>CreateSnapshot <source> <destination>ReflinkCopy <source> <destination>और यह wildcard तथा कई source files स्वीकार कर सकता है
- administrator privileges वाली कमांड
SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file>RecvSubvol <stream file> <destination>StartScrub <drive>StopScrub <drive>
troubleshooting में महत्वपूर्ण सीमाएँ
- सभी filenames को UTF-8 में encoded माना जाता है
- Secure Boot enabled होने वाले Windows 10 के बाद के वर्ज़न में Microsoft की signing requirements के कारण ऐसी शर्तें आ गई हैं जो open source ड्राइवरों के लिए उपलब्ध नहीं लगतीं
- workaround के तौर पर
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\PolicyमेंUpgradedSystemDWORD बनाकर उसे 1 पर सेट करें और reboot करें - या BIOS में Secure Boot बंद किया जा सकता है
- workaround के तौर पर
- LXSS में drive root का case-insensitive होना Microsoft का hardcoded behavior है
- Windows के built-in format dialog में Btrfs नहीं जोड़ा जा सकता, क्योंकि फ़ाइलसिस्टम सूची hardcoded है
- Btrfs format के लिए शामिल
mkbtrfs.exeका उपयोग करें - अगर Btrfs-specific options की ज़रूरत नहीं है, तो
format /fs:btrfsभी संभव है
- Btrfs format के लिए शामिल
- Synology NAS ब्लॉक डिवाइस पर LVM इस्तेमाल करता हुआ लगता है, इसलिए Windows के लिए LVM ड्राइवर के बिना उसे mount नहीं किया जा सकता
- Thecus NAS Linux MD RAID इस्तेमाल करता है, इसलिए WinMD भी साथ में इंस्टॉल करना होगा
- Windows और POSIX permission model इतने अलग हैं कि व्यावहारिक mapping संभव नहीं है; जिन files को Windows में edit नहीं होने देना हो, उनके लिए Windows ACL बनाई जा सकती है
v1.9 में बदलाव
- v1.9 को 15 मार्च 2024 को रिलीज़ किया गया
- Linux 6.1 के block group tree support को जोड़ा गया
- सिस्टम पर बहुत अधिक load होने पर freeze होने की समस्या ठीक की गई
mkbtrfsमें/blockgrouptree,/freespacetreeoptions जोड़े गएmkbtrfsमें/noholesdefault को Linux की तरह enabled किया गया- aarch64 पर CRC32C instruction support जोड़ा गया
debug और mount options
- WinBtrfs debug messages को तीन स्तरों में बाँटता है: errors/FIXMEs, warnings, traces
- release version ड्राइवर केवल errors और FIXMEs को
DbgPrintसे रिकॉर्ड करता है, जिन्हें Microsoft DebugView में देखा जा सकता है - issue report करते समय पूरा debug log attach करने के लिए debug version ड्राइवर और registry settings का उपयोग किया जाता है
DebugLogLevel: 0 मतलब कोई message नहीं, 1 मतलब errors/FIXMEs, 2 मतलब warnings भी, 3 मतलब traces तक सबLogDevice: वैकल्पिक, आउटपुट के लिए serial deviceLogFile: वैकल्पिक, आउटपुट के लिए file
- mount options
HKLM\SYSTEM\CurrentControlSet\Services\btrfsके नीचे हर filesystem UUID subkey में स्टोर होते हैं - मुख्य options
Ignore: उस filesystem को लोड न करेंReadonly: Linux केroflag की तरह write की अनुमति न देंCompress,CompressForce,CompressType: default compression, forced compression, preferred compression type सेट करेंFlushInterval: metadata flush interval; default Linux की तरह 30 seconds हैSubvolId: root के रूप में mount होने वाला subvolume IDSkipBalance: पिछले shutdown के समय चल रहे balance को resume करने से छोड़ देंNoTrim: TRIM support disable करेंAllowDegraded: missing device वाले degraded volume को mount करने देंNoDataCOW: नई files पर copy-on-write disable करें; यह Linux केnodatacowflag जैसा है
लाइसेंस और ज़िम्मेदारी की सीमा
- पूरा प्रोजेक्ट GNU Lesser General Public Licence, यानी LGPL, के तहत वितरित किया जाता है
- software का उपयोग user की अपनी ज़िम्मेदारी पर है, और फ़ाइलसिस्टम को होने वाले संभावित नुकसान के लिए कोई ज़िम्मेदारी नहीं ली जाती
- इसे रोज़मर्रा के उपयोग के लिए उपयुक्त बताया गया है, फिर भी backup लेने की सिफारिश की गई है
- शामिल third-party code के लिए Zlib, LZO, Zstd, BLAKE2, SHA256 संबंधी copyright और license notices शामिल हैं
1 टिप्पणियां
Hacker News की राय
कुछ समय से इसे आज़माना चाहता था, लेकिन GitHub issues सरसरी तौर पर देखने के बाद तुरंत ही इरादा छोड़ दिया
blue screen, लॉकअप, usage spike, corruption जैसी समस्याएँ दिखीं, और अगर कोई स्थिर btrfs/ZFS driver हो तो मैं खुशी-खुशी पैसे देने को तैयार हूँ
समझ नहीं आता कि ऐसे projects को ज्यादा ध्यान क्यों नहीं मिलता
इसलिए ऊपर बताई गई समस्याएँ ठीक भी हो जाएँ, तब भी Windows को btrfs से boot करना शायद मुश्किल ही रहेगा
रोम में हो तो रोम के नियम मानो—शायद Windows को बस virtualize करके ही चलाना चाहिए
Linux code का इस्तेमाल किए बिना पूरी तरह से reimplementation किया गया है, यह सच में शानदार है, और XP/2k3 व ReactOS तक support करना भी बढ़िया है
अपनी किसी पुरानी machine पर इसे आज़माकर देखूँगा
इस phenomenon को कहाँ link करना ठीक रहेगा, पता नहीं, लेकिन 2019 में आया I/O-less QUIC library issue है: https://github.com/aiortc/aioquic/issues/4
filesystems भी अगर इस pattern को अपनाएँ तो सच में अच्छा होगा
अगर filesystem logic को reuse करते हुए Windows, FUSE, Linux, wasm के linear address storage वगैरह पर लागू किया जा सके, तो portability, reuse और hackability बहुत ज्यादा बढ़ सकती है
संबंधित पोस्ट:
WinBtrfs – A Windows driver for the next-generation Linux filesystem Btrfs - https://news.ycombinator.com/item?id=15177002 - सितंबर 2017, 100 comments
WinBtrfs v0.7 - https://news.ycombinator.com/item?id=12794214 - अक्टूबर 2016, 1 comment
कुछ हफ्ते पहले btrfs hard drive पर इसे इस्तेमाल करने की कोशिश की, लेकिन ठीक से चला नहीं पाया
बाद में WSL से access किया, कुछ बार ठीक चला लेकिन फिर धीरे-धीरे fail होने लगा, और बाद में mount भी नहीं हुआ
आखिर में समझ आया कि Linux live ISO से boot करके Windows drive और btrfs drive के बीच files copy/move कर सकते हैं, और अब Ventoy USB पर Fedora Workstation live ISO इस्तेमाल कर रहा हूँ
अब Windows पर भी btrfs के जरिए data lose किया जा सकता है :-D
मैं इस driver को laptop पर कुछ समय से इस्तेमाल कर रहा हूँ
Linux में काम की coding के लिए, और Windows में games·movies·media के लिए साथ में इस्तेमाल वाला setup है
अगर btrfs partition और drive के data corruption की चिंता है, तो README के mount options पर ध्यान दें
Arch Linux system partition के लिए
Ignoreइस्तेमाल करें, और बाकी सबके लिएReadonlyइस्तेमाल करेंहालांकि 20TB external HDD पर btrfs
zstd:2compression लगाकर पूरी तरह mount करके इस्तेमाल करते हुए भी मुझे CPU spikes या corruption नहीं दिखेREADME पूरा पढ़ने की सलाह दूँगा
author ने मेरे मन में आए सवालों और उससे भी ज्यादा बातों के जवाब दे रखे हैं
यह कैसे “basic और advanced” RAID 5/6 support करने का दावा करता है, यह जानने की जिज्ञासा है
btrfs खुद तो ऐसा नहीं करता, और यहाँ “basic/advanced” से क्या मतलब है यह भी अस्पष्ट है: https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid5...
Linux btrfs भी आम तौर पर RAID5 support करता है, लेकिन कुछ known edge cases हैं जो इसे safe तरीके से इस्तेमाल करना मुश्किल बनाते हैं
व्यवहार में यह “usable but experimental and developers-only” जैसा है
WinBtrfs RAID5 mode को बस एक feature के तौर पर list करता है, यह ठीक से नहीं बताता कि यह कितना अच्छे से काम करता है
संबंधित issue में पूछे गए सवाल भी बिना किसी ठोस जवाब के close कर दिए गए: https://github.com/maharmstone/btrfs/issues/293
developer से status और testing पर साफ जवाब मिले बिना मैं RAID 5/6 पर data नहीं सौंपूँगा
क्यों, पता नहीं, लेकिन शायद इसलिए कि पहले वाले में “advanced” parity calculations जैसी चीज़ों की जरूरत नहीं होती
Steam Deck पर library पहले से भरने के लिए मैंने यह driver और btrfs इस्तेमाल किया
network से download करने में बहुत समय लग रहा था, और उस समय के internet से शायद उससे 100 गुना ज्यादा समय लगता
यह FAT के बाद nix, Mac, Windows पर सीधे काम करने वाला पहला filesystem हो सकता है
शानदार
अगर कोई इसे लंबे समय से या production में इस्तेमाल कर रहा है, तो जानना चाहूँगा कि असल में अनुभव कैसा रहा
देखा कि TRIM support है, लेकिन जानना चाहूँगा कि RETRIM भी support होता है या नहीं
मेरा मतलब उस feature से है जो शुरू में command queue भर जाने के कारण TRIM न हो पाए क्षेत्रों को drive optimization के दौरान release करने के लिए चाहिए होता है
यह भी जानना चाहूँगा कि ReFS नापसंद करने वाले लोगों के लिए data parity वाला NTFS alternative के रूप में यह इस्तेमाल लायक है या नहीं, और Windows के लिए ZFS की तुलना में यह कितना mature है
Setup में Windows partition, Linux partition (LUKS के ऊपर btrfs), और files रखने के लिए तीसरा btrfs partition है
अक्सर इस्तेमाल नहीं करता, लेकिन जब करता हूँ तो इसकी मौजूदगी का एहसास भी नहीं होता
ऐसा लगा जैसे Windows शुरू से ही btrfs को native रूप से पढ़ सकता था, और सिर्फ file access·modify·delete करने जैसे usage में कोई खास “advanced” feature इस्तेमाल नहीं किया
जब ध्यान आया और build cancel किया, तो एक ही नाम लेकिन अलग contents वाले दो folders बन गए थे, और उसी folder name को दो बार delete करना पड़ा
लगता है इस driver में concurrency issue है
“Win OpenZFS driver and WinBtrfs driver dont play well with each other”
https://github.com/openzfsonwindows/openzfs/issues/364
सुना है कि BTRFS में ऐसे defects की सूची अविश्वसनीय रूप से लंबी है जिनमें ज़रा-सी गलत छेड़छाड़ पर यह hang हो सकता है या data corrupt कर सकता है
जिस चीज़ की reliability उसके native operating system पर भी संदिग्ध है, उसे Windows में जबरन fit करके इस्तेमाल करना लगभग पागलपन है
मज़े के लिए करना ठीक है, लेकिन असली data मैं इस combination के भरोसे बिल्कुल नहीं छोड़ूँगा
“मेरे 2-disk mirror पर ठीक चलता है” सिर्फ anecdote है, data नहीं
जानना चाहूँगा कि इसे इस्तेमाल करने से btrfs से formatted Windows USB stick से Windows 10/11 boot करना संभव हो जाता है या नहीं
कुछ समय तक Windows 10 को रोज़ इसी तरह इस्तेमाल करने के अनुभव के हिसाब से यह काफी ठीक चला, लेकिन कुछ सावधानियाँ हैं
स्थिर USB connection चाहिए, और ऐसा USB drive enclosure चाहिए जिसका controller chip स्थिर हो और overheat न करे
Drive को power loss के प्रति resilient होना चाहिए
दुर्भाग्य से power loss handling capability का आकलन करने वाली कोई सामग्री मुझे नहीं पता
कुछ drives अचानक power cut से बड़ी समस्या झेल सकती हैं
Intel enterprise SATA SSD और capacitors वाले Dockcase के NVMe drive पर मेरा अनुभव अच्छा रहा
अगर drive दिखाई न दे, तो power दोबारा देना मदद कर सकता है: https://dfarq.homeip.net/fix-dead-ssd/
automatic backup भी set कर रखना चाहिए
performance testing या Windows-only hardware firmware updates के लिए यह बहुत उपयोगी है
जब अलग-अलग computers पर इस्तेमाल करते हैं, तो boot के बाद Windows अक्सर confused हो जाता है और reboot करना पड़ता है; उसके बाद चल जाता है
हालांकि WinBTRFS या किसी अलग bootloader project का इस्तेमाल करने का अनुभव नहीं है, और वह bootloader कुछ महीनों से फिलहाल टूटा हुआ लगता है
Ventoy से Windows VHD file boot करना भी एक अच्छा विकल्प हो सकता है
एक अलग bootloader भी चाहिए
लेखक ने Quibble नाम का implementation बनाया है, और यह भी btrfs support करता है
[0] https://github.com/maharmstone/quibble