ทำไมจึงมีการออกแบบระบบไฟล์ของคู่แข่งมากมาย? [ปิด]


27

แค่คำถามสั้น ๆ แต่ทำไมระบบไฟล์จำนวนมากถึงยังคงแข่งขันกันและใช้งานอยู่ในปัจจุบัน? (ntfs, fat32, ext3 (ffs), ฯลฯ )

ดูเหมือนว่าผู้ออกแบบระบบไฟล์สามารถเห็นด้วยกับแง่มุมที่ดีที่สุดของระบบแต่ละประเภทและใช้ระบบไฟล์ "ดีที่สุด" ไม่ใช่หรือ? เพียงความคิดเนื่องจากระบบไฟล์เหล่านี้มีมาระยะหนึ่งแล้วและอย่างน้อยก็ควรจะเห็นได้ชัดว่ามีคุณสมบัติที่ดีกว่าระบบอื่น ๆ และเราสามารถรวมสิ่งที่ดีในแต่ละระบบเข้าด้วยกันและสร้างระบบที่ดีที่สุด


39
เราควรลองรวม Ferrari กับรถแบ็คโฮด้วยหรือไม่? การออกแบบมีพื้นฐานมาจากชุดของการแลกเปลี่ยน; ไม่มีที่สมบูรณ์แบบ
Pubby

7
@ Pubby8 ฉันจะขับคันเดียว
มัฟฟินแมน

8
คำตอบที่แท้จริงสำหรับสิ่งนี้ไม่ได้เป็นเพียงการอภิปรายทางเทคนิค แต่เป็นคำตอบทางกฎหมายด้วย
detly

38
คำถามนี้ทำให้ฉันนึกถึงxkcd.com/927
dan04

7
เราจะทำอย่างนั้นในเวลาเดียวกับที่เราสร้างกล้องที่มีเลนส์คุณภาพสูงขนาดใหญ่ยาวและมีน้ำหนักเบาจริงๆและใส่ในกระเป๋าเสื้อหรือกระเป๋าเงินและราคาไม่แพงมาก แนวคิดที่ว่าคุณสามารถนำส่วนที่ดีทั้งหมดมารวมเข้าด้วยกันเป็นสิ่งที่ดีที่สุดสิ่งหนึ่งที่ไม่ได้ผลจริงในทางปฏิบัติ รายการของสิ่งที่ดีเป็นอย่างใดอย่างหนึ่งที่ไม่สมบูรณ์หรือเต็มรูปแบบของรายการที่ขัดแย้งกัน
Eric Lippert

คำตอบ:


32

ลองคิดถึงข้อมูลเฉพาะที่นี่สักครู่โดยใช้ตัวอย่างที่คุณอ้างถึง:

  • ntfs - เป็นกรรมสิทธิ์ของ Microsoft ทุกคนที่ไม่ใช่ Microsoft ไม่สามารถใช้สิ่งนี้ได้ดังนั้นจะต้องใช้ / สร้างสิ่งที่แตกต่าง ตอนนี้ถ้าคุณเป็น Microsoft คุณต้องการใช้สิ่งนี้ผ่าน FAT เนื่องจากปัญหาของสัญลักษณ์แสดงหัวข้อย่อยถัดไป

  • fat32 - ไม่ทันสมัยพอ ขนาดไฟล์สูงสุดคือ 4GB การค้นหารายการไดเรกทอรีคือ O (n) ตารางการจัดสรรเป็นรายการที่เชื่อมโยงแทนที่จะเป็นสิ่งที่มีประสิทธิภาพมากกว่าเช่นบิตแมปการจัดสรร (ซึ่งเป็นที่ที่รวดเร็วในการค้นหาพื้นที่ว่างต่อเนื่อง) ไม่รองรับการอนุญาต ไม่รองรับฮาร์ดลิงก์หรือลิงก์สัญลักษณ์ ไม่รองรับการทำเจอร์นัล

  • ext3 - นี่คือส่วนขยายของ ext2 ส่วนใหญ่เพื่อสนับสนุนการบันทึกรายวัน

