Hình 4.6: Các recor du tiên trong MFT

Một phần của tài liệu Giáo trình -Lý thuyết hệ điều hành - chương 4 doc (Trang 58 - 66)

Mỗi record MFT bao gồm một tập các cặp (attribute header, value). Mỗi thuộc tính thường biểu diển bởi phần bắt đầu của giá trị thuộc tính, hoặc là tất cả, vì giá trị này có chiều dài thay đổi. Nếu giá trị thuộc tính ngắn thì nó sẽ được lưu ở record MFT, ngược lại nếu nó quá dài thì sẽ được lưu ở một nơi khác trên đĩa và tại record có một con trỏ trỏ đến địa chỉ này.

Mười sáu record đầu tiên của MFT được dành riêng cho các file metadata NTFS. Mỗi một record mô tả 1 file có thuộc tính và các block dữ liệu, giống như các file khác. Tên các file metadata này được bắt đầu bởi dấu ‘$’:

 Record đầu tiên (tên là $MFT) mô tả chính bản thân MFT. Đặc biệt, nó chỉ ra địa chỉ block, nơi lưu trữ bảng file (MFT), vì thế hệ thống có thể dễ dàng tìm thấy file MFT. Rõ ràng, Window 2000 cần phải có cơ chế để tìm thấy block đầu tiên của file MFT để tìm đến thông tin còn lại của hệ thống file. Cơ chế trên sẽ tìm đến block khởi động, nơi mà địa chỉ của nó được cài đặt lúc cài đặt hệ thống.

 Record 1 (tên là $MftMirr) chỉ đến một bản sao của phần đầu tiên của file MFT. Thông tin này là rất quan trọng vì vậy phải có 1 bản sao khác để khắc phục việc những block đầu tiên của file MFT thường bị bad.

 Record 2 (tên là $LogFile) chỉ đến một log-file. Khi thêm vào volume 1 thư mục mới hay khi xoá khỏi volume 1 thư mục thì hệ thống sẽ ghi lại sự thay đổi này vào log file trước khi thực hiện. Sự thay đổi về thuộc tính của các file cũng được ghi lại ở log file. Sự thay đổi về dữ liệu của người sử dụng không được ghi ở đây.

 Record 3 (tên là $volume) chỉ đến file chứa những thông tin về volume như kích thước volume, nhãn của volume và version của nó.

 Như đã đề vập ở trên, mỗi record MFT chứa dãy các cặp: thuộc tính header, giá trị. File Attribute chứa một bảng định nghĩa thuộc tính, nó định nghĩa các loại thuộc tính được hỗ trợ bởi windows 2000 trên volume. Thông tin của file này được chỉ bởi record 4 (tên là $Attr Def) của MFT.

 Kế tiếp là thư mục gốc, nó là 1 file và có kích thước tăng tuỳ ý. Nó được mô tả trong record 5 (tên là \) của MFT. Entry này được dự trữ cho thư mục gốc. Nó là một file chứa một chỉ mục của các file và thư mục được lưu trữ trong phần gốc của cấu trúc thư mục NTFS. Khi NTFS được yêu cầu để mở một file, thì nó bắt đầu tìm kiếm trong file của thư mục gốc. Sau quá trình mở file, NTFS lưu trữ sự tham chiếu MFT của file đó để nó có thể truy cập trực tiếp record MFT của file khi nó đọc hoặc ghi file sau đó.

 Không gian trống trên volume được theo dõi bởi 1 bitmap. Bitmap này là một file. Địa chỉ đĩa của file bipmap này được ghi ở record 6 (tên là $bitmap) của MFT.

 Record 7 chỉ đến file Bootstrap (có tên là $Boot): File này chứa mã bootstrap của windows 2000. Để hệ thống boot được, mã bootstrap phải được nạp vào một vị trí đặc biệt trên đĩa. Trong quá trình format đĩa hệ điều hành định nghĩa vùng này như là một byte bằng cách tạo ra một file record cho nó. File boot cũng như các file metadata NTFS, cũng có thể được bảo vệ riêng bằng các công cụ của mô tả bảo mật mà nó được áp dụng cho tất cả các đối tượng windows 2000.

 Record 8 (có tên là $BadClus) chỉ đến một file, file này được dùng để lưu trữ danh sách liên kết các block (cluster) bị bad trên volume.

 Record 9 (tên file là $Secure): chỉ đến file chứa thông tin bảo mật, file này lưu trữ cơ sở dữ liệu về các mô tả bảo mật trên toàn bộ volume. Các file và thư mục NTFS có thể có một thiết lập mô tả bảo mật riêng, nhưng NTFS lưu trữ các thiết lập này trong một file chung, nó cho phép các file và các thư mục có cùng thiết lập bảo mật tham chiếu đến cùng một mô tả bảo mật. Trong nhiều môi trường, toàn bộ cây thư mục có cùng một thiết lập bảo mật, nên cơ chế này mang lại nhiều thuận lợi trong việc tiết kiệm không gian lưu trữ các mô tả bảo mật.

 Record 10 (tên là $Upcase): chỉ đến file case mapping, file này chứa bảng chuyển đổi giữa kí tự thường và kí tự hoa.

 Cuối cùng, record 11 (tên là $Extend) chỉ đến thư mục, thư mục này chứa các file hỗn hợp như: hạn ngạch đĩa (Quotas), các định danh đối tượng (Object identifier), ...

 4 record MFT cuối cùng dự trữ cho việc sử dụng sau này.

