Tải bản đầy đủ (.doc) (29 trang)

Bài tập lớn tìm hiểu kiến trúc ổ đĩa NTFS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (399.85 KB, 29 trang )

MỤC LỤC

PHẦN 2 : NỘI DUNG..................................................................................................3
I. Sơ lược về NTFS....................................................................................................3
1. Tổ chức phân vùng trên đĩa cứng:..........................................................................3
2. NTFS là gì?........................................................................................................3
a. .Khả năng cứu dữ liệu:....................................................................................4
b. Bảo mật:.........................................................................................................5
c. Một số tính năng khác:...................................................................................5
3. Lịch sử phát triển NTFS.....................................................................................6
II. Hệ thống file NTFS...............................................................................................8
1. NTFS File System Driver (Bộ phận điều khiển hệ thống file NTFS).................8
2. Cấu trúc đĩa NTFS............................................................................................11
a. Partition Boot Sector.....................................................................................11
b. Cluster..........................................................................................................13
c. Master File Table – MFT.............................................................................15
d. File và thuộc tính của file.............................................................................20
e. Cấu trúc thư mục trong NTFS......................................................................25

PHẦN 1 : LỜI NÓI ĐẦU


PHẦN 1 : LỜI NÓI ĐẦU
Cùng với sự phát triển mạnh mẽ của nền kinh tế, một trong những lĩnh vực
đang phát triển nhanh nhất hiện nay là Công nghệ thông tin. Hầu như trong bất kì
lĩnh vực nào, ngành nghề nào cũng có mặt của những thiết bị điện tử, những chiếc
máy vi tính, và vai trò của nó là không thể thiếu. Để đáp ứng những yêu cầu làm
việc, máy tính càng ngày phải càng mạnh hơn, nhanh hơn, an toàn hơn, lưu trữ
được nhiều thông tin hơn. Do đó cần phải có cách tổ chức quản lý dữ liệu cải
tiến,tối ưu hơn. Hệ thống file NTFS ra đời có những ưu điển vượt trội so với các hệ
thống file trước đó các nhà phát triển hệ điều hành đưa ra như FAT12, FAT16,


FAT32, EXT,….
NTFS thay thế hệ thống tập tin FAT vốn là hệ thống tập tin ưa thích cho các hệ
điều hành Windows của Microsoft. NTFS có nhiều cải tiến hơn FAT và HPFS
(High Performance File System - Hệ thống tập tin hiệu năng cao) như hỗ trợ cải
tiến cho các siêu dữ liệu và sử dụng các cấu trúc dữ liệu tiên tiến để cải thiện hiệu
suất, độ tin cậy, và sử dụng không gian ổ đĩa, cộng thêm phần mở rộng như các
danh sách kiểm soát truy cập bảo mật (access control list-ACL) và bản ghi hệ thống
tập tin.
NTFS là viết tắt của “New Technology File System” (Hệ thống tập tin công nghệ
mới) là hệ thống tập tin tiêu chuẩn của Windows NT, bao gồm cả các phiên bản sau
này của Windows như Windows 2000, Windows XP, Windows Server 2003,
Windows Server 2008, Windows Vista, và Windows 7.
Vì thời gian tìm hiểu không nhiều và khả năng chuyên môn có hạn nên chưa thể
nghiên cứu thật sâu, kĩ càng về đề tài này. Rất mong được thầy giáo và bạn bè góp
ý để sản phẩm được hoàn thiện hơn.


PHẦN 2 : NỘI DUNG
Sơ lược về NTFS

PHẦN 2 : NỘI DUNG

I. Sơ lược về NTFS
1. Tổ chức phân vùng trên đĩa cứng:
Mỗi ổ đĩa cứng có thể được chia thành nhiều vùng riêng biệt được gọi là các phân
vùng (partition), ví dụ:
Partition 1

HDD
Partition 2

Partition 3

Partition 4

Thông tin về việc chia phân vùng được ghi trong sector đầu tiên của đĩa cứng
(Master Boot Record) và được gọi là Partition Table.
Mỗi phân vùng có thể được định dạng theo một dạng thức xác định để tổ chức
lưu trữ dữ liệu gọi là hệ thống file (File System). Có khá nhiều loại file system
tương ứng với hệ điều hành được sử dụng. Một số hệ điều hành có thể hỗ trợ
đọc/ghi nhiều loại file system khác nhau:
Hệ điều hành
File system hỗ trợ
DOS, Windows 95

FAT12/FAT16

Windows 98

FAT12/FAT16/FAT32

Windows NT

FAT12/FAT16/NTFS 1.2

Windows 2000

FAT12/FAT16/FAT32/NTFS 3.0

Windows XP/Windows Server
2003


FAT12/FAT16/FAT32/NTFS 3.0/NTFS
3.1

UNIX/Linux (tùy nhân)

FAT12/FAT16/FAT32/ext/ext2/ext3
Hệ điều hành và hệ thống file hỗ trợ

2. NTFS là gì?
NTFS (New Technology File System): Được giới thiệu cùng với phiên bản
Windows NT đầu tiên (phiên bản này cũng hỗ trợ FAT32). Với không gian địa chỉ


