เมื่อจัดรูปแบบฮาร์ดดิสก์เพื่อติดตั้งระบบ Linux คุณต้องตัดสินใจเลือก filesystem ที่ดีที่สุด ในปี 2021 ตัวเลือกยอดนิยมคือ EXT4 แต่มันเป็นที่ดีที่สุดจริงๆ ไหม? และหากมีทางเลือกอื่น ควรเลือกไหม? มาดูตัวเลือกที่เป็นไปได้
EXT4
"Fourth Extended Filesystem" เข้ากันได้ย้อนหลังกับ EXT2 และ EXT3 ถือเป็นมาตรฐานสำหรับดิสโทร Linux ส่วนใหญ่ ยังคงนิยมเท่าเดิม
เป็นตัวเลือกที่ปลอดภัยและมั่นคงที่สุดวันนี้ เนื่องจากรองรับ journaling ป้องกัน (มากที่สุด) การสูญเสียข้อมูลหลัง system crash หรือขาดพลังงาน
คุณสมบัติสำคัญสองอย่างคือ "extents" และ "delayed allocation" ซึ่งจัดการการเขียนข้อมูลบนสื่อจัดเก็บอัจฉริยะ เพื่อเพิ่มประสิทธิภาพและลด fragmentation
BtrFS
"b-tree file system" ออกแบบโดย Oracle เริ่มต้น และเพิ่มความนิยมจนหลายคนถือว่าเป็นผู้繼承真正 (true successor) ของราชวงศ์ EXT
Btrfs มาพร้อมคุณสมบัติขั้นสูง เช่น การ defragment อัตโนมัติ และการบีบอัดโปร่งใส (transparent compression) ใช้แนวทาง copy-on-write บันทึกการเปลี่ยนแปลงใหม่ของข้อมูลและ metadata แทนที่จะกระทบของเดิม ("shadowing") นี่ยังอนุญาต snapshot สถานะต่างๆ ของ filesystem รวมถึงการจำลอง (replication), การย้าย (migration), และการสำรองข้อมูลเพิ่มเติม (incremental backups) การตรวจสอบ filesystem ออนไลน์และออฟไลน์ ลดความเสี่ยงการสูญเสียข้อมูลเพิ่มเติม
BtrFS รองรับ RAID แบบเนทีฟ แต่ไม่ทำตามแนวทาง software RAID striping หรือ hardware block mirroring แบบปกติ แทนที่จะเป็นอย่างนั้น มันรับรองว่าแต่ละบล็อกบนอุปกรณ์หนึ่งมีสำเนาบนอีกอุปกรณ์ และเก็บ CRC สำหรับข้อมูลทั้งหมด ดังนั้นกรณีล้มเหลว สามารถดึงข้อมูลจากสำเนาและ checksum มาสร้างข้อมูลที่เสียหายหรือหายไปใหม่
ค่าสังเกต: BtrFS ยังเป็น "SSD-friendly" เนื่องจากปิดคุณสมบัติที่มีประโยชน์สำหรับ HDD แบบกลไกแต่อาจทำให้ SSD ชราเร็วขึ้น
XFS
XFS สร้างโดย Silicon Graphics เกือบสามทศวรรษก่อน สำหรับเวิร์กสเตชันกราฟิกเฉพาะทาง rendering 3D
นั่นคือเหตุผล XFS ยังเป็นตัวเลือกดีที่สุดสำหรับระบบที่อ่าน/เขียนข้อมูลตลอดเวลา เนื่องจากใช้ "allocation groups" – ส่วนของ filesystem ที่มี inodes และพื้นที่ว่างของตัวเอง – ทำให้หลายเธรดอ่าน/เขียนข้อมูลพร้อมกันแบบขนานได้ รองรับ delayed allocation, inodes ที่จัดสรรแบบไดนามิก และอัลกอริทึม read-ahead ขั้นสูง ช่วยให้ประสิทธิภาพยอดเยี่ยม โดยเฉพาะบน storage pools ขนาดใหญ่ถึงหลายร้อย TB
แต่การรองรับ journaling จำกัด เทียบกับทางเลือกสมัยใหม่ และอาจเสี่ยงต่อการสูญเสียข้อมูลมากกว่า ยังไม่ scale down ได้ดีสำหรับสถานการณ์ทั่วไปแบบ single-threaded เช่น ลบรูปภาพจำนวนมากจากโฟลเดอร์ "Pictures" กล่าวคือ เหมาะสำหรับ datacenter แต่อาจไม่เหมาะสำหรับการใช้งานส่วนตัวทั่วไป
F2FS
หนึ่งใน filesystem ที่ "ใหม่กว่า" ค่อนข้าง "Flash-Friendly File System" เป็นตัวเลือกดีที่สุดสำหรับ flash-based storage โดยค่าเริ่มต้น
สร้างขึ้นสำหรับวัตถุประสงค์นี้โดย Samsung เริ่มต้น F2FS แบ่งสื่อจัดเก็บเป็นส่วนเล็กๆ ที่มีโซนซึ่งก็ประกอบด้วยส่วนเล็กกว่า อีก และพยายามใช้หลายส่วนแทนที่จะ reuse ส่วนเดิมซ้ำๆ ร่วมกับการรองรับ TRIM/FITRIM ทำให้เป็นมิตรกับ flash-based media ที่มีจำนวนการเขียนจำกัด
ไม่มีประโยชน์ลึกในคุณสมบัติ F2FS เพราะมันไม่เก่งในด้านใดเทียบกับทางเลือกทั้งหมด จะเป็นความเร็วหรือความปลอดภัยข้อมูล ไม่ใช่สำหรับสื่อทั่วไป ที่ filesystem อื่นจะมี feature-set ดีกว่า แต่เรื่องเปลี่ยนไปหากพูดถึง flash-based storage ที่สร้างขึ้นมาเพื่ออย่างนี้โดยเฉพาะ
OpenZFS/ZFS
OpenZFS เป็น fork ของ Zettabyte File System (ZFS) ที่ปรากฏบน Solaris ของ Sun จนถึง 2010 ZFS ใช้บน Linux ได้ผ่าน FUTE เป็นหลัก เนื่องจากปัญหา licensing หลัง 2010 การพัฒนาเริ่มเปิดออก และ 2016 Ubuntu รองรับเวอร์ชัน open-source โดยค่าเริ่มต้น ตั้งแต่นั้นมา เมื่อพูดถึง "ZFS" มักหมายถึง open variant แทน Solaris ZFS – ที่ยังพัฒนาต่อไปแต่บนเส้นทางขนาน
ZFS แตกต่างจากทางเลือกทั้งหมดที่รวม filesystem กับ volume manager ด้วยกัน เพราะนั้น มันไม่แค่จัดการไฟล์และไดเรกทอรี แต่ยังจัดการ physical media ที่พวกมันอาศัยอยู่ ด้วยนี้ ทุกอุปกรณ์จัดเก็บสามารถกำหนดให้เป็น pool ที่ถือเป็นทรัพยากรเดียว หากหมดพื้นที่ สามารถเพิ่ม storage ใหม่เข้า pool เพื่อขยาย ให้ ZFS จัดการรายละเอียด
ด้วยการจัดการ media เอง ZFS ยังเก่งในการรองรับ RAID สามารถตั้งค่า RAID arrays หลายประเภท (RAID 0, 2, 5 ฯลฯ) แต่ยังใช้วิธี "RAIDZ" ที่แตกต่างจาก RAID arrays แบบปกติ RAIDZ ใช้ variable width stripes ระหว่างไดรฟ์ที่รวมอยู่ เพิ่มความทนทานต่อการสูญเสียข้อมูลหลัง power failure
ZFS ยังใช้ copy-on-write แทนที่จะแก้ไขข้อมูลเดิม มันบันทึกแค่การเปลี่ยนแปลง ("deltas") ระหว่างรุ่นเก่าและใหม่ นี่อนุญาตการจัดเก็บหลายสำเนาข้อมูลแบบโปร่งใสและอัจฉริยะ โดยไม่ใช้พื้นที่มาก ทำงานเป็น backup หรือ snapshot ผู้ใช้สามารถกลับสู่สถานะก่อนหน้าของ filesystem ยกเลิกการเปลี่ยนแปลง หรือทำตรงข้าม: ดึงการเปลี่ยนแปลงทั้งหมดเข้า clones ของข้อมูลที่มีอยู่
นี่คือคุณสมบัติบางส่วนที่ช่วยกำจัดความเป็นไปได้ของการสูญเสียข้อมเกือบหมด – ทฤษฎีแล้ว
JFS
Journaling File System โดย IBM เป็น filesystem แรกๆ ที่รองรับ journaling ลดโอกาสสูญเสียข้อมูล ใช้ extents เหมือนทางเลือกสมัยใหม่ และ allocation groups เหมือน XFS มุ่งให้ประสิทธิภาพอ่าน/เขียนสูง
โดยไม่เน้นคุณสมบัติเดียว มันเป็น all-arounder ที่ดีภายใต้ workloads ต่างๆ สำหรับความต้องการต่างๆ น่าเสียดาย นี่ก็หมายความว่ามันไม่เก่งในอะไรเลย นอกจากนี้ยังมีปัญหาบางอย่างที่คนมากจะถือว่าเป็นลบเมื่อเลือก filesystem เช่น อาจล่าช้าในการอัปเดต journal ไปไม่รู้จบ เพิ่มโอกาสสูญเสียข้อมูลและเกือบทำให้ข้อเท็จจริงที่ว่าเป็น journaling file system ไม่มีผล มันดีกว่าในการเขียนแบบขนานที่ใช้สำหรับเซิร์ฟเวอร์และฐานข้อมูลใหญ่ แต่ทำงานแย่กว่า EXT4 ในสถานการณ์เดสก์ท็อปยอดนิยม
นี่อาจเป็นเหตุผลที่มันไม่ได้นิยมเท่ากับ filesystem อื่น ที่อาจทำงานเร็วกว่าหรือป้องกันการสูญเสียข้อมูลได้ดีกว่า
ควรเลือกอะไร?
มีเหตุผลที่ EXT4 เป็นค่าเริ่มต้นสำหรับดิสโทร Linux ส่วนใหญ่ มันทดสอบผ่าน มั่นคง ทำงานดี และรองรับกว้างขวาง หากมองหาความมั่นคง EXT4 คือ filesystem Linux ที่ดีที่สุดสำหรับคุณ
หากไม่กลัวที่จะจัดการกับระบบนิเวศที่สุกไม่เต็มที่ BtrFS อาจเป็นตัวเลือกดีกว่า
สำหรับใช้งานเซิร์ฟเวอร์ ที่ต้องการกำจัดโอกาสสูญเสียข้อมูลเกือบหมด และความมั่นคงเป็นสำคัญ อาจอยากดู ZFS แต่เพื่อใช้ประโยชน์จริง ต้องอ่านเยอะมาก โชคดีที่เราช่วยตั้งค่าเริ่มต้นได้
สำหรับ flash media F2FS เป็นตัวเลือกดีที่สุดโดยค่าเริ่มต้น
ไม่ว่าจะเลือก filesystem ไหน จดจำให้ลบ HDD ให้หมดก่อน หากต้องการทำให้เนื้อหาเดิมเกือบ irrecoverable