Linus Torvalds và Hệ thống tập tin OS X


28

Trở lại năm 2008, Linus Torvalds đã nói một cách nổi tiếng trong một cuộc phỏng vấn rằng "OS X về mặt nào đó thực sự tồi tệ hơn Windows để lập trình. Hệ thống tệp của họ đã hoàn tất và hoàn toàn tào lao, thật đáng sợ." Tôi đã tìm hiểu thêm chi tiết về lý do tại sao anh ấy cảm thấy như vậy về hệ thống tệp OS X (có lẽ là HFS +) nhưng tôi không thể tìm thấy bất cứ điều gì.

Linus chắc chắn không thích mô hình hệ thống tập tin Unix cơ bản và tôi nghi ngờ anh ấy ghét HFS + vì không phân biệt chữ hoa chữ thường. Và mặc dù nhận xét của anh ta được đưa ra một cách khiêu khích như thế nào, tôi nghi ngờ rằng nó hoàn toàn không có công. Vì nhận xét là trong bối cảnh lập trình cho OS X, tôi nghi ngờ ý kiến ​​của anh ta có thể dựa trên hiệu năng, sự mạnh mẽ, giao diện hệ điều hành hoặc một cái gì đó dọc theo những dòng đó. Có ai biết Linus thời kỳ 2008 có thể phàn nàn gì với HFS + thời kỳ 2008 không?


2
Anh ta được biết đến là người có ý kiến ​​thực sự mạnh mẽ về một số điều, ví dụ như khi anh ta nói về git @ google, anh ta đã dành một phần tốt trong cuộc nói chuyện về các hệ thống khác. Vì vậy, tôi sẽ nói rằng anh ta có thể có lý do để tin những gì anh ta nghĩ nhưng anh ta cũng là một người rất phóng đại, mặc dù anh ta là một thiên tài. youtube.com/watch?v=4XpnKHJAok8
Nhà phát triển El

3
Nếu bạn không nhận được câu trả lời cho câu hỏi này ở đây mà bạn đang hy vọng thì bạn cũng có thể cân nhắc tìm kiếm (và cũng có thể hỏi) trên Unix & Linux hoặc Super User . (Với rất nhiều trang web có sẵn bây giờ nó là đôi khi khó có thể biết đó là những nơi để đặt một câu hỏi Ít nhất IMHO :)..
hợp lý John

Tôi có xu hướng mông với HFS + nhiều hơn bất kỳ hệ thống tập tin nào khác mà tôi thường gặp. Ngày nay, trên hầu hết các hệ thống, tôi không cảm thấy như mình thường chú ý hay quan tâm đến việc sử dụng hệ thống tập tin nào, nhưng HFS + luôn đưa ra một cái gì đó. Giống như chỉ hôm nay tôi thấy tôi đã bị làm phiền bởi sự thiếu độ phân giải dưới giây của nó đối với các chế độ. Cũng có lúc tôi tìm thấy hai dòng mã C có thể gây ra bế tắc trong hệ thống tập tin khá nhiều làm hỏng toàn bộ máy. Điều đó thậm chí không cố định vào ngày 10.5. Không chắc chắn về các phiên bản gần đây hơn.
Iguananaut

Câu trả lời:


21

Một bản ghi của phiên họp Q & A phạm trong đó Linus đã đưa ra nhận xét có sẵn, nhưng có vẻ như anh ta không được yêu cầu giải thích. Tôi không chắc liệu một phân tích sâu hơn về ý kiến ​​của anh ấy về HFS + đã được viết ra ở một nơi khác hay chưa.

Để phân tích vấn đề của người khác, bạn có thể xem các đánh giá về Mac OS X của John Siracusa. Cụ thể là phần dành cho Mac OS X Lion có phần có tiêu đề là Lỗi gì với HFS + . Tôi nghĩ rằng phần nổi bật nhất là (phần nhấn mạnh của tôi):

