Tại sao có rất nhiều thiết kế hệ thống tập tin cạnh tranh? [đóng cửa]


27

Chỉ là một câu hỏi nhanh, nhưng tại sao ngày nay có rất nhiều hệ thống tập tin vẫn đang cạnh tranh và được sử dụng? (ntfs, fat32, ext3 (ffs), v.v.)

Dường như các nhà thiết kế hệ thống tệp có thể đồng ý về các khía cạnh tốt nhất của từng loại hệ thống và thực hiện một hệ thống tệp "tốt nhất", phải không? Chỉ là một suy nghĩ, vì các hệ thống tập tin này đã xuất hiện được một thời gian, và ít nhất nên rõ ràng phần nào có những phẩm chất tốt hơn các hệ thống khác, và chúng ta có thể kết hợp những điều tốt trong mỗi và tạo ra một hệ thống tốt hơn nhiều


39
Chúng ta có nên cố gắng kết hợp một chiếc Ferrari với một chiếc backhoe không? Thiết kế dựa trên một loạt các sự đánh đổi; hoàn hảo không tồn tại.
Pubby

7
@ Pubby8 Tôi sẽ lái một chiếc.
Người đàn ông Muffin

8
Câu trả lời thực sự cho vấn đề này không chỉ là một cuộc thảo luận kỹ thuật, mà còn là một cuộc thảo luận hợp pháp.
gièm pha

38
Câu hỏi này làm tôi nhớ xkcd.com/927
dan04

7
Chúng tôi sẽ làm điều đó cùng lúc với việc chúng tôi tạo ra một chiếc máy ảnh có ống kính lớn, chất lượng cao, dài và rất nhẹ, vừa với túi hoặc ví, và rất rẻ. Ý tưởng rằng bạn có thể lấy tất cả các phần tốt và kết hợp chúng thành một điều tốt nhất không thực sự có hiệu quả trong thực tế. Một danh sách những điều tốt là không đầy đủ hoặc đầy đủ các mặt hàng mâu thuẫn với nhau .
Eric Lippert

Câu trả lời:


32

Hãy suy nghĩ về các chi tiết cụ thể ở đây một lúc, bằng cách sử dụng các ví dụ bạn đã trích dẫn:

  • ntfs - Độc quyền với Microsoft. Bất cứ ai không phải là Microsoft đều không thể sử dụng cái này, do đó sẽ phải sử dụng / tạo ra thứ gì đó khác biệt. Bây giờ, nếu bạn là Microsoft, bạn muốn sử dụng điều này trên FAT vì các vấn đề của điểm đạn tiếp theo.

  • fat32 - Không đủ hiện đại. Kích thước tệp tối đa là 4GB. Tra cứu mục nhập thư mục là O (n). Bảng phân bổ là một danh sách được liên kết, thay vì một cái gì đó hiệu quả hơn như một bitmap phân bổ (nơi thực sự nhanh chóng để tìm không gian trống liền kề). Không hỗ trợ quyền. Không hỗ trợ liên kết cứng hoặc liên kết tượng trưng. Không hỗ trợ ghi nhật ký.

  • ext3 - Đây là một phần mở rộng của ext2 chủ yếu để hỗ trợ ghi nhật ký.

Vì vậy, có vẻ như có một vài lý do:

  1. Một hệ thống tập tin trước đó thiếu một cái gì đó. Trong trường hợp của FAT, nó thiếu rất nhiều: cả về tính năng (1) và (2) hiệu năng. Trong trường hợp của ext2, nó không có các bản cập nhật, vì vậy việc phục hồi sau sự cố mất nhiều thời gian hơn.

  2. Một hệ thống tập tin hiện có có thể sẽ làm, nhưng nó không phải là của bạn. (ví dụ: NTFS nếu bạn không phải là Microsoft). Trong trường hợp này, bạn không thực sự có nhiều sự lựa chọn ngoài việc đưa ra ý kiến ​​của riêng mình.


