อ่าน 10 นาที
เอ็กซ์เอฟเอส
XFS เป็น ระบบไฟล์แบบ journaling ประสิทธิภาพสูง 64 บิต ที่สร้างโดย Silicon Graphics, Inc (SGI) ในปี 1993 [ 7 ] เป็นระบบไฟล์เริ่มต้นใน ระบบปฏิบัติการ IRIX ของ SGI ตั้งแต่เวอร์ชัน 5.
เอ็กซ์เอฟเอส
| นักพัฒนา | |
|---|---|
| ชื่อเต็ม | เอ็กซ์เอฟเอส |
| แนะนำ | ปี 1994 พร้อมIRIX 5.3 |
| รหัสพาร์ติชัน | |
| โครงสร้าง | |
| สารบัญ | ต้นไม้ B+ |
| การจัดสรรไฟล์ | ต้นไม้ B+ |
| ข้อจำกัด | |
| ขนาดปริมาตรสูงสุด | 8 เอ็กซาบิไบต์ − 1 ไบต์ |
| ขนาดไฟล์สูงสุด | 8 เอ็กซาบิไบต์ − 1 ไบต์ |
| จำนวนไฟล์สูงสุด | 2 64 |
| ความยาวชื่อไฟล์สูงสุด | 255 ไบต์ |
| อักขระที่อนุญาตสำหรับชื่อไฟล์ | ทั้งหมด ยกเว้น NUL และ "/" |
| คุณสมบัติ | |
| วันที่บันทึก | atime, mtime, ctime, [ 2 ]เวอร์ชัน 5: crtime [ 3 ] |
| ช่วงวันที่ | 13 ธันวาคม พ.ศ. 2444 – 2 กรกฎาคม พ.ศ. 2486 [ 4 ] |
| ความละเอียดของวันที่ | 1 นาโนวินาที |
| คุณลักษณะ | ใช่ |
| สิทธิ์การเข้าถึงไฟล์ระบบ | ใช่ |
| การบีบอัดแบบโปร่งใส | เลขที่ |
| การเข้ารหัสแบบโปร่งใส | ไม่ (ระบุไว้ที่ระดับอุปกรณ์บล็อก) |
| การลบข้อมูลซ้ำซ้อน | ทดลองใช้เฉพาะ Linux [ 5 ] |
| ลิขสิทธิ์แบบเขียน | ใช่[ 6 ] |
| อื่น | |
| ระบบปฏิบัติการที่รองรับ | |
XFS เป็น ระบบไฟล์แบบ journalingประสิทธิภาพสูง64 บิต ที่สร้างโดยSilicon Graphics, Inc (SGI) ในปี 1993 [ 7 ]เป็นระบบไฟล์เริ่มต้นใน ระบบปฏิบัติการ IRIX ของ SGI ตั้งแต่เวอร์ชัน 5.3 เป็นต้นไป XFS ได้รับการพอร์ตไปยังเคอร์เนล Linuxในปี 2001 และ ณ เดือนมิถุนายน 2014 XFS ได้รับการสนับสนุนจากระบบปฏิบัติการ Linux ส่วนใหญ่ โดยRed Hat Enterprise Linuxใช้เป็นระบบไฟล์เริ่มต้น
XFS โดดเด่นในการประมวลผลการทำงานแบบขนานของอินพุต/เอาต์พุต (I/O) เนื่องจากการออกแบบที่อิงตามกลุ่มการจัดสรร (Allocation Groups หรือ AGs ) ซึ่งเป็น รูปแบบหนึ่งของการแบ่งย่อยของวอลุ่มทางกายภาพที่ใช้ใน XFS ด้วยเหตุนี้ XFS จึงช่วยให้สามารถปรับขนาดเธรด I/O แบนด์วิดท์ของระบบไฟล์ และขนาดของไฟล์และระบบไฟล์เองได้อย่างมีประสิทธิภาพสูงเมื่อใช้งานบนอุปกรณ์จัดเก็บข้อมูลทางกายภาพหลายตัว XFS รับประกันความสอดคล้องของข้อมูลโดยใช้ การบันทึก เมตาเดต้า (Metadata Journaling)และรองรับการเขียนแบบมีเงื่อนไข (Write Barrier ) การจัดสรรพื้นที่ทำผ่านส่วนขยาย (Extents ) โดยใช้โครงสร้างข้อมูลที่จัดเก็บในB+ treeซึ่งช่วยปรับปรุงประสิทธิภาพโดยรวมของระบบไฟล์ โดยเฉพาะอย่างยิ่งเมื่อจัดการกับไฟล์ขนาดใหญ่การจัดสรรแบบหน่วงเวลาช่วยป้องกันการแตกกระจายของระบบไฟล์ และยังรองรับ การจัดเรียงข้อมูลแบบออนไลน์ (Online Defragmentation ) อีกด้วย
ประวัติศาสตร์
XFS รุ่นแรก
Silicon Graphicsเริ่มพัฒนา XFS [ 8 ] ("X" ตั้งใจจะเติมในภายหลังแต่ไม่เคยทำ) ในปี 1993 สำหรับ ระบบปฏิบัติการ IRIXที่ใช้UNIX System Vระบบไฟล์นี้ได้รับการเผยแพร่ภายใต้สัญญาอนุญาตสาธารณะทั่วไปของ GNU (GPL) ในเดือนพฤษภาคม 1999 [ 9 ]
XFS รุ่นที่สอง
ทีมที่นำโดย Steve Lord ที่ SGI ได้พอร์ต XFS ไปยัง Linux [ 10 ]และการสนับสนุนครั้งแรกโดยระบบปฏิบัติการ Linuxเกิดขึ้นในปี 2001 การสนับสนุนนี้ค่อยๆ แพร่หลายไปยังระบบปฏิบัติการ Linux เกือบทั้งหมด[ 11 ]
การสนับสนุน XFS ในเคอร์เนล Linux ในช่วงเริ่มต้นมาจากแพตช์ของ SGI โดยได้รวมเข้ากับเคอร์เนล Linux หลักในซีรีส์ 2.6 และรวมเข้ากับซีรีส์ 2.4 ในเวอร์ชัน 2.4.25 แยกต่างหากในเดือนกุมภาพันธ์ พ.ศ. 2547 [ 12 ]ทำให้ XFS สามารถใช้งานได้เกือบทุกระบบ Linux [ 13 ] Gentoo Linux กลายเป็น ระบบปฏิบัติการ Linuxตัวแรกที่แนะนำตัวเลือก XFS เป็นระบบไฟล์เริ่มต้นในช่วงกลางปี พ.ศ. 2545 [ 14 ]
FreeBSDเพิ่ม การรองรับ การอ่านอย่างเดียวสำหรับ XFS ในเดือนธันวาคม พ.ศ. 2548 และในเดือนมิถุนายน พ.ศ. 2549 ได้แนะนำการรองรับการเขียนแบบทดลอง อย่างไรก็ตาม นี่มีจุดประสงค์เพื่อช่วยในการย้ายจาก Linux เท่านั้น ไม่ใช่เป็นระบบไฟล์ "หลัก" FreeBSD 10 ได้ลบการรองรับ XFS ออกไป[ 15 ]
ในปี 2552 ระบบปฏิบัติการRed Hat Enterprise Linux (RHEL) เวอร์ชัน 5.4 แบบ 64 บิต มีการสนับสนุนเคอร์เนลที่จำเป็นสำหรับการสร้างและการใช้งานระบบไฟล์ XFS แต่ขาดเครื่องมือบรรทัดคำสั่งที่เกี่ยวข้อง เครื่องมือที่มีอยู่ใน CentOSสามารถใช้งานได้เพื่อจุดประสงค์นั้น และ Red Hat ก็ได้จัดหาเครื่องมือเหล่านั้นให้กับลูกค้า RHEL ตามคำขอ[ 16 ] RHEL 6.0 ที่วางจำหน่ายในปี 2553 มีการสนับสนุน XFS โดยมีค่าใช้จ่ายเป็นส่วนหนึ่งของ "ส่วนเสริมระบบไฟล์ที่ปรับขนาดได้" ของ Red Hat [ 17 ] Oracle Linux 6 ที่วางจำหน่ายในปี 2554 ก็มีตัวเลือกสำหรับการใช้ XFS เช่นกัน[ 18 ]
RHEL 7.0 ซึ่งวางจำหน่ายในเดือนมิถุนายน พ.ศ. 2557 ใช้ XFS เป็นระบบไฟล์เริ่มต้น[ 19 ]รวมถึงการสนับสนุนการใช้ XFS สำหรับ/bootพาร์ติชัน ซึ่งก่อนหน้านี้ไม่สามารถทำได้จริงเนื่องจากบั๊กในบูตโหลดเดอร์GRUB [ 20 ]
เคอร์เนล Linux 4.8 ในเดือนสิงหาคม 2016 ได้เพิ่มคุณสมบัติใหม่คือ "การแมปแบบย้อนกลับ" ซึ่งเป็นพื้นฐานสำหรับชุดคุณสมบัติที่วางแผนไว้มากมาย ได้แก่สแนปช็อตข้อมูลแบบคัดลอกเมื่อเขียน (COW) การลดความซ้ำซ้อนของข้อมูล สำเนาลิงก์อ้างอิง การขัดเกลาข้อมูลและเมตาเดตาแบบออนไลน์การรายงานการสูญเสียข้อมูลหรือเซกเตอร์เสียที่มีความแม่นยำสูง และการสร้างระบบไฟล์ที่เสียหายหรือชำรุดขึ้นใหม่ที่ดีขึ้นอย่างมาก งานนี้จำเป็นต้องมีการเปลี่ยนแปลงรูปแบบบนดิสก์ของ XFS [ 21 ] [ 22 ]
XFS รุ่นที่สาม

