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 để
Trang 2MỤ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
Trang 3PHẦ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
Trang 4
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ụ:
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
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ỉ
Trang 5NTFS 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:
Trang 6- 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-
Trang 7Có 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"),
Trang 8Sơ lược về NTFS Windows Vista (giữa năm 2005) (đôi khi còn gọi là "NTFS V6.0") và Windows Server 2008
Trang 9II 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
Trang 10Hệ thống file 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ộ)
Trang 11Hì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
Trang 12Hệ thống file 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 :
Trang 13Bả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
0x24 48 bytes BPB mở rộng
0x54 426 bytes Bootstrap Code
0x01FE WORD Chữ kí của Hệ điều hành
Trang 14Hệ thống file 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
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
Trang 15b 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
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:
Trang 16Hệ thống file 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