Các cấu trúc thư mục được lưu trữ trong hệ thống tập tin UNIX như thế nào?


8

Tôi đã đọc rằng mỗi thư mục lưu trữ nội dung của chúng (tệp và thư mục con) bằng cách sử dụng danh sách các cặp tên tệp và inode. Nhưng không có tài liệu tham khảo nào tôi nhận được nói về cách chúng được lưu trữ.

Chúng có được lưu trữ trên inode của thư mục mẹ của chúng, sử dụng các khối dữ liệu như một tệp bình thường hoặc có thể sử dụng các cách khác mà tôi không biết?

Cảm ơn bạn đã làm rõ.


Không có cách duy nhất làm thế nào Unix lưu trữ các tập tin. Tương tự như không có cách duy nhất để làm thế nào các cửa sổ lưu trữ các tập tin. Trong cả hai trường hợp, nó phụ thuộc vào hệ thống tập tin được sử dụng. (FAT, NTFS, ext2, UFS, ...)
Hennes

Đối với các hệ thống tệp, cấu trúc thư mục trên đĩa được xác định trong dirent.h và bạn phải sử dụng libcalls opendir / readdir / closir, v.v. để truy cập nội dung.
ott--

Câu trả lời:


10

Xem phần bên trong hệ thống tệp phác thảo một cách khá đơn giản phần bên trong của hệ thống tệp Unix điển hình.

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

Hầu hết các hệ thống tập tin Unix chứa

  • Một khối khởi động
  • Một siêu khối (hình học đĩa, bố cục phân vùng, số lượng inode, v.v.)
  • Khối inode
  • Khối dữ liệu

Hệ thống tập tin hiện đại chứa các cấu trúc bổ sung.

Một trong những điều trong siêu khối là vị trí của các nút cho thư mục gốc.

Một thư mục là một tập tin được định dạng đặc biệt. Như với tất cả các tệp thông thường, nó có các khối dữ liệu.

Bạn có thể thấy điều này trong Dự án Tài liệu Linux: Hệ thống tập tin

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

Bạn có thể sử dụng debugfsđể khám phá các cấu trúc này.


2
"Một thư mục là một tệp được định dạng đặc biệt. Như với tất cả các tệp thông thường, nó có các khối dữ liệu." Vì vậy, các thư mục được lưu trữ các cặp tên tệp inode (bảng ngoài cùng bên trái trên hình thứ 1 hoặc hàng trong hình thứ 2) trong các khối dữ liệu của chúng?
Oka

1
@Oka: Đúng vậy.
RedGrittyBrick

Vì vậy, để rõ ràng, thư mục là một tập tin, vì vậy nó được lưu trữ trong một khối dữ liệu. ext4Ví dụ, mỗi thư mục trong hệ thống tập tin (được biểu thị bằng chiều ext4_dir_entry_2dài 263 byte), một khối 4KB có thể lưu trữ khoảng 15 mục nhập thư mục?
campescassiano
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.