Tại sao hệ thống tập tin của Linux được thiết kế dưới dạng cây thư mục?


91

Bất cứ ai có thể giải thích tại sao Linux được thiết kế như một cây thư mục duy nhất?

Trong khi đó trong Windows chúng ta có thể có nhiều ổ đĩa như C:\, và D:\, có một root duy nhất trong Unix. Có lý do cụ thể nào không?


14
@terdon - Tôi nghĩ rằng anh ta đang hỏi về việc có một thư mục gốc duy nhất (/) so với kiểu DOS (C: \ D: \).
jordanm

27
Bạn cũng có thể (và thường làm) có nhiều ổ đĩa trong Linux. Trong thực tế, nguyên tắc cơ bản là giống nhau C:D:cũng là điểm gắn kết trong Windows. Tương đương với Windows /My Computer, mọi thứ đều được gắn kết theo đó.
terdon

61
Tôi nghĩ rằng một câu hỏi phù hợp hơn sẽ là "tại sao một hệ điều hành KHÔNG có một gốc"? (Câu trả lời cho DOS / Windows sẽ là lỗi thiết kế / lỗi không lập kế hoạch cho tương lai / giả định không cần thiết)
JoelFan

21
Windows đã chọn hệ thống kỳ quái đó vì MS-DOS trước đó và MS-DOS tuân theo tiền lệ ban đầu được thiết lập bởi CP / M. MS-DOS là một hệ thống dựa trên ổ đĩa mềm (A: và B: ban đầu, đôi khi, trên một hệ thống ổ đĩa đơn, A: và B: là cùng một ổ đĩa, nhưng hai đĩa logic khác nhau cho mục đích trao đổi / sao chép hoạt động) . Giống như hầu hết mọi người bị hư hại bởi PC MS-DOS, OP nghĩ rằng /trên Linux giống như C: trong MSDOS / Windows, khi nó không thực sự giống như vậy.
Warren P

25
Trên thực tế, C:, D:và các công cụ chỉ là khả năng tương thích với hệ điều hành DOS và Win32; Windows NT bên trong có một hệ thống phân cấp đối tượng hơi giống UNIX, là các ký tự ổ đĩa (và nói chung là Win32) chỉ là các liên kết tượng trưng đến các đối tượng "thực" ( c:\file.txtthực ra \??\c:\file.txt, \??\c:là một liên kết tượng trưng cho ví dụ \device\harddisk0\partition1). Xem ví dụ tại đây
Matteo Italia

Câu trả lời:


192

Do hệ thống tệp Unix trước Windows nhiều năm, nên người ta có thể đặt lại câu hỏi thành "tại sao Windows sử dụng một chỉ định riêng cho mỗi thiết bị?".

Một hệ thống tập tin phân cấp có lợi thế là bất kỳ tập tin hoặc thư mục có thể được tìm thấy như là một con của thư mục gốc. Nếu bạn cần di chuyển dữ liệu sang thiết bị mới hoặc thiết bị mạng, vị trí trong hệ thống tệp có thể giữ nguyên và ứng dụng sẽ không thấy sự khác biệt.

Giả sử bạn có một hệ thống trong đó HĐH tĩnh và có một ứng dụng có yêu cầu I / O cao. Bạn có thể gắn / usr chỉ đọc và đặt / opt (nếu ứng dụng nằm ở đó) trên các ổ SSD. Hệ thống phân cấp tập tin không thay đổi. Trong Windows, điều này khó khăn hơn nhiều, đặc biệt là với các ứng dụng khăng khăng sống theo C: \ Program Files \


27
Và câu hỏi (hùng biện) đó có một câu trả lời: truyền thống. Chỉ là một truyền thống khác với Unix đến từ. Windows lấy cái này từ DOS, lấy từ CP / M-80, theo mô hình chung của nhiều hệ điều hành máy tính mini và máy tính lớn. Tên ổ đĩa đã được rút ngắn từ DISK0:hoặc SY:đến A:.
RBerteig

6
@RBerteig - có thể là truyền thống, đặc biệt là trong trường hợp Windows, nhưng Rob Pike trình bày một lập luận khá thuyết phục cho các kế hoạch đặt tên theo phong cách Unix trong The Hideous Name, pdos.csail.mit.edu/~rsc/pike85 leatherous.pdf
Bruce Ediger

13
Từ Windows NT, tôi tin rằng, có thể gắn thiết bị vào một đường dẫn ảo nhất định trong Windows để thực hiện chính xác điều tương tự như Unix, mặc dù nó không phổ biến trên PC gia đình (hơi phổ biến trên các máy chủ và triển khai kinh doanh). Bạn có thể chọn xem đây là một minh chứng cho Cách thức Unix (tm), nếu bạn muốn.
JSB

8
@BruceEdiger Tôi sẽ không cố gắng tranh luận rằng DOS đã đúng. Chỉ cần chỉ ra rằng có bối cảnh cho lý do tại sao Windows là như vậy, và đó không phải là thứ mà MS đã rút ra khỏi chiếc mũ.
RBerteig