2
Nitpick: trên thực tế, kích thước tệp tối đa (theo thông số kỹ thuật chính thức do chính Microsoft công bố) cho FAT32 là 2 GiByte, nhưng không ai, thậm chí Microsoft không thực hiện điều đó một cách ngu ngốc :-)
Jörg W Mittag

16
Nitpick 2: định dạng tệp NTFS được phát minh bởi Microsoft, nhưng nó là định dạng được xuất bản và không có mã hóa bằng sáng chế nào được biết đến. Các hệ điều hành khác nhau của Microsoft triển khai NTFS, bao gồm cả Linux.
Stephen C

6
Xfs - được thiết kế để cho phép truy xuất nhanh các tệp lớn (được thiết kế cho các máy trạm video). ZFS - một hệ thống tập tin cho thế kỷ 21. ReiserFS - một nỗ lực để tạo ra một hệ thống tập tin "kẻ giết người". Mỗi hệ thống tập tin đều có điểm mạnh và điểm yếu, mỗi hệ thống được tạo ra để đáp ứng một nhu cầu nhất định.
Timothy Baldridge

3
@Stephen C: NTFS không chính xác được "phát minh" bởi Microsoft. vi.wikipedia.org/wiki/NTFS#History
Bảo mật

1
@StephenC Bạn có chắc chắn về điều đó? Theo như tôi biết thì NTFS không được ghi nhận. Hầu hết các triển khai nguồn mở đều cảnh báo bạn rằng sẽ có thiệt hại nghiêm trọng nếu bạn cố gắng ghi cho họ bằng trình điều khiển đó khi Windows rời khỏi đĩa ở một số trạng thái nhất định.
asveikau

24

Câu trả lời ngắn: Một kích thước không phù hợp với tất cả.

Có sự đánh đổi. Ví dụ: nếu bạn muốn một FS được ghi nhật ký, bạn phải trả tiền (hiệu quả, độ phức tạp, v.v.) cho nó nhưng nhận được một cái gì đó từ nó. Một số người không cảm thấy cần phải có một FS được ghi nhật ký và không muốn trả tiền cho nó, một số thì không. Tương tự với các "tính năng" khác của FS.


Lần cuối cùng bạn quyết định FS nào phù hợp với nhu cầu cụ thể của bạn? Tôi ở khía cạnh mã hóa nhiều hơn là hoạt động, nhưng tôi chưa bao giờ thấy một quyết định như vậy. Đặc biệt, vì thường không có lựa chọn thực sự: MS-> Ntfs. Linux: Ext (mới nhất), có thể là Reiser.
keppla

@keppla: Quyết định thường được đưa ra bởi các nhà thiết kế hệ điều hành. Hệ thống tập tin không bị balkanized bởi người dùng cuối.
Zano

2
@keppla: Bất cứ khi nào tôi quyết định định dạng ổ đĩa flash, tôi sẽ tắt nhật ký và quyết định xem nó chỉ dành cho mục đích sử dụng của riêng tôi (sau đó là ext2, vì nó có quyền truy cập tệp POSIX) hoặc để chia sẻ với người khác (sau đó là fat32). Tuy nhiên, đối với các ổ đĩa cứng, tôi có xu hướng sử dụng NTFS (khi trên Windows) hoặc ext4 (khi trên Linux) ...
liori

1
@keppla Hầu như tất cả các hệ thống Linux đều có khả năng sử dụng một số hệ thống tập tin khác nhau, không chỉ là ext [2..4]. Khi tôi thiết lập một hộp Linux, tôi nhìn vào mục đích của hộp. Ví dụ: máy Linux DVR của tôi chạy JFS trên ổ lưu trữ Video vì nó xử lý các tệp lớn duyên dáng hơn nhiều so với ext3 và sử dụng ít CPU hơn so với XFS. Nhưng đối với các tài khoản người dùng và các tệp hệ thống trên cùng một máy, tôi chạy EXT3 vì tôi đang xử lý các kích thước tệp nhỏ hơn.
jwernerny