ดังนั้นดูเหมือนว่ามีเหตุผลบางประการ:

  1. ระบบไฟล์ก่อนหน้านี้ขาดอะไรบางอย่าง ในกรณีของ FAT มันขาดมาก: ทั้งในแง่ของคุณสมบัติ (1) และ (2) ประสิทธิภาพ ในกรณีของ ext2 มันไม่ได้ทำการอัพเดตแบบเจอร์นัลดังนั้นการกู้คืนจากความล้มเหลวจึงใช้เวลามากกว่า

  2. ระบบไฟล์ที่มีอยู่อาจจะทำ แต่มันไม่ใช่ของคุณ (เช่น. NTFS หากคุณไม่ใช่ Microsoft) ในกรณีนี้คุณไม่มีทางเลือกมากนัก แต่ต้องคิดด้วยตัวเอง


2
nitpick: จริง, ขนาดไฟล์สูงสุด (ตามรายละเอียดอย่างเป็นทางการที่เผยแพร่โดยไมโครซอฟท์เอง) สำหรับ FAT32 คือ 2 GiByte แต่ไม่มีใครไม่ได้ดำเนินการไมโครซอฟท์มันว่าโง่เขลา :-)
Jörg W Mittag

16
Nitpick 2: รูปแบบไฟล์ NTFS ถูกประดิษฐ์โดย Microsoft แต่เป็นรูปแบบที่เผยแพร่และไม่มีการจดสิทธิบัตรที่รู้จัก ระบบปฏิบัติการที่ไม่ใช่ของ Microsoft ต่าง ๆ ใช้ NTFS รวมถึง Linux
สตีเฟนซี

6
Xfs - ออกแบบมาเพื่ออนุญาตให้เรียกใช้สตรีมไฟล์ขนาดใหญ่ได้อย่างรวดเร็ว (ออกแบบมาสำหรับเวิร์กสเตชันวิดีโอ) ZFS - ระบบไฟล์สำหรับศตวรรษที่ 21 ReiserFS - ความพยายามในการสร้างระบบไฟล์ "killer" แต่ละระบบไฟล์มีจุดแข็งและจุดอ่อนซึ่งแต่ละระบบถูกสร้างขึ้นเพื่อตอบสนองความต้องการบางอย่าง
Timothy Baldridge

3
@ สตีเฟ่น C: NTFS นั้น Microsoft ไม่ได้เป็นผู้คิดค้น en.wikipedia.org/wiki/NTFS#History
รักษาความปลอดภัย

1
@StephenC คุณแน่ใจหรือไม่ เท่าที่ฉันรู้ว่า NTFS ไม่ได้บันทึกไว้ การใช้งานโอเพ่นซอร์สส่วนใหญ่จะเตือนคุณว่าจะมีความเสียหายรุนแรงหากคุณพยายามเขียนถึงพวกเขาโดยใช้ไดรเวอร์นั้นเมื่อ Windows ออกจากดิสก์ในบางสถานะ
asveikau

24

คำตอบสั้น ๆ : ขนาดเดียวไม่พอดีทั้งหมด

มีการแลกเปลี่ยนกัน ตัวอย่างเช่นถ้าคุณต้องการ FS ที่ถูกเจอร์นัลแล้วคุณต้องจ่าย (ประสิทธิภาพความซับซ้อนและอื่น ๆ ) แต่ให้ทำอะไรบางอย่างให้หมด บางคนไม่รู้สึกว่าต้องการ FS ที่ได้รับการจดบันทึกและไม่ต้องการจ่ายมันบางคนทำ เหมือนกับ "ฟีเจอร์" อื่น ๆ ของ FS


ครั้งสุดท้ายที่คุณตัดสินใจเลือก FS ที่เหมาะกับความต้องการเฉพาะของคุณ ฉันอยู่ด้านการเขียนโปรแกรมมากกว่าการดำเนินการ แต่ฉันไม่เคยเห็นการตัดสินใจดังกล่าว โดยเฉพาะอย่างยิ่งเนื่องจากมักจะไม่มีตัวเลือกจริง: MS-> Ntfs Linux: Ext (ล่าสุด) อาจจะเป็น Reiser
keppla

@keppla: การตัดสินใจมักทำโดยนักออกแบบระบบปฏิบัติการ ระบบไฟล์ไม่ได้ balkanized โดยผู้ใช้
Zano

