1 คะแนน โดย GN⁺ 2024-04-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • WinBtrfs v1.9 เป็นไดรเวอร์ที่ทำให้สามารถอ่านและเขียนระบบไฟล์ Btrfs ของ Linux บน Windows ได้ และถูกเขียนขึ้นใหม่ตั้งแต่ต้นโดยไม่ใช้โค้ดเคอร์เนลของ Linux
  • ควรทำงานได้บน Windows XP และเวอร์ชันหลังจากนั้น รวมอยู่ในระบบปฏิบัติการฟรี ReactOS ด้วย และหาก Btrfs อยู่บน MD software RAID ของ Linux จะต้องใช้ WinMD แยกต่างหาก
  • ขอบเขตฟีเจอร์ครอบคลุมการอ่าน/เขียน, RAID0/1/10/5/6, subvolume และ snapshot, reflink copy, send/receive, การบีบอัด zlib/LZO/Zstd, รองรับ LXSS ไปจนถึง ACL, ADS และการแมปสิทธิ์
  • การติดตั้งทำได้โดยดาวน์โหลดรีลีสล่าสุดแล้วติดตั้ง btrfs.inf หรือใช้ Chocolatey/Scoop และในสภาพแวดล้อม Secure Boot ของ Windows 10/11 อาจต้องแก้รีจิสทรีหรือปิด Secure Boot
  • โปรเจกต์เผยแพร่ภายใต้ LGPL แต่ไม่รับผิดชอบต่อความเสียหายของระบบไฟล์ และแม้จะระบุว่าควรเหมาะกับการใช้งานประจำวัน ก็ยังแนะนำให้ทำ backup

WinBtrfs ทำอะไร

  • WinBtrfs เป็นไดรเวอร์ Windows สำหรับ Btrfs ซึ่งเป็นระบบไฟล์ยุคถัดไปของ Linux
  • ถูกเขียนขึ้นใหม่ตั้งแต่ต้นโดยไม่รวมโค้ดเคอร์เนลของ Linux และควรทำงานได้บน Windows XP และเวอร์ชันหลังจากนั้น
  • รวมอยู่ในระบบปฏิบัติการฟรี ReactOS ด้วย
  • หากระบบไฟล์ Btrfs อยู่บนอุปกรณ์ MD software RAID ที่สร้างบน Linux การทำให้มองเห็นบน Windows ต้องใช้ WinMD
  • โปรเจกต์ที่เกี่ยวข้องมี Quibble ซึ่งเป็น bootloader เชิงทดลองที่ทำให้ Windows บูตจาก Btrfs ได้ และ Ntfs2btrfs สำหรับแปลงระบบไฟล์ NTFS แบบ inplace

ฟีเจอร์ที่รองรับ

  • ฟีเจอร์พื้นฐาน
    • อ่านและเขียน ระบบไฟล์ Btrfs
    • ค้นพบพาร์ทิชัน Btrfs ที่ปกติ Windows จะมองข้าม
    • โวลุ่ม Btrfs แบบไม่มีพาร์ทิชัน
    • การอ่านและเขียนแบบ asynchronous
    • caching, free-space cache, free space tree
  • RAID และการจัดการโวลุ่ม
    • RAID0, RAID1, RAID10
    • RAID5, RAID6
    • balancing รวมถึงการ resume balance ที่เริ่มจาก Linux
    • เพิ่มและลบอุปกรณ์
    • degraded mount
    • ย่อและขยายโวลุ่ม
  • ฟีเจอร์ระบบไฟล์
    • shell extension สำหรับสร้างและระบุ subvolume กับ snapshot
    • hard link, symbolic link, reparse point
    • sparse file, preallocation
    • reflink copy
    • subvolume send และ receive
    • scrubbing, TRIM/DISCARD
  • การทำงานร่วมกันระหว่าง Windows และ Linux
    • นำเข้าและตั้งค่า ACL เป็น xattr security.NTACL
    • เก็บ Alternate Data Streams เป็น xattr เช่น :Zone.Identifier จะถูกเก็บเป็น user.Zone.Identifier
    • แมปผู้ใช้ Linux กับผู้ใช้ Windows
    • รองรับ LXSS หรือ “Ubuntu on Windows”
    • passthrough metadata เช่นสิทธิ์สำหรับ LXSS
    • รองรับแฟล็กไดเรกทอรีแบบแยกตัวพิมพ์ใหญ่-เล็กของ Windows 10
  • การบีบอัดและฟีเจอร์ความเข้ากันได้
    • การบีบอัด zlib, LZO, Zstd
    • รองรับ Metadata UUID incompat flag ตาม Linux 5.0
    • รองรับ RAID1 แบบ 3/4 ดิสก์ และ checksum แบบ xxhash, sha256, blake2 ตาม Linux 5.5
    • รองรับ block group tree ตาม Linux 6.1

