Tải bản đầy đủ (.pdf) (33 trang)

Bài tập lớn nghiên cứu về cấu trúc 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 (969.08 KB, 33 trang )



TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA TOÁN-CÔNG NGHỆ



BÀI TẬP LỚN
Môn : Hệ Điều Hành

ĐỀ TÀI: Nghiên cứu về kiến trúc NTFS

Giảng viên :
Sinh viên thực hiện : Đỗ Việt Anh



Ph Th, 2013

MỤC LỤC

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


MỤC LỤC
PHẦN 1 : LỜI NÓI ĐẦU 2
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: 4
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 6
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 14
c. Master File Table – MFT 16
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
3
Nhóm 8 Nghiên cứu về kiến trúc 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ụ:
HDD
Partition 1
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 sys-
tem 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ỉ
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,
PHẦN 2 : NỘI DUNG
Sơ lược về NTFS
4
Nhóm 8 Nghiên cứu về kiến trúc NTFS


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.
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
PHẦN 2 : NỘI DUNG

Sơ lược về NTFS
5
Nhóm 8 Nghiên cứu về kiến trúc NTFS

- 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 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 exa-
byte
PHẦN 2 : NỘI DUNG
Sơ lược về NTFS
6
Nhóm 8 Nghiên cứu về kiến trúc NTFS

- 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

 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"),
PHẦN 2 : NỘI DUNG
Sơ lược về NTFS
7
Nhóm 8 Nghiên cứu về kiến trúc NTFS

Windows Vista (giữa năm 2005) (đôi khi còn gọi là "NTFS V6.0") và
Windows Server 2008
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
8
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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ụ Win-
dows 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
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
9
Nhóm 8 Nghiên cứu về kiến trúc NTFS

đầ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
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ộ).

PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
10
Nhóm 8 Nghiên cứu về kiến trúc NTFS


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.

PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
11
Nhóm 8 Nghiên cứu về kiến trúc NTFS


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 (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 Sec-
tor 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 :


PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
12
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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
Field Length
Field Name

0x00
3 bytes
Lệnh JMP đến Bootstrap Code
0x03
8 bytes
OEM ID
0x0B
25 bytes
BPB
0x24
48 bytes
BPB mở rộng
0x54
426 bytes
Bootstrap Code
0x01FE
WORD
Chữ kí của Hệ điều hành
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
13
Nhóm 8 Nghiên cứu về kiến trúc NTFS

Offset
Field Length
Sample Value
Field Name
0x0B
WORD
0x0002

Kích thước một sector (bytes)
0x0D
BYTE
0x08
Số sectors / Cluster
0x0E
WORD
0x0000
Số sectors dự trữ
0x10
3 BYTES
0x000000
Luôn có giá trị bằng 0
0x13
WORD
0x0000
Không sử dụng bởi NTFS
0x15
BYTE
0xF8
Media Descriptor
0x16
WORD
0x0000
Luôn có giá trị bằng 0
0x18
WORD
0x3F00
Số sectors / Track
0x1A

WORD
0xFF00
Số đầu đọc (heads)
0x1C
DWORD
0x3F000000
Số sectors ẩn
0x20
DWORD
0x00000000
Không sử dụng bởi NTFS
0x24
DWORD
0x80008000
Không sử dụng bởi NTFS
0x28
LONGLONG
0x4AF57F0000000000
Tổng số sector trên phân vùng
0x30
LONGLONG
0x0400000000000000
Cluster logic bắt đầu $MFT
0x38
LONGLONG
0x54FF070000000000
Cluster logic bắt đầu
$MFTMirr
0x40
DWORD

0xF6000000
Số clusters trên một phân đoạn
bản ghi file.
0x44
DWORD
0x01000000
Số clusters trên một Index
block.
0x48
LONGLONG
0x14A51B74C91B741C
Volume Serial Number
0x50
DWORD
0x00000000
Checksum
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.
PHẦN 2 : NỘI DUNG

Hệ thống file NTFS
14
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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ố 32-
bit, 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:
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
15
Nhóm 8 Nghiên cứu về kiến trúc NTFS

AbsoluteSector=LCN x SectorsPerCluster + PartitionStartingSector
 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.
Để 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.
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
16
Nhóm 8 Nghiên cứu về kiến trúc NTFS

 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
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
17
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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
MFT
chức năng
Master File
Table
$Mft
0
danh sách nội dung của đĩa NTFS

Master File
Table2
$MftMirr
1
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 Def-
inition Table
$AttrDef
4
Bảng tên ,số thứ tự và mô tả các thuộc
tính
Root Filename
Indexs
$.
5
thư mục gốc
Cluster Bitmap
$Bitmap

6
chỉ ra cluster nào đang được sử dụng
Partition Boot
Sector
$Boot
7
boootstap của đĩa,nếu đây là một đĩa
có thể boot được
Bad Cluster
File
$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.
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
18
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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 mở rộng
$Extend
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.
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
19
Nhóm 8 Nghiên cứu về kiến trúc NTFS

- 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 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
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
20
Nhóm 8 Nghiên cứu về kiến trúc NTFS

đặ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 Alloca-
tion 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 Rec-
ord)
NTFS tổ chức file thành các đối tượng bao gồm các cặp thuộc tính (attrib-
ute) 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.
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
21
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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ả
Volume
infor-
mation
$VOL-
UME_INFORMATION
$VOLUME_NAME
Các thuộc tính này chỉ xuất
hiện trong file hệ thống $Vol-

ume. Chúng lưu trữ thông tin
về volume versions và label in-
formation.
Standard
infor-
mation
$STANDARD_
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).
Filename
$FILE_NAME
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.
Security
$SECURI-
Thuộc tính này lưu trữ miêu tả

PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
22
Nhóm 8 Nghiên cứu về kiến trúc NTFS

de-
scriptor
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
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, in-
dex allo-
cation,
and index
bitmap
$INDEX_ROOT, $IN-
DEX_ALLOCATION,
$BITMAP

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.
Attribute
list
$ATTRIBUTE_LIST
Đượ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.
Object ID
$OBJECT_ID
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ó.
Reparse
infor-
$REPARSE_POINT
Thuộc tính này lưu trữ dữ dữ
liệu về điểm lặp (reparse point)
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS

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




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):
 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 da-
ta 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.
mation
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 in-
formation
$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.
PHẦN 2 : NỘI DUNG
Hệ thống file NTFS
24
Nhóm 8 Nghiên cứu về kiến trúc NTFS

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.

×