@keppla: Ngoài ra, trên Mac OS X, bạn cũng có thể có sự lựa chọn giữa các kết hợp khả năng khác nhau của FS. Hơn nữa, ban đầu tôi dự định giai điệu là của một người thiết kế FS. Bởi vì, OP đã hỏi tại sao một nhà thiết kế không thiết kế một FS có mọi thứ tốt nhất. Và những gì tôi cố gắng chỉ ra là tốt nhất liên quan đến nơi nó sẽ được sử dụng. Một số nơi một tính năng hữu ích một số nơi khác, tính năng tương tự là một chi phí không cần thiết.
Thợ săn rừng

14

Không bao giờ có một "tốt nhất" của bất cứ điều gì vì có rất nhiều ý kiến ​​về "tốt nhất" là gì. Quyết định là cụ thể cho nhu cầu và giới hạn của người dùng. Các thiết kế luôn dựa trên khả năng của chúng để phù hợp với các ràng buộc.

Một điện thoại di động cơ bản cần lưu trữ vài trăm liên lạc, lịch sử tin nhắn văn bản và một vài ứng dụng nhỏ. Hệ thống tập tin của nó có cần hỗ trợ cấu trúc thư mục phân cấp trên các ổ đĩa nhiều terabyte trong cấu hình RAID không? Có đủ RAM trên thiết bị để chạy một hệ thống tập tin như vậy không? Hệ thống tập tin có cần ACL phức tạp không? Có lẽ là không - đối với tất cả những câu hỏi này - vì vậy một hệ thống tập tin đơn giản, nhấm nháp tài nguyên sẽ đủ.

Các công ty cũng sẽ phát triển các sản phẩm khác nhau để duy trì lợi thế cạnh tranh. Chẳng hạn, Apple khuyến khích khả năng hệ thống tập tin HFS + của họ theo dõi những tập tin nào đã thay đổi gần đây để sao lưu nhanh chóng. Mặt khác, các trình điều khiển cho một hệ thống tập tin đĩa mềm (FAT) có thể vừa trong một vài KB bộ nhớ.


1
Vấn đề là KHÔNG ai có thể đồng ý về ý nghĩa của "tốt nhất". Vấn đề là không thể có "tốt nhất" ...
Stephen C

1
@Stephen: Tất nhiên là có thể có một người giỏi nhất. Chúng ta chỉ cần quyết định số liệu đo lường đầu tiên.
Donal Fellows

Chỉ khi bạn có thể khiến mọi người đồng ý .
Stephen C

11

Quá nhiều phụ thuộc vào những gì bạn muốn tối ưu hóa.

Hãy xem xét FAT trong giây lát: sự hỗ trợ của nó đối với các tên tệp dài là không rõ ràng (để đặt nó độc đáo) và tìm kiếm thông qua các tệp trong một thư mục là tuyến tính nên sẽ bị chậm rất nhanh nếu một thư mục chứa nhiều tệp. Đồng thời, nó có tối thiểu siêu dữ liệu cho tốc độ ghi thô là rất tốt và vì nó quá đơn giản so với tất cả, mã để thực hiện nó có thể khá nhỏ.

Một cái gì đó như ext2 hoặc ext3 bổ sung rất nhiều tính năng và khả năng đơn giản là không có ở FAT. Tìm kiếm các tập tin cũng nhanh hơn khá nhiều. Đồng thời, tốc độ ghi thô có thể chậm hơn một chút và mã để thực hiện hệ thống tệp chắc chắn là lớn hơn khá nhiều.


9

Chỉ là một câu hỏi nhanh, nhưng tại sao ngày nay có rất nhiều hệ thống tập tin vẫn đang cạnh tranh và được sử dụng? (ntfs, fat32, ext3 (ffs), v.v.)