2
@keppla: เมื่อใดก็ตามที่ฉันตัดสินใจที่จะฟอร์แมตแฟลชไดรฟ์ฉันจะปิดการบันทึกและตัดสินใจว่าจะใช้สำหรับการใช้งานของฉันเองเท่านั้น (จากนั้นใช้ ext2 เพราะมันมีสิทธิ์ของไฟล์ POSIX) หรือสำหรับการแบ่งปันกับผู้อื่น แต่สำหรับฮาร์ดไดรฟ์ฉันมักจะใช้ NTFS (เมื่อบน Windows) หรือ ext4 (เมื่อบน Linux) ...
liori

1
@keppla เกือบทุกระบบ Linux มาพร้อมกับความสามารถในการใช้ระบบไฟล์ที่แตกต่างกันหลายอย่างไม่เพียง แต่ขยาย [2..4] เมื่อฉันตั้งค่ากล่อง Linux ฉันดูวัตถุประสงค์ของกล่อง ตัวอย่างเช่นเครื่อง Linux DVR ของฉันรัน JFS บนไดรฟ์ Video Storage เพราะมันจัดการไฟล์ขนาดใหญ่ได้อย่างสง่างามมากกว่า ext3 และใช้ CPU เหนือหัวน้อยกว่า XFS แต่สำหรับบัญชีผู้ใช้และไฟล์ระบบในเครื่องเดียวกันฉันรัน EXT3 เพราะฉันกำลังจัดการกับขนาดไฟล์ที่เล็กลง
jwernerny

@keppla: นอกจากนี้ใน Mac OS X ด้วยคุณสามารถมีทางเลือกระหว่างการผสมผสานความสามารถต่างๆของ FS ยิ่งไปกว่านั้นฉันตั้งใจจะให้เสียงของคนที่ออกแบบ FS เพราะ OP ถามว่าทำไมนักออกแบบจึงไม่ออกแบบ FS ซึ่งมีทุกสิ่งที่ดีที่สุด และสิ่งที่ฉันพยายามที่จะชี้ให้เห็นก็คือสิ่งที่ดีที่สุดนั้นสัมพันธ์กับที่จะใช้ สถานที่บางแห่งคุณสมบัติมีประโยชน์สถานที่อื่น ๆ สถานที่เดียวกันมีค่าใช้จ่ายที่ไม่จำเป็น
Jungle Hunter

14

ไม่มีสิ่งใดที่ "ดีที่สุด" เพราะไม่มีความคิดเห็นมากมายเกี่ยวกับสิ่งที่ "ดีที่สุด" การตัดสินใจขึ้นอยู่กับความต้องการและข้อ จำกัด ของผู้ใช้ การออกแบบนั้นขึ้นอยู่กับความสามารถของพวกเขาที่จะให้พอดีกับข้อ จำกัด

โทรศัพท์มือถือขั้นพื้นฐานจำเป็นต้องเก็บรายชื่อติดต่อสองสามร้อยประวัติข้อความและแอพขนาดเล็ก ระบบไฟล์ต้องการการสนับสนุนโครงสร้างไดเรกทอรีแบบลำดับชั้นบนไดรฟ์หลายเทราไบต์ในการกำหนดค่า RAID หรือไม่? มีแรมเพียงพอบนอุปกรณ์ที่จะเรียกใช้ระบบไฟล์ดังกล่าวหรือไม่? ระบบไฟล์ต้องการ ACL ที่ซับซ้อนหรือไม่ อาจไม่ใช่ - สำหรับคำถามเหล่านี้ทั้งหมด - ดังนั้นระบบไฟล์จิบทรัพยากรที่เรียบง่ายจะพอเพียง

บริษัท จะพัฒนาผลิตภัณฑ์ที่แตกต่างเพื่อรักษาความได้เปรียบในการแข่งขัน ตัวอย่างเช่น Apple ทำเป็นความสามารถของระบบไฟล์ HFS + เพื่อติดตามไฟล์ที่มีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้เพื่อให้การสำรองข้อมูลรวดเร็ว ในทางกลับกันไดรเวอร์สำหรับระบบไฟล์ฟลอปปี้ดิสก์ (FAT) สามารถบรรจุหน่วยความจำได้เพียงไม่กี่ KB