1
@BruceEdiger: Wow. Giấy đẹp. Đây cũng là một trong số ít lần tôi thấy Pike bị nghi ngờ sai về điều gì đó. (Cụ thể là hệ thống phục vụ tên ARPANET không thể mở rộng quy mô. Ngày nay chúng ta gọi nó là DNS và nó đã mở rộng khá tốt. Các khái niệm cốt lõi của một không gian chữ tượng hình tuyệt đối với quyền hạn và ủy quyền vẫn hoàn toàn không thay đổi). Phải thừa nhận rằng điều này là do các mạng không phải IP có liên quan đến thư đã chết.
Kevin Cathcart

87

Điều này một phần vì lý do lịch sử, và một phần vì nó có ý nghĩa hơn theo cách này.

Đa thức

Multics là hệ điều hành đầu tiên giới thiệu hệ thống tệp phân cấp như chúng ta biết ngày nay, với các thư mục có thể chứa các thư mục. Trích dẫn Một hệ thống tệp mục đích chung cho lưu trữ thứ cấp do RC Daley và PG Neumann cung cấp:

Phần 2 của bài viết trình bày cấu trúc phân cấp của các tệp, cho phép sử dụng linh hoạt hệ thống. Cấu trúc này chứa đủ khả năng để đảm bảo tính linh hoạt. (Càng)

Để dễ hiểu, cấu trúc tệp có thể được coi là một cây tệp, một số trong đó là các thư mục. Đó là, với một ngoại lệ, mỗi tệp (ví dụ: mỗi thư mục) thấy chính nó được trỏ trực tiếp bởi chính xác một nhánh trong chính xác một thư mục. Ngoại lệ là thư mục gốc, hoặc root, ở gốc của cây. Mặc dù nó không được chỉ rõ ràng từ bất kỳ thư mục nào, nhưng gốc được chỉ ra bởi một nhánh hư cấu được biết đến với hệ thống tệp. (Càng)

Tại bất kỳ thời điểm nào, một người dùng được coi là đang hoạt động trong một thư mục, được gọi là thư mục làm việc của mình. Anh ta có thể truy cập một tập tin được chỉ ra một cách hiệu quả bởi một mục trong thư mục làm việc của anh ta chỉ bằng cách chỉ định tên mục nhập. Nhiều người dùng có thể có cùng một thư mục làm việc cùng một lúc.

Như trong nhiều khía cạnh khác, Multics tìm kiếm sự linh hoạt. Người dùng có thể làm việc trong một cây con của hệ thống tệp và bỏ qua phần còn lại, và vẫn được hưởng lợi từ các thư mục để tổ chức các tệp của họ. Các thư mục cũng được sử dụng để kiểm soát truy cập - thuộc tính READ cho phép người dùng liệt kê các tệp trong một thư mục và thuộc tính EXECUTE cho phép người dùng truy cập các tệp trong thư mục đó (giống như nhiều tính năng khác, tồn tại trong unix).

Multics cũng tuân theo nguyên tắc có một kho lưu trữ duy nhất. Bài viết không dừng lại ở khía cạnh này. Một nhóm lưu trữ duy nhất phù hợp với phần cứng của thời đại: không có thiết bị lưu trữ di động, ít nhất là không có thiết bị nào mà người dùng quan tâm. Multics đã có một kho lưu trữ sao lưu riêng biệt, nhưng điều này là minh bạch cho người dùng.

Unix

Unix lấy rất nhiều cảm hứng từ Multics, nhưng nhắm đến sự đơn giản trong khi Multics nhắm đến sự linh hoạt.

Một hệ thống tập tin phân cấp duy nhất phù hợp với Unix. Giống như với Multics, nhóm lưu trữ thường không liên quan đến người dùng. Tuy nhiên, đã có các thiết bị có thể tháo rời và Unix đã hiển thị chúng cho người dùng, thông qua các lệnh mountumount(dành riêng cho siêu người dùng siêu tốc, tức là người quản trị). Trong hệ thống chia sẻ thời gian UNIX , Dennis Ritchie và Ken Thompson giải thích:

Mặc dù thư mục gốc của hệ thống tệp luôn được lưu trữ trên cùng một thiết bị, nhưng không cần thiết phải phân cấp toàn bộ hệ thống tệp trên thiết bị này. Có một yêu cầu hệ thống gắn kết với hai đối số: tên của một tệp thông thường hiện có và tên của một tệp đặc biệt có dung lượng lưu trữ liên quan (ví dụ: gói đĩa) phải có cấu trúc của một hệ thống tệp độc lập chứa phân cấp thư mục riêng của nó . Tác dụng của việc gắn kết là làm cho các tham chiếu đến tệp thông thường được đề cập thay vào thư mục gốc của hệ thống tệp trên ổ đĩa di động. Trong thực tế, mount thay thế một lá của cây phân cấp (tệp thông thường) bằng một cây con hoàn toàn mới (cấu trúc phân cấp được lưu trữ trên ổ đĩa di động). Sau khi gắn kết, hầu như không có sự phân biệt giữa các tệp trên ổ đĩa di động và các tệp trong hệ thống tệp cố định. Ví dụ, trong phần cài đặt của chúng tôi, thư mục gốc nằm trên một phân vùng nhỏ của một trong các ổ đĩa của chúng tôi, trong khi ổ đĩa khác chứa các tệp của người dùng được gắn theo trình tự khởi tạo hệ thống. Một hệ thống tập tin gắn kết được tạo ra bằng cách viết trên tập tin đặc biệt tương ứng của nó. Một chương trình tiện ích có sẵn để tạo một hệ thống tệp trống hoặc người ta có thể chỉ cần sao chép một hệ thống tệp hiện có.