Khi lần đầu tiên truy cập volume, NTFS phải Mount nó, tức là đọc metadata từ đĩa và xây dựng cấu trúc dữ liệu bên trong để nó có thể xử lý các truy cập từ các ứng dụng. Để mount volume, NTFS tìm trong boot sector địa chỉ vật lý của MFT. Theo trên, record file riêng của MFT là entry đầu tiên trong MFT, record file thứ hai trỏ đến một file được định vị ở vùng giữa đĩa, đó là MFT mirror (tên là $MftMir). Khi NTFS tìm thấy record file của MFT, nó lấy được những thông tin ánh xạ từ VNC-to-LCN trong thuộc tính data và lưu vào bộ nhớ để chuẩn bị cho các quá trình ghi/đọc file sau này.

Các Record File

Hệ thống file NTFS lưu trữ các file như là một tập các cặp thuộc tính/giá trị (attribute/value), một trong số đó là dữ liệu nó chứa (được gọi là thuộc tính dữ liệu không tên). Các thuộc tính của một file bao gồm tên file, thông tin time stamp và có thể là các thuộc tính có tên được thêm vào. Hình 4.19.a sau đây cho thấy một record MFT cho một file nhỏ: có 3 thuộc tính: Standard Information (thông tin chuẩn), Filename (tên file) và Data (dữ liệu).

Mỗi thuộc tính file được lưu trữ như là một dòng tách biệt của các byte trong phạm vi file. Nói cách khác NTFS không đọc ghi các file mà nó chỉ đọc ghi các dòng thuộc tính. NTFS cung cấp các thao tác thuộc tính như: create, delete, read (byte range), write (byte range). Các dịch vụ ghi đọc thường thao tác trên các thuộc tính dữ liệu không đặt tên. Tuy nhiên, một lời gọi có thể chỉ ra một thuộc tính dữ liệu khác bằng cách sử dụng cú pháp dòng dữ liệu được đặt tên.

Cả NTFS và FAT đều cho phép mỗi tên file trong đường dẫn có thể dài đến 255 kí tự, trong đó có cả các kí tự unicode và các dấu phân cách khác. Để tương thích với các ứng dụng 16 bít của DOS, khi có file với tên file dài được tạo ra thì windows 2000 sẽ tự động sinh ra một tên file theo kiểu của DOS (tên file 8.3). Tên theo kiểu DOS được lưu trữ trong cùng một record trong MFT với tên file NTFS (tên file dài), vì thế nó tham chiếu đến cùng một file.

Hình 4.19.b: Một record MFT có chứa tên MS_DOS

Windows 2000 tạo ra tên file theo kiểu DOS từ tên file dài tương tự như cách mà hệ điều hành windows98 đã làm. Tên MS_DOS được dùng để ghi, đọc, copy một file.

Thuộc tính thường trú và thuộc tính không thường trú

Với các file có kích thước nhỏ thì tất cả thuộc tính và giá trị của nó được chứa trong một record trong MFT. Khi giá trị của thuộc tính được lưu trực tiếp trong MFT thì thuộc tính đó được gọi là thuộc tính thường trú. Thuộc tính thông tin chuẩn và thuộc tính chỉ mục gốc thường được định nghĩa là thuộc tính thường trú.

Standard

Information Filena me

Data ata

Hình 4.19.a: Một record MFT cho một file nhỏ, có 3 thuộc tính

Hình 4.20.a: Header và value của thuộc tính thường trú

Mỗi thuộc tính đều bắt đầu với một header, header này chứa thông tin về thuộc tính, đó là thông tin mà NTFS dùng để quản lý thuộc tính. Header cho biết các thông tin liên quan đến giá trị của nó như là có phải là thường trú (RESIDENT) hay không, offset từ header đến giá trị của thuộc tính, độ dài (length) giá trị của thuộc tính, vv. Hình 4.20.b sau đây cho thấy thuộc tính filemane gồm có header là “RESIDENT” + Offset:8h + Length:14h và value là MYFILE.DAT.