1
ปัญหาไม่ใช่ว่าไม่มีใครสามารถเห็นด้วยกับสิ่งที่ "ดีที่สุด" หมายถึง ปัญหาคือไม่มี "ดีที่สุด" ...
สตีเฟนซี

1
@ สตีเฟ่น: แน่นอนอาจมี "ดีที่สุด" เราแค่ต้องตัดสินใจเลือกวัดการวัดก่อน
Donal Fellows

เฉพาะในกรณีที่คุณจะได้รับทุกคนที่จะเห็นด้วย
Stephen C

11

มากเกินไปขึ้นอยู่กับสิ่งที่คุณต้องการเพิ่มประสิทธิภาพ

พิจารณา FAT สักครู่: การสนับสนุนสำหรับชื่อไฟล์ยาว kludgy (ที่จะนำมันอย่างดี) และการค้นหาผ่านไฟล์ในไดเรกทอรีเป็นเส้นตรงจึงได้รับช้ามากได้อย่างรวดเร็วหากไดเรกทอรีมีไฟล์จำนวนมาก ในขณะเดียวกันมันมีเมตาดาต้าขั้นต่ำเปล่าสำหรับความเร็วในการเขียนแบบดิบนั้นดีมากและเนื่องจากมันง่ายเกินไปสำหรับทุกรหัสการใช้งานจึงอาจมีขนาดค่อนข้างเล็ก

บางอย่างเช่น ext2 หรือ ext3 เพิ่มคุณสมบัติและความสามารถมากมายที่ไม่ได้อยู่ใน FAT การค้นหาไฟล์นั้นค่อนข้างเร็วกว่ามาก ในขณะเดียวกันความเร็วในการเขียนแบบดิบอาจช้าลงเล็กน้อยและรหัสที่จะใช้กับระบบไฟล์นั้นค่อนข้างใหญ่กว่ามาก


9

แค่คำถามสั้น ๆ แต่ทำไมระบบไฟล์จำนวนมากถึงยังคงแข่งขันกันและใช้งานอยู่ในปัจจุบัน? (ntfs, fat32, ext3 (ffs), ฯลฯ )

ดูเหมือนว่าผู้ออกแบบระบบไฟล์สามารถเห็นด้วยกับแง่มุมที่ดีที่สุดของระบบแต่ละประเภทและใช้ระบบไฟล์ "ดีที่สุด" ไม่ใช่หรือ?

สมมติว่าไม่มีการแลกเปลี่ยนและผู้ออกแบบระบบไฟล์ใช้ระบบไฟล์ "ที่ดีที่สุด" โดยปราศจากความกังวลเรื่องสิทธิบัตรและออกเป็น BSD / GPL แบบลิขสิทธิ์สองใบเพื่อให้เป็นที่ยอมรับของ MS และ Debian อะไรทำให้คุณคิดว่าระบบไฟล์อื่นจะหายไปในชั่วข้ามคืน?

ฉันไม่คิดว่าจะมีใครใช้ FAT32 ในฮาร์ดไดรฟ์ใหม่เป็นเวลา 10 ปี แต่ยังคงเป็นมาตรฐานสำหรับการฟอร์แมตไดรฟ์ USB การ์ด SD ฯลฯ ผู้ผลิตกล้องและโทรศัพท์มือถือได้ลองและทดสอบเฟิร์มแวร์เพื่อใช้งานแล้ว มือสมัครเล่น Arduino มีห้องสมุดที่มั่นคงสำหรับการใช้งาน พวกเขาทั้งหมดจะต้องมีแรงจูงใจที่จะเปลี่ยนแปลง

แล้วคุณก็มีปัญหาเรื่องความเข้ากันได้ย้อนหลังกับระบบปฏิบัติการรุ่นเก่า (โดยเฉพาะ Windows ซึ่งผู้ใช้ไม่ต้องการติดตั้งไดรเวอร์ระบบไฟล์ใหม่)