Hệ thống tập tin phân cấp cũng có lợi thế là tập trung sự phức tạp của việc quản lý nhiều thiết bị lưu trữ vào kernel. Điều này có nghĩa là kernel phức tạp hơn, nhưng kết quả là tất cả các ứng dụng đều đơn giản hơn. Vì kernel phải quan tâm đến các thiết bị phần cứng nhưng hầu hết các ứng dụng thì không, đây là một thiết kế tự nhiên hơn.

các cửa sổ

Windows truy nguyên tổ tiên của nó trở lại hai dòng: VMS , một hệ điều hành ban đầu được thiết kế cho máy tính mini VAXCP / M , một hệ điều hành được thiết kế cho các máy vi tính Intel đời đầu.

VMS có một hệ thống tập tin phân cấp phân tán, Files-11 . Trong Tệp-11, đường dẫn đầy đủ đến tệp chứa tên nút, chỉ định tài khoản trên nút đó, tên thiết bị, đường dẫn cây thư mục, tên tệp, loại tệp và số phiên bản. VMS có một tính năng tên logic mạnh mẽ cho phép các phím tắt được xác định cho các thư mục cụ thể, vì vậy người dùng hiếm khi phải quan tâm đến vị trí thực tế của Thư mục.

CP / M được thiết kế cho các máy tính có RAM 64kB và ổ đĩa mềm, vì vậy nó rất đơn giản. Không có thư mục, nhưng tham chiếu tệp có thể bao gồm chỉ thị ổ đĩa ( A:hoặc B:).

Khi MS-DOS 2.0 giới thiệu các thư mục, nó đã làm như vậy với cú pháp tương thích với MS-DOS 1, chính nó đi theo CP / M. Vì vậy, các đường dẫn đã được bắt nguồn từ một ổ đĩa với một tên đơn. (Ngoài ra, ký tự gạch chéo /được sử dụng trong VMS và CP / M để bắt đầu các tùy chọn dòng lệnh, do đó, một ký tự khác phải được sử dụng làm dấu tách thư mục. Đây là lý do tại sao DOS và Windows sau đó sử dụng dấu gạch chéo ngược, mặc dù một số thành phần bên trong cũng hỗ trợ dấu gạch chéo ).

Windows vẫn duy trì khả năng tương thích với DOS và cách tiếp cận VMS, vì vậy nó vẫn giữ khái niệm về các ký tự ổ đĩa ngay cả khi chúng trở nên ít liên quan hơn. Ngày nay, dưới vỏ bọc, Windows sử dụng các đường dẫn UNC ( ban đầu được phát triển bởi Microsoft và IBM cho OS / 2 , có nguồn gốc liên quan). Mặc dù điều này được dành riêng cho người dùng có quyền lực (có thể do trọng lượng của lịch sử), Windows không cho phép gắn kết thông qua các điểm lặp lại .


3
Mặc dù đó không phải là hành vi mặc định, nhưng với các hệ thống tệp NTFS, Windows cũng có thể gắn kết tất cả dung lượng lưu trữ của bạn dưới một gốc duy nhất: technet.microsoft.com/en-us/l Library / cc753321.aspx howtogeek.com/98195 / khăn serverfault.com/questions / 24400 /
Lọ

3
Có vẻ như phần có liên quan là MS-DOS 1.0 dựa trên đĩa mềm. Trên một hệ thống như vậy, (a) điều quan trọng là phải biết các tệp vật lý của bạn được bật trên đĩa nào và (b) A:B:là một quy ước hợp lý để phân biệt giữa các ổ đĩa mềm của bạn nếu bạn có hai trong số chúng. Khi hỗ trợ ổ cứng được thêm vào trong MS-DOS 2.0, C:chỉ định ổ đĩa cho phép khả năng tương thích ngược bằng cách coi HD là một đĩa mềm LỚN.
dùng1024

5
Trên thực tế, ban đầu CP / M được thiết kế để chạy trong 16 chứ không phải 64, KB RAM. Con số 64 KB có lẽ là cho phép các ứng dụng một số phòng thở; trong khi bộ xử lý lệnh (ĐCSTQ) đã bị ghi đè và tải lại nếu cần, BIOS và BDOS luôn ở trong bộ nhớ. Đúng, đó là nơi BIOS đến từ - IBM đã không đưa ra thuật ngữ này! Xem Wikipedia CP / M: Mô hình phần cứng và các thành phần của hệ điều hành . Hãy nhớ rằng 16 KB chỉ có khoảng ba trang được viết dày đặc (70 dòng × 80 ký tự / dòng × 3 trang = 16800 byte).
một CVn

36

Không có mối quan tâm bảo mật đằng sau việc có một cây thư mục duy nhất.