Dường như các nhà thiết kế hệ thống tệp có thể đồng ý về các khía cạnh tốt nhất của từng loại hệ thống và thực hiện một hệ thống tệp "tốt nhất", phải không?

Giả sử rằng không có sự đánh đổi và các nhà thiết kế hệ thống tệp đã triển khai hệ thống tệp "tốt nhất", không phải lo lắng về bằng sáng chế và được phát hành dưới dạng BSD / GPL giấy phép kép để MS và Debian có thể chấp nhận. Điều gì khiến bạn nghĩ rằng các hệ thống tập tin khác sẽ biến mất sau một đêm?

Tôi không nghĩ ai đã sử dụng FAT32 trên ổ cứng mới trong 10 năm, nhưng nó vẫn tồn tại như một tiêu chuẩn thực tế để định dạng ổ USB, thẻ SD, v.v. Các nhà sản xuất máy ảnh và điện thoại di động đã thử và kiểm tra phần sụn để sử dụng nó. Những người có sở thích Arduino có thư viện ổn định để sử dụng nó. Tất cả họ sẽ cần những động lực lớn để thay đổi.

Và sau đó, bạn có các vấn đề về khả năng tương thích ngược với các HĐH cũ hơn (đặc biệt là Windows, người dùng sẽ không muốn cài đặt trình điều khiển hệ thống tệp mới).


5
thật tuyệt khi có một số loại thiết bị bên ngoài được định dạng thành FAT32 cho khả năng đa nền tảng. Đó là lý do tại sao bạn sẽ thấy rất nhiều thiết bị bên ngoài được định dạng thành FAT32.
Matt

@Matt, đó không phải là tập hợp con của những gì tôi nói sao?
Peter Taylor

3
Và đối với micros nhỏ, mã để thực hiện hỗ trợ FAT cơ bản chỉ phù hợp với một vài kbyte. Điều này quan trọng khi bạn chỉ có một vài
kbyte

2
@Peter tôi đã nói rõ hơn về thực tế là bạn có thể sử dụng nó trên các hệ điều hành khác nhau mà không gặp vấn đề gì.
Matt

4

Như thường thấy trong trường hợp tính toán, câu trả lời là (a) vì hoàn cảnh lịch sử và nhu cầu duy trì khả năng tương thích ngược và (b) vì một số phương pháp phù hợp hơn với một số nhiệm vụ so với các nhiệm vụ khác.

Trên (a) bạn cần nhớ rằng "ổ Winchester" - tôi gần như đủ tuổi để nhớ chúng được gọi như vậy - (cái mà phần còn lại của thế giới gọi là 'ổ cứng') chỉ mới xuất hiện được khoảng một nửa thời gian của máy tính điện tử và thậm chí sau đó nó không thể truy cập được đối với hầu hết người dùng vì lý do chi phí quá lâu. Hệ thống tệp FAT hoạt động tốt trên các đĩa mềm và cả trên các ổ đĩa cứng nhỏ ban đầu vì nó có hiệu quả hợp lý và yêu cầu chi phí thấp. Khi nó bắt đầu được sử dụng - và việc sử dụng nó được lan truyền rộng rãi vì đơn giản để thực hiện - các nhà sản xuất không thể nói với người dùng rằng dữ liệu cũ của họ đột nhiên không hợp lệ.

Tương tự, đối với người dùng Linux, giả sử, trình điều khiển NTFS ổn định đã xuất hiện từ lâu, do đó, việc giữ cho các thiết bị được định dạng là FAT có nghĩa là chúng có thể được đọc và ghi trên nhiều hệ thống.

Trên (b) - nghĩ về sự khác biệt giữa một hệ thống, lưu trữ, hàng tỷ bản ghi cơ sở dữ liệu dựa trên văn bản và một bản lưu trữ các tệp phương tiện có độ dài DVD. Đối với cơ sở dữ liệu, mỗi bản ghi có thể rất nhỏ - có lẽ chỉ 30 hoặc 40 byte và chắc chắn một hệ thống tệp được phân bổ toàn bộ 'phân đoạn' (tuy nhiên bạn muốn xác định rằng) có thể sẽ lãng phí không gian đĩa. Không phải như vậy với DVD - 'phân khúc' lớn hơn (trong lý do, rõ ràng) có khả năng có hiệu quả cao về mặt không gian.