PHẦN 2 : NỘI DUNG
Sơ lược về NTFS
64 bit, khả năng thay đổi kích thước của cluster độc lập với dung lượng đĩa cứng,
NTFS hầu như đã loại trừ được những hạn chế về số cluster, kích thước tối đa của
tập tin trên một phân vùng đĩa cứng.
NTFS sử dụng bảng quản lý tập tin MFT (Master File Table) thay cho bảng FAT
quen thuộc nhằm tăng cường khả năng lưu trữ, tính bảo mật cho tập tin và thư
mục, khả năng mã hóa dữ liệu đến từng tập tin. Ngoài ra, NTFS có khả năng chịu
lỗi cao, cho phép người dùng đóng một ứng dụng “chết” (not responding) mà
không làm ảnh hưởng đến những ứng dụng khác. Tuy nhiên, NTFS lại không thích
hợp với những ổ đĩa có dung lượng thấp (dưới 400 MB) và không sử dụng được
trên đĩa mềm.
NTFS là hệ thống file có khả năng ghi lại được các hoạt động mà hệ điều hành
đã và đang thao tác trên dữ liệu. Nó có khả năng xác định được ngay những file bị
sự cố mà không cần phải quét lại toàn bộ hệ thống file, giúp quá trình phục hồi dữ
liệu trở nên tin cậy và nhanh chóng hơn.

Ngoài ra, NTFS còn có rất nhiều tiện ích chuyên sâu khác cho giới người dùng
cao cấp khác như “mount partition”, tạo “hard link” tới một file, hỗ trợ dùng
RAID...
NTFS được thiết kế để phù hợp với một số mục đích đặc biệt :
a. .Khả năng cứu dữ liệu:
NTFS sử dụng khái niệm “Thực hiện mức nguyên tử” (“Atomic transaction”) để
thực hiện tính tăng khôi phục dữ liệu hệ thống. Nếu một chương trình đưa ra các
yêu cầu làm thay đổi cấu trúc của hệ thống file NTFS như: thay đổi cấu trúc thư
mục, kéo dài file, tạo file mới..., NTFS sẽ thực hiện yêu cầu này, có 2 khả năng
xảy ra:
• Thành công tốt đẹp
• Quay lui lại trạng thái tốt trước đó nếu bị lỗi.

6 Nhóm 8 Nghiên cứu về kiến trúc NTFS


PHẦN 2 : NỘI DUNG
Sơ lược về NTFS
b. Bảo mật:
Hệ bảo mật trong NTFS được thừa kế trực tiếp từ mô hình hướng đối tượng trong
Kernel của Windows. Các đối tượng chính của kernel bao gồm:
- Files
- Thiết bị (devices)
- Đường ống (pipes)
- Công việc (jobs)
- Tiến trình (processes)
- Tiểu trình (threads)
- Sự kiện (events)
- Thư mục chia sẻ mạng (network shares)
- Dịch vụ (services)

- Khóa trong registry (registry keys)
- Máy in (printers) ….
Mỗi đối tượng trong kernel đều có một bảng mô tả bảo mật (security descriptor)
riêng. Mỗi khi một tiến trình yêu cầu mở file (hay mở bất kỳ đối tượng nào khác),
hệ thống bảo mật đọc và kiểm tra bảng mô tả bảo mật của đối tượng có phù hợp
với user name và password của người đang đăng nhập không, nếu phù hợp mới
cho phép mở đối tượng đó. Do vậy không một tiến trình nào có thể mở file mà
không được sự cấp phép của administrator hay của người tạo file. Hệ thống này
hoạt động tương đối hiệu quả với file vì đối với file, bảng mô tả bảo mật này được
ghi trực tiếp lên đĩa như một phần của file.
c. Một số tính năng khác:
-

Hỗ trợ tên file Unicode NTFS cho phép tên file lên tới 255 ký tự so
với 8.3 ký tự giới hạn qui ước của FAT.

-

Lưu trữ hiệu quả - một lần nữa, tại thời điểm NTFS được phát triển,
hầu hết máy tính cá nhân sử dụng FAT16, kết quả là đĩa làm việc
chậm chạp, kém năng suất. NTFS ngăn ngừa vấn đề này bằng cách


PHẦN 2 : NỘI DUNG
Sơ lược về NTFS
sử dụng một phương thức khác để phân phối không gian cho file so
với cách FAT đã làm.
-

Phá bỏ rào cản kích thước – không như FAT, một phân vùng cực đại

lớn nhất chỉ là 4GB, NTFS cho phép phân vùng lớn hơn vào khoảng
16 exabyte

-

Cơ chế đánh thứ tự (indexing)

-

Đánh dấu bad sectors động

-

Nén file (compression)

-

Lưu lại các thay đổi

-

Mã hóa (encryption)

-

Chống phân mảnh (defragmentation)

-

Hỗ trợ chỉ đọc (read-only)


3. Lịch sử phát triển NTFS
Microsoft bắt đầu phát triển hệ điều hành Windows NT. Hệ thống tập tin HPFS
của OS/2 có một số tính năng mới quan trọng. Khi Microsoft tạo ra hệ điều hành
mới, họ đã vay mượn nhiều khái niệm cho NTFS. Có lẽ do có chung nhiều khái
niệm nên HPFS và NTFS có cùng mã phân loại nhận dạng phân vùng ổ đĩa (07).
Có cùng một số nhận dạng là không bình thường khi có tới hàng chục mã có sẵn,
và các hệ thống tập tin ổ đĩa lớn khác có mã của riêng chúng. FAT có hơn 9 mã
(mỗi mã cho FAT12, FAT16, FAT32, vân vân). Các thuật toán trong đó xác định hệ
thống tập tin trong một kiểu phân vùng 07 phải thực hiện kiểm tra bổ sung. Đây
cũng rõ ràng rằng NTFS cũng dùng chung thiết kế kiến trúc cho Files-11 được sử
dụng bởi VMS. Điều này hầu như không đáng ngạc nhiên khi Dave Cutler là
người đứng đầu của cả VMS và Windows NT.
NTFS có 5 phiên bản được phát hành:


Phiên bản 1.0 (v1.0) với NT 3.1, phát hành giữa năm 1993



Phiên bản 1.1 (v1.1) với NT 3.5, phát hành cuối năm 1994