Những người thiết kế Unix có rất nhiều kinh nghiệm với các hệ điều hành yêu cầu người dùng biết thiết bị vật lý nào chứa tài nguyên nhất định. Vì một phần của mục đích của một hệ điều hành là tạo ra một cỗ máy trừu tượng trên phần cứng thực sự, họ nghĩ rằng việc phân phát tài nguyên theo vị trí vật lý của họ sẽ đơn giản hơn nhiều và quyết định đặt mọi thứ vào một cây tên.

Đây chỉ là một phần của thiên tài đằng sau thiết kế của Unix .


28

Lưu ý rằng tên ký tự ổ đĩa từ MS-DOS tồn tại trong Windows hiện đại là một cá trích đỏ ở đây. Tên ký tự ổ đĩa không phải là đại diện tốt nhất của cấu trúc hệ thống tệp có nhiều gốc. Họ là một người rơm thực hiện một hệ thống như vậy.

Một hệ thống tập tin được triển khai đúng cách hỗ trợ nhiều gốc sẽ cho phép đặt tên tùy ý cho các tập, như dvdrom:/path/to/file.avi. Chẳng hạn như hệ thống sẽ thoát khỏi các vấn đề giao diện người dùng gây cười gây khó chịu cho Windows. Chẳng hạn, nếu bạn cắm một thiết bị như máy ảnh, Giao diện người dùng Windows Explorer sẽ khiến bạn tin rằng có một thiết bị có tên là Camera (hoặc bất cứ thứ gì) và bạn có một đường dẫn như thế nào Computer\Camera\DCIM\.... Tuy nhiên, nếu bạn cắt và dán phiên bản văn bản của đường dẫn này ra khỏi Explorer, nó không thực sự hoạt động vì một số thành phần tên đường dẫn là hư cấu giao diện người dùng, không được biết đến với HĐH cơ bản. Ở một hệ thống được triển khai đúng cách với nhiều gốc, sẽ ổn thôi: sẽ có mộtcamera:\DCIM\...đường dẫn được công nhận thống nhất ở mọi cấp độ trong hệ thống. Hơn nữa, nếu bạn chuyển qua một ổ cứng cũ từ PC OLD, bạn sẽ không bị kẹt với một số tên ký tự ổ đĩa F:, nhưng thay vào đó bạn sẽ có thể đặt tên cho nó theo bất cứ điều gì bạn muốn, như thế nào old-disk:.

Vì vậy, nếu Unix có nhiều gốc trong cấu trúc hệ thống tập tin, thì nó sẽ được thực hiện hoàn toàn như thế này, và không giống như trong MS-DOS và Windows với tên ổ đĩa một chữ cái. Nói cách khác, chúng ta chỉ so sánh sơ đồ Unix với một thiết kế đa gốc tốt.

Vì vậy, tại sao Unix không có triển khai nhiều gốc lành mạnh, có lợi cho triển khai một gốc lành mạnh? Có lẽ nó chỉ đơn giản. Điểm gắn kết cung cấp tất cả các chức năng để có thể truy cập khối lượng thông qua tên. Không cần phải mở rộng không gian tên với cú pháp tiền tố bổ sung.

Về mặt toán học, bất kỳ biểu đồ cây tách rời nào ("rừng") đều có thể được nối bằng cách thêm một nút gốc và tạo các phần tách rời các phần tử con của nó.

Hơn nữa, nó linh hoạt hơn khi các khối lượng không phải ở cấp độ gốc. Vì không có cú pháp đặc biệt biểu thị âm lượng (nó chỉ là một thành phần đường dẫn), các điểm gắn kết có thể ở bất cứ đâu. Nếu bạn mang trong ba đĩa cũ sang máy tính của bạn, bạn có thể có chúng như /old-disk/one, /old-disk/twovv Bạn có thể sắp đĩa tuy nhiên bạn muốn, theo cách bạn sắp xếp các file và thư mục.

Các ứng dụng có thể được viết tùy thuộc vào đường dẫn và tính hợp lệ của đường dẫn có thể được duy trì khi các thiết bị lưu trữ được cấu hình lại. Chẳng hạn, các ứng dụng có thể sử dụng các đường dẫn nổi tiếng như /var/log/var/lib. Tùy thuộc vào bạn /var/log/var/libtrên cùng một ổ đĩa hoặc trên các ổ đĩa riêng biệt. Bạn có thể di chuyển một hệ thống sang cấu trúc liên kết lưu trữ mới, trong khi vẫn giữ nguyên các đường dẫn.

Điểm gắn kết là một ý tưởng tốt, đó là lý do tại sao Windows đã có chúng từ khoảng năm 2000.

Điểm gắn kết âm lượng mạnh mẽ chống lại các thay đổi hệ thống xảy ra khi thiết bị được thêm hoặc xóa khỏi máy tính. Microsoft Technet


6
Có lẽ ngẫu nhiên, "thiết kế đa gốc tốt" của bạn nghe rất giống hệ thống AmigaDOS cũ , cho phép các tên âm lượng tùy ý, bao gồm các khối "được gán" tham chiếu đến một thư mục cụ thể bên trong một ổ đĩa khác. Thậm chí, bạn có thể (với phần mềm thích hợp ) có khối lượng "ảo" như, giả sử, một FTP:ổ đĩa cho phép bạn truy cập các tệp trên bất kỳ máy chủ FTP nào có đường dẫn như FTP:hostname/path/to/file.
Ilmari Karonen

