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ú.
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
Click to buy NOW!
P
D
F
-
X
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
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
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
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ứ
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
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
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
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 thao tác đặc biệt nào đó. Kỹ thuật này được sử dụng trong cài đặt và liên kết
biểu tượng.
Hai thuộc tính volume (Volume Name và Volume Information) chỉ sử
dụng để xác định volume.
Ba thuộc tính tiếp theo (Index Root, Index Allocation và Bitmap) được
sử dụng cho việc cài đặt các thư mục.
Thuộc tính Logged utility stream được sử dụng bởi hệ thống file mã
hoá.
Cuối cùng, là thuộc tính dữ liệu. Một dãy tên file nằm trong thuộc tính
heard. Tiếp theo header là một danh sách các địa chỉ đĩa mà chúng được gọi là
block chứa file, hay chỉ cho các file vài trăm byte của riêng nó. Trong thực tế, đặt
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
Danh sách các block đĩa chứa nội dụng của một file được mô tả bởi một
record trong MFT (đối với file nhỏ) hoặc bởi một dãy tuần tự các record trong
MFT, có thể không liên tiếp nhau (đối với file lớn). Mỗi record MFT dùng để mô tả
một dãy tuần tự các block logic kề nhau. Mỗi record MFT trong trường hợp này bắt
đầu với một header lưu địa chỉ offset của block đầu tiên trong file. Tiếp đến là địa
chỉ offset của block đầu tiên mà không nằm trong record. Ví dụ nếu có một file
được lưu tại 2 đoạn block là: 0 – 49 và 60 – 79 thì record đầu tiên có một header
của (0, 50) và sẽ cung cấp địa chỉ đĩa cho 50 block này và record 2 sẽ có một
header của (60, 80) và sẽ cung cấp địa chỉ đĩa cho 20 block đó. Tiếp sau mỗi record
header là một hay nhiều cặp, mỗi cặp lưu một địa chỉ của block đĩa bắt đầu đoạn
block và số block có trong đoạn (độ dài của một Run).
Hình sau đây là một record MFT chứa thông tin của một file.
Header
Header Run #1 Run#3
Infor about data blocks
(thông tin về các block dữ liệu)
Run#2
64-65 80-82
Các block đĩa
0
9
20
64
80
2 3 4
20-23
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
Run#
m
Record m
ở rộng
210
7
10
6
10
5
Run
#k+1 Run #nRecord mở rộng
1
Hình 4.22: Các record MFT của một file lớn
Một vấn đề nảy sinh là nếu cần quá nhiều record MFT thì sẽ không đủ chổ
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
trong MFT cơ sở để liệt kê tất cả các chỉ mục của chúng. Có một giải pháp cho vấn
đề này là thực hiên không lưu danh sách phần đuôi mở rộng của các record MFT
(chẳng hạn, được lưu trử trên đĩa thay vì trên bản ghi MFT cơ sở). Lúc đó, kích
thước của file có thể phát triển lớn đến một mức cần thiết.
Một số kỹ thuật được hỗ trợ bởi hệ thống file NTFS
Lập bảng chỉ mục
Trong hệ thống file NTFS, một danh mục file là một chỉ mục đơn của các tên file,
đó là một tập các tên file (cùng với các tham chiếu file của chúng) được tổ chức
theo một cách đặc biệt để tăng tốc độ truy xuất file. Để tạo một danh mục, NTFS
lập chỉ mục cho thuộc tính filename của các file trong thư mục. Một record cho thư
mục gốc của volume được đưa ra ở hình 4.23 sau đây.
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
thư mục.
Thuộc tính index allocation ánh xạ các VCN của cả Run index buffer mà nó
chỉ báo nơi index buffer thường trú trên đĩa. Thuộc tính bitmap theo dõi các VCN
trong index buffer là đang được sử dụng hay đang rỗi. Hình trên cho thấy một entry
file trên VCN, nhưng các entry filename thực tế được đóng gói trong mỗi cluster.
Một index buffer 4Kb có thể chứa từ 20 đến 30 entry filename.
Cấu trúc dữ liệu cây b+ là một kiểu cây cân bằng, nó là ý tưởng cho việc tổ
chức sắp xếp dữ liệu được lưu trữ trên đĩa bởi vì nó cực tiểu số lần truy cập đĩa cần
thiết để tìm đến một entry. Trong MFT, một thuộc tính index root của thư mục
chứa nhiều filename mà nó đóng vai trò như là các chỉ mục vào cấp thư hai của cây
b+. Mỗi filename trong thuộc tính index root có một con trỏ tùy chọn được kết hợp
với nó để chỉ đến index buffer. Index buffer mà nó chỉ đến chứa các filename với
giá trị (về mặt tự điển) ít hơn sở hữu của nó. Trong hình trên, file4 là entry cấp đầu
tiên trong cây b+, nó chỉ đến một index buffer chứa các filename mà ít hơn chính
nó, đó là cá filename file0, file1, và file3.
Lưu trữ tên file trong cây b+ mang lại nhiều thuận lợi. Việc tìm kiếm thư
mục sẽ nhanh hơn vì filename được lưu trữ theo thứ tự được sắp xếp. Và khi một
phần mềm cấp cao đếm các file trong thư mục, NTFS sẽ trả lại tên file vừa được
sắp xếp.
NTFS cũng cung cấp sự hỗ trợ cho chỉ mục dữ liệu bên cạnh filename. Một
file có thể có một đối tượng ID được gán cho nó, ID của file được lưu trữ trong
thuộc tính $OBJECT_ID của file. NTFS cung cấp một API cho phép các ứng dụng
mở file bằng các đối tượng ID của file thay vì dùng tên file của nó. Do đó, NTFS
phải tạo ra một tiến trình để chuyển đổi một đối tượng ID thành số file của file một
cách hiệu quả. Để thực hiện được điều này NTFS lưu trữ một ánh xạ của tất cả các
đối tượng ID của volume thành số tham chiếu file của chúng trong một file
metadata \$Extend\$ObjID. NTFS sắp xếp các đối tượng ID trong file nói trên như
chỉ mục filename mà ta đã dề cập ở trên. Chỉ mục đối tượng ID được lưu trữ như là
cây b+.
Ánh xạ bad-cluster
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
ngăn cản hệ thóng cấp bad-cluster cho các file khác. Sau đó NTFS tìm một cluster
mới cho file và thay đổi ánh xạ VCN-to-LCN để chỉ đến cluster mới.
Hình 4.24.a: Record MFT cho một File có bad-cluster
Ánh xạ lại bad-cluster trong hình sau. Cluster 1357 có chứa bad-sector, được
thay thế bằng cluster mới 1049.
Nếu bad-sector ở trên volume redundant, thì bộ phận quản lý volume sẽ khôi
phục dữ liệu và thay thế sector nếu có thể. Nếu không thể thay thế sector thì nó sẽ
trả về một cảnh báo cho NTFS và NTFS sẽ thay thế cluster chứa bad-sector đó.
Hình 4.24.b1: Ánh xạ lại bad-cluster
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m