งานที่ยังเหลือ

  • การรองรับ fs-verity เต็มรูปแบบยังอยู่ในรายการของ Linux 5.15
  • การรองรับ Zoned ยังอยู่ในรายการของ Linux 5.11 พร้อมข้อสังเกตว่า HM-SMR อาจไม่รองรับบน Windows
  • รายการสิ่งที่ต้องทำยังมี defragmentation, Btrfs quota, การรองรับ transaction log แบบเต็ม และการรองรับ TxF ซึ่งเป็น Windows transactions

การติดตั้งและถอนการติดตั้ง

  • การติดตั้งทำได้โดยดาวน์โหลด รีลีสล่าสุด แตกไฟล์ แล้วคลิกขวา btrfs.inf เลือก Install
  • ไดรเวอร์มีลายเซ็นแล้ว จึงควรทำงานได้ทันทีบน Windows รุ่นใหม่
  • หากเปิด Secure Boot บน Windows 10 หรือ 11 อาจต้องแก้รีจิสทรีเพื่อให้โหลดไดรเวอร์ได้
    • มีการเสนอวิธีที่ง่ายกว่าคือปิด Secure Boot ใน BIOS
    • ระบุว่า Windows 11 ต้องการ Secure Boot แบบไม่เข้มงวดตอนติดตั้ง แต่หลังติดตั้งแล้วแม้ปิดก็ยังทำงานได้
  • สามารถติดตั้งผ่าน package manager ได้ด้วย
    • Chocolatey: choco install winbtrfs
    • Scoop: scoop bucket add nonportable, scoop install winbtrfs-np -g
  • การถอนการติดตั้งทำได้ด้วยคำสั่ง RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.inf หรือถอน “Btrfs controller” ใน Device Manager
  • หากต้องถอนผ่านรีจิสทรี ให้ตั้งค่า HKLM\SYSTEM\CurrentControlSet\services\btrfs\Start เป็น 4 เพื่อปิดบริการ จากนั้นรีบูตแล้วลบคีย์และ C:\Windows\System32\drivers\btrfs.sys

การ build และการแมปผู้ใช้

  • หากต้องการ build ด้วย Visual C++ 2019 ให้เปิดไดเรกทอรีแล้วให้ CMake จัดการ และควรทำงานได้หากติดตั้ง Windows DDK อย่างถูกต้อง
  • หากต้องการ build ด้วย GCC บน Linux ต้องใช้ cross compiler i686-w64-mingw32 หรือ x86_64-w64-mingw32
  • การแมปผู้ใช้ถูกเก็บในคีย์รีจิสทรี HKLM\SYSTEM\CurrentControlSet\services\btrfs\Mappings
    • สร้าง DWORD ที่มีชื่อเป็น Windows SID แล้วใส่ค่า Linux uid
    • ตรวจสอบ SID ปัจจุบันได้ด้วย wmic useraccount get name,sid
  • การแมปกลุ่มถูกเก็บไว้ใต้ GroupMappings
    • รายการเริ่มต้นแมปกลุ่ม Users ของ Windows ไปยัง gid 100 ซึ่งโดยทั่วไปคือ users บน Linux
    • สามารถระบุ SID ของผู้ใช้เพื่อให้ไฟล์ที่ผู้ใช้บางคนสร้างอยู่ในกลุ่มที่กำหนดได้
  • มีข้อควรระวังคือโปรเซสที่รันด้วย User Access Control token จะสร้างไฟล์ด้วย SID BUILTIN\Administrators ไม่ใช่บัญชีผู้ใช้