Khi giá trị của thuộc tính được lưu trữ trong record MFT thì thời gian đọc nội dung của một file của NTFS sẽ được giảm xuống, vì nó không phải tìm danh sách các cluster chứa nội dung của file dựa vào việc phân tích bảng FAT như trong các hệ thống file FAT, mà chỉ cần đọc ngay giá trị tại các cluster trên đĩa chứa nội dung của file, danh sách các cluster nay được ghi ở phần giá trị của thuộc tính.

Thuộc tính cho các thư mục nhỏ cũng giống như thuộc tính của các file nhỏ, nó có thể thường trú trong MFT. Hình sau đây là một record MFT cho thư mục nhỏ:

Hình 4.20.b: Một record MFT cho thư mục nhỏ

Trong đó thuộc tính Index root chứa một chỉ mục của các tham chiếu đến các file và các thư mục con trong thư mục.

Trong thực tế nội dung của một thư mục, gồm các file và các thư mục con trong nó, không thể nén thành một record MFT có kích thước cố định 1MB. Nếu một thuộc tính đặc biệt, thuộc tính dữ liệu của file chẳng hạn, là quá lớn để chứa hết trong một record MFT thì NTFS sẽ cấp phát các cluster riêng cho dữ liệu của thuộc tính từ MFT. Vùng này được gọi là Run (hay là phạm vi). Nếu giá trị của

thuộc tính sau đó phát triển, nội dung của file tăng lên chẳng hạn, thì NTFS sẽ định vị một Run khác cho dữ liệu được thêm vào. Các thuộc tính mà giá trị của nó được lưu trữ trong các Run chứ không phải trong các record MFT được gọi là các thuộc tính không thường trú. Hệ thống file sẽ quyết định có hay không một thuộc tính cụ thể là thường trú hay không thường trú.

Khi một thuộc tính là không thường trú thì header của nó sẽ chứa các thông tin mà NTFS cần để tìm đến giá trị của thuộc tính trên đĩa. Hình sau đây cho thấy thuộc tính dữ liệu không thường trú được lưu trữ trong 2 Run.

Hình 4.20.c: Record cho một file lớn với 2 Run

Trong số các thuộc tính chuẩn (standard attribute), chỉ có các thuộc tính có thể tăng lên là có thể trở thành không thường trú. Các thuộc tính thông tin chuẩn và tên file luôn luôn là thường trú.

Hình 4.20.d: Record MFT cho thư mục lớn với chỉ mục filename không thường trú

Một thư mục lớn có thể có các thuộc tính không thường trú. Chúng ta hãy xem hình say đây, ta thấy record MFT không đủ chỗ để lưu trữ hết Index của các file chứa trong một thư mục lớn. Một phần của Index được lưu trũ trong thuộc tính Index Root, phần còn lại được lưu trong các Run không thường trú được gọi là vùng đệm chỉ mục (Index Buffer).

NTFS theo dõi các Run bằng các cặp ánh xạ VCN-to-LCN. Các LCN đánh số thứ tự của các cluster trên toàn volume từ 0 đến n. Các VCN đánh số các cluster riêng cho từng file từ 0 đến m. Xem hình 4.20.e sau đây:

Hình 4.20.e: Các VCN cho thuộc tính dữ liệu không thường trú Nếu file này có nhiều hơn 2 Run thì Run thứ 3 sẽ bắt đầu với VCN 8. Xem hình sau đây, header của thuộc tính dữ liệu chứa các ánh xạ VCN-to-LCN cho 2 Run ở đây, nó cho phép NTFS dễ dàng tìm đến các định vị cấp phát trên đĩa.

Hình 4.20.f: Các ánh xạ VCN-to-LCN cho thuộc tính dữ liệu không thường trú.

Hình 4.20.f chỉ ra các Run dữ liệu, các thuộc tính khác có thể lưu trữ trong các Run nếu record trong MFT không đủ chỗ để chứa chúng và nếu một file nào đó có quá nhiều thuộc tính dẫn đến không chứa đủ trong một record thì một record thứ 2 trong MFT được sử dụng để chứa các thuộc tính thêm vào. Trong trường hợp này một thuộc tính được gọi là danh sách thuộc tính (attribute list) sẽ được thêm vào. Thuộc tính attribute list chứa tên và mã loại cho mỗi thuộc tính của file và file tham chiếu của record MFT, là nơi thuộc tính được nạp. Thuộc tính attribute list được cung cấp cho các trường hợp: kích thước file tăng lên hoặc file bị phân mảnh, dẫn đến một record MFT đơn không thể chứa hết các ánh xạ VCN-to-LCN cần thiết để tìm tất cả các Run của nó.

