Rắc rối với việc hiểu khái niệm gắn kết


13

Đọc cả hai Có nghĩa là gì khi gắn thiết bị trong Linux? hiểu "mount" như một khái niệm trong HĐH , tôi có một vấn đề trong đó nói rằng

Tất cả lưu trữ có thể truy cập phải có một vị trí liên quan trong cây thư mục duy nhất này. Điều này không giống như Windows trong đó (theo cú pháp phổ biến nhất cho đường dẫn tệp) có một cây thư mục cho mỗi thành phần lưu trữ (ổ đĩa). Gắn kết là hành động liên kết một thiết bị lưu trữ với một vị trí cụ thể trong cây thư mục.

Nhưng đã có một vị trí có thể truy cập để nói ổ đĩa cdrom dưới / dev / cdrom rõ ràng có trong hệ thống phân cấp thư mục. Vậy tại sao cần phải tạo một "điểm gắn kết" riêng biệt trong / media / cdrom? Tại sao truy cập trực tiếp từ / dev / cdrom là không thể? Tôi nghe nói rằng các tệp nút thiết bị giống như các tệp thông thường. Và đọc và viết cho họ cũng giống như các tập tin thông thường. Vì vậy, điều này có nghĩa là hệ thống tập tin trong cdrom không khả dụng nếu chúng ta truy cập nó từ / dev / cdrom. Và hệ thống phân cấp hệ thống tập tin (bên trong cdrom) "trở nên sống động" khi chúng ta "gắn kết" nó?

Câu trả lời:


11

Bạn có thể đọc hoặc ghi / dev / cdrom (ví dụ: sử dụng ddhoặc cat) nhưng khi bạn làm điều đó, bạn chỉ đọc hoặc ghi các byte thô của thiết bị. Điều đó có thể hữu ích trong các trường hợp khác nhau (như nhân bản một phân vùng), nhưng nhìn chung chúng tôi muốn xem các thư mục và tệp được lưu trữ trên thiết bị.

Khi bạn gắn một thiết bị, về cơ bản, bạn đang bảo kernel sử dụng một lớp phần mềm (trình điều khiển hệ thống tệp) để dịch các byte thô đó thành một hệ thống tệp thực tế. Do đó, việc gắn một thiết bị sẽ liên kết hệ thống tập tin trên thiết bị đó với hệ thống phân cấp thư mục.


8

Tôi nghĩ về điều này theo cách sau: mountlà một công cụ báo cho hệ thống diễn giải nội dung của một số tệp dưới dạng cây thư mục.

  • Hệ thống tệp có các thư mục và tệp và mỗi tệp là nhãn cho một số chuỗi byte.
  • /dev/cdrom là một tệp, nó đại diện cho chuỗi byte được lưu trữ trên CD.
  • Bạn có thể đọc chuỗi rất dài này trực tiếp, nhưng điều này không thực tế lắm ngoại trừ các mục đích đặc biệt (ví dụ: tạo một hình ảnh đĩa đầy đủ).
  • Chuỗi dài này có cấu trúc bên trong bổ sung: nó chứa một hệ thống tệp, trong đó có thông tin về những thư mục và tệp nào được lưu trữ và ở đâu trong chuỗi rất dài này.
  • Bằng cách sử dụng mount -t iso9660 /dev/cdrom /media/cdrom, bạn nói với hệ thống: "lấy chuỗi byte rất dài mà bạn có /dev/cdrom, diễn giải nó như một cây thư mục ở định dạng iso9660 và cho phép tôi truy cập nó dưới vị trí /media/cdrom".
  • Trong thực tế, điều này cũng hoạt động cho các tập tin thông thường. Bạn có thể tạo một tệp thông thường có chứa hình ảnh đĩa, sau đó sử dụng mountđể truy cập nó. Thử đi:
dd if = / dev / zero of = fs-image bs = 1M đếm = 50
mke2fs fs-hình ảnh
sudo mount fs-image / some / mount / point