Đồng thời, siêu dữ liệu được viết theo thứ tự byte chính xác, độ chính xác của ngày thứ hai phụ, hỗ trợ kích thước khối lớn và hỗ trợ tệp thưa thớt là tất cả các tính năng phổ biến của hệ thống tệp Unix. Mac OS X, tất nhiên, được xây dựng trên nền tảng Unix. Khi HFS + được chuyển từ Mac OS cổ điển sang Mac OS X, nó cần được mở rộng để hỗ trợ một số tính năng tối thiểu được mong đợi từ các hệ thống tệp Unix .

Một số tính năng này phù hợp dễ dàng, nhưng một số tính năng khác rất khó để thêm vào hệ thống tệp mà không phá vỡ tính tương thích ngược. Một ví dụ đặc biệt đáng sợ là việc triển khai các liên kết cứng trên HFS +. Để theo dõi các liên kết cứng, HFS + tạo một tệp riêng cho mỗi liên kết cứng bên trong một thư mục ẩn ở cấp gốc của ổ đĩa. Các thư mục ẩn là loại đáng sợ để bắt đầu, nhưng nỗi sợ hãi thực sự xảy ra khi bạn nhớ rằng Time Machine được triển khai bằng các liên kết cứng để tránh trùng lặp dữ liệu không cần thiết.

Điểm quan trọng ở đây là Mac OS X đang sử dụng một hệ thống tệp thậm chí không được thiết kế cho hệ thống Unix, nó được thiết kế cho Mac OS cổ điển và được vá để thực hiện các tính năng của Mac OS X 10.0 trong khi vẫn duy trì khả năng tương thích ngược. Apple sau đó đã triển khai các tính năng bổ sung mà hiện có trong Mac OS X 10.7 (ghi nhật ký, siêu dữ liệu, sự kiện hệ thống tập tin ...) bằng cách sử dụng phương pháp vá tương tự thay vì thiết kế trên nền tảng từ phương pháp tiếp cận cơ bản. Tôi không chắc làm thế nào để giải thích điều này về mặt kỹ thuật, nhưng bạn có thể nói rằng tất cả các tính năng bổ sung này đang nằm trên nền tảng Mac OS cổ điển không bao giờ được thiết kế để hỗ trợ chúng. Điều này có nghĩa là giải pháp không tốt như nó có thể. Ví dụ mà Siracusa tiếp tục thảo luận là giải pháp mà Apple phải sử dụng cho các liên kết cứng trong khi hoạt động trong giới hạn của HFS + quá nhạy cảm với lỗi phần cứng, điều này được kết hợp bởi thực tế là HFS + cũng không bao giờ được thiết kế để liên quan đến dữ liệu chính trực. Tất nhiên, việc duy trì khả năng tương thích với Mac OS cổ điển là một hạn chế đáng mong đợi trong Mac OS X 10.0 nhưng nó thực sự không còn nữa trong Mac OS X 10.7.


1
Liên kết tuyệt vời; bao gồm nhiều điều quan trọng. Thiếu hỗ trợ tập tin thưa thớt là khá hạt. Linux ext2 đã thực hiện các tệp thưa thớt ngay cả với phân bổ dựa trên block-bitmap đơn giản, như sử dụng HFS +. Tôi nghĩ rằng anh ta thực hiện một thỏa thuận quá lớn về việc lưu trữ siêu dữ liệu trong big endian, mặc dù. bswapHướng dẫn x86 rất nhanh. Nó làm cho mã lớn hơn và xấu hơn, nhưng duy trì khả năng tương thích trên đĩa là một vấn đề lớn. Linux XFS vẫn lưu trữ tất cả các siêu dữ liệu lớn cuối (ngoại trừ bản gốc trong tạp chí), do nguồn gốc của nó tại SGI trên CPU MIPS. Đó không phải là một tình huống lý tưởng, nhưng XFS không bị giữ lại bởi nó.
Peter Cordes

7

Mặc dù tôi không phải là chuyên gia về Hệ điều hành và tôi đã bắt đầu sử dụng OSX sau khi đến từ Windows, tôi tự coi mình là một PowerUser trong Windows và khá thành thạo Linux. Xuất phát từ nền tảng đó, tôi đã ngạc nhiên rằng trong một hệ điều hành khá hiện đại như OSX, hệ thống tập tin có những điểm kỳ quặc như cách tên của các tệp được "trộn".