เคอร์เนล Linux 5.10 ที่วางจำหน่ายในเดือนธันวาคม 2020 มีรูปแบบดิสก์ใหม่ XFS v5 นี่เป็นการเปลี่ยนแปลงครั้งใหญ่ เนื่องจาก XFS v4 ที่เลิกใช้แล้วไม่สามารถแปลงเป็น XFS v5 ได้ ข้อมูลในพาร์ติชันที่ฟอร์แมตด้วย XFS v4 จะต้องสำรองข้อมูลไปยังพาร์ติชันหรือสื่ออื่นเพื่อกู้คืนหลังจากฟอร์แมตพาร์ติชันเก่าด้วย XFS v5 ซึ่งจะลบข้อมูลทั้งหมดในนั้นออกไป การสนับสนุน XFS v4 จะถูกลบออกจากเคอร์เนล Linux ในเดือนกันยายน 2030 [ 23 ] [ 24 ]
XFS v5 ได้แนะนำ "bigtime" เพื่อจัดเก็บการประทับเวลาของ inode เป็นตัวนับนาโนวินาที 64 บิต แทนที่จะเป็นตัวนับวินาที 32 บิตแบบดั้งเดิม ซึ่งทำให้ปัญหาปี 2038 ก่อนหน้านี้เลื่อนออก ไปจนถึงปี 2486 [ 4 ]นอกจากนี้ยังได้แนะนำการตรวจสอบผลรวมของเมตาเดตาด้วย
คู่มือ Gentoo ซึ่งเป็นคู่มือ การติดตั้งอย่างเป็นทางการของ Gentoo Linuxได้แนะนำ XFS ให้เป็น "ระบบไฟล์อเนกประสงค์สำหรับทุกแพลตฟอร์ม" ตั้งแต่วันที่ 28 มิถุนายน 2023 โดยแทนที่Ext4 [ 25 ]
คุณสมบัติ
ความจุ
XFS เป็นระบบไฟล์ 64 บิต[ 26 ]และรองรับขนาดระบบไฟล์สูงสุด 8 เอ็กซาบิไบต์ลบหนึ่งไบต์ (2 63 − 1 ไบต์) แต่ข้อจำกัดที่กำหนดโดยระบบปฏิบัติการโฮสต์สามารถลดขีดจำกัดนี้ได้ ระบบ Linux 32 บิตจำกัดขนาดของทั้งไฟล์และระบบไฟล์ไว้ที่ 16 เทบิไบต์
การเขียนบันทึกประจำวัน
ในระบบคอมพิวเตอร์สมัยใหม่ การบันทึกข้อมูล (journaling) เป็นความสามารถที่ช่วยให้มั่นใจได้ถึงความสม่ำเสมอของข้อมูลในระบบไฟล์ แม้ว่าจะเกิดไฟฟ้าดับหรือระบบล่มก็ตาม XFS มีการบันทึกข้อมูลสำหรับเมตาเดต้าของระบบไฟล์ โดยการอัปเดตระบบไฟล์จะถูกเขียนลงในบันทึกแบบอนุกรมก่อนที่จะอัปเดตบล็อกดิสก์จริง บันทึกนี้เป็นบัฟเฟอร์แบบวงกลมของบล็อกดิสก์ที่ไม่ถูกอ่านในการทำงานปกติของระบบไฟล์
บันทึกการเปลี่ยนแปลงของ XFS สามารถจัดเก็บไว้ภายในส่วนข้อมูลของระบบไฟล์ (ในรูปแบบบันทึกภายใน) หรือบนอุปกรณ์แยกต่างหากเพื่อลดการแย่งใช้ทรัพยากรดิสก์ให้น้อยที่สุด
ในระบบไฟล์ XFS นั้น บันทึกการเปลี่ยนแปลง (journal) ส่วนใหญ่จะประกอบด้วยรายการที่อธิบายส่วนของบล็อกดิสก์ที่เปลี่ยนแปลงไปจากการทำงานของระบบไฟล์ การอัปเดตบันทึกการเปลี่ยนแปลงจะดำเนินการแบบอะซิงโครนัสเพื่อหลีกเลี่ยงการลดลงของความเร็วในการทำงาน
ในกรณีที่ระบบล่ม การทำงานของระบบไฟล์ที่เกิดขึ้นก่อนการล่มสามารถนำกลับมาใช้ใหม่และดำเนินการต่อได้ตามที่บันทึกไว้ในบันทึกการเปลี่ยนแปลง ซึ่งเป็นวิธีที่ทำให้ข้อมูลที่จัดเก็บในระบบไฟล์ XFS มีความสอดคล้องกัน การกู้คืนจะดำเนินการโดยอัตโนมัติในครั้งแรกที่ระบบไฟล์ถูกเชื่อมต่อหลังจากเกิดการล่ม ความเร็วในการกู้คืนไม่ขึ้นอยู่กับขนาดของระบบไฟล์ แต่ขึ้นอยู่กับปริมาณการทำงานของระบบไฟล์ที่จะนำกลับมาใช้ใหม่
กลุ่มการจัดสรร
ระบบไฟล์ XFS แบ่งพาร์ติชันภายในออกเป็นกลุ่มการจัดสรร (allocation groups)ซึ่งเป็นพื้นที่เชิงเส้นที่มีขนาดเท่ากันภายในระบบไฟล์ไฟล์ และไดเร็กทอรีสามารถครอบคลุมหลายกลุ่มการจัดสรรได้ แต่ละกลุ่มการจัดสรรจะจัดการ inode และพื้นที่ว่าง ของตนเองแยกจากกัน ทำให้มีความสามารถในการปรับขนาดและการทำงานแบบขนาน ดังนั้นเธรดและกระบวนการหลายตัวจึงสามารถดำเนินการ I/O บนระบบไฟล์เดียวกันได้พร้อมกัน
สถาปัตยกรรมนี้ช่วยเพิ่มประสิทธิภาพการทำงาน I/O แบบขนานบนระบบที่มีโปรเซสเซอร์และ/หรือคอร์หลายตัว เนื่องจากสามารถอัปเดตเมตาเดต้าแบบขนานได้เช่นกัน การแบ่งพาร์ติชันภายในที่จัดทำโดยกลุ่มการจัดสรรจะมีประโยชน์อย่างยิ่งเมื่อระบบไฟล์ครอบคลุมอุปกรณ์ทางกายภาพหลายตัว ทำให้สามารถใช้ประโยชน์จากปริมาณงานของส่วนประกอบจัดเก็บข้อมูลพื้นฐานได้อย่างเหมาะสมที่สุด
การจัดสรรลายทาง
หากต้องการสร้างระบบไฟล์ XFS บนอาร์เรย์RAID แบบแถบ สามารถระบุ หน่วยแถบได้เมื่อสร้างระบบไฟล์ วิธีนี้จะช่วยเพิ่มประสิทธิภาพการรับส่งข้อมูลสูงสุดโดยทำให้มั่นใจว่าการจัดสรรข้อมูล การจัดสรร inode และบันทึกภายใน (journal) นั้นสอดคล้องกับหน่วยแถบ
การจัดสรรตามขอบเขต
บล็อกที่ใช้ในไฟล์ที่จัดเก็บบนระบบไฟล์ XFS จะถูกจัดการด้วยส่วนขยาย ที่มีความยาวแปรผัน โดยส่วนขยายหนึ่งส่วนจะอธิบายบล็อกที่ต่อเนื่องกันหนึ่งบล็อกหรือมากกว่านั้น ซึ่งสามารถลดจำนวนบล็อกลงได้อย่างมาก เมื่อเทียบกับระบบไฟล์ที่แสดงรายการบล็อกทั้งหมดที่ไฟล์ใช้งานทีละบล็อก
ระบบไฟล์แบบบล็อกจัดการการจัดสรรพื้นที่ด้วยบิตแมปแบบบล็อกหนึ่งตัวหรือมากกว่านั้น ใน XFS โครงสร้างเหล่านี้ถูกแทนที่ด้วยโครงสร้างแบบขยายที่ประกอบด้วยต้นไม้ B+ สองต้น สำหรับแต่ละกลุ่มการจัดสรรระบบไฟล์ ต้นไม้ B+ ต้นหนึ่งจะถูกจัดทำดัชนีด้วยความยาวของส่วนขยายที่ว่างอยู่ ในขณะที่อีกต้นหนึ่งจะถูกจัดทำดัชนีด้วยบล็อกเริ่มต้นของส่วนขยายที่ว่างอยู่ รูปแบบการจัดทำดัชนีแบบคู่เช่นนี้ช่วยให้การจัดสรรส่วนขยายที่ว่างอยู่สำหรับการดำเนินการของระบบไฟล์มีประสิทธิภาพสูง
ขนาดบล็อกแปรผัน
ขนาดบล็อกของระบบไฟล์แสดงถึงหน่วยการจัดสรรขั้นต่ำ XFS อนุญาตให้สร้างระบบไฟล์ด้วยขนาดบล็อกตั้งแต่ 512 ไบต์ถึง 64 กิโลไบต์ ทำให้สามารถปรับแต่งระบบไฟล์ให้เหมาะสมกับระดับการใช้งานที่คาดการณ์ไว้ได้ เมื่อคาดว่าจะมีการใช้งานไฟล์ขนาดเล็กจำนวนมาก ขนาดบล็อกขนาดเล็กมักจะช่วยเพิ่มความจุสูงสุด แต่สำหรับระบบที่จัดการกับไฟล์ขนาดใหญ่เป็นหลัก ขนาดบล็อกที่ใหญ่กว่าอาจให้ข้อได้เปรียบด้านประสิทธิภาพ
การจัดสรรล่าช้า
XFS ใช้ เทคนิค การประเมินแบบเลซี่ (lazy evaluation)ในการจัดสรรไฟล์ เมื่อไฟล์ถูกเขียนลงในแคชบัฟเฟอร์ แทนที่จะจัดสรรส่วนขยาย (extents) สำหรับข้อมูล XFS จะสงวนบล็อกระบบไฟล์จำนวนที่เหมาะสมสำหรับข้อมูลที่อยู่ในหน่วยความจำเท่านั้น การจัดสรรบล็อกจริงจะเกิดขึ้นก็ต่อเมื่อข้อมูลถูกเขียนลงดิสก์ในที่สุดเท่านั้น วิธีนี้ช่วยเพิ่มโอกาสที่ไฟล์จะถูกเขียนในกลุ่มบล็อกที่ต่อเนื่องกัน ลด ปัญหา การแตกกระจายของข้อมูลและเพิ่มประสิทธิภาพ
ไฟล์กระจัดกระจาย
XFS จัดสรรพื้นที่แอดเดรสแบบสปาร์ส 64 บิตให้กับแต่ละไฟล์ ซึ่งช่วยให้สามารถรองรับไฟล์ขนาดใหญ่มาก และยังมี "ช่องว่าง" ภายในไฟล์ที่ไม่ได้จัดสรรพื้นที่ดิสก์ไว้ได้ เนื่องจากระบบไฟล์ใช้เอ็กซ์เทนต์แมปสำหรับแต่ละไฟล์ ขนาดของแผนที่การจัดสรรไฟล์จึงมีขนาดเล็ก หากขนาดของแผนที่การจัดสรรมีขนาดใหญ่เกินกว่าจะจัดเก็บไว้ในอินโนดได้ แผนที่นั้นจะถูกย้ายไปยังโครงสร้าง B+ tree ซึ่งช่วยให้เข้าถึงข้อมูลได้อย่างรวดเร็วทุกที่ในพื้นที่แอดเดรส 64 บิตที่จัดสรรให้กับไฟล์นั้น
คุณลักษณะเพิ่มเติม
XFS จัดเตรียมสตรีมข้อมูลหลายรายการสำหรับไฟล์ ซึ่งเป็นไปได้ด้วยการใช้งานแอตทริบิวต์เพิ่มเติม แอตทริบิวต์เหล่านี้อนุญาตให้จัดเก็บคู่ชื่อ/ค่าจำนวนมากที่แนบมากับไฟล์ ชื่อเป็นสตริงอักขระที่พิมพ์ได้ซึ่งลงท้ายด้วยค่าว่าง (null) และมีความยาวสูงสุด 256 ไบต์ ในขณะที่ค่าที่เกี่ยวข้องสามารถมี ข้อมูลไบนารี ได้สูงสุด 64 KB
นอกจากนี้ยังแบ่งย่อยออกเป็นสองเนมสเปซ ได้แก่rootและuserแอตทริบิวต์เพิ่มเติมที่จัดเก็บอยู่ในเนมสเปซหลักสามารถแก้ไขได้โดยผู้ใช้ระดับสูงสุดเท่านั้น ในขณะที่แอตทริบิวต์ในเนมสเปซผู้ใช้สามารถแก้ไขได้โดยผู้ใช้ทุกคนที่มีสิทธิ์ในการเขียนไฟล์
แอตทริบิวต์เพิ่มเติมสามารถแนบไปกับ inode ของ XFS ได้ทุกประเภท รวมถึงลิงก์สัญลักษณ์ โหนดอุปกรณ์ ไดเร็กทอรี ฯลฯattrสามารถใช้ยูทิลิตี้เพื่อจัดการแอตทริบิวต์เพิ่มเติมจากบรรทัดคำสั่งได้ และ ยูทิลิตี้ xfsdumpต่างๆxfsrestoreก็รับรู้ถึงแอตทริบิวต์เพิ่มเติมเหล่านี้ และจะสำรองและกู้คืนเนื้อหาของแอตทริบิวต์เหล่านั้น ระบบสำรองข้อมูลอื่นๆ จำนวนมากไม่รองรับการทำงานกับแอตทริบิวต์เพิ่มเติม
อินพุต/เอาต์พุตโดยตรง
สำหรับแอปพลิเคชันที่ต้องการอัตราการรับส่งข้อมูลลงดิสก์สูง XFS มีระบบ I/O โดยตรงที่ช่วยให้สามารถใช้งาน I/O แบบไม่แคชได้โดยตรงในพื้นที่ผู้ใช้ ข้อมูลจะถูกถ่ายโอนระหว่างบัฟเฟอร์ของแอปพลิเคชันและดิสก์โดยใช้DMAซึ่งช่วยให้สามารถเข้าถึงแบนด์วิดท์ I/O เต็มรูปแบบของอุปกรณ์ดิสก์พื้นฐานได้
ภาพถ่าย
XFS ยังไม่[ 27 ]ให้การสนับสนุนโดยตรงสำหรับสแนปช็อต เนื่องจากปัจจุบันคาดว่ากระบวนการสแนปช็อตจะถูกดำเนินการโดยตัวจัดการวอลุ่ม การสร้างสแนปช็อตของระบบไฟล์ XFS เกี่ยวข้องกับการหยุด I/O ไปยังระบบไฟล์ชั่วคราวโดยใช้xfs_freezeยูทิลิตี้ ให้ตัวจัดการวอลุ่มทำการสร้างสแนปช็อตจริง จากนั้นจึงกลับมาใช้งาน I/O ต่อเพื่อดำเนินการต่อตามปกติ สแนปช็อตสามารถเมานต์แบบอ่านอย่างเดียวเพื่อวัตถุประสงค์ในการสำรองข้อมูลได้
XFS เวอร์ชันสำหรับ IRIX มีตัวจัดการวอลุ่มแบบบูรณาการที่เรียกว่า XLV แต่ตัวจัดการวอลุ่มนี้ยังไม่ได้ถูกนำมาใช้ใน Linux และ XFS จึงทำงานร่วมกับLVM มาตรฐาน ในระบบ Linux แทน
ในเคอร์เนล Linux รุ่นล่าสุดxfs_freezeฟังก์ชันนี้ถูกนำไปใช้ในเลเยอร์ VFS และจะถูกเรียกใช้งานโดยอัตโนมัติเมื่อมีการเรียกใช้ฟังก์ชันสแนปช็อตของ Volume Manager ซึ่งครั้งหนึ่งเคยเป็นข้อได้เปรียบที่มีค่า เนื่องจาก ระบบไฟล์ ext3ไม่สามารถระงับได้[ 28 ]และ Volume Manager ไม่สามารถสร้างสแนปช็อต "ร้อน" ที่สอดคล้องกันเพื่อสำรองข้อมูลฐานข้อมูลที่มีการใช้งานอย่างหนักได้[ 29 ]โชคดีที่ปัจจุบันไม่ใช่เช่นนั้นอีกต่อไปแล้ว ตั้งแต่ Linux 2.6.29 ระบบไฟล์ ext3, ext4 , GFS2และJFSก็มีคุณสมบัติการหยุดการทำงานเช่นกัน[ 30 ]
การจัดเรียงข้อมูลออนไลน์ใหม่
แม้ว่าลักษณะตามขอบเขตของ XFS และกลยุทธ์การจัดสรรแบบหน่วงเวลาที่ใช้จะช่วยปรับปรุงความต้านทานของระบบไฟล์ต่อปัญหาการแตกกระจายได้อย่างมาก แต่ XFS ก็มี โปรแกรม จัดระเบียบ ไฟล์ระบบ ( xfs_fsrชื่อย่อของ XFS filesystem reorganizer) ที่สามารถจัดระเบียบไฟล์บนระบบไฟล์ XFS ที่ติดตั้งและใช้งานอยู่ได้[ 31 ]
การเติบโตทางออนไลน์
XFS มีxfs_growfsเครื่องมือสำหรับขยายระบบไฟล์ XFS แบบออนไลน์ ระบบไฟล์ XFS สามารถขยายได้ตราบใดที่ยังมีพื้นที่ว่างเหลืออยู่บนอุปกรณ์ที่เก็บระบบไฟล์นั้น คุณสมบัตินี้มักใช้ร่วมกับการจัดการวอลุ่ม เนื่องจากมิเช่นนั้น จะต้องขยาย พาร์ติชั่นที่เก็บระบบไฟล์นั้นแยกต่างหาก
อุปกรณ์แบบเรียลไทม์
XFS รองรับอุปกรณ์แยกต่างหากที่เรียกว่าอุปกรณ์เรียลไทม์ ซึ่งใช้ตัวจัดสรรบิตแมปแบบกำหนดได้ที่เรียบง่าย แทนที่จะใช้ตัวจัดสรรแบบ B+ tree ที่ปรับขนาดได้มากกว่าแต่ซับซ้อนกว่า ซึ่งปกติใช้ใน XFS [ 32 ]อุปกรณ์เรียลไทม์ถูกเพิ่มเข้ามาในตอนแรกเพื่อรองรับการรับส่งข้อมูลแบบรับประกันอัตรา แต่ต่อมาก็มีการใช้งานอื่นๆ อีกด้วย ปัจจุบันการใช้งานที่พบบ่อยที่สุดคือการวางเมตาเดตาไว้บน SSD ในขณะที่วางข้อมูลไว้บนฮาร์ดไดรฟ์
การแชร์บล็อกข้อมูลโดยใช้ลิงก์อ้างอิง
ใน Linux 4.9 XFS ได้เพิ่มการสนับสนุนการแชร์บล็อกที่เหมือนกันระหว่างไฟล์ ซึ่งเป็นวิธีที่รวดเร็วในการโคลนไฟล์และอนุญาตให้เครื่องมือในพื้นที่ผู้ใช้สามารถใช้การลดความซ้ำซ้อนของข้อมูล นอกบรรทัด ได้ การสนับสนุน reflink ถูกนำมาใช้โดยใช้กลุ่ม B+ tree ต่อการจัดสรรใหม่ที่ติดตามจำนวนการอ้างอิงสำหรับแต่ละบล็อกทางกายภาพ และการเปลี่ยนแปลงเส้นทางการเขียนเพื่อดำเนินการCopy-on-writeเมื่อเขียนทับบล็อกที่มีจำนวนบล็อกสูงขึ้น[ 33 ]
การตรวจสอบระบบไฟล์ออนไลน์และการแก้ไขตัวเองโดยอัตโนมัติ
ตั้งแต่ Linux 6.10 เป็นต้นไป XFS รองรับการตรวจสอบและซ่อมแซมระบบไฟล์ออนไลน์สำหรับเมตาเดต้าทั้งหมด[ 34 ]เพื่อรองรับการสร้างโครงสร้างข้อมูลการติดตามพื้นที่ว่างใหม่อย่างมีประสิทธิภาพ จึงได้เพิ่ม B+tree แบบแมปย้อนกลับ (rmap) [ 33 ]และเพื่อให้เมตาเดต้าที่ซ้ำซ้อนสำหรับลำดับชั้นของไฟล์ จึงได้เพิ่มตัวชี้ผู้ปกครองที่จัดเก็บเป็นแอตทริบิวต์เพิ่มเติม[ 35 ] ตั้งแต่ Linux 7.0 เป็นต้นไป XFS รองรับการซ่อมแซมด้วยตนเองโดยอัตโนมัติโดยอาศัยคุณสมบัติ เหล่า นี้ โดยโปรแกรม xfs_healer จะเริ่มดำเนินการซ่อมแซมโดยอัตโนมัติเมื่อจำเป็น[ 36 ]
โซน XFS
Linux 6.15 เพิ่มตัวจัดสรรโซนใหม่เพื่อรองรับ Zoned Storage ซึ่งรวมถึงฮาร์ดไดรฟ์ที่ใช้การบันทึกแบบ shingled-magnetic (SMR) และNVM Express SSD ที่ใช้ชุดคำสั่ง zoned [ 37 ]ตัวจัดสรรโซนทำงานบนอุปกรณ์เรียลไทม์และจัดเก็บเฉพาะข้อมูลไฟล์เท่านั้น เมตาเดต้าใช้ตัวจัดสรร XFS ที่มีอยู่บนอุปกรณ์หลัก เพื่อรองรับฮาร์ดไดรฟ์ SMR ที่ไม่มีโซนแบบดั้งเดิม zoned XFS เพิ่มการสนับสนุนสำหรับอุปกรณ์ RT ภายใน ซึ่งอุปกรณ์หลักและอุปกรณ์ RT อยู่บนอุปกรณ์บล็อก Linux เดียวกัน ตัวจัดสรรโซนจะเขียนนอกตำแหน่งเสมอ และเขียนตามลำดับเสมอ[ 38 ]ในโซนที่เปิดอยู่จำนวนจำกัด และ จะดำเนิน การเก็บขยะเพื่ออพยพบล็อกที่ถูกต้องในโซนที่ใช้บางส่วนเพื่อสร้างโซนว่างที่ใช้สำหรับการเขียนเพิ่มเติม XFS แบบแบ่งโซนสามารถใช้โซนเปิดหลายโซนและดำเนินการ จัด วางข้อมูลอย่างชาญฉลาด ส่งผลให้มีประสิทธิภาพดีกว่าระบบไฟล์อื่นๆ บนพื้นที่จัดเก็บข้อมูลแบบแบ่งโซน และยังเหนือกว่าระบบไฟล์ทั่วไปบน SSD ทั่วไปในบางกรณีการใช้งาน[ 39 ] [ 40 ]
คุณสมบัติเฉพาะของ IRIX
ดีมาพี
XFS ได้นำ อินเทอร์เฟซ DMAPI มาใช้ เพื่อรองรับการจัดการพื้นที่จัดเก็บข้อมูลแบบลำดับชั้นใน IRIX ณ เดือนตุลาคม 2010 การใช้งาน XFS บน Linux รองรับเมตาเดต้าบนดิสก์ที่จำเป็นสำหรับการใช้งาน DMAPI แต่มีรายงานว่าการสนับสนุนเคอร์เนลไม่สามารถใช้งานได้ ระยะหนึ่ง SGI ได้โฮสต์โครงสร้างเคอร์เนลที่มีฮุก DMAPI แต่การสนับสนุนนี้ไม่ได้มีการดูแลรักษาอย่างเพียงพอ แม้ว่านักพัฒนาเคอร์เนลจะระบุเจตนาที่จะปรับปรุงการสนับสนุนนี้ให้ทันสมัย[ 41 ]
อัตรา I/O ที่รับประกัน
ระบบ I/O แบบรับประกันอัตราของ XFS มี API ที่อนุญาตให้แอปพลิเคชันจองแบนด์วิดท์ให้กับระบบไฟล์ได้ XFS จะคำนวณประสิทธิภาพที่มีอยู่จากอุปกรณ์จัดเก็บข้อมูลพื้นฐานแบบไดนามิก และจะจองแบนด์วิดท์ให้เพียงพอต่อประสิทธิภาพที่ร้องขอในช่วงเวลาที่กำหนด นี่เป็นคุณสมบัติเฉพาะของระบบไฟล์ XFS อัตราการรับประกันสามารถเป็น "แบบแข็ง" หรือ "แบบอ่อน" ซึ่งแสดงถึงการแลกเปลี่ยนระหว่างความน่าเชื่อถือและประสิทธิภาพ อย่างไรก็ตาม XFS จะอนุญาตการรับประกันแบบ "แข็ง" ก็ต่อเมื่อระบบย่อยจัดเก็บข้อมูลพื้นฐานรองรับเท่านั้น คุณสมบัตินี้ส่วนใหญ่ใช้สำหรับแอปพลิเคชันแบบเรียลไทม์ เช่น การสตรีมวิดีโอ
การรับส่งข้อมูล I/O ที่รับประกันอัตรานั้นรองรับเฉพาะภายใต้IRIX เท่านั้น และต้องใช้ฮาร์ดแวร์พิเศษสำหรับวัตถุประสงค์ดังกล่าว[ 42 ]
ความไม่เข้ากันของโครงสร้างไดเร็กทอรี IRIX
การพยายามติดตั้งวอลุ่ม IRIX XFS บนเคอร์เนลที่สูงกว่า 3.17 และเขียนหรือเรียกใช้Fsckจะส่งผลให้ระบบไฟล์เสียหาย IRIX ยังคงใช้โครงสร้างไดเร็กทอรี v2 ในขณะที่ XFS ได้นำ v3-v5 มาใช้ในเวอร์ชันต่อมาและยกเลิกโครงสร้างไดเร็กทอรี v2 ในเคอร์เนลประมาณ 3.17 [ 43 ]การสูญเสียและการเสียหายของข้อมูลจะเกิดขึ้นในเคอร์เนล Linux รุ่นหลังๆ[ 44 ]
ข้อเสีย
- ระบบไฟล์ XFS ไม่สามารถย่อขนาดในตำแหน่งเดิมได้ (ณ เดือนธันวาคม 2023) [ 45 ]แม้ว่าจะมีการหารือเกี่ยวกับวิธีแก้ปัญหาที่เป็นไปได้หลายวิธีแล้วก็ตาม[ 46 ]
- ไม่สามารถปิดใช้งานการบันทึกได้ อย่างไรก็ตาม XFS สามารถเขียนไปยังบันทึกภายนอกบนอุปกรณ์บล็อกแยกต่างหากแทนได้[ 47 ]
ข้อเสียเปรียบในอดีต
- การดำเนินการเมตาเดตาใน XFS ช้ากว่าเมื่อเทียบกับระบบไฟล์แบบบันทึกการเปลี่ยนแปลงที่นำมาใช้ในภายหลังและออกแบบมาเพื่อทำงานกับบันทึกขนาดใหญ่กว่ามาก ส่งผลให้ประสิทธิภาพการทำงานช้าลง เช่น การลบไฟล์จำนวนมาก อย่างไรก็ตาม คุณสมบัติใหม่ของ XFS ที่พัฒนาโดย Dave Chinner และเรียกว่าการบันทึกแบบหน่วงเวลาซึ่งมีให้ใช้งานตั้งแต่เวอร์ชัน 2.6.39 ของเคอร์เนล Linux หลัก กล่าวกันว่าสามารถแก้ไขปัญหานี้ได้[ 48 ]การทดสอบประสิทธิภาพที่ดำเนินการโดยนักพัฒนาในปี 2010 เผยให้เห็นว่าระดับประสิทธิภาพคล้ายกับext4ที่จำนวนเธรดต่ำ และเหนือกว่าที่จำนวนเธรดสูง[ 49 ]
ดูเพิ่มเติม
- การเปรียบเทียบระบบไฟล์
- ซีเอ็กซ์เอฟเอส
- รายชื่อระบบไฟล์
- รายชื่อระบบไฟล์เริ่มต้น
- Stratis (โปรแกรมจัดการการตั้งค่า)
อ่านเพิ่มเติม
- ความสามารถในการปรับขนาดในระบบไฟล์ XFS (บทความ XFS ฉบับแรกที่นำเสนอในการประชุมทางเทคนิคประจำปี Usenix ปี 1996)
- "โครงสร้างดิสก์ของระบบไฟล์ XFS ฉบับที่ 3" (PDF) . Silicon Graphics. มิถุนายน 2017 . สืบค้นเมื่อ17 กันยายน 2019 .
ลิงก์ภายนอก
- วิกิ XFS Linuxวิกิชุมชนปัจจุบัน
- XFS.org ถูกเก็บถาวรเมื่อวันที่ 4 พฤศจิกายน 2016 ที่Wayback Machineซึ่งเป็นวิกิชุมชนเก่า
- crossmeta.org เก็บถาวรเมื่อ 2015-08-08 ที่Wayback Machineพอร์ตชุมชนของ XFS บน Windows
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เอ็กซ์เอฟเอส
XFS เป็น ระบบไฟล์แบบ journaling ประสิทธิภาพสูง 64 บิต ที่สร้างโดย Silicon Graphics, Inc (SGI) ในปี 1993 [ 7 ] เป็นระบบไฟล์เริ่มต้นใน ระบบปฏิบัติการ IRIX ของ SGI ตั้งแต่เวอร์ชัน 5.
XFS รุ่นแรก
Silicon Graphics เริ่มพัฒนา XFS [ 8 ] ("X" ตั้งใจจะเติมในภายหลังแต่ไม่เคยทำ) ในปี 1993 สำหรับ ระบบปฏิบัติการ IRIX ที่ใช้ UNIX System V ระบบไฟล์นี้ได้รับการเผยแพร่ภายใต้ สัญญาอนุญาตสาธารณะทั่วไปของ GNU (GPL) ในเดือนพฤษภาคม 1999 [ 9 ]
XFS รุ่นที่สอง
ทีมที่นำโดย Steve Lord ที่ SGI ได้พอร์ต XFS ไปยัง Linux [ 10 ] และการสนับสนุนครั้งแรกโดย ระบบปฏิบัติการ Linux เกิดขึ้นในปี 2001 การสนับสนุนนี้ค่อยๆ แพร่หลายไปยังระบบปฏิบัติการ Linux เกือบทั้งหมด [ 11 ]
XFS รุ่นที่สาม
เคอร์เนล Linux 5.10 ที่วางจำหน่ายในเดือนธันวาคม 2020 มีรูปแบบดิสก์ใหม่ XFS v5 นี่เป็นการเปลี่ยนแปลงครั้งใหญ่ เนื่องจาก XFS v4 ที่เลิกใช้แล้วไม่สามารถแปลงเป็น XFS v5 ได้ ข้อมูลในพาร์ติชันที่ฟอร์แมตด้วย XFS v4...