รองรับ WSL/LXSS

  • ไดรเวอร์สามารถ passthrough metadata ของ Linux ไปยัง LXSS เวอร์ชันล่าสุดได้
  • หากต้องการใช้ ให้ตั้งค่า /etc/wsl.conf จาก Bash prompt ของ Windows ในรูปแบบต่อไปนี้
    • [automount]
    • enabled = true
    • options = "metadata"
    • mountFsTab = false
  • การเปลี่ยนแปลงจะมีผลในการรีบูตครั้งถัดไป
  • ระบุว่าควรสามารถ chroot เข้าสู่สภาพแวดล้อมติดตั้ง Linux จริงได้

งานผ่าน command line

  • shellbtrfs.dll มีอินเทอร์เฟซ GUI แต่สามารถรันงานบางอย่างจาก command line ด้วย rundll32.exe ได้
  • rundll32 ไม่มีวิธีคืนค่า error code ดังนั้นคำสั่งอาจ ล้มเหลวแบบเงียบ ๆ
  • คำสั่งทั่วไป
    • CreateSubvol <path>
    • CreateSnapshot <source> <destination>
    • ReflinkCopy <source> <destination> และสามารถรับ wildcard กับไฟล์ต้นทางหลายไฟล์ได้
  • คำสั่งที่ต้องใช้สิทธิ์ administrator
    • SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file>
    • RecvSubvol <stream file> <destination>
    • StartScrub <drive>
    • StopScrub <drive>

ข้อจำกัดสำคัญในการแก้ปัญหา

  • ถือว่าชื่อไฟล์ทั้งหมดถูกเข้ารหัสเป็น UTF-8
  • ระบุว่าใน Windows 10 รุ่นหลัง ๆ ที่เปิด Secure Boot มีเงื่อนไขที่ดูเหมือนจะใช้กับไดรเวอร์โอเพนซอร์สไม่ได้ เนื่องจากข้อกำหนดด้านลายเซ็นของ Microsoft
    • วิธีเลี่ยงคือสร้าง DWORD UpgradedSystem ที่ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy ตั้งค่าเป็น 1 แล้วรีบูต
    • หรือปิด Secure Boot ใน BIOS
  • การที่ root ของไดรฟ์ใน LXSS ไม่แยกตัวพิมพ์ใหญ่-เล็กเป็นพฤติกรรมที่ Microsoft hardcode ไว้
  • ไม่สามารถเพิ่ม Btrfs ลงใน dialog format ของ Windows เองได้ เพราะรายการระบบไฟล์ถูก hardcode ไว้
    • การ format เป็น Btrfs ใช้ mkbtrfs.exe ที่รวมมาให้
    • หากไม่ต้องการ option เฉพาะของ Btrfs ก็ใช้ format /fs:btrfs ได้เช่นกัน
  • Synology NAS ดูเหมือนจะใช้ LVM บนอุปกรณ์บล็อก จึง mount ไม่ได้หากไม่มีไดรเวอร์ LVM สำหรับ Windows
  • Thecus NAS ใช้ Linux MD RAID จึงต้องติดตั้ง WinMD ร่วมด้วย
  • โมเดลสิทธิ์ของ Windows และ POSIX แตกต่างกันมากเกินไปจนไม่มีการแมปที่ใช้ได้จริง และสำหรับไฟล์ที่ไม่ต้องการให้แก้ไขบน Windows สามารถสร้าง Windows ACL ได้

การเปลี่ยนแปลงใน v1.9

  • v1.9 รีลีสเมื่อวันที่ 15 มีนาคม 2024
  • เพิ่มการรองรับ block group tree ของ Linux 6.1
  • แก้ปัญหาระบบค้างเมื่ออยู่ภายใต้โหลดสูง
  • เพิ่ม option /blockgrouptree, /freespacetree ให้ mkbtrfs
  • ปรับค่าเริ่มต้น /noholes ใน mkbtrfs ให้เปิดอยู่เหมือน Linux
  • เพิ่มการรองรับคำสั่ง CRC32C บน aarch64