Tóm lại trong một record MFT có thể có các trường sau:

 Trường đầu tiên của một record MFT là record header, theo sau đó là các cặp header và value của các thuộc tính. Record header chứa 1 mã số sử dụng để kiểm tra tính hợp lệ, số kế tiếp được cập nhật mỗi khi record được sử dụng lại cho

file mới, các tham chiếu đến file, số byte hiện tại trong record được sử dụng, nhận dạng (chỉ số, dãy số liên tiếp) của record cơ sở (chỉ sử dụng cho record mở rộng), và 1 số trường khác. Sau record header là header của thuộc tính thứ nhất và giá trị của thuộc tính thứ nhất, header của thuộc tính thứ hai và giá trị của thuộc tính thứ hai,...

 NTFS định nghĩa 13 thuộc tính có thể xuất hiện ở các record MFT. Chúng được liệt kê ở bảng sau đây. Mỗi record MFT bao gồm 1 dãy các header thuộc tính, chúng được đồng nhất với phần đầu của thuộc tính và cho biết độ dài và vị trí của trường giá trị cùng với trạng thái cờ và một số thông tin khác. Thông thường, giá trị thuộc tính nằm ngay sau các header của chúng, nhưng nếu giá trị này quá dài để đặt trong 1 record MFT, thì chúng được đặt vào 1 block đĩa tách rời. Thuộc tính như vậy được gọi là thuộc tính không thường trú. Một vài thuộc tính như là tên, có thể được lặp lại, nhưng tất cả các thuộc tính phải được đặt trong 1 hàng cố định trong recorrd MFT. Các header cho thuộc tính thường trú có độ dài 24 byte; đối với những thuộc tính không lưu trú là dài hơn vì chúng lưu thêm những thông tin để tìm thuộc tính trên đĩa.

Thu c tính Mô tả

Standard information

Các bítcờ, timestamp,...

File name Tên file trong Unicode: có thể lặp lại đối với tên DOS

Security descriptor Đã lỗi thời. Thông tin bảo mật trong $extend$Secure

Attribute list Vị trí của các MFT record thêm vào nếu cần Object ID 64-bit, file được nhận biết là duy nhất trên volume Reparse point Dùng cho các liên kết tăng dần và tượng trưng Volume name Tên của volume này (chỉ sử dụng trong $Volume) Volume information Phiên bản của Volume (chỉ sử dụng trong

$Volume)

Index root Được sử dụng cho các thư mục

Index allocation Được sử dụng cho các thư mục rất lớn Bitmap Được sử dụng cho các thư mục rất lớn Logged utility

stream

Điều khiển kết nối đến $LogFile Data Dữ liệu luồng; có thể lặp lại nhiều lần

Bảng 4.7: Các thuộc tính sử dụng trong record MFT

 Trường thông tin chuẩn (Standard Information) của file bao gồm: thông tin bảo mật, timestamp, các liên kết cố định, bít chỉ đọc và bítlưu trữ, vv. Nó

là trường có kích thước cố định và luôn hiện hữu.

 Trường tên file (File Name) là một chuỗi mã Unicode có độ dài thay đổi được. Để tạo các file với các tên không phải là tên MS-DOS gần với các ứng dụng 16-bítcũ, các file cũng có thể có tên 8+3 của MS-DOS. Nếu tên file thực sự tuân theo quy tắc đặt tên 8+3 của MS-DOS, thì tên file MS_DOS phụ sẽ không được sử dụng.

 Trong NT 4.0, thông tin bảo mật (Security) có thể đưa vào một thuộc tính nhưng trong Windows 2000 tất cả được đưa vào một file riêng, vì thế nhiều file có thể chia sẻ một phần bảo mật.

 Danh sách thuộc tính (Attribute List) là cần thiết nếu thuộc tính không đặt trong record MFT. Thuộc tính này là để tìm ra các record mở rộng. Mỗi mục vào của dãy thuộc tính chứa một chỉ số 48-bíttrong MFT gọi đó là record mở rộng và một dãy số 16-bítcho phép kiểm tra sự phù hợp của record mở rộng và record cơ sở.

 Thuộc tính định danh đối tượng ID (Object Identifer) của đối tượng làm cho tên file là duy nhất.

 Trường peparse point gọi là các thủ tục phân tách tên file để thực hiện

Một phần của tài liệu Giáo trình -Lý thuyết hệ điều hành - chương 4 doc (Trang 58 - 66)

Tải bản đầy đủ (PDF)

(75 trang)