3
Đây thực sự không phải là một câu trả lời hay vì nó có vẻ cực kỳ chủ quan. Windows bash khá đẹp của nó.
Giàn khoan

3
@Rig Mặc dù điều đó có thể đúng, Windows xứng đáng bị bash kỹ lưỡng vì vẫn có các tên ký tự ổ đĩa này, có từ thời MS-DOS. Đây là hệ thống tập tin đa gốc mà hầu hết người dùng đều quen thuộc, nhưng chúng tôi thực sự không thể sử dụng nó cho mục đích so sánh với một gốc, bởi vì đây là ví dụ điển hình của hệ thống như vậy.
Kaz

3
@Kaz Tôi vẫn thấy câu trả lời này là một câu nói hay hơn. Windows làm hệ thống tập tin khác nhau nhưng nó không làm cho nó sai, khủng khiếp hoặc tội ác chống lại loài người. Bạn không thích nó như bạn có quyền. Microsoft thậm chí không đưa ra kế hoạch này, họ đã mượn nó từ một hệ thống phổ biến thời đó, nhưng họ phải duy trì nó để duy trì hợp lý với mã kế thừa.
Giàn khoan

1
@Rig Chắc chắn; không có gì khủng khiếp hơn, nói, có được bữa tối tiếp theo của bạn bằng một mũi tên đá lửa. Mũi tên đá lửa thực sự là trạng thái của nghệ thuật trong thời hoàng kim của họ . À, nhưng rất tiếc, chúng ta thực sự không thể nói rằng về DOS và các ký tự ổ đĩa, chúng ta có thể ... rất nhiều cho các tương tự.
Kaz

13

Cả * nix và Windows đều gắn ổ đĩa của họ. Trong Windows, chúng được tự động gắn vào các điểm gắn kết, theo mặc định, theo thứ tự bảng chữ cái tăng dần. Những mặc định này là:

  • A:B:=> đĩa mềm
  • C: => phân vùng đầu tiên của ổ cứng đầu tiên
  • D: => phân vùng tiếp theo hoặc ổ cứng hoặc ổ đĩa CD / DVD tiếp theo nếu không có phân vùng khác.

Mỗi điểm gắn kết là một thư mục.

Trong * nix, các điểm gắn kết được quyết định bởi người dùng. Ví dụ, tôi có một phân vùng được gắn kết /và một phân vùng khác /home. Vì vậy, /homelà một ổ đĩa riêng biệt, nó sẽ tương đương E:với Windows.

Trong cả hai trường hợp, Windows và * nix, điểm gắn kết là các thư mục riêng biệt. Sự khác biệt duy nhất là trong * nix, các thư mục riêng biệt này là các thư mục con của /, C:trong khi trong Windows, mọi điểm gắn kết được gắn trực tiếp bên dưới /, My Computergiả sử.

Từ quan điểm của người dùng, ưu điểm chính là các giá treo hoàn toàn trong suốt. Tôi không cần biết rằng thư mục /homethực sự nằm trên một phân vùng riêng. Tôi chỉ có thể sử dụng nó như một thư mục bình thường. Thay vào đó, trong DOS, tôi sẽ phải gọi nó một cách rõ ràng bằng tên của điểm gắn kết, nóiE:\home

Các ổ đĩa ngoài được gắn theo khá nhiều cách giống nhau trong cả hai hệ thống. Nói D:cho Windows và /mnt/cdromcho Linux. Mỗi cái này là một thư mục, tôi không thực sự thấy sự khác biệt. Khi bạn đặt CDROM vào ổ đĩa của mình trong Windows, đĩa sẽ được gắn vào D:giống như trong Linux.


3
Vì tò mò, bạn có biết điều gì sẽ xảy ra nếu ai đó muốn tạo 27 ổ đĩa trên Windows không? Windows sẽ gọi ổ đĩa thứ 27 là gì? : D
Joseph R.

2
Hahaha. Có vẻ như Windows quá buồn tẻ để làm điều đó.
Joseph R.

3
Mã khóa nhỏ: các ký tự ổ đĩa trong Windows mặc định tăng dần theo thứ tự bảng chữ cái, nhưng chúng có thể và thường được đổi tên.
RBerteig

3
@terdon: anh ấy sẽ chỉ gắn ổ đĩa vào một thư mục - chính xác như bạn làm trong hệ điều hành POSIX.
Matteo Italia

3
@JosephR: Tại một số điểm - Tôi không chắc chắn khi nào, nhưng có lẽ NT- Windows đã đạt được khả năng gắn ổ đĩa trong các thư mục, giống như Unix. Theo mặc định, không ai thực sự làm điều này (điều làm tôi ngạc nhiên: với tần suất cài đặt lại nuke-pave, tôi nghĩ rằng một cái gì đó tương tự như đặt / nhà trên một âm lượng riêng biệt sẽ trở nên phổ biến bây giờ). Tuy nhiên, nếu bạn hết ký tự / số / ký hiệu ổ đĩa, đây là việc bạn phải làm nếu muốn thêm nhiều ổ đĩa vào hệ thống.
Chiếc thìa ngon nhất

