อ่าน 5 นาที
ระบบไฟล์ Unix
ระบบ ไฟล์ Unix ( UFS ) คือตระกูลของ ระบบไฟล์ ที่ได้รับการสนับสนุนโดยระบบ ปฏิบัติการ Unix และ ระบบปฏิบัติการ ที่คล้าย Unix...
ระบบไฟล์ Unix
| นักพัฒนา | ซีเอสอาร์จี |
|---|---|
| ชื่อเต็ม | ระบบไฟล์ UNIX |
| แนะนำ | ด้วย4.2BSD |
| โครงสร้าง | |
| สารบัญ | ตาราง |
| ข้อจำกัด | |
| ขนาดปริมาตรสูงสุด | 2.73 ไบต์ (8 ไมโครไบต์ ) |
| ขนาดไฟล์สูงสุด | 2.73 ไบต์ (8 ไมโครไบต์ ) |
| ความยาวชื่อไฟล์สูงสุด | 255 ไบต์ |
| คุณสมบัติ | |
| วันที่บันทึก | UFS1 และ UFS2: เวลาเข้าถึงครั้งสุดท้าย (atime), เวลาแก้ไขครั้งสุดท้าย (mtime), เวลาเปลี่ยนแปลง inode ครั้งสุดท้าย (ctime), UFS2: เวลาสร้าง inode (birthtime) [ 1 ] |
| ช่วงวันที่ | UFS1: 14 ธันวาคม พ.ศ. 2444–18 มกราคม พ.ศ. 2581, UFS2: ออฟเซ็ตจำนวนเต็ม 64 บิตแบบมีเครื่องหมายจากยุค[ 1 ] |
| ความละเอียดของวันที่ | UFS1 และ UFS2: นาโนวินาที[ 1 ] |
| อื่น | |
| ระบบปฏิบัติการที่รองรับ | A/UX , DragonFly BSD , FreeBSD , FreeNAS , NAS4Free , HP-UX , NetBSD , NeXTSTEP , Linux , OpenBSD , illumos , Solaris , SunOS , Tru64 UNIX , UNIX System V , Orbis OSและอื่นๆ |
ระบบไฟล์ Unix ( UFS ) คือตระกูลของระบบไฟล์ ที่ได้รับการสนับสนุนโดยระบบ ปฏิบัติการ Unixและ ระบบปฏิบัติการ ที่คล้าย Unixหลายระบบมันเป็นระบบไฟล์ที่พัฒนาต่อยอดมาจากระบบไฟล์ดั้งเดิมที่ใช้ในUnix เวอร์ชัน 7
ออกแบบ
วอลุ่ม UFS ประกอบด้วยส่วนต่างๆ ดังต่อไปนี้:
- พื้นที่บางส่วนบริเวณต้นพาร์ติชั่นถูกสงวนไว้สำหรับบล็อกบูต (ซึ่งต้องเริ่มต้นใช้งานแยกต่างหากจากระบบไฟล์)
- ซูเปอร์บล็อก ซึ่งประกอบด้วยหมายเลขวิเศษที่ระบุว่านี่คือระบบไฟล์ UFS และหมายเลขสำคัญอื่นๆ ที่อธิบายโครงสร้างและสถิติของระบบไฟล์นี้ รวมถึงพารามิเตอร์การปรับแต่งพฤติกรรม
- กลุ่มของกระบอกสูบแต่ละกลุ่มประกอบด้วยส่วนประกอบดังต่อไปนี้:
- สำเนาสำรองของซูเปอร์บล็อก
- ส่วนหัวของกลุ่มกระบอกสูบ พร้อมสถิติ รายการฟรี ฯลฯ เกี่ยวกับกลุ่มกระบอกสูบนี้ คล้ายกับที่อยู่ในซูเปอร์บล็อก
- โหนดจำนวนหนึ่งแต่ละโหนดประกอบด้วยคุณลักษณะของไฟล์
- บล็อกข้อมูลจำนวนหนึ่ง
หมายเลข Inode จะเรียงลำดับกัน โดยเริ่มจาก 0 Inode 0 สงวนไว้สำหรับรายการไดเร็กทอรีที่ยังไม่ได้จัดสรร Inode 1 เคยเป็น inode ของไฟล์ bad block ในเวอร์ชัน UNIX รุ่นเก่า ตามด้วย inode สำหรับไดเร็กทอรีรูทซึ่งมักจะเป็น inode 2 และ inode สำหรับไดเร็กทอรีที่สูญหายและค้นพบ ซึ่งคือ inode 3
ไฟล์ไดเร็กทอรีจะมีเพียงรายชื่อไฟล์ในไดเร็กทอรีและ inode ที่เชื่อมโยงกับแต่ละไฟล์เท่านั้นข้อมูลเมตา ของไฟล์ทั้งหมด จะถูกเก็บไว้ใน inode
ประวัติศาสตร์และวิวัฒนาการ
ระบบไฟล์ Unix ในยุคแรกๆ เรียกง่ายๆ ว่าFS FS ประกอบด้วยบล็อกบูต ซูเปอร์บล็อก กลุ่มของอิโนดและบล็อกข้อมูลเท่านั้น ซึ่งใช้งานได้ดีกับดิสก์ขนาดเล็กที่ Unix ในยุคแรกๆ ถูกออกแบบมา แต่เมื่อเทคโนโลยีพัฒนาขึ้นและดิสก์มีขนาดใหญ่ขึ้น การเคลื่อนหัวอ่านไปมาระหว่างกลุ่มของอิโนดและบล็อกข้อมูลที่อ้างถึงทำให้เกิดการทำงานที่ติดขัดมาร์แชลเคิร์ก แมคคูซิกซึ่งในขณะนั้นเป็น นักศึกษาปริญญาโท ของเบิร์กลีย์ได้ปรับปรุงโครงสร้าง FS ของ V7 เพื่อสร้าง FFS (Fast File System) ของ BSD 4.2โดยการคิดค้นกลุ่มกระบอกสูบ ซึ่งแบ่งดิสก์ออกเป็นส่วนย่อยๆ โดยแต่ละกลุ่มจะมีอิโนดและบล็อกข้อมูลของตัวเอง[ 2 ] [ 3 ]
จุดประสงค์ของ BSD FFS คือการพยายามจัดวางบล็อกข้อมูลและเมตาเดตาที่เกี่ยวข้องไว้ในกลุ่มกระบอกสูบเดียวกัน และในอุดมคติแล้ว เนื้อหาทั้งหมดของไดเร็กทอรี (ทั้งข้อมูลและเมตาเดตาสำหรับไฟล์ทั้งหมด) ควรอยู่ในกลุ่มกระบอกสูบเดียวกันหรือใกล้เคียงกัน ซึ่งจะช่วยลดการแตกกระจายของข้อมูลที่เกิดจากการกระจายเนื้อหาของไดเร็กทอรีไปทั่วทั้งดิสก์
พารามิเตอร์ประสิทธิภาพบางส่วนในซูเปอร์บล็อกประกอบด้วยจำนวนแทร็กและเซกเตอร์ ความเร็วในการหมุนของดิสก์ ความเร็วของหัวอ่าน และการจัดเรียงเซกเตอร์ระหว่างแทร็ก ในระบบที่ได้รับการปรับแต่งอย่างเต็มที่ หัวอ่านสามารถเคลื่อนที่ระหว่างแทร็กที่อยู่ใกล้กันเพื่ออ่านเซกเตอร์ที่กระจัดกระจายจากแทร็กสลับกันไปมาในขณะที่รอให้แผ่นดิสก์หมุนครบหนึ่งรอบ
เมื่อดิสก์มีขนาดใหญ่ขึ้นเรื่อยๆ การเพิ่มประสิทธิภาพในระดับเซกเตอร์ก็ล้าสมัยไป (โดยเฉพาะอย่างยิ่งกับดิสก์ที่ใช้การกำหนดหมายเลขเซกเตอร์แบบเชิงเส้นและจำนวนเซกเตอร์ต่อแทร็กที่ไม่คงที่) ด้วยดิสก์ขนาดใหญ่และไฟล์ขนาดใหญ่ การอ่านข้อมูลที่กระจัดกระจายจึงกลายเป็นปัญหามากขึ้น เพื่อแก้ไขปัญหานี้ BSD จึงเพิ่มขนาดบล็อกของระบบไฟล์จากหนึ่งเซกเตอร์เป็น 1 กิโลไบต์ใน BSD เวอร์ชัน 4.0 และใน FFS ก็เพิ่มขนาดบล็อกของระบบไฟล์จาก 1 กิโลไบต์เป็น 8 กิโลไบต์ การเปลี่ยนแปลงนี้มีผลหลายประการ โอกาสที่เซกเตอร์ของไฟล์จะต่อเนื่องกันนั้นมากขึ้น ปริมาณโอเวอร์เฮดในการแสดงรายการบล็อกของไฟล์ลดลง ในขณะที่จำนวนไบต์ที่สามารถแทนได้ด้วยจำนวนบล็อกใดๆ ก็ตามเพิ่มขึ้น
ขนาดดิสก์ที่ใหญ่ขึ้นก็เป็นไปได้เช่นกัน เนื่องจากจำนวนบล็อกสูงสุดถูกจำกัดด้วยจำนวนบล็อกความกว้างบิตคงที่ อย่างไรก็ตาม ด้วยขนาดบล็อกที่ใหญ่ขึ้น ดิสก์ที่มีไฟล์ขนาดเล็กจำนวนมากจะสิ้นเปลืองพื้นที่ เนื่องจากแต่ละไฟล์ต้องใช้พื้นที่อย่างน้อยหนึ่งบล็อก ด้วยเหตุนี้ BSD จึงเพิ่มการแบ่งส่วนระดับบล็อกหรือที่เรียกว่าการจัดสรรย่อยบล็อก การรวมส่วนท้าย หรือการบรรจุส่วนท้ายซึ่งบล็อกข้อมูลส่วนสุดท้ายจากหลายไฟล์อาจถูกจัดเก็บไว้ในบล็อก "ส่วนย่อย" เดียวแทนที่จะเป็นบล็อกที่ว่างเปล่าส่วนใหญ่หลายบล็อก[ 4 ]
ผลงานเกี่ยวกับ Berkeley FFS ได้รับการนำไปใช้อย่างกว้างขวางโดยผู้จำหน่าย Unix รายอื่นๆ และตระกูลของระบบไฟล์ที่พัฒนาต่อยอดมาจากนั้นเรียกรวมกันว่า UFS
การนำไปใช้
ผู้จำหน่ายระบบ Unix ที่เป็นกรรมสิทธิ์บางระบบ เช่นSunOS / Solaris , System V Release 4 , HP-UXและTru64 UNIXรวมถึงระบบที่พัฒนามาจาก Unix แบบเปิด เช่นillumosได้นำ UFS มาใช้แล้ว
ตั้งแต่Solaris 7เป็นต้น มา Sun Microsystemsได้รวม UFS Logging ซึ่งนำการบันทึกข้อมูลของระบบไฟล์มาสู่ UFS ซึ่งยังคงมีอยู่ใน Solaris และ illumos เวอร์ชันปัจจุบัน[ 5 ] Solaris UFS ยังมีส่วนขยายสำหรับไฟล์ขนาดใหญ่และดิสก์ขนาดใหญ่ รวมถึงคุณสมบัติอื่นๆ อีกด้วย
ในระบบ 4.4BSD และ ระบบ Unix BSDที่พัฒนาต่อยอดมาจาก 4.4BSD เช่นFreeBSD , NetBSD , OpenBSDและDragonFly BSDการใช้งาน UFS1 และ UFS2 ถูกแบ่งออกเป็นสองชั้น: ชั้นบนที่ให้โครงสร้างไดเร็กทอรีและรองรับเมตาเดตา (สิทธิ์การเข้าถึง การเป็นเจ้าของ ฯลฯ) ในโครงสร้าง inode และชั้นล่างที่ให้คอนเทนเนอร์ข้อมูลที่นำมาใช้ในรูปแบบ inode การแบ่งเช่นนี้ทำขึ้นเพื่อรองรับทั้งระบบไฟล์แบบบันทึกโครงสร้าง FFS และLFS แบบดั้งเดิม โดยใช้โค้ดร่วมกันสำหรับฟังก์ชันทั่วไป ชั้นบนเรียกว่า "UFS" และชั้นล่างเรียกว่า "FFS" และ "LFS" ในบางระบบ คำว่า "FFS" ใช้สำหรับการรวมกันของชั้นล่าง FFS และชั้นบน UFS และคำว่า "LFS" ใช้สำหรับการรวมกันของชั้นล่าง LFS และชั้นบน UFS
McKusick ได้นำเทคนิคการจัดสรรบล็อกใหม่มาใช้ ซึ่งเป็นเทคนิคที่จัดเรียงบล็อกในระบบไฟล์ใหม่ก่อนที่จะทำการเขียนข้อมูล เพื่อลดการแตกกระจายของบล็อกและควบคุมการเสื่อมสภาพของระบบไฟล์ นอกจากนี้ เขายังได้นำการอัปเดตแบบนุ่มนวล มาใช้ ซึ่งเป็นกลไกที่รักษาความสอดคล้องของระบบไฟล์โดยไม่จำกัดประสิทธิภาพในแบบที่โหมดการซิงค์แบบดั้งเดิมทำ ผลข้างเคียงของวิธีนี้คือการลดความจำเป็นในการตรวจสอบระบบไฟล์หลังจากเกิดความผิดพลาดหรือไฟฟ้าดับ เพื่อแก้ไขปัญหาที่เหลืออยู่หลังจากเกิดความล้มเหลว จึงได้มีการนำยูทิลิตี้ fsck ที่ทำงานเบื้องหลังมาใช้
ใน UFS2 นั้น McKusick และPoul-Henning Kampได้ขยายเลเยอร์ FFS และ UFS ของ FreeBSD โดยเพิ่มตัวชี้บล็อก 64 บิต (ทำให้วอลุ่มสามารถขยายได้ถึง 8 เซบิไบต์ ) บล็อกขนาดแปรผัน (คล้ายกับเอ็กซ์เทนต์ ) ฟิลด์แฟล็กที่ขยายเพิ่มเติม การประทับเวลาเกิดเพิ่มเติม การสนับสนุนแอตทริบิวต์ที่ขยายเพิ่มเติม และ ACL ตามมาตรฐาน POSIX1.e UFS2 กลายเป็นเวอร์ชัน UFS ที่ได้รับการสนับสนุนอย่างเป็นทางการตั้งแต่ FreeBSD 5.0 เป็นต้นไป FreeBSD ยังได้แนะนำการอัปเดตแบบซอฟต์และการสร้างสแนปช็อต ของระบบไฟล์ สำหรับทั้ง UFS1 และ UFS2 สิ่งเหล่านี้ได้รับการพอร์ตไปยัง NetBSD ในภายหลัง แต่ในที่สุดการอัปเดตแบบซอฟต์ (เรียกว่าการพึ่งพาแบบซอฟต์ใน NetBSD) ก็ถูกลบออกจาก NetBSD 6.0 โดยใช้กลไกการบันทึกข้อมูลระบบไฟล์ที่ซับซ้อนน้อยกว่าที่เรียกว่าWAPBL (หรือเรียกว่าการบันทึก) ซึ่งถูกเพิ่มเข้าไปใน FFS ใน NetBSD 5.0 แทน OpenBSD รองรับการอัปเดตแบบซอฟต์ตั้งแต่เวอร์ชัน 2.9 [ 6 ]จนกระทั่งยกเลิกการสนับสนุนในเวอร์ชัน 7.4 [ 7 ]และมีการสนับสนุน UFS2 (FFS2) (ไม่มี ACL) ตั้งแต่เวอร์ชัน 4.2 [ 8 ] OpenBSD กำหนดให้ UFS2 เป็นเวอร์ชัน UFS เริ่มต้นในเวอร์ชัน 6.7 [ 9 ]ตั้งแต่ FreeBSD 7.0 เป็นต้นมา UFS ยังรองรับการบันทึกการเปลี่ยนแปลงของระบบไฟล์โดยใช้ผู้ให้บริการ gjournal GEOM FreeBSD 9.0 เพิ่มการสนับสนุนการบันทึกการเปลี่ยนแปลงแบบเบาบนการอัปเดตแบบซอฟต์ (SU+J) ซึ่งช่วยลดความจำเป็นในการตรวจสอบระบบไฟล์พื้นหลังและ ACL ของ NFSv4 ได้อย่างมาก
FreeBSD, NetBSD, OpenBSD และ DragonFly BSD ยังมี ระบบ Dirhashซึ่งพัฒนาโดย Ian Dowse ระบบนี้ใช้ตารางแฮชในหน่วยความจำเพื่อเพิ่มความเร็วในการค้นหาไดเร็กทอรี Dirhash ช่วยลดปัญหาด้านประสิทธิภาพหลายประการที่เกี่ยวข้องกับไดเร็กทอรีขนาดใหญ่ใน UFS
NeXTStepซึ่งพัฒนามาจาก BSD ก็ใช้ UFS เวอร์ชันหนึ่งเช่นกัน ในMac OS XของAppleนั้น UFS มีให้เลือกใช้เป็นทางเลือกแทนHFS+ซึ่งเป็นระบบไฟล์ที่เป็นกรรมสิทธิ์ของ Apple อย่างไรก็ตาม ตั้งแต่Mac OS X Leopard เป็นต้นไปไม่สามารถติดตั้ง Mac OS X บนไดรฟ์ที่ฟอร์แมตเป็น UFS ได้อีกต่อไป นอกจากนี้ ยังไม่สามารถอัปเกรด Mac OS X เวอร์ชันเก่าที่ติดตั้งบนไดรฟ์ที่ฟอร์แมตเป็น UFS ไปเป็น Leopard ได้ การอัปเกรดจำเป็นต้องฟอร์แมตไดรฟ์เริ่มต้นใหม่[ 10 ]มีข้อจำกัดขนาดไฟล์ 4 GB สำหรับดิสก์ที่ฟอร์แมตเป็น UFS ใน Mac OS X ตั้งแต่Mac OS X Lion เป็นต้น ไป การสนับสนุน UFS ถูกยกเลิกอย่างสมบูรณ์[ 11 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- เจโรน ซี. ฟาน เกลเดเรน (23-04-2546) "คำถามที่พบบ่อยเกี่ยวกับ UFS2 ตัวน้อย " ฟรีบีเอสดี . เก็บถาวรจากต้นฉบับเมื่อ 2026-02-06 . สืบค้นเมื่อ2013-04-08 .
- "คู่มือการใช้งานระบบไฟล์: ระบบไฟล์อื่นๆ"โครงการเอกสารลินุกซ์ 27 มกราคม 2550
- ระบบไฟล์ Solaris UFSที่เก็บถาวรดูเพิ่มเติมที่[1]
- รูปแบบ USF(sic)/UFS2
- ตำแหน่งที่ตั้งและระบบไฟล์ความเร็วสูง
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ระบบไฟล์ Unix
ระบบ ไฟล์ Unix ( UFS ) คือตระกูลของ ระบบไฟล์ ที่ได้รับการสนับสนุนโดยระบบ ปฏิบัติการ Unix และ ระบบปฏิบัติการ ที่คล้าย Unix...
ออกแบบ
วอลุ่ม UFS ประกอบด้วยส่วนต่างๆ ดังต่อไปนี้:
ประวัติศาสตร์และวิวัฒนาการ
ระบบไฟล์ Unix ในยุคแรกๆ เรียกง่ายๆ ว่า FS FS ประกอบด้วยบล็อกบูต ซูเปอร์บล็อก กลุ่มของ อิโนด และบล็อกข้อมูลเท่านั้น ซึ่งใช้งานได้ดีกับดิสก์ขนาดเล็กที่ Unix ในยุคแรกๆ ถูกออกแบบมา แต่เมื่อเทคโนโลยีพัฒนาขึ้นและดิสก์มีขนาดใหญ่ขึ้น...
การนำไปใช้
ผู้จำหน่ายระบบ Unix ที่เป็นกรรมสิทธิ์บางระบบ เช่น SunOS / Solaris , System V Release 4 , HP-UX และ Tru64 UNIX รวมถึงระบบที่พัฒนามาจาก Unix แบบเปิด เช่น illumos ได้นำ UFS มาใช้แล้ว