Debug และ mount options

  • WinBtrfs แบ่ง debug message เป็นสามระดับ ได้แก่ errors/FIXMEs, warnings, traces
  • ไดรเวอร์เวอร์ชัน release จะบันทึกเฉพาะ errors และ FIXMEs ผ่าน DbgPrint และดูได้ด้วย Microsoft DebugView
  • หากต้องการแนบ debug log เต็มเมื่อรายงานปัญหา ให้ใช้ไดรเวอร์เวอร์ชัน debug และตั้งค่ารีจิสทรี
    • DebugLogLevel: 0 คือไม่มีข้อความ, 1 คือ errors/FIXMEs, 2 รวม warnings, 3 รวมทั้งหมดถึง traces
    • LogDevice: เป็นตัวเลือก อุปกรณ์ serial ที่จะส่งออก
    • LogFile: เป็นตัวเลือก ไฟล์ที่จะส่งออก
  • mount options ถูกเก็บไว้ในคีย์ย่อย UUID ของแต่ละระบบไฟล์ใต้ HKLM\SYSTEM\CurrentControlSet\Services\btrfs
  • option หลัก
    • Ignore: ไม่โหลดระบบไฟล์นั้น
    • Readonly: ไม่อนุญาตให้เขียนเหมือนแฟล็ก ro ของ Linux
    • Compress, CompressForce, CompressType: ตั้งค่าการบีบอัดเริ่มต้น, บังคับบีบอัด, รูปแบบการบีบอัดที่ต้องการ
    • FlushInterval: ช่วงเวลา flush metadata ค่าเริ่มต้นคือ 30 วินาทีเหมือน Linux
    • SubvolId: ID ของ subvolume ที่จะ mount เป็น root
    • SkipBalance: ข้ามการ resume balance ที่กำลังดำเนินอยู่ตอนปิดเครื่องครั้งล่าสุด
    • NoTrim: ปิดการรองรับ TRIM
    • AllowDegraded: อนุญาตให้ mount โวลุ่ม degraded ที่มีอุปกรณ์หายไป
    • NoDataCOW: ปิด copy-on-write สำหรับไฟล์ใหม่ เหมือนแฟล็ก nodatacow ของ Linux

ไลเซนส์และขอบเขตความรับผิดชอบ

  • โปรเจกต์ทั้งหมดเผยแพร่ภายใต้ GNU Lesser General Public Licence หรือ LGPL
  • ระบุว่าการใช้ซอฟต์แวร์เป็นความรับผิดชอบของผู้ใช้เอง และไม่รับผิดชอบต่อความเสียหายที่อาจเกิดกับระบบไฟล์
  • แม้จะระบุว่าควรเหมาะสำหรับการใช้งานประจำวัน แต่ก็แนะนำให้ทำ backup
  • มีประกาศลิขสิทธิ์และไลเซนส์ของโค้ดบุคคลที่สามที่รวมอยู่ เช่น Zlib, LZO, Zstd, BLAKE2, SHA256