10

Tôi đồng ý với các câu trả lời ở trên, đặc biệt là câu trả lời của Doug O'Neal, nhưng tôi nghĩ rằng tất cả chúng đều bỏ lỡ một chút gì đó, cũng như các điểm gắn thiết bị rõ ràng như MS-DOS "C:" hoặc "A:".

Rob Pike đã viết Tên gớm ghiếc về cú pháp của các tên, nhưng Russ Cox đã đun sôi nó xuống :

Không gian tên ... mạnh nhất khi ngữ nghĩa mới có thể được thêm vào mà không cần thêm cú pháp mới.

Một không gian tên duy nhất nơi các thiết bị có thể được gắn tùy ý cho phép các hoạt động thực sự linh hoạt. Tôi thường xuyên sử dụng /mnt/sdb1/mnt/cdromđể tạm thời đặt một đĩa hoặc CD hiện chưa sử dụng vào hệ thống tệp tổng thể. Không có gì lạ khi có các thư mục chính trên máy chủ NFS, do đó, cho dù bạn đăng nhập vào máy nào, bạn vẫn nhận được như nhau $HOMEở mọi nơi.

Điều này dẫn đến điều này: có cú pháp đặc biệt cho những điều đặc biệt đặt ra giới hạn nhất định cho những gì bạn có thể làm. Nếu bạn chỉ có thể gắn đĩa hoặc đĩa CD hoặc DVD không sử dụng hoặc hệ thống tập tin mạng / "chia sẻ" trên "E:" hoặc "W:" hoặc bất cứ điều gì, bạn đã linh hoạt hơn rất nhiều.


1
Bạn không thực sự cần symlink cho điều đó. Bạn có thể trực tiếp gắn kết một phân vùng (hoặc lưu trữ mạng hoặc bất cứ thứ gì) trên bất kỳ đường dẫn nào, chẳng hạn như / usr / local - mặc dù nó luôn gây trở ngại cho tôi khi tôi tìm thấy một mạng trong đó / usr / điểm cục bộ gắn kết với mạng. Có, chúng tồn tại và có một số lý do để làm như vậy: / usr / local là một trong những nơi tiêu chuẩn để quản trị viên của bạn đặt những thứ không phải từ nhà phân phối HĐH.
Christopher Creutzig

@Christopher Creutzig - đồng ý, liên kết tượng trưng không cần thiết cho ví dụ của tôi, tôi chỉ muốn đưa ra một ví dụ khác về cách một lược đồ đặt tên linh hoạt có thể làm việc cho bạn. Có lẽ nó không phải là ví dụ tốt nhất.
Bruce Ediger

Hãy nhìn vào web ngu ngốc. proto://specifichost.domain.tld/topleveldir/middle/specificdoc.html.
Kaz

2
@Christopher Creutzig - Tôi đã thiết lập / usr / local làm ổ đĩa mạng tại một vài nơi. "cục bộ" sau đó có nghĩa là cục bộ của trang web, không phải cho máy.
doneal24

3
@Kaz, tôi nghĩ proto://kinh doanh là một nhu cầu thiết thực. Mọi phần mềm không thể được mong đợi để biết về tất cả các lược đồ URI ngoài kia. Do đó, có thể hữu ích để biết khi nào ID chương trình kết thúc và phần còn lại của URI bắt đầu.
Adrian Ratnapala

5

Điều này thật ngốc nghếch. Windows cũng có một điểm phân cấp duy nhất. Nhưng nó là ẩn và không chuẩn. Như hầu hết mọi thứ cửa sổ.

Trong trường hợp này, đó là khái niệm "Máy tính của tôi". Đó là tương đương với root (/) trong Unix. Hãy nhớ rằng root là một khái niệm tồn tại trong kernel. bạn thích hay không thích nó. Giống như cửa sổ đối xử với "Máy tính của tôi". Tất nhiên, bạn có thể gắn kết một phân vùng trên root trong unix và đó là điều mà hầu hết mọi người làm. Và rất nhiều thứ sẽ xem xét một đường dẫn cụ thể cho mọi thứ (ví dụ / etc /) nhưng bạn không bị giới hạn bởi nó. Bằng mọi cách, gắn ổ đĩa của bạn vào / C: /. bạn không bị cấm làm điều đó trong unix.

C: \ không phải là một root trong windows, nó là điểm gắn kết của một phân vùng. Mà PHẢI ở cấp cao nhất "Máy tính của tôi". Trong khi ở unix, bạn có thể gắn một phân vùng dưới bất kỳ cây nào khác. Vì vậy, linux bạn có thể có C: được gắn vào trong /khi bạn có D: được gắn vào /mnt/d/... hoặc thậm chí cũng được gắn vào /nhưng điều đó rất khó và phụ thuộc vào cách hai hệ thống tập tin hoạt động khi gắn trên đường dẫn đã được gắn.

