STORAGE [NTFS - Lab 2] Cơ chế ghi đọc dữ liệu trong Volume NTFS

yh

Super Moderator
Để hiểu rõ cơ chế đọc ghi dữ liệu trong Volume NTFS thì trong bài này chúng ta sẽ đi qua 4 phần chính:
1. Mô hình I/O của hệ thống NTFS cách tổng quát
2. Log và Cache
3. Follow dữ liệu Object đến bảng MFT
4. Dữ liệu trong các bản ghi record MFT



Trong framework của hệ thống Windows I/O system, NTFS và các hệ thống tệp khác có trình điều khiển loadable device drivers chạy ở kernel mode. Chúng được gọi gián tiếp bởi các ứng dụng sử dụng Windows hoặc các API I / O khác.
1630175079303.png


Các trình điều khiển phân lớp chuyển các yêu cầu I / O cho nhau bằng cách gọi Windows executive's I/O manager. Việc dựa vào I / O manager làm trung gian cho phép mỗi trình điều khiển duy trì tính độc lập để có thể tải hoặc dỡ các lệnh I/O mà không ảnh hưởng đến các trình điều khiển khác. Ngoài ra, trình điều khiển NTFS tương tác với ba thành phần điều hành khác của Windows, được hiển thị ở bên trái của Hình dưới, có liên quan chặt chẽ đến hệ thống tệp.

1630175098338.png


The log file service (LFS) là một phần của NTFS cung cấp các dịch vụ để duy trì nhật ký ghi đĩa. The log file LFS được dùng để recover 1 volume NTFS-fomatted khi hệ thống bị lỗi.

Trình quản lý bộ nhớ cache là thành phần của bộ điều hành Windows cung cấp dịch vụ bộ nhớ đệm trên toàn hệ thống cho NTFS và các trình điều khiển hệ thống tệp khác. Tất cả các hệ thống tệp được triển khai cho Windows đều truy cập vào các tệp được lưu trong bộ nhớ cache bằng cách ánh xạ chúng vào không gian địa chỉ hệ thống và sau đó truy cập vào bộ nhớ ảo.

Khi một chương trình cố gắng truy cập vào một phần của tệp không được tải vào bộ đệm (lỗi bộ đệm ẩn), trình quản lý bộ nhớ sẽ gọi NTFS để truy cập trình điều khiển đĩa và lấy nội dung tệp từ đĩa. Trình quản lý bộ nhớ đệm tối ưu hóa I / O của đĩa bằng cách sử dụng các chuỗi lazy writer threads để gọi trình quản lý bộ nhớ để chuyển nội dung bộ đệm vào đĩa như một hoạt động nền (ghi đĩa không đồng bộ).

NTFS triển khai tệp bằng các đối tượng object trên hệ thống windows. việc triển khai này cho phép các tệp được chia sẻ và bảo vệ bởi trình quản lý đối tượng, thành phần của Windows quản lý tất cả các đối tượng cấp độ executive-level.

Một ứng dụng tạo và truy cập các tệp giống như nó thực hiện các đối tượng Windows khác: bằng handle object. Vào thời điểm 1 yêu cầu I/O đến NTFS, trình quản lý đối tượng và hệ thống bảo mật của Windows đã xác minh rằng quá trình gọi có quyền truy cập đối tượng tệp đó. Trình quản lý I / O cũng đã chuyển xử lý tệp thành một con trỏ đến một đối tượng tệp. NTFS sử dụng thông tin trong đối tượng tệp để truy cập tệp trên đĩa.

1630175122297.png


NTFS theo sau một số con trỏ để đi từ đối tượng tệp đến vị trí của tệp trên đĩa. một đối tượng tệp, đại diện cho một lệnh gọi đến dịch vụ hệ thống tệp mở, trỏ đến một stream control blocks (SCB) cho thuộc tính tệp mà người gọi đang cố gắng đọc hoặc ghi. Như hình trên một quy trình đã mở cả thuộc tính dữ liệu chưa được đặt tên và luồng có tên (thuộc tính dữ liệu thay thế) cho tệp. Tất cả các SCB cho một tệp đều trỏ đến một cấu trúc dữ liệu chung được gọi là khối điều khiển tệp file control block (FCB). FCB chứa một con trỏ (tham chiếu tới tệp) tới bản ghi của tệp trong bảng tệp chính dựa trên đĩa (MFT).

Những bản ghi của tệp được lưu trong file Master file table có theo kiểu định dạng những nội dung chính như Standard information, File name, Data như hình dưới.

1630175139872.png


Standard information: Thông tin chính của tệp

File name: Tên tệp

Data: Nếu là thuộc tính thường trú (file kích thước nhỏ có thể vừa bản ghi 1Kb) thì nó sẽ được lữu liệu ở trong này luôn. Còn nếu file không thường trú (file size lớn hơn bản ghi) thì dữ liệu sẽ được tham chiếu tới một vùng khác trong đĩa ntfs. 1 file dữ liệu có thể nằm rải rác nhiều vùng khác nhau trên hệ thống đĩa không nhất thiết phải liền kề cluster (vì có những file khi chúng ta tạo nó nằm ở cluster này, sau đó ta ghi nhiều file nữa vào disk nó sẽ sử dụng những cluster kế file đó. Sau đó ta muốn chỉnh sửa thêm dữ liệu vào file này thì tất nhiên sẽ không có sẵn cluster trống kế bên cluster cũ nữa mà hệ thống sẽ tìm những cluster vùng trống và ghi vào đó. Sau đó nó sẽ lưu lại cluster của dữ liệu mới được ghi đó là bao nhiêu và sử dụng bao nhiêu cluster vào chỗ data trên recoder mft của file đó. Ví dụ ảnh dưới dữ liệu data của File 16 nó nằm trong 2 vùng cluster khác nhau.

1630175163175.png


LCN: các vị trí thực trên đĩa (physical location cluster). LCN chỉ đơn giản là đánh số của tất cả các cluster từ đầu tập đến cuối.

VCN: NTFS đánh số thứ tự cluster của 1 tệp theo thứ tự từ 0 đến m.
 
Top