5
เป็นเรื่องดีที่มีรูปแบบของอุปกรณ์ภายนอกที่จัดรูปแบบเป็น FAT32 สำหรับความสามารถในการข้ามแพลตฟอร์ม นั่นเป็นสาเหตุที่คุณจะเห็นอุปกรณ์ภายนอกจำนวนมากถูกฟอร์แมตเป็น FAT32
แมตต์

@ แมทนั่นคือส่วนย่อยของสิ่งที่ฉันพูดหรือไม่
Peter Taylor

3
และสำหรับไมโครเล็ก ๆ รหัสในการใช้งานการสนับสนุน FAT ขั้นพื้นฐานนั้นพอดีกับเพียงไม่กี่กิโลไบต์ เรื่องนี้เกิดขึ้นเมื่อคุณมีเพียงไม่กี่กิโลไบต์เท่านั้นที่จะเล่น
fast_now

2
@ ปีเตอร์ฉันบอกว่าคุณสามารถใช้มันบนระบบปฏิบัติการที่แตกต่างกันโดยไม่มีปัญหาใด ๆ
แมตต์

4

บ่อยครั้งที่การคำนวณคำตอบคือ (a) เนื่องจากสถานการณ์ในอดีตและความจำเป็นในการรักษาความเข้ากันได้ย้อนหลังและ (b) เพราะวิธีการบางอย่างเหมาะสมกับงานบางอย่างมากกว่างานอื่น ๆ

ใน (a) คุณต้องจำไว้ว่า "Winchester drive" - ​​ฉันอายุมากพอที่จะจำได้ว่าพวกเขาถูกเรียกว่า - (ส่วนที่เหลือของโลกเรียกว่า 'ฮาร์ดไดรฟ์') มีประมาณครึ่งหนึ่งเท่านั้น เวลาของการคำนวณทางอิเล็กทรอนิกส์และถึงแม้จะไม่สามารถเข้าถึงได้โดยผู้ใช้ส่วนใหญ่ด้วยเหตุผลทางด้านต้นทุน ระบบไฟล์ FAT นั้นทำงานได้ดีกับแผ่นฟลอปปี้ดิสก์และบนฮาร์ดไดรฟ์ขนาดเล็กดั้งเดิมเนื่องจากมีประสิทธิภาพเพียงพอและต้องการค่าใช้จ่ายต่ำ เมื่อเริ่มใช้งาน - และการใช้งานแพร่หลายอย่างกว้างขวางเพราะง่ายต่อการใช้งาน - ผู้ผลิตไม่สามารถบอกผู้ใช้ว่าข้อมูลเก่าของพวกเขาไม่ถูกต้องในทันที

ในทำนองเดียวกันสำหรับผู้ใช้ Linux กล่าวว่าไดรเวอร์ NTFS ที่มีความเสถียรกำลังมาเป็นเวลานานดังนั้นการจัดรูปแบบอุปกรณ์ให้เป็น FAT หมายความว่าพวกเขาสามารถอ่านและเขียนข้ามระบบได้หลายระบบ

บน (b) - ลองนึกถึงความแตกต่างระหว่างระบบที่พูดจัดเก็บบันทึกฐานข้อมูลที่อิงกับข้อความเป็นพันล้านรายการและบันทึกที่จัดเก็บไฟล์สื่อความยาว DVD สำหรับฐานข้อมูลแต่ละเร็กคอร์ดอาจมีขนาดเล็กมาก - อาจเป็นเพียง 30 หรือ 40 ไบต์และแน่นอนว่าระบบไฟล์ที่จัดสรร 'เซกเมนต์' ทั้งหมด (แต่คุณต้องการกำหนดว่า) ของดิสก์น่าจะสิ้นเปลืองพื้นที่ดิสก์ ไม่เช่นนั้นกับดีวีดี - เซ็กเมนต์ที่ใหญ่กว่า (ภายในเหตุผลชัดเจน) น่าจะมีประสิทธิภาพสูงในแง่ของพื้นที่

ดังนั้นระบบไฟล์ที่แตกต่างกันได้รับการออกแบบเพื่อวัตถุประสงค์ที่แตกต่าง


3