Vì vậy, bạn có thể có được chính xác như bạn có với các cửa sổ bằng cách "buộc" bản thân tuân theo các giới hạn tương tự mà các cửa sổ áp đặt ngẫu nhiên lên bạn.

/ (treat this as "My Computer")
/c/ (mount your first data partition here)
/d/ (mount your second data partition here)

Sau đó, bạn sẽ phải vượt qua trong các tùy chọn gắn kết trên các tùy chọn khởi động. vì bạn sẽ không có / etc / ... nhưng điều đó cũng mô phỏng các giới hạn mà cửa sổ áp đặt, giống như những gì nó làm.


4
Windows có một hệ thống phân cấp duy nhất dưới mui xe và thậm chí nó có các điểm gắn kết, nhưng nó không sử dụng chúng theo mặc định.
Gilles

1
@Gilles không chắc tôi hiểu. Làm thế nào để gắn mọi trình điều khiển vào nút gốc "My Computer" không sử dụng nó theo mặc định?
gcb

5
Đó chỉ là phần trình bày GUI. Đường dẫn tệp không sử dụng My Computer.
Gilles

3
My Computerlà nút gốc của hệ thống phân cấp Shell. nó chứa các ổ đĩa, nếu chúng có ký tự ổ đĩa , nhưng cũng có bảng điều khiển và bất kỳ Windows Phone nào được kết nối. Hệ thống phân cấp Shell sử dụng PIDL thay vì đường dẫn.
MSalters

4
@gcb: vấn đề là hệ thống phân cấp shell không thể sử dụng trực tiếp trong các ứng dụng "thông thường". Bạn không thể gọi CreateFilechuyển qua "Máy tính của tôi" hoặc các thư mục shell khác; đó là một sự trừu tượng chỉ được hiểu bởi mã liên quan đến shell, tất cả các lệnh gọi kernel (và do đó 90% ứng dụng, vì việc quản lý tệp trong hầu hết các ngôn ngữ được triển khai theo các API của tệp kernel) không biết gì về công cụ này. Các thư mục shell chỉ có thể sử dụng được khi các chương trình sử dụng "hộp thoại tiêu chuẩn" (thực hiện bên dưới không gian tên shell) và chỉ khi các tệp được chọn trực tiếp ánh xạ tới đường dẫn "thực" (= kernel-hiểu).
Matteo Italia

5

Lý do Windows có ký tự ổ đĩa có thể quay trở lại xa hơn Microsoft và DOS. Việc gán các chữ cái cho các ổ di động là phổ biến trên các hệ thống của IBM, vì vậy Microsoft có thể đã thực hiện theo hướng dẫn của IBM bằng cách sao chép CP / M. Và ban đầu, DOS không có thư mục nào.

Khi MS-DOS chạy trên máy tính có một hoặc hai đĩa rời và không có phương tiện cố định, bạn không thực sự cần một hệ thống tệp có thư mục. Với một, hoặc có thể hai, 180 kilobyte, bạn không bao giờ có đủ tệp để gặp khó khăn khi tổ chức chúng.

https://en.wikipedia.org/wiki/Drive_letter_assocation


1
Điều này là không chính xác ở tốt nhất. CP / M đã có trước bất kỳ Microsoft / IBM-PC DOS nào trong một số năm (tôi tin rằng ý tưởng ban đầu của IBM là sử dụng CP / M cho "PC" của họ, vì đó là một tiêu chuẩn công nghiệp thực tế được thiết lập khá tốt vào thời điểm đó thực tế là các hệ thống CP / M khác nhau có thể không tương thích) và hầu như không tranh cãi rằng IBM-PC DOS chủ yếu dựa trên 86-DOS , về cơ bản là bản sao CP / M tương thích mã nguồn .
một CVn

4

Trên thực tế, Linux dựa trên Unix (hoặc là Unix, xem thảo luận ) và Unix đến từ môi trường máy tính lớn, nơi sử dụng nhiều thiết bị là khá rõ ràng. Gắn thiết bị trong cây thư mục duy nhất mang lại cho bạn sự linh hoạt tối đa và không giới hạn số lượng thiết bị mà hệ điều hành có thể truy cập.

Mặt khác, các chữ cái DOS cho các ổ đĩa là một thiết kế tốt cho PC với 1 hoặc 2 trạm đĩa mềm và ổ đĩa đơn. Đĩa mềm lớn 5,25 'luôn là A:, little one 3,5' luôn là B:, và ổ đĩa luôn là C :. Bạn luôn biết nếu bạn sao chép một tập tin vào đĩa mềm hoặc một nơi nào đó vào đĩa. Bạn không cần bất kỳ sự linh hoạt nào nếu bạn không thể kết nối vật lý nhiều hơn 2 ổ đĩa mềm và 2 (hoặc 4) đĩa cứng.

Thiết kế DOS thân thiện với người dùng hơn, trong khi thiết kế Unix thân thiện với quản trị viên. Bây giờ các ký tự ổ đĩa là một gánh nặng cho Windows, người dùng phụ thuộc nhiều hơn vào việc tự động mở cửa sổ explorer với nội dung ổ đĩa di động hơn là biết chữ cái của nó ... Ubuntu thực sự giống như vậy.


1