(hai lệnh đầu tiên chỉ được yêu cầu lần đầu tiên, khi chuẩn bị tệp hình ảnh.)


Tại sao bạn cần mke2fs?
ADTC

Để tạo một hệ thống tập tin ext2 trống bên trong tập tin hình ảnh. Một hệ thống tệp trống không phải là tất cả các số không - nó có một số cấu trúc siêu dữ liệu và cố định, giống như một tài liệu Word hoặc LibreScript trống có kích thước khác không và chứa thông tin về ví dụ phông chữ mặc định và kích thước của trang.
Krzysztof Kosiński

Oh OK, đó là một hành động có khả năng phá hủy. Đề nghị bạn đề cập rằng lệnh này chỉ dành cho khởi tạo lần đầu tiên. :)
ADTC

5

/dev/cdromđề cập đến một tập tin thiết bị . Đây không phải là nội dung của bất kỳ đĩa nào bạn muốn đưa vào ổ đĩa quang, mà nó là một tham chiếu đến bit phần cứng (và có thể là trình điều khiển phần mềm) mà bạn có thể gọi để hiển thị cho bạn. Khi bạn mount /dev/cdromđến một số đường dẫn trong cây của bạn, bạn đính kèm nội dung của nó vào hệ thống tệp của bạn .

Vấn đề là - tôi thực sự không thể nghĩ ra cách nào khác để làm điều đó. Ngay cả trong Windows - mặc dù nó không rõ ràng - vẫn có sự trừu tượng hóa hệ thống tập tin cho \\?\volumename\. Nó đã cho tôi một phút để nhớ những gì mà nhìn như thế, và tôi thấy điều này googling nó :

... Tên âm lượng chỉ là một liên kết tượng trưng chỉ về một thiết bị âm lượng thực, thường ở dạng \Device\HarddiskVolume23. Có một ví dụ khác về thiết bị MS-DOS là ký tự ổ đĩa. Nếu ổ đĩa của bạn có ký tự ổ đĩa C :, thì bạn sẽ có một liên kết tượng trưng được gọi là \\?\C: trỏ đến một ổ đĩa thực trong \Device\HarddiskVolumeXXđịnh dạng.

Và vì vậy, có lẽ nó không khác biệt lắm - mặc dù tôi sẽ tranh luận ít phức tạp hơn - tôi nghĩ nó rõ ràng hơn . Chúng không phải là một và cùng một hệ thống, nhưng về cơ bản chúng cũng không khác nhau.

Có lẽ sự khác biệt quan trọng nhất giữa /dev/device/path/to/its/mountlà ở đường dẫn sau, một hệ thống tệp - một số phần mềm nhằm xử lý dữ liệu theo cách có tổ chức - đang diễn giải nội dung của cái trước. Bạn không thể đọc một đĩa - ai đó phải đọc nó cho bạn. Hệ thống tập tin diễn giải nội dung của thiết bị.


Điều này có phần sai lệch. Nếu bạn mở /dev/cdromtrong trình soạn thảo hex, nó thực sự chứa nội dung thô của CD-ROM. Bằng cách sử dụng, mountbạn chỉ cần yêu cầu HĐH diễn giải những nội dung đó dưới dạng cây thư mục.
Krzysztof Kosiński

0

Ngoài các mục được đề cập ở trên, trình điều khiển hoặc chương trình khác có thể lưu trữ dữ liệu từ thiết bị. Trên thiết bị đọc ghi, chẳng hạn như ổ cứng hoặc ổ ngón tay cái, dữ liệu được ghi vào thiết bị có thể chưa được ghi. Nhật ký hệ thống tập tin cũng có thể yêu cầu xóa nhật ký trước khi nó không nhìn thấy thiết bị nữa. Sau đó, bạn đã có các hệ thống tệp che phủ các hệ thống tệp khác, chẳng hạn như mật mã, cần biết khi nào hệ thống tệp cơ bản không còn khả dụng.

Cấp, cho một thiết bị chỉ đọc điều này có ý nghĩa ít hơn, nhưng nó vẫn được áp dụng.

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.