อีกตัวอย่างหนึ่งว่าทำไมไม่มีระบบไฟล์ที่สมบูรณ์แบบสำหรับทุกคน: HDD และ SSD มีลักษณะการเข้าถึงการอ่าน / เขียนที่แตกต่างกันมาก ระบบไฟล์ที่ปรับให้เหมาะกับ SSD อาจทำงานได้ดีที่สุดโดยการแยกส่วนไฟล์อย่างบ้าคลั่ง แต่ทุก ๆ ส่วนจะมีขนาดหน้าของ SSD เอง มันจะทำงานได้ดีมากกับ HDD ระบบไฟล์ที่ปรับให้เหมาะกับ HDD จะพยายามเก็บไฟล์ให้ไม่มีการจัดเรียงมากที่สุดเท่าที่จะเป็นไปได้และยังวางไฟล์ที่ใช้บ่อยในพื้นที่ "ร้อน" บนส่วนนอกที่หมุนเร็วกว่าของแผ่นเสียง คุณสมบัติเหล่านี้จะไม่ช่วยให้ความเร็วในการอ่านของ SSD ลดลงและเป็นข้อ จำกัด อย่างมากในการเขียน


2

ฉันคิดว่าความจริงสำคัญที่ขาดหายไป โปรแกรมเมอร์ส่วนใหญ่มักจะคิดว่าวิธีการทำบางอย่างนั้นเหนือกว่าวิธีอื่น ๆ ทั้งหมดดังนั้นพวกเขาจึงมองไปที่การออกแบบระบบไฟล์และเกิดปัญหาและวิธีแก้ปัญหาที่ดูเหมือนทั่วไปหรูหราสง่ารวดเร็วและเหมาะสม .. และถ้าความรู้สึกนี้แข็งแกร่งเพียงพอที่พวกเขาจะสามารถสร้างระบบไฟล์ของตนเองได้ฟรี

สิ่งนี้นำไปสู่การแข่งขันการแยกส่วนการสับสนและฉันหวังว่าในที่สุดการแก้ปัญหาที่ดีกว่าและตัวเลือกเพิ่มเติมเพื่อเลือกโซลูชันการจับคู่สำหรับคุณ


1

นี่เป็นอีกตัวอย่างที่ชัดเจนว่าทำไมคุณถึงต้องการระบบไฟล์แยกต่างหากหรือขยายการทำงานของ FS ที่มีอยู่

  1. สมมติว่าคุณเป็นผู้จำหน่ายฐานข้อมูลและต้องการลดความซับซ้อนในการจัดการการสไทรพ์ / การมิเรอร์ข้อมูลเพื่อปรับปรุง IO คุณจะรู้สึกว่าจำเป็นต้องขยายฟังก์ชั่นการทำงานของระบบไฟล์พื้นฐานเช่นเดียวกับ Oracle ที่ทำกับ ASM (Automated Storage Manager) ซึ่งเป็นเหมือน Logical Volume Manager

1

ในรายการของคุณคุณพูดถึงระบบไฟล์เก่าที่ใช้เพราะไม่มีระบบที่ดีกว่า แต่มันรวดเร็ว

มีระบบไฟล์อื่น ๆ ฉันได้ยินมาว่าระบบไฟล์ของ googleส่วนใหญ่จะทำซ้ำ / ซ้ำซ้อนอย่างรวดเร็วหากฮาร์ดไดรฟ์หรือเซิร์ฟเวอร์เครื่องหนึ่งล่ม ฉันจำได้ว่าเคยได้ยินระบบไฟล์อื่นที่ทำขึ้นสำหรับไฟล์ขนาดเล็กจำนวนมากและใช้กับระบบเพื่อขอจำนวนมากในไฟล์ขนาดเล็ก (ภาพขนาดย่อ)

โดยพื้นฐานแล้วพวกเขามีเป้าหมายที่แตกต่างและหรืออาจเหมาะสมกับโอเพนซอร์ส


0

ฉันคิดว่า ZFS (ใช้โดย Solaris ในระบบ Sun [ตอนนี้ Oracle]) เป็นทางออกสำหรับระบบไฟล์

Oracle น่าเสียดายที่ปิด OpenSolaris เพื่อค้นหาและทดสอบ

ZFS เป็นโอเพ่นซอร์ส Linux บางตัวพยายามรวมเข้าด้วยกันดูใน Wikipedia เพื่อรับข้อมูลเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.