6 Nhóm 8 Nghiên cứu về kiến trúc NTFS


PHẦN 2 : NỘI DUNG
Sơ lược về NTFS


Phiên bản 1.2 (v1.2) với NT 3.51 (giữa năm 1995) và NT 4 (giữa

năm
1996) (đôi khi còn gọi là "NTFS 4.0", vì phiên bản OS là 4.0)



Phiên bản 3.0 (v3.0) của Windows 2000 ("NTFS V5.0")



Phiên bản 3.1 (v3.1) của Windows XP (mùa thu 2001; "NTFS
V5.1"),

Windows Server 2003 (mùa xuân 2003; đôi khi còn gọi là "NTFS V5.2"), Windows
Vista (giữa năm 2005) (đôi khi còn gọi là "NTFS V6.0") và
Windows Server 2008


II. Hệ thống file NTFS
1. NTFS File System Driver (Bộ phận điều khiển hệ thống file NTFS)
NTFS và các hệ thống file khác là những trình điều khiển thiết bị có
khả năng tải được chạy trong “kernel-mode” chúng được viện đẫn một
cách gián tiếp bởi các ứng dụng chạy trong Win32 hoặc những I/O API
khác ( như là POSIX). Trong hình dưới ,môi trường hệ thống phụ
Windows 2000 gọi hệ thống dịch vụ Windows 2000 mà lần lượt định vị
các bộ phận điều khiển chịu tải thích hợp và gọi chúng

Hình 1

Các thành phần của hệ thống vào ra trong Windows 2000


Các tầng bộ phận điều khiển thiết bị đi qua I/O yêu cầu đến một bộ
phận điều khiển khác bằng cách gọi trình quản lý thực thi vào-ra (I/O)
trong Windows 2000. Dựa vào trình quản lý vào-ra như đóng vai trò trung
gian cho phép mỗi bộ phận điều khiển để duy trì sự độc lập vì vậy nó có
thể tải vào hoặc chuyển đi mà không bị ảnh hưởng bởi các bộ phận điều
khiển khác.Thêm vào đó, bộ phận điều khiển NTFS tương tác với ba
thành phần thực thi khác trong Windows 2000. Dịch vụ file bản ghi (log
file service LFS) là một phần của NTFS mà cung cấp các dịch vụ để duy
trì một bản ghi các đĩa ghi. Việc ghi các file bản ghi LFS được sử dụng để
khôi phục lại đĩa đã dịnh dạng NTFS trong trường hợp hệ thống bị lỗi.
Log File Service
Log file service (LFS) là một sêri các thường trình “kernel-mode”
bên trong bộ phận điều khiển NTFS được NTFS sử dụng để truy nhập log
file. Mặc dù ban đầu được thiết kế để logging và dịch vụ khôi phục cho
hơn một máy khách, LFS chỉ được sử dụng bởi NTFS. Trình gọi – trong
trường hợp này là NTFS- đi qua
LFS một con trỏ tới một đối tương file mở mà định rõ một log file để truy
nhập. LFS hoặc là khởi chạy một log file mới hoặc là gọi bộ phận quản lý
cache trong


PHẦN 2 : NỘI DUNG
Windows 2000 để truy nhập log file hiện tại xuyên qua cache, trong hình
dưới đây.

Hình 2:

Log file service(LFS)

Bộ phận quản lý cache là một thành phần của Windows 2000

executive mà cung cấp systemwide trữ các dịch vụ cho NTFS và các bộ
phận quản lý hệ thống file khác, bao gồm cả bộ phận quản lý hệ thống file
mạng(servers và redirectors). Tất cả các hệ thống file cung cấp cho
Windows 2000 truy cập cached file bằng cách ánh xạ chúng vào trong hệ
thống không gian địa chỉ sau đó truy cập vào bộ nhớ ảo. Bộ phận quản lý
cache cung cấp giao diện hệ thống file chuyên dụng đến bộ phận quản lý
bộ nhớ trong Windows2000 cho mục đích này. Khi một chương trình cố
gắng truy cập vào một phần của file mà không được load vào cache(cache
miss) thì trình quản lý bộ nhớ gọi NTFS để truy cập vào bộ phận quản lý
đĩa và đạt được nội dung file từ đĩa. Trình quản lý cache tối ưu đĩa bằng
cách sử dụng “its lazy writer threads” để gọi trình quản lý bộ nhớ làm
sạch nội dung cache đến đĩa như là hoạt động nền (ghi đĩa không đồng
bộ).


Hình 3
Hình 3:

NTFS và các thành phần quan hệ

NTFS tham gia vào trong mô hình đối tượng Windows 2000 bằng
cách thi hành file như là đối tượng .Sự thi hành này cho phép được chia sẻ
và bảo vệ bởi trình quản lý đối tượng,một thành phần của Windows 2000
quản lý mọi mức thực thi đối tượng.

Hình 4:

Cấu trúc dữ liệu NTFS

NTFS đi theo vài con trỏ để có từ đối tượng hồ sơ đến sự định vị hồ

sơ trên đĩa. Hình 4 chỉ ra một đối tượng hồ sơ, mà đại diện một lời gọi
đơn tới dịch vụ hệ thống hồ sơ mở,trỏ vào một khối điều khiển dòng


PHẦN 2 : NỘI DUNG
(SCB) cho thuộc tính hồ sơ mà lời gọi đang cố gắng đọc hoặc viết. Trong
hình 4 một tiến trình đã mở cả thuộc tính dữ liệu không tên lẫn một dòng
có tên (thuộc tính dữ liệu xen kẽ) cho hồ sơ. Khối điều khiển dòng (SCB)
đại diện những thuộc tính hồ sơ riêng lẽ và chứa đựng thông tin về làm
sao để tìm thấy những thuộc tính đặc biệt bên trong hồ sơ.Tất cả SCB cho
một hồ sơ trỏ vào một cấu trúc dữ liệu chung gọi là một khối điều khiển
hồ sơ (FCB).Khối điều khiển hồ sơ (FCB) chứa đựng một con trỏ tới bản
ghi của hồ sơ trên bảng master file (MFT) trên nền đĩa .

2. Cấu trúc đĩa NTFS
Hình sau minh hoạ các lớp của NTFS sau khi định dạng :
Partition boot sector
Master File Table
System files

File area

a. Partition Boot Sector
Tại sector đầu tiên phân vùng NTFS, theo quy định của BIOS, có một
sector chứa mã khởi động và khối tham số đĩa của BIOS (BIOS Parameter
Block – BPB), được gọi là Boot Sector và được NTFS đặt tên cho file
tương ứng là $Boot. Cấu trúc này chứa những thông tin về cấu trúc đĩa
nên rất quan trọng đối với hệ thống như kích thước một sector, số sector
một cluster, số sector mỗi track... Nếu sector này bị hỏng thì rất có khả
năng cả phân vùng không thể truy nhập được. Do vậy, để phòng ngừa

trường hợp bị hỏng Boot Sector, hệ thống NTFS dành sector cuối cùng
của phân vùng để chứa bản sao của Boot Sector. Trong trường hợp Boot
Sector bị hỏng, hệ thống sẽ dùng bản sao này để thay thế. Khi bạn format
một phân vùng theo định dạng NTFS, trình format sẽ phân bố 16 sector
đầu tiên của phân vùng đó cho bootsector và một số thông tin khác. Boot
sector của một phân vùng NTFS có cấu trúc như sau :
Offset

Field Length

0x00

3 bytes

0x03
0x0B
0x24
0x54
0x01FE

8 bytes
25 bytes
48 bytes
426 bytes
WORD

Field Name
Lệnh JMP đến Bootstrap Code
OEM ID
BPB

BPB mở rộng
Bootstrap Code
Chữ kí của Hệ điều hành

Bảng 1 : Cấu trúc Boot Sector của phân vùng NTFS


Như ta có thể thấy, 3 bytes đầu tiên là lệnh nhẩy đến đầu phần Bootstrap
Code. Khi chúng ta bật máy, sau một loạt các quá trình kiểm tra và khởi
tạo, boot sector của phân vùng active sẽ được nạp vào bộ nhớ và được
trao quyền điều khiển, khi đó lệnh JMP ở đầu boot sector sẽ chuyển đến
thi hành đoạn mã Bootstrap Code ở offset 54H.
Tiếp theo 3 bytes lệnh JMP là 8 bytes ID của NTFS. BPB và BPB mở
rộng là các bảng tham số, lưu trữ các thông tin cần thiết để hệ điều hành
cũng như các trình ứng dụng cấp thấp có thể truy xuất đến các file được
lưu trữ trên phân vùng một cách chính xác :

Offset
0x0B
0x0D
0x0E
0x10
0x13
0x15
0x16
0x18
0x1A
0x1C
0x20
0x24

0x28
0x30
0x38

Field Length Sample Value
WORD
0x0002
BYTE
0x08
WORD
0x0000
3 BYTES
0x000000
WORD
0x0000
BYTE
0xF8
WORD
0x0000
WORD
0x3F00
WORD
0xFF00
DWORD
0x3F000000
DWORD
0x00000000
DWORD
0x80008000
LONGLONG0x4AF57F0000000000

LONGLONG0x0400000000000000

Field Name
Kích thước một sector (bytes)
Số sectors / Cluster
Số sectors dự trữ
Luôn có giá trị bằng 0
Không sử dụng bởi NTFS
Media Descriptor
Luôn có giá trị bằng 0
Số sectors / Track
Số đầu đọc (heads)
Số sectors ẩn
Không sử dụng bởi NTFS
Không sử dụng bởi NTFS
Tổng số sector trên phân vùng
Cluster logic bắt đầu $MFT
Cluster
logic bắt
đầu
LONGLONG0x54FF070000000000
$MFTMirr


PHẦN 2 : NỘI DUNG
0x40
0x44
0x48
0x50


Số clusters trên một phân đoạn
bản ghi file.
Số clusters trên một Index
DWORD
0x01000000
block.
LONGLONG0x14A51B74C91B741C Volume Serial Number
DWORD
0x00000000
Checksum
DWORD

0xF6000000

Bảng 2 : Cấu trúc bảng BPB và BPB mở rộng

Các trường có địa chỉ bắt đầu tại offset 0x0B, 0x0D, 0x15, 0x18, 0x1A và
0x1C có ý nghĩa giống với các trường tương đương trong boot sector của
một phân vùng có định dạng FAT16 hay FAT32. Chúng lưu trữ một số
thông tin chung về ổ đĩa như kích thước một sector, số sector trên một
cluster, số sector trên một track, số head...
Ở đây chúng ta cần lưu ý các trường có địa chỉ bắt đầu tại offset 0x30
và 0x38, đó là địa chỉ sector logic đầu tiên của MFT (Master File Table)
và MTFMirr (bản sao một số trường quan trọng của MFT).
Tiếp theo các bảng BPB và BPB mở rộng là đoạn mã bootstrap code có
nhiệm vụ tạo ra phiên bản làm việc đầu tiên của HĐH từ các module của
nó.
Boot Sector được kết thúc bằng chữ kí của HĐH (55AAh), chữ kí này
cho phép kiểm tra tính đúng đắn của boot sector.


b. Cluster
NTFS cũng chia đĩa thành các cluster như trong hệ thống file FAT để
thuận tiện cho việc quản lý thay vì phải quản lý theo từng sector. Mỗi
cluster là đơn vị lưu trữ thông tin nhỏ nhất trong NTFS, bao gồm một số
sector liên tuc nhất định tùy thuộc vào kích thước phân vùng. Số sector
mỗi cluster được gọi là “hệ số cluster”. Hệ số cluster bao giờ cũng là số
nguyên và là lũy thừa của 2. Ví dụ : 1, 2, 4, 8... NTFS sử dụng số nguyên
64-bit để đánh số cluster. Do đó về lý thuyết phân vùng NTFS có thể lên
tới 16 exabytes (16384 TB). Tuy nhiên Windows giới hạn kích thước một
phân vùng NTFS sao cho có thể đánh địa chỉ được cluster bằng số 32bit,
tức là xấp xỉ 256TB (dùng cluster 64KB). Sau đây là bảng kích thước
cluster mặc định đối với phân vùng NTFS:
Kích thước partition
Kích thước cluster mặc định


≤ 512MB
512MB ÷ 1GB
1GB ÷ 2GB
2GB ÷ 2TB
≥ 2TB

512 bytes (1 sector)
1
KB (2 sectors)
2
KB (4 sectors)
4 KB (8 sectors)
Tùy thuộc kích thước partition


Trong hệ thống file NTFS, tất cả các tham số liên quan đến định vị
trên đĩa đều được tính bằng đơn vị cluster. Cluster đảm bảo hệ thống quản
lý độc lập đối với kích thước sector (hỗ trợ nhiều loại đĩa với các kích
thước sector khác ngoài
512 bytes) và do đó, độc lập với kích thước phân vùng.
Có 2 cách đánh địa chỉ cluster tùy thuộc vào phạm vi sử dụng:


LCN (Logical Cluster Number) : Mỗi cluster trong ổ đĩa có một
số thứ tự, được đánh số tuần tự từ 0. LCN chính là số thứ tự này.
LCN 0 chính là cluster đầu tiên của ổ đĩa, trỏ tới Boot Sector. Để
chuyển từ LCN sang số sector tuyệt đối trên đĩa (phục vụ cho việc
đọc/ghi dữ liệu), chỉ việc nhân LCN với số sector mỗi cluster
cộng với địa chỉ sector tuyệt đối bắt đầu của phân vùng:
AbsoluteSector=LCN
PartitionStartingSector



x

SectorsPerCluster

+

VCN (Virtual Cluster Number) : Mỗi cluster trong dòng dữ liệu
(data stream) được đánh số thứ tự lần lượt từ 0. Số thứ tự trong
dòng dữ liệu này gọi là VCN. VCN 0 trỏ tới cluster bắt đầu của
dòng dữ liệu. Để xác định vị trí của dòng dữ liệu trên đĩa, phải
chuyển từ VCN sang LCN.

Việc này được tính toán dựa vào các Mạch dữ liệu (data runs).
Mạch dữ liệu : Mỗi khối các cluster logic (LCN) liên tiếp được
đưa vào mỗi mạch dữ liệu, bao gồm VCN bắt đầu, LCN bắt đầu
và độ dài của mạch. Mỗi khi hệ thống cần truy nhập dữ liệu (khi
đã có VCN), nó phải tra trong các mạch dữ liệu để tìm ra LCN
tương ứng.


PHẦN 2 : NỘI DUNG
Để minh họa cách làm việc của LCN, VCN và mạch dữ liệu hãy xem xét ví
dụ sau:

Đối với dòng dữ liệu “Data”, VCN được đánh số liên tiếp từ 0 ÷ 7.
Cách đánh số này là tự nhiên vì đối với các chương trình ứng dụng, mỗi
file dữ liệu được coi là liên tục. Chương trình ứng dụng sẽ yêu cầu hệ
thống là “đọc cluster thứ X của file” để lấy thông tin từ file ra chứ không
bao giờ yêu cầu “đọc cluster thứ Y của đĩa” : quản lý dữ liệu file trên đĩa
là vai trò của hệ điều hành.
Từ hình minh họa có thể thấy rõ:



Dòng dữ liệu “Data” có 2 mạch dữ liệu khác nhau.
Mạch dữ liệu đầu tiên : các VCN 0 ÷ 3 tương ứng với các LCN
1355 ÷ 1358.
• Mạch dữ liệu thứ 2 : các VCN 4 ÷ 7 tương ứng với các LCN 1588
÷ 1591.
Có thể thấy cơ chế ánh xạ VCN – LCN gần tương tự như tổ chức FAT trên
hệ thống file FAT.


c. Master File Table – MFT
Trong NTFS tất cả dữ liệu trên đĩa đều được lưu dưới dạng file. Lưu
trữ mọi thứ theo file cho phép hệ thống dễ dàng định vị và duy trì dữ
liệu ,mỗi file riêng biệt có thể được bảo vệ bằng một bộ bảo mật (sercurity
descriptor). Ngoài ra, nếu một phần nào đó của đĩa bị hỏng, NTFS có thể
định vị lại file siêu dữ liệu để bảo vệ ổ đĩa, tránh việc không thể truy cập
vào ổ đĩa.


Hệ thống file NTFS bao gồm một file gọi là master file table hay MFT.
MFT là một mảng các bản ghi kiểu file, kích thước của mỗi bản ghi được
ngầm định là một KB ,không phụ thuộc vào kích thước của liên cung .
Mỗi file trên đĩa NTFS ,gồm cả chính file MFT đều có ít nhất một lốI vào
MFT .Tất cả thông tin về file gồm :kích thước ,nhãn thời gian ,ngày tháng
,sự cho phép ,nội dung dữ liệu , đều được lưu trữ hoặc trong các lối vào
MFT ,hoặc trong vùng trống phía ngoài MFT mà được các lối vào MFT
mô tả .Khi một file được thêm vào một đĩa NTFS thì các lối vào cũng
được thêm vào MFT và kích thước của MFT tăng lên .Khi một file bị loại
bỏ khỏi một đĩa NTFS ,các lối vào MFT của nó được đánh dấu như con
trống và có thể được sử dụng lại. Tuy nhiên ,vùng trống mà đã được cấp
phát cho các lối vào này thì không được dùng để cấp phát lại ,và kích
thước của MFT không giảm xuống. Các thuộc tính của file yêu cầu nhiều
vùng trống được lưu trữ trong MFT và được gọI là các thuộc tính thường
trực. Khi tất cả thông tin của một file là quá lớn và bản ghi MFT không
thể chứa hết thì một vài thuộc tính là không thường trực. Các thuộc tính
không thường trực được lưu trữ ở một hay một vài liên cung nào đó (ở nơi
khác ) trên đĩa. Tức là các file nhỏ được lưu trữ toàn bộ trong MFT trong
khi các file lớn hơn được tham chiếu bởi con trỏ.
 Siêu dữ liệu (metadata)
NTFS lưu trữ dữ liệu người dùng và dữ liệu quản lí bên trong đều dưới

dạng file. Trong số chúng quan rọng nhất là các file hệ thống đặc biệt còn
gọi là file siêu dữ liệu (metadata file). File siêu dữ liệu chứa thông tin bên
trong về dữ liệu trong đĩa NTFS .Các file siêu dữ liệu này được tự động
tạo thành khi phân vùng NTFS được đinh dạng và được dặt ở đỉnh của
phân vùng . Thực chất MFT là một trong số các file siêu dữ liệu này
,nhưng nó cũng chứa mô tả về các file siêu dữ liệu khác và 16 bản ghi đầu
tiên của MFT là dành cho các file siêu dữ liệu.
Bảng sau là các thông tin quan trọng về các file siêu dữ liệu
.
file hệ thống
tên file
bản ghi chức năng
MFT


PHẦN 2 : NỘI DUNG
Master
Table

File $Mft

0

Master
Table2

File $MftMirr 1

danh sách nội dung của đĩa NTFS
mirror ba bản ghi đầu tiên của MFT

,dử dụng trong để truy cập MFT trong
trường hợp có một sector bị hỏng.

Log File

$LogFile

2

một danh sách các bước chuyển ,dùng
cho khả năng phục hồI của NTFS .

Volume

$Volume

3

Tên của đĩa ,version NTFS và các
thông tin khác

Attribute
Definition
Table
Root Filename
Indexs

$AttrDef

4


Bảng tên ,số thứ tự và mô tả các thuộc
tính

$.

5

thư mục gốc

Cluster Bitmap $Bitmap

6

chỉ ra cluster nào đang được sử dụng

Partition Boot
Sector

7

boootstap của đĩa,nếu đây là một đĩa có
thể boot được

Bad
File

$Boot

Cluster $BadClus 8


định vị tất cả các liên cung hỏng trên
đĩa.

Quota Table

$Quota

9

Quyền sử dụng vùng trống của người
sử dụng được ghi lại trong file này.

Upcase Table

$Upcase

10

chuyển các kí tự thường thành các kí tự
hoa phù hợp vớI mã Unicode.

File siêu dữ liệu $Extend
mở rộng

11

Chứa các file object identifier,file
quota…


12-15

dự trữ

Lưu ý: Hồ sơ từ 11 đến 15 trong MFT (thứ 12 thông qua hồ sơ 16, kể từ khi hồ sơ
MFT được đánh số bắt đầu từ số không) được dành riêng cho các tập tin siêu dữ
liệu trong tương lai.

Mỗi file siêu dữ liệu NTFS đều có tên bắt đầu bằng dấu $,mặc dù dấu này
được ẩn NTFS sẽ dành 16 entries đầu tiên để lưu trữ các file hệ thống đăc
biệt (các file này có tên bắt đầu bằng kí tự $), trong đó :


-

Entry đầu tiên được dành dành cho file $Mft, lưu trữ thông tin về
bản thân MFT.

-

Entry thứ hai được dành cho file $MFTMirr, lưu trữ bản sao một
số trường đầu tiên của MFT.

-

Entry thứ ba được dành cho file $Logfile, lưu trữ các thay đổi làm
ảnh hưởng đến cấu trúc của phân vùng dùng để khôi phục phân
vùng khi có sự cố.

-


Entry thứ tư được dành cho file $Volume, lưu trữ thông tên và
một số thông tin khác về phân vùng.

-

Entry thứ năm được dành cho file $AttrDef, lưu trữ định nghĩa
các thuộc tính cơ bản của file.

-

Entry thứ sáu được dành cho thư mục gốc, lưu trữ danh mục các
file và thư mục con của thư mục gốc. Khi NTFS nhận được yêu
cầu truy xuất file, nó sẽ bắt đầu công việc tìm kiếm của mình từ
thư mục gốc.

-

Entry thư bẩy được dành cho file $Bitmap, lưu trữ thông tin về
việc phân bố các cluster trên phân vùng. Mỗi cluster được gán
tương ứng với 1 bit xác định xem cluster đó đã được phân bố cho
một file nào đó chưa.

-

Entry thư tám được dành cho file $Boot, lưu trữ bootstrap code
của phân vùng. Có thể thấy NTFS đã áp dụng triệt để nguyên tắc
tất cả đều là file của mình bằng cách coi bootstrap code như một
file riêng biệt.


-

Entry thứ chín được dành cho file $BadClus, lưu trữ thông tin cho
phép xác định bad clusters trên phân vùng.

-

Entry thứ mười được dành cho file $Secure, lưu trữ bảng miêu tả
thuộc tính bảo mật. Trong NTFS, mỗi file và thư mục đều có thể
có miêu tả bảo mật riêng của mình. Tuy nhiên việc lưu trữ bảng
miêu tả bảo mật chung cho phép tiết kiệm bộ nhớ bằng cách tham


PHẦN 2 : NỘI DUNG
chiếu các file hoặc thư mục có cùng thuộc tính bảo mật đến một
miêu tả bảo mật duy nhất.
-

Entry thứ mười một được dành cho file $UpCase, lưu trữ bảng
chuyển đổi giữa kí tự thường và kí tự viết hoa.

-

Entry thứ mười hai được dành cho thư mục $Extend, thư mục này
lưu trữ một số file hệ thống khác liên quan đến các tính năng mới
của NTFS5 như $ObjId, $Quota và $Reparse.

-

Entries từ thứ 13 đến thứ 16 được dự trữ cho các phiên bản NTFS

sau. Các entries kể từ entry thứ 17 được sử dụng để quản lý các
file và thư mục trên phân vùng NTFS đó.

Mỗi entry trong MFT có kích thước cố định là 1KB cho dù kích thước của
một cluster được xác lập bằng bao nhiêu đi chăng nữa. Với kích thước cố
định như vậy, các file và thư mục kích thước nhỏ có thể được lưu trữ toàn
bộ trong một entry của MFT :

Bảng 3 : Cấu trúc MFT entry cho một file hay thư mục nhỏ

Đối với các file hoặc thư mục có kích thước lớn hơn, không thể được lưu
trữ toàn bộ trong một entry của MFT, NTFS sẽ cấp phát thêm các dãy
cluster liên tiếp trên phân vùng (còn gọi là các data runs) để lưu trữ
chúng. Trong trường hợp đặc biệt, khi file hoặc thư mục có quá nhiều
thuôc tính cần lưu trữ, NTFS sẽ sử dụng nhiều MFT entries để quản lý;
khi đó entry đầu tiên sẽ xác định vị trí của các entries khác và được gọi là
bản ghi file cơ sở (base file record).
Cách thức tổ chức quản lý file bằng MFT như trên có khá nhiều ưu điểm.
Thứ nhất, nó khiến cho việc truy xuất file và các thông tin liên quan
nhanh chóng hơn rất nhiều so với cấu trúc quản lý bằng Root Directory và
File Allocation Table của FAT. Thứ hai, nó cung cấp cho từng file chế độ
bảo mật riêng. Và thứ ba, nó cho phép vị trí lưu trữ các file hệ thống có
thể được thay thế khi cần thiết.


d. File và thuộc tính của file
Mỗi file hay một thư mục chiếm một hay nhiều phần tử trong MFT.
Trong trường hợp một file hay thư mục chiếm nhiều phần tử thì:



Phần tử đầu tiên được gọi là “Bản ghi file cơ sở” (Base File
Record)



(Các) phần tử tiếp theo gọi là “Bản ghi file mở rộng” (Extension
File Record)

NTFS tổ chức file thành các đối tượng bao gồm các cặp thuộc tính
(attribute) và giá trị (value) tương ứng. Ví dụ :
-

Thuộc tính Tên file ($FILE_NAME) và giá trị “a.txt”

-

Thuộc tính Dữ liệu ($DATA) và giá trị “hello NTFS!”...

Mỗi thuộc tính trong file được xác định bởi ba tham số, mã thuộc tính xác
định loại của thuộc tính, giá trị của thuôc tính và tên của thuôc tính. Trong
ba thông số đó, tên của thuộc tính là thông số không bắt buộc và thường
được dùng để phân biệt giữa các thuộc tính cùng kiểu, điều đó cũng có
nghĩa là một thuộc tính có thể không có tên và trong thực tế thuộc tính dữ
liệu không tên là thuộc tính dữ liệu mặc định của file.
Phân loại theo tên thì các thuộc tính được chia thành 2 loại:
-

Loại có tên (named): Thuộc tính được đặt tên.

- Loại không có tên (unnamed): Thuộc tính không được đặt tên.

Các thuộc tính của cùng một file sẽ được lưu trữ trong các luồng riêng rẽ.
Nói cách khác, NTFS không đọc và ghi file, nó đọc và ghi các luồng
thuộc tính của file. Thông thường, các lệnh đọc và ghi sẽ thao tác với
luồng dữ liệu mặc định của file, tuy nhiên chúng ta cũng có thể xác định
luông dữ liệu cần thao tác bằng cách thêm vào các tham số cần thiết trong
lời gọi hàm.
Sau đây là bảng danh sách các thuộc tính của NTFS file:
Thuộc tính

Tên thuộc tính

Miêu tả


PHẦN 2 : NỘI DUNG
Volume
information

$VOLUME_INFORMATION
$VOLUME_NAME

Standard
information

$STANDARD_
INFORMATION

Filename

$FILE_NAME


Security

$SECURI-

Thuộc tính này lưu trữ miêu tả

descriptor

TY_DESCRIPTOR

bảo mật của từng file. Tuy
nhiên từ NTFS5 trở lên, các
miêu tả bảo mật file sẽ được
lưu trữ trong file hệ thống duy
nhất $Secure.

Data

$DATA

Các thuộc tính này chỉ xuất
hiện trong file hệ thống
$Volume. Chúng lưu trữ thông
tin về volume versions và
label information.
Xác định các thuộc tính của
file
như
read-only,

archive...;lưu trữ các tem thời
gian trong đó có thời điểm
được tạo ra hoặc thời điểm
cuối cùng bị sửa đổi của file;
lưu trữ số thư mục trỏ đến file
(số lượng hard link của file).
Tên file theo các kí tự
UNICODE. Trong NTFS, một
file có thể có nhiều thuộc tính
tên khi tồn tại hard link đến
nó; các file có tên dài cũng tự
động có thêm một tên ngắn
khác để có thể được truy xuất
bởi các ứng dụng chạy trên
nền DOS hay Windows 16-bit.

Dữ liệu của file. Trong NTFS,
mỗi file đều có một thuộc tính
dữ liệu không tên (là thuôc tính
dữ liệu mặc định), ngoài ra
cũng có thể có thêm các thuộc
tính dữ liệu được đặt tên khác.


Index root,
index
allocation,
and index
bitmap


$INDEX_ROOT,
$INDEX_ALLOCATION,
$BITMAP

Attribute
list

$ATTRIBUTE_LIST

Object ID

$OBJECT_ID

Reparse
infor-

$REPARSE_POINT

mation

Các thuộc tính này dùng để xây
dựng cấu trúc cây nhị phân b+
cho các thư mục có có kích
thước lớn.

Được dùng trong trường hợp
nhiều MFT entries được dùng
để lưu trữ thông tin về một file.
Khi đó, thuộc tính này sẽ xác
định các thuộc tính khác của

file và vị trí lưu trữ của từng
thuộc tính.
Là một định danh có kích thước
64 bytes, dùng để xác định một
file hay thư mục nào đó. NTFS
cũng cung cấp một số hàm API
cho phép truy xuất file theo giá
trị này thay vì theo đường dẫn
đến nó.
Thuộc tính này lưu trữ dữ dữ
liệu về điểm lặp (reparse point)
của file.

Extended
attributes

$EA,
$EA_INFORMATION

Các thuộc tính mở rộng dùng
hỗ trợ tương thích với các ứng
dụng OS/2.

EFS
information

$LOGGED_UTILITY_ST
REAM

Lưu trữ danh sách người sử

dụng được phép truy xuất file
cũng như các thông tin được sử
dụng trong quá trình mã hoá và
giải mã file.

Nếu phân loại theo vị trí lưu giá trị thì các thuộc tính chia thành 2 loại:


Loại có giá trị thường trú (resident):


PHẦN 2 : NỘI DUNG


Loại có giá trị không thường trú (non-resident):

Cấu trúc các thuộc tính của file được chia làm hai phần :
-

Phần thứ nhất gọi là phần Standard Attribute Header; phần này
lưu trữ một số thông tin quan trọng như loại (ID), kích thước, tên
và nơi lưu trữ thuộc tính.

-

Phần thứ hai là phần giá trị của thuộc tính, có kích thước thay đổi
và có cấu trúc tuỳ thuộc vào thuộc tính đang xét.

Thông thường, toàn bộ các thuộc tính của một file nhỏ sẽ được lưu trữ trong
MFT entry tương ứng với file đó; khi đó các thuộc tính của file được gọi

là thường trú (resident). Nếu kích thước một thuộc tính nào đó là quá lớn
để có thể được lưu trữ trong MTF record, phần giá trị của nó sẽ được lưu
trữ trong các data runs và được gọi là không thường trú (non-resident ).
Khi đó NTFS xây dựng một cơ chế chuyển đổi VCN – LCN để xác định
địa chỉ các data – runs.
VCN (Virtual Cluster Number) là việc đánh số các cluster của cùng một
file (bắt đầu từ 0), LCN (Logical Cluster Number) là việc đánh số các
cluster của một phân vùng theo khoảng cách tương đối với cluster đầu
tiên của phân vùng. MTF record của một file là nơi ta có thể tìm thấy mọi
thông tin cần thiết cho việc chuyển đổi giữa VCN của file đó và LCN của
phân vùng.


Sơ đồ trên miêu tả (một cách tương đối) thuộc tính FileName của file
MYFILE.DAT. Thuộc tính trên gồm hai phần, phần header (nền mầu
xám) và phần giá trị (nền mầu trắng) và được gọi là thường trú vì phần
giá trị của nó được lưu trữ trong MFT record.

Sơ đồ trên miêu tả thuộc tính data của File16, thuộc tính này là không
thường trú và giá trị của nó được lưu trữ trên hai data runs riêng biệt. Data
run thứ nhất có kích thước 4 clusters và được bắt đầu từ cluster logic 1355
của phân vùng; data run thứ hai cũng có kích thước 4 clusters và bắt đầu
từ cluster logic 1588.


PHẦN 2 : NỘI DUNG

e. Cấu trúc thư mục trong NTFS
Thư mục trong NTFS cũng được lưu trữ như một file, nghĩa là cũng sử
dụng một hay nhiều phần tử trong MFT, cũng được cấp phát cluster để

lưu dữ liệu… Về bản chất, thư mục là một danh sách các file và thư mục
con.
Trong trường hợp thư mục chứa ít file, dữ liệu của thư mục (ở đây là
danh sách file và thư mục con) cũng có thể được thường trú. Khi đó danh
sách này được lưu trong thuộc tính $INDEX_ROOT:

Hình 2: danh sách file trong $INDEX_ROOT. Nguồn : Windows Internals. [3]



Thuộc tính $INDEX_ROOT

Cấu trúc của giá trị thuộc tính $INDEX_ROOT như sau:
Header thuộc tính
Chỉ mục gốc (Index Root)
Header chỉ mục (Index Header)
Index Entry 1
Index Entry 2
....
Các cấu trúc con của $INDEX_ROOT như sau:
- Index Root:
Offset
Độ dài

Mô tả

(hex)

(dec)


00

4

Mã thuộc tính của các entries (ở đây là 0x30 vì các
entries đều là thuộc tính $FILE_NAME)

04

4

Luật đối chiếu (Collation Rule)


×