1 ความคิดเห็น

 
GN⁺ 2024-04-08
ความคิดเห็นบน Hacker News
  • เคยอยากลองใช้อยู่พักหนึ่ง แต่พอไล่อ่าน issue ใน GitHub แล้วก็ถอดใจทันที
    เห็นปัญหาอย่าง จอฟ้า, ค้าง, การใช้งานพุ่งสูง, และข้อมูลเสียหาย ถ้ามีไดรเวอร์ btrfs/ZFS ที่เสถียร ผมก็ยินดีจ่ายเงิน
    ไม่ค่อยเข้าใจว่าทำไมโปรเจกต์แบบนี้ถึงไม่ได้รับความสนใจมากกว่านี้

    • ถ้า “ยินดีจ่ายเงิน” ก็มีลิงก์สนับสนุนอยู่: https://github.com/maharmstone/btrfs?tab=readme-ov-file#dona...
    • เพราะ Microsoft ไม่ได้สนับสนุน และนักพัฒนาไดรเวอร์ก็อ่าน โค้ดเคอร์เนลของ Windows ไม่ได้
      ดังนั้นแม้ปัญหาที่พูดถึงข้างต้นจะถูกแก้แล้ว การบูต Windows จาก btrfs ก็ยังมีแนวโน้มว่าจะยากอยู่ดี
      เข้าเมืองตาหลิ่วต้องหลิ่วตาตาม บางที Windows อาจควรรันผ่านการทำ virtualization เท่านั้นก็ได้
  • จุดที่บอกว่า เขียนใหม่ทั้งหมด โดยไม่ใช้โค้ดของ Linux นี่เจ๋งจริง ๆ และการรองรับไปถึง XP/2k3 กับ ReactOS ก็ยอดเยี่ยม
    คงต้องลองใช้กับเครื่องเก่าเครื่องหนึ่งดู

    • ฝั่ง Rust มีแพตเทิร์นน่าสนใจที่ ไลบรารีแบบไม่มี I/O กำลังเพิ่มขึ้น
      ไม่แน่ใจว่าควรลิงก์เรื่องนี้ไปที่ไหน แต่มี issue ของไลบรารี QUIC แบบไม่มี I/O ที่โพสต์ไว้ในปี 2019: https://github.com/aiortc/aioquic/issues/4
      ถ้าระบบไฟล์ทำตามแพตเทิร์นนี้ได้ก็คงดีมาก
      ถ้านำตรรกะของระบบไฟล์มาใช้ซ้ำ แล้วปรับใช้กับ Windows, FUSE, Linux, ที่เก็บข้อมูลแบบ linear address ของ wasm ฯลฯ ได้ ความสามารถในการพอร์ต การนำกลับมาใช้ซ้ำ และการแฮ็กต่อยอดก็น่าจะเพิ่มขึ้นอย่างมหาศาล
    • ReactOS ตั้งเป้าให้ เข้ากันได้กับ API ของ Windows ดังนั้นการรองรับทั้ง XP/2k3 และ ReactOS ก็ไม่ได้ถึงกับน่าประหลาดใจมากนัก
  • บทความที่เกี่ยวข้อง:
    WinBtrfs – A Windows driver for the next-generation Linux filesystem Btrfs - https://news.ycombinator.com/item?id=15177002 - กันยายน 2017, 100 ความคิดเห็น
    WinBtrfs v0.7 - https://news.ycombinator.com/item?id=12794214 - ตุลาคม 2016, 1 ความคิดเห็น

  • เมื่อไม่กี่สัปดาห์ก่อนลองใช้กับฮาร์ดไดรฟ์ btrfs แต่ทำให้ทำงานได้ไม่สำเร็จ
    หลังจากนั้นลองเข้าถึงผ่าน WSL ช่วงแรกก็ใช้ได้อยู่ไม่กี่ครั้ง แต่ค่อย ๆ เริ่มล้มเหลวมากขึ้น และสุดท้ายแม้แต่เมานต์ก็ไม่ได้
    สุดท้ายถึงนึกได้ว่าบูตด้วย Linux live ISO แล้วคัดลอก/ย้ายไฟล์ระหว่างไดรฟ์ Windows กับไดรฟ์ btrfs ก็พอ ตอนนี้เลยใช้ Fedora Workstation live ISO บน Ventoy USB อยู่

    • ฟังดูเป็นประสบการณ์จริงมาก
      ตอนนี้ใน Windows ก็ทำข้อมูลหายด้วย btrfs ได้แล้ว :-D
  • ใช้ไดรเวอร์นี้บนแล็ปท็อปมาสักพักแล้ว
    เป็นสภาพแวดล้อมที่ใช้ร่วมกัน โดยบน Linux ใช้เขียนโค้ดงาน ส่วนบน Windows ใช้เล่นเกม·ดูหนัง·มีเดีย
    ถ้ากังวลเรื่องข้อมูลเสียหายในพาร์ทิชันและไดรฟ์ btrfs ให้โฟกัสที่ ตัวเลือกการเมานต์ ใน README
    สำหรับพาร์ทิชันระบบ Arch Linux ใช้ Ignore และที่เหลือทั้งหมดใช้ Readonly ก็พอ
    อย่างไรก็ตาม แม้จะเมานต์ HDD ภายนอก 20TB ที่ใช้การบีบอัด btrfs zstd:2 แบบเต็ม ๆ ผมก็ไม่เคยเจอ CPU พุ่งหรือข้อมูลเสียหาย

  • แนะนำให้อ่าน README ทั้งหมด
    ผู้เขียนตอบคำถามที่ผมสงสัยไว้แล้ว และยังมีเนื้อหาอีกมากกว่านั้นด้วย

  • สงสัยว่าอันนี้บอกว่ารองรับ RAID 5/6 แบบ “พื้นฐานและขั้นสูง” ได้อย่างไร
    ตัว btrfs เองไม่ได้เป็นแบบนั้น และก็ไม่ชัดว่า “พื้นฐาน/ขั้นสูง” ที่พูดถึงตรงนี้หมายถึงอะไร: https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid5...

    • อันนั้นไม่ถูกต้องเสียทีเดียว
      Linux btrfs โดยทั่วไปก็รองรับ RAID5 แต่มี edge case ที่รู้จักกันซึ่งทำให้ใช้อย่างปลอดภัยได้ยาก
      ในทางปฏิบัติใกล้เคียงกับ “ใช้งานได้แต่ยังเป็นเชิงทดลองและเหมาะสำหรับนักพัฒนาเท่านั้น”
      WinBtrfs แค่ระบุโหมด RAID5 ไว้เป็นหนึ่งในฟีเจอร์ แต่ไม่ได้ลงรายละเอียดว่ามันทำงานได้ดีแค่ไหน
      คำถามใน issue ที่เกี่ยวข้องก็ถูกปิดไปโดยไม่มีคำตอบที่เป็นสาระ: https://github.com/maharmstone/btrfs/issues/293
      ก่อนจะได้คำตอบที่ชัดเจนจากนักพัฒนาเรื่องสถานะและการทดสอบ ผมจะไม่ฝากข้อมูลไว้กับ RAID 5/6
    • ดูเหมือนเขาจะเรียก RAID0/1/10 ว่า RAID “พื้นฐาน” และเรียก RAID5/6 ว่า RAID “ขั้นสูง”
      ไม่รู้เหมือนกันว่าทำไม แต่อาจเป็นเพราะอย่างแรกไม่ต้องใช้การคำนวณพาริตีแบบ “ขั้นสูง” ก็ได้
  • เคยใช้ไดรเวอร์นี้กับ btrfs เพื่อเติมไลบรารีไว้ล่วงหน้าบน Steam Deck
    ถ้าดาวน์โหลดผ่านเครือข่ายจะใช้เวลานานเกินไป และด้วยอินเทอร์เน็ตตอนนั้นคงใช้เวลานานกว่านั้นราว 100 เท่า
    นี่อาจเป็น *ระบบไฟล์แรกหลังจาก FAT ที่ใช้งานได้เลยบน nix, Mac และ Windows ก็ได้

    • ทุกคนมักลืม UDF กันเสมอ
  • ยอดเยี่ยม
    ถ้ามีใครใช้ระยะยาวหรือใช้ในโปรดักชันอยู่ ก็อยากรู้ว่าประสบการณ์จริงเป็นอย่างไร
    เห็นว่ารองรับ TRIM แล้ว แต่สงสัยว่ารองรับ RETRIM ด้วยหรือไม่
    หมายถึงฟีเจอร์ที่จำเป็นสำหรับการปล่อยพื้นที่ที่ตอนแรกไม่สามารถ TRIM ได้เพราะคิวคำสั่งเต็ม ระหว่างการเพิ่มประสิทธิภาพไดรฟ์
    และก็อยากรู้ด้วยว่าสำหรับคนที่ไม่ชอบ ReFS มันพอจะใช้เป็น ตัวทดแทน NTFS ที่มี data parity ได้ไหม รวมถึงเมื่อเทียบกับ ZFS สำหรับ Windows แล้วมันสุกงอมแค่ไหน

    • ผมใช้แบบเบา ๆ บนเครื่องหลักมาหลายปีแล้ว
      เป็นคอนฟิกที่มีพาร์ทิชัน Windows, พาร์ทิชัน Linux (btrfs บน LUKS) และพาร์ทิชัน btrfs ที่สามไว้เก็บไฟล์
      ไม่ได้ใช้บ่อยนัก แต่เวลาที่ใช้ก็แทบไม่รู้สึกถึงการมีอยู่ของมันเลย
      รู้สึกเหมือน Windows อ่าน btrfs ได้แบบเนทีฟมาตั้งแต่แรก และในการใช้งานระดับแค่เข้าถึง·แก้ไข·ลบไฟล์ธรรมดา ๆ ก็ไม่ได้ใช้ฟีเจอร์ “ขั้นสูง” อะไรเป็นพิเศษ
    • ครั้งหนึ่งผมเผลอรัน Visual Studio build จาก git clone บน btrfs แทนที่จะเป็นไดรฟ์ NTFS หลัก
      พอรู้ตัวแล้ว cancel build ก็พบว่ามีโฟลเดอร์ชื่อเดียวกันแต่เนื้อหาต่างกันเกิดขึ้นสองโฟลเดอร์ และต้องลบชื่อโฟลเดอร์เดิมซ้ำสองครั้ง
      ดูเหมือนไดรเวอร์นี้จะมี ปัญหาเรื่อง concurrency
    • การติดตั้ง WinBTRFS ร่วมกับ OpenZFS on Windows อาจทำให้เกิดปัญหาได้
      “Win OpenZFS driver and WinBtrfs driver dont play well with each other”
      https://github.com/openzfsonwindows/openzfs/issues/364
    • ReFS กับ Storage Spaces ตอบโจทย์นี้อยู่แล้ว ทั้งยังถูกรวมเข้ามาและได้รับการซัพพอร์ตเต็มรูปแบบ
      เท่าที่ได้ยินมา BTRFS มีรายการบั๊กที่แค่แตะผิดนิดเดียวก็อาจค้างหรือทำให้ข้อมูลเสียหายได้ยาวจนน่าขัน
      การเอาสิ่งที่ความน่าเชื่อถือยังน่าสงสัยแม้บนระบบปฏิบัติการเนทีฟของมันเอง มายัดใช้บน Windows นี่แทบจะบ้าไปแล้ว
      ถ้าลองเล่นเพื่อความสนุกก็ได้ แต่ผมจะไม่ฝากข้อมูลจริงไว้กับชุดนี้เด็ดขาด
      “บน mirror 2 ดิสก์ของผมก็ใช้ได้ดีนะ” เป็นแค่เรื่องเล่าเฉพาะกรณี ไม่ใช่ข้อมูล
  • สงสัยว่าถ้าใช้สิ่งนี้ จะทำให้ บูต Windows 10/11 จาก USB stick ของ Windows ที่ฟอร์แมตเป็น btrfs ได้หรือไม่

    • ใช้ Rufus ติดตั้ง 10/11 แบบ “Windows To Go” ลงใน enclosure สำหรับไดรฟ์ USB SATA/NVMe ได้
      จากประสบการณ์ที่เคยใช้ Windows 10 แบบนั้นทุกวันอยู่พักหนึ่ง มันทำงานได้ค่อนข้างดี แต่มีข้อควรระวังอยู่บ้าง
      ต้องมีการเชื่อมต่อ USB ที่เสถียร และต้องใช้ enclosure ไดรฟ์ USB ที่ชิปคอนโทรลเลอร์เสถียรและไม่ร้อนเกินไป
      ตัวไดรฟ์ต้องทนต่อการสูญเสียไฟฟ้าได้ดี
      น่าเสียดายที่ผมไม่รู้จักแหล่งข้อมูลที่ช่วยประเมินความสามารถในการรับมือไฟดับ
      ไดรฟ์บางรุ่นอาจมีปัญหาหนักเมื่อไฟถูกตัดกะทันหัน
      ผมมีประสบการณ์ที่ดีกับ Intel enterprise SATA SSD และไดรฟ์ NVMe ของ Dockcase ที่มีคาปาซิเตอร์
      ถ้าไดรฟ์หายไป การจ่ายไฟใหม่อาจช่วยได้: https://dfarq.homeip.net/fix-dead-ssd/
      ควรตั้งค่าแบ็กอัปอัตโนมัติไว้ด้วย
      มีประโยชน์มากสำหรับการทดสอบประสิทธิภาพหรือการอัปเดตเฟิร์มแวร์ฮาร์ดแวร์ที่ทำได้เฉพาะบน Windows
      เวลาเอาไปใช้สลับคอมพิวเตอร์หลายเครื่อง หลังบูต Windows มักจะงง ๆ แล้วต้องรีบูต จากนั้นจึงใช้งานได้
      แต่ผมไม่เคยใช้ WinBTRFS หรือโปรเจกต์บูตโหลดเดอร์แยกต่างหาก และบูตโหลดเดอร์นั้นดูเหมือนจะพังอยู่ตั้งแต่หลายเดือนก่อน
      การบูตไฟล์ Windows VHD ด้วย Ventoy ก็อาจเป็นตัวเลือกที่ดีเช่นกัน
    • แค่ตัวมันเองอย่างเดียวทำไม่ได้
      ต้องมี บูตโหลดเดอร์ แยกต่างหากด้วย
      ผู้เขียนได้ทำ implementation ชื่อ Quibble ไว้ และตัวนี้ก็รองรับ btrfs ด้วย
      [0] https://github.com/maharmstone/quibble