Điều đó không đúng, thực sự. Windows sử dụng sơ đồ đường dẫn khác (tốt, không giống nhau)

"Đơn vị chữ cái" chỉ là một cái gì đó dễ nhớ đường dẫn, đĩa và phân vùng.

Đường dẫn ARC xác định đường dẫn của tệp trong windows (nhưng chúng chỉ hiển thị cho người dùng khi khởi động):

http://support.microsoft.com/kb/102873

https://serverfault.com/questions/5910/how-do-i-determine-the-arc-path-for-a-particular-drive-letter-in-windows

Trong Windows NT, không có mối quan hệ nào giữa các đĩa, phân vùng và chữ cái đơn vị: Bạn có thể "đặt" toàn bộ âm lượng vào một thư mục (ví dụ: c: \ myseconddisk có thể là toàn bộ đĩa vật lý!)


1
Đường dẫn ARC chỉ để khởi động, để tương thích với một số ROM khi NT được chuyển sang Alpha và MIPS. Khi hệ thống đang chạy, nó sử dụng các đường dẫn UNC.
ninjalj

0

Hai điều tôi muốn chỉ ra -

  1. Các ổ đĩa cứng trong linux thực sự theo cách được gán các chữ cái / tên, như / dev / sdb1. Nhưng chúng có thể được gắn ở bất cứ đâu để đạt được từ cấu trúc đơn / gốc
  2. Lý do phổ biến nhất mà mọi người (bao gồm cả tôi trong quá khứ) có các ổ đĩa riêng trong Windows là để có một tài liệu, nhạc, chương trình, v.v. để Windows chắc chắn cần phải được cài đặt lại hoặc thay thế, có thể là nâng cấp hoặc vi rút lỗi hệ thống tập tin, vẫn có quyền truy cập vào các tập tin đó. Tôi không gặp vấn đề này trong linux - hệ thống tệp đáng tin cậy hơn nhiều, hệ điều hành không bị hỏng trừ khi do một số hành động trực tiếp hoặc lỗi từ phía tôi (ooh! Một repo cạnh chảy máu, hãy thử điều đó!) Và nâng cấp FAR đơn giản hơn. Và, trong trường hợp hiếm hoi tôi phải cài đặt lại, vì tất cả phần mềm đều có sẵn thông qua repos hoặc ppa mà tôi đã thêm (và tôi có thể dễ dàng sao chép thư mục nhà của mình bằng đĩa trực tiếp),

2
Bạn đang kết hợp ổ đĩa cứng và hệ thống tệp trong điểm đầu tiên của bạn. Nếu bạn gắn kết / dev / sdb1 tại một số điểm trong hệ thống tệp, bạn có thể truy cập các tệp trên ổ đĩa. Nếu bạn mở / dev / sdb1 trực tiếp, bạn sẽ thấy các khối đĩa thô. Nói chung không hữu ích lắm, đặc biệt nếu bạn sử dụng các hệ thống tệp được mã hóa.
doneal24

Tôi đã cố gắng liên hệ nó theo cách mà người dùng Windows có thể hiểu. C: cũng không phải là ổ cứng trong Windows, nhưng mọi người đều gọi nó là như vậy
Drake Clarris

1. Bạn vẫn có thể giữ các tập tin của bạn mà không có chữ cái. 2. Trong các hệ thống POSIX, một ổ đĩa cứng có thể được phân vùng toàn bộ mà không có bảng phân vùng và ổ đĩa ngón tay cái có thể có một bảng phân vùng. Tên.
Behrooz

0

Nếu bạn nhìn lại lịch sử, bạn cũng có thể thấy rằng Unix bắt đầu tại thời điểm 8 hệ thống băng theo dõi cho âm thanh và 9 hệ thống dữ liệu theo dõi của IBM (8 rãnh / 8 bit cho dữ liệu, một cho tương đương). Về mặt kỹ thuật rất giống nhau.

Vào thời điểm đó, thông tin về vị trí của các tệp được lưu trữ trong các phần của thông tin trên băng và chuyển tiếp và lùi được xác định khi bạn đọc dữ liệu từ băng (như tệp, có chữ ký bắt đầu và chữ ký cuối); nó cũng giải thích cho bạn lý do tại sao bạn không chỉ có một FAT khi bắt đầu ổ đĩa mà bạn có nhiều để tăng tốc độ tra cứu. Và nếu bạn có nhiều ổ đĩa, chúng sẽ được liên kết bên trong / dev và thông qua địa chỉ của tệp bạn đã di chuyển giữa các thiết bị.

Tôi tin rằng bạn có thể có quan điểm rằng nó đã bắt đầu đơn giản sớm hơn và quyết định đằng sau khu vực MS Dos (CP / M) và sau đó Windows NT chỉ liên quan đến các ký tự ổ đĩa chính của VM thay vì một điểm nhập duy nhất bởi vì tại thời điểm nó nhìn hiện đại hơn, số lượng dữ liệu ngày nay không tồn tại và họ không nghĩ rằng cuối cùng bạn sẽ không có đủ ký tự ổ đĩa hoặc nó sẽ bị lộn xộn.

Bài tập 9-Track-DriveDrive Letter

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.