Vì vậy, các hệ thống tập tin khác nhau được thiết kế cho các mục đích khác nhau.


3

Một ví dụ khác về lý do tại sao không bao giờ có thể có một hệ thống tệp hoàn hảo cho tất cả mọi người: Ổ cứng và SSD có các đặc điểm truy cập đọc / ghi rất khác nhau. Một hệ thống tệp được tối ưu hóa cho SSD có thể sẽ hoạt động tốt nhất bằng cách phân mảnh các tệp như điên nhưng với mỗi phân đoạn kích thước trang của chính SSD; điều này sẽ thực hiện khủng khiếp trên một ổ cứng. Một hệ thống tệp được tối ưu hóa cho ổ cứng cố gắng giữ các tệp không bị phân mảnh nhất có thể và thậm chí đặt các tệp được sử dụng thường xuyên trong khu vực "nóng" trên phần bên ngoài quay nhanh hơn của đĩa; những đặc điểm này sẽ không giúp SSD đọc được tốc độ, và đặt ra một vấn đề lớn về cách chúng được viết.


2

Tôi nghĩ rằng một thực tế rất quan trọng là mất tích. Hầu hết các lập trình viên có xu hướng nghĩ rằng cách họ làm một cái gì đó vượt trội hơn tất cả các cách khác và do đó họ nhìn vào một thiết kế Hệ thống tệp và đưa ra các vấn đề và giải pháp có vẻ chung chung, thanh lịch, nhanh chóng, đúng .. Và nếu cảm giác này đủ mạnh, họ có thể tự do xây dựng hệ thống tệp của riêng mình.

Điều này cần để cạnh tranh, phân mảnh, đốt cháy và tôi hy vọng cuối cùng các giải pháp tốt hơn và nhiều lựa chọn hơn để chọn một giải pháp phù hợp cho bạn.


1

Đây là một ví dụ cụ thể về lý do tại sao bạn cần một hệ thống tệp riêng hoặc mở rộng chức năng của một FS hiện có.

  1. Giả sử bạn là nhà cung cấp cơ sở dữ liệu và muốn giảm độ phức tạp của việc quản lý phân loại / phản chiếu dữ liệu để cải thiện IO. Bạn sẽ cảm thấy cần phải mở rộng chức năng của các hệ thống tệp cơ bản như Oracle đã làm với ASM (Trình quản lý lưu trữ tự động) giống như Trình quản lý khối tin hợp lý.

1

Trong danh sách của bạn, bạn đề cập đến một hệ thống tập tin cũ được sử dụng bởi vì một hệ thống tốt hơn không có sẵn tuy nhiên nó rất nhanh.

Có các hệ thống tập tin khác. Tôi nghe nói hệ thống tập tin của google chủ yếu là để sao chép / dự phòng nhanh nếu một ổ cứng hoặc máy chủ bị hỏng. Tôi nhớ đã nghe về một hệ thống tập tin khác được tạo cho nhiều tệp nhỏ và được sử dụng trên một hệ thống cho rất nhiều yêu cầu trên tệp nhỏ (hình thu nhỏ).

Về cơ bản, họ có các mục tiêu khác biệt và hoặc có thể là quyền sở hữu so với nguồn mở.


0

Tôi nghĩ rằng ZFS (được sử dụng bởi Solaris trong hệ thống Sun [nay là Oracle]) là giải pháp cho hệ thống tệp.

Thật không may, Oracle đóng OpenSolaris cho người khám phá và kiểm tra nó.

ZFS là mã nguồn mở, một số Linux đang cố gắng tích hợp nó, hãy tìm trên Wikipedia để biết thêm thông tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.