Tôi hiểu rằng Linus hung có vấn đề với HFS + xuất phát từ cùng một điểm: từ những gì tôi đã tìm thấy khi nghiên cứu vấn đề, HFS + lưu trữ tên của các tệp bằng Unicode, nhưng khi một tệp sử dụng các ký tự "mở rộng" hoặc NON-ASCII (như á, é, í, ó, ú, ñ từ tiếng Tây Ban Nha hoặc những thứ như ü trong tiếng Đức), trong đó Unicode cung cấp 2 cách mã hóa tên, OSX âm thầm "bình thường hóa" mã hóa tại thời điểm lưu trữ ... Không phải là vấn đề thực sự khi tệp đã được tạo và sử dụng trong OSX, nhưng khi bạn chia sẻ thông tin với người dùng của các hệ điều hành khác, thực tế là tên của tệp thay đổi, tạo nên mọi hành vi kỳ lạ ...

Tình huống cụ thể: Tôi đã theo dõi "hiện vật" công việc của mình (tệp, tài liệu, v.v.) trong Subversion trong 8plus năm qua. Khi chuyển sang Mac, tôi đã nhận ứng dụng khách SVN cho Mac và sau khi thực hiện Thanh toán các thư mục có liên quan của tôi, tôi thấy rằng tất cả các tệp có dấu dường như bị thiếu và một tệp mới có cùng tên xuất hiện dưới dạng không phiên bản. Đi sâu vào nó, vấn đề là tệp IN hệ thống tệp được mã hóa bằng táo, trong khi dữ liệu trong kho lưu trữ sử dụng mã hóa Unicode khác (hoàn toàn hợp lệ và hợp pháp) ...

Điều này, tôi nghĩ, là một sự "xáo trộn" dữ liệu của tôi. Apple DOES hiểu cả hai định dạng mã hóa tên tệp (truy cập vào chia sẻ trong Windows hoặc sử dụng thẻ nhớ USB từ Windows sẽ hiển thị tên tệp thích hợp, v.v.) nhưng tại thời điểm tạo tệp, nó đã quyết định "nó biết rõ hơn" và chỉ đổi tên các tệp. ..

Một lần nữa, không phải thứ gì đó mà hầu hết người dùng sẽ chú ý - cho đến khi họ tạo một bản sao của tệp hoặc đổi tên tệp và đặt nó trở lại vị trí ban đầu và kết thúc bằng hai tệp rõ ràng giống nhau !!!)


1
Đây chỉ là một điểm và vấn đề thực sự là các HĐH khác nhau chỉ đơn giản là bình thường hóa các chuỗi theo các cách khác nhau và các ứng dụng đa nền tảng không giải quyết được điều đó. Không bình thường hóa tên có thể sẽ tệ hơn (bạn có thể có hai tệp khác nhau với tên bình thường hóa thành cùng một chuỗi, trên OS X).
Blaisorblade

4

John Siracusa & Dan Benjamin thảo luận về một số nhược điểm của HFS + trong Hypercritical # 56 .

Họ giải quyết vấn đề tham nhũng dữ liệu trong HFS + và xem xét một số tính năng của ZFS.


9
Có cách nào bạn có thể cung cấp một bản tóm tắt về cuộc thảo luận của họ trong câu trả lời của bạn không? Luồng âm thanh (tại thời điểm này trong công nghệ hiện tại của chúng tôi) không thể tìm kiếm và rất dài. Không đề cập đến nó trên một trang web khác vì vậy nó dễ bị thối liên kết. Đây sẽ là một câu trả lời tốt hơn nhiều nếu nó chứa các chi tiết cụ thể về cuộc thảo luận của họ.
Ian C.

1
Cuộc trò chuyện về hệ thống tập tin bắt đầu sau 23 phút.
neoneye

1
Hầu hết các thông tin có sẵn trong podcast cũng có thể được tìm thấy tại một bài báo Ars Technica của John Siracusa (một trong hai người đàn ông trong podcast.)
TML
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.