Liệu một hệ thống tập tin có thể nhìn thấy các thiết bị lưu trữ dưới dạng một mảng byte (rất lớn) không?


12

Tôi muốn biết làm thế nào để một hệ thống tập tin ghi và đọc từ một thiết bị lưu trữ.

Tôi nghĩ rằng đây là cách nó hoạt động:

Một hệ thống tệp không truy cập trực tiếp vào thiết bị lưu trữ mà thay vào đó, thiết bị lưu trữ được trình bày (bởi trình điều khiển thiết bị của thiết bị lưu trữ) cho hệ thống tệp dưới dạng một mảng byte (rất lớn).

Ví dụ, nếu hệ thống tệp muốn truy cập vào đĩa cứng, nó sẽ chỉ truy cập vào mảng byte đại diện cho đĩa cứng.

Bằng cách này, một hệ thống tệp có thể hoạt động với mọi loại thiết bị lưu trữ (đĩa cứng truyền thống, SSD, ổ flash USB, v.v.) và chỉ trình điều khiển thiết bị cho thiết bị lưu trữ được thay đổi.

Hình ảnh này cho thấy những gì tôi vừa giải thích:

nhập mô tả hình ảnh ở đây

Tôi có đúng theo cách hiểu của tôi không?

Câu trả lời:


15

Trên Linux (và 1980 kỷ nguyên Unixes), một thiết bị lưu trữ (khá thường xuyên một phân vùng đĩa trên một số đĩa cứng , hoặc trên một số SSD ) là một khối thiết bị (xem này ) như vậy là một [phụ] chuỗi các khối (đó là đơn vị cơ bản của I / O vật lý ). Kích thước khối vật lý phụ thuộc vào phần cứng (các đĩa IDE cũ có kích thước khối 512 byte, các đĩa SATA lớn mới có kích thước khối là 4Kbyte, đọc wikipage Định dạng nâng cao ) và khi bạn tạo một hệ thống tệp (ví dụ: mkfsxem mke2fs (số 8)) bạn có thể chỉ định kích thước khối logic là bội số (thường là công suất nhỏ bằng hai, bao gồm 1) của kích thước khối vật lý đó. Đọc cũng về địa chỉ khối logic .

Trong quá khứ (nghĩ về các máy trạm Sun3 của những năm 1990), đĩa được làm bằng hình trụ với các đầu được tổ chức trong các ngành (đọc wikipage CHS ), với một khu vực chứa một khối. Ngày nay, những thứ này vẫn còn nhưng là một vật phẩm nhân tạo được cung cấp bởi bộ điều khiển đĩa cứng (mạch trên chính đĩa). Trong một số hệ điều hành, trình điều khiển thiết bị khối đã lên lịch lại và sắp xếp lại các yêu cầu IO để giảm thiểu chuyển động đầu đĩa và độ trễ quay .

Bằng cách này, một hệ thống tệp có thể hoạt động với mọi loại thiết bị lưu trữ (đĩa cứng truyền thống, SSD, ổ flash USB, v.v.) và chỉ trình điều khiển thiết bị cho thiết bị lưu trữ được thay đổi.

Có, nhưng cái ác nằm ở chi tiết (ví dụ đọc về TRIMViết khuếch đại , cụ thể cho SSD). Và các chi tiết rất quan trọng, vì vậy việc thực hiện thực tế ít đơn giản hơn con số của bạn. Đọc thêm về các hệ thống tệp (và nghĩ về các hệ thống tệp phân cụm & từ xa bao gồm SMB & NFS ; cũng đọc về Trình quản lý khối tin hợp lý ).

Đọc hệ điều hành: Ba phần dễ dàng (và phần kiên trì của nó ).

Lưu ý rằng các thiết bị khối đã biến mất trong FreeBSD (thực sự cung cấp một sự trừu tượng hóa chung cho các thiết bị ký tự và khối). Tôi nghi ngờ rằng ngay cả trên Windows, HĐH cũng biết về phân vùng, kích thước khối, v.v. (nhưng bạn nên kiểm tra).


Windows cũng xử lý các phân vùng trên đĩa và mỗi phân vùng có thể sử dụng một hệ thống tệp khác nhau (có thể là FAT-32 trên một và NTFS trên một cái khác). Hệ thống tệp có thể truy cập vào các phân vùng ở cấp độ khối hoặc các khối có thể được kết hợp thành "cụm". Trên bất kỳ phân vùng nhất định, kích thước cụm sẽ được cố định.
Simon B

Tôi gần như biết điều đó, bởi vì MSDOS chủ yếu đã làm.
Basile Starynkevitch

Trên thực tế, FreeBSD vẫn sử dụng cái mà bạn gọi là "thiết bị chặn". Không có cách nào để truy cập vào một đĩa cứng ngoài một mảng lớn các khối. Chúng chỉ được gọi là ký tự / thiết bị thô trên FreeBSD. Họ vẫn truy cập vào thiết bị như một mảng lớn các khối. Điều duy nhất còn thiếu trong FreeBSD là bộ nhớ đệm ở cấp thiết bị, không cần thiết vì hệ thống tệp đã cung cấp bộ đệm.
juhist

3

Tất cả những gì Basile Starynkevitch nói là chính xác. Tôi sẽ thêm một chút nữa. Thật vậy, ổ đĩa là ổ đĩa "chặn", nhưng thiết bị khối (và nhiều thiết bị khác) đã được trình bày dưới hai dạng: "thô" và "nấu chín". Các thiết bị thô chỉ có thể được xử lý trong các khối là bội số của kích thước khối lưu trữ riêng của chúng. Vì vậy, một thiết bị đĩa thô chỉ có thể được đọc hoặc ghi một hoặc nhiều khối tại một thời điểm, không chỉ một hoặc hai byte. Các thiết bị đã nấu thêm một lớp cho phép các hoạt động nhỏ hơn như vậy, cũng như các tính năng khác.

Các hệ thống tệp làm việc với các thiết bị thô, và do đó thấy chúng không phải là một mảng lớn byte, mà là một mảng lớn của các khối, như BS giải thích.

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.