1. Trang chủ
  2. » Luận Văn - Báo Cáo

Quan li file trong window 216421

89 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản Lí File Trong Window
Tác giả Đậu Thị Ngọc Ánh
Người hướng dẫn Nguyễn Thanh Tùng
Trường học Trường Đại Học
Chuyên ngành Tin Học
Thể loại báo cáo thực tập
Định dạng
Số trang 89
Dung lượng 1,91 MB

Cấu trúc

  • 1. HỆ THỐNG FILE (4)
  • 2. C HUYỂN ĐỔI ĐỊA CHỈ (4)
  • 3. CẤU TRÚC CHUNG CỦA ĐĨA TỪ (0)
    • 3.1. Partition và Master Boot (17)
    • 3.2. Cấu trúc của Master Boot Record (17)
  • 4. QUẢN LÍ FILE TRONG WINDOW (19)
    • 4.1. Các thuật ngữ cơ bản (19)
    • 4.2. Các thành phần cơ bản (21)
  • 5. ĐỊnh dẠng file FAT trong Window (29)
    • 5.1. Các kiểu FAT (29)
    • 5.2. Boot record (32)
    • 5.3. Boot sector của FAT (33)
    • 5.4. Thư mục gốc (35)
    • 5.5. Hệ thống định vị file (37)
    • 5.6. Nhân bản dữ liệu FAT (FAT Mirror) (40)
    • 5.7. FAT32 (41)
  • 6. ĐỊNH DẠNG NTFS TRONG WINDOW (43)
    • 6.1. NTFS File System Driver (Bộ phận điều khiển hệ thống file NTFS) 41 6.2. Cấu trúc tổ chức đĩa từ trong NTFS (43)
    • 6.3. Boot sector của NTFS (48)
    • 6.4. Bảng file chính (Master File Table) (50)
    • 6.5. Số tham chiếu file (File Reference Numbers) (58)
    • 6.6. Bản ghi File (File Records) (61)
    • 6.7. Tên file (Filenames) (65)
    • 6.8. Các thuộc tính thường trực và không thường trực(Resident (67)
    • 6.9. Chỉ số (Indexing) (0)
    • 6.10. Nén dữ liệu và Các file rải (Data Compressing and Sparse Files) 70 6.11. Các File rải (Sparse Files) (73)
    • 6.12. Các trỏ Reparse (Reparse Points) (79)
    • 6.13. Sự thay đổi File Journal (The change Journal File) (79)
    • 6.14. Các ID đối tượng (Object IDs) (80)
    • 6.15. Kiểm tra Hạn ngạch (Quota Tracking) (80)
    • 6.16. Tính bảo mật hợp nhất (Consolidated Security) (81)
  • 7. CẤU TRÚC ĐIỀU KHIỂN CỦA HỆ THỐNG FILE (81)
    • 7.1. LOCAL FSD (82)
    • 7.2. Hoạt động của hệ thống file (83)
    • 7.3. Memory Manager's Modified and Mapped Page Writer (84)
    • 7.4. Lazy Writer của quản lí bộ nhớ đệm (84)
    • 7.5. Tuyến Read-Ahead của quản lí bộ nhớ đệm (84)
    • 7.6. Vào ra file (85)
  • 8. LỜI KẾT (89)

Nội dung

HỆ THỐNG FILE

Hệ thống file : là một quy định để tạo ra một chuẩn hay một cách thức lưu trữ và lấy lại các dữ liệu được lưu trữ trên các thiết bị lưu trữ Hệ thống file định nghĩa cấu trúc cây thư mục lưu trữ file và đường dẫn cần thiết để truy cập file Máy tính của bạn có hàng nghìn file, nếu nó không được quản lí một cách có tổ chức thì hệ thống của bạn có thể sẽ rất chậm và gây ra nhiều lãng phí Điều này cũng thật dễ hiểu vì bạn hãy tưởng tưởng nếu như cất giữ tại liệu không có một quy cách nào cả thì khi nào bạn cần tìm lại một số tài liệu cần htiết thì bạn sẽ rất khó khăn để tìm lại được và bạn phải bỏ ra một thời gian lãng phí.

Bất cứ hệ thống file nào cũng có các chức năng sau :

Sử dụng một cách có hiệu quả không gian có giá trị trên đĩa cứng để lưu trữ thông tin cần thiết.

Ghi tất cả các file vào trong danh mục trên đĩa cứng vì thế việc lấy lại thông tin cũng nhanh chóng và khả quan hơn.

Cung cấp các phương pháp thực hiện các thao tác cơ bản của file như xoá, thay đổi tên, copy, hay di chuyển file.

Cung cấp một vài kiểu cấu trúc dữ liệu mà cho phép máy tính có thể thoát khỏi hệ thống.

C HUYỂN ĐỔI ĐỊA CHỈ

Mỗi file khi lưu trữ lên đĩa, nó sẽ được ghi tại một địa chỉ xác định trên đĩa, đó gọi là địa chỉ vât lí hay địa chỉ logic, nhưng đối với một hệ thống file nó không ghi trực tiếp địa chỉ vật lí ngay trên đầu vào của file mà chúng chỉ lưu địa chỉ ảo và sự náh xạ của địa ảo sang địa chỉ vật lí, từ đó truy cập đến nôi dụng của file Do đó, ta sẽ tìm hiểu ở đây cách chuyển đổi từ địa chỉ ảo sang địa chỉ vật lí.

Bây giờ chúng ta theo dõi cách tổ chức không gian địa chỉ ảo 32 bit, chúng ta hãy xem nó ánh xạ những không gian địa chỉ ảo đến trang địa chỉ thực Chúng ta sẽ xem chuyện gì sẽ xảy ra khi sự chuyển đổi không dẫn đến địa chỉ vật lí và giải thích cách mà window 2000 quản lí bộ nhớ vật lí qua làm việc với các tập và các trang nhớ cơ sở dữ liệu

Trình ứng dụng của người sử dụng tham chiếu địa chỉ ảo 32 bit Sử dụng cấu trúc dữ liệu, quản lí bộ nhớ tạo ra và duy trỳ, CPU chuyển đổi địa chỉ ảo sang địa chỉ vật lí Ví dụ như hình 1 chỉ ra 3 trang ảo liên tiếp được ánh xạ đến 3 trang địa chỉ vật lí không liên tiếp.

Hình 1 : Ánh xạ địa chỉ ảo sang địa chỉ vật lí Đường gạch ngang kết nối trang bộ nhớ ảo đến đầu vào của bảng các trang nhớ(PTE) ở trong hình trên Điạ chỉ ảo không được ánh xạ trực tiếp đến địa chỉ vật lí Thay vào đó, bạn sẽ tìm ra trong phần này, mỗi địa chỉ ảo được liên kết với cấu trúc của không gian hệ thống được gọi là PTE hay là các đầu vào của bảng các trang nhớ, mà chứa địa chỉ vật lí mà địa chỉ ảo được ánh xạ tới.

2.1 Chuyển đổi địa chỉ ảo:

Theo mặc định, Window2000 trên hệ thống x86 sử dụng 2 mức cấu trúc bảng trang nhớ để chuyển đổi từ địa chỉ ảo sang điạ chỉ vật lí Địa chỉ ảo 32 bit bao gồm 3 thành phần độc lập : chỉ số thư mục trrang, chỉ số bảng trang nhớ và chỉ số byte, tất cả được sử dụng như là các chỉ số trong cấu trúc mà miêu tả ánh xạ trang nhớ như minh hoạ ở hình 2. Kích thước của trang và bề rộng PTE quyết định bề rộng của thư mục trang và trường chỉ số bảng trang nhớ Ví dụ, trên hệ thống x86 , chỉ số byte là 12 bit bởi vì trang nhớ có kích thước là 4096 byte.

Hình 2 : Các thành phần của địa chỉ ảo trên hệ thống x86

Chỉ số của thư mục trang được sử dụng để định vị bảng trang nhớ nơi mà PTE của điạ chỉ ảo được định vị Chỉ số bảng trang nhớ dược dùng để định vị PTE chứa sự ánh xạ từ địa chỉ ảo sang địa chỉ vật lí Chỉ số byte tìm địa chỉ thích hợp bên trong trang địa chỉ vật lí Hình 3 chỉ ra mối quan hệ của 3 giá trị và cách mà chúng sử dụng để ánh xạ địa ảo sang địa chỉ vật lí.

Hình 3 : Chuyển một địa chỉ ảo hợp lệ

Các bước cơ bản để chuyển đổi địa chỉ ảo :

1 Phần cứng quản lí bộ nhớ định vị thư mục trang cho quy trình hiện tại Trong khoá chuyển đổi ngữ cảnh của mỗi quy trình, ổ cứng được nói địa chỉ của thư mục trang của quy trình mới, Bằng cách hệ điều hành cài đặt thanh ghi CPU đặc biệt.

2 Chỉ số của trang thư mục được dùng như là chỉ số trong trang thư mục để định vị đầu vào bảng của trang nhớ mà miêu tả vị trí của bảng trang nhớ cần để ánh xạ địa chỉ ảo PTE chứa số các khung trang PFN của bảng trang nhớ.

3 Chỉ số bảng trang nhớ được dùng như là chỉ số trong bảng trang nhớ để định vị PTE mà miêu tả vị trí vật lí của trang nhớ ảo.

4 PTE sử dụng để định vị trang nhớ Nếu trang nhớ có giá trị, nó chứa PFN của trang nhớ trong bộ nhớ vật lí mà chứa trang bộ nhớ ảo Nếu PTE chỉ ra trang không có giá trị, bộ diều khiển lỗi quản lí bộ nhớ địnhvị trang và cố gắng để làm cho nó có giá trị

5 Khi PTE trỏ tới 1 trang có giá trị, chỉ số byte được dùng để định vị địa chỉ của dữ liệu cần tìm bên trong trang vật lí

Bây giờ chúng ta sẽ theo dõi cấu trúc chi tiết của thư mục trang nhớ, bảng trang nhớ và PTE :

Mỗi quá trình đều có một thư mục trang đơn lẻ, trang mà quản lí bộ nhớ tạo ra để ánh xạ vị trí của tất cả bảng trang nhớ cho tiến trình đó Địa chỉ vật lí của thư mục trang của tiến trình được lưu trữ trong khối tiến trình nhân nhưng nó cũng ánh xạ hầu như tại địa chỉ 0xC0300000 trên hệ thống x86 Tất cả các mã mà thực hiện trong chế độ nhân tham chiếu đến đại chỉ ảo, không phải địa chỉ vật lí CPU biết vị trí của thư mục trang nhớ bởi vì thanh ghi đặc biệt (CR3 trên hệ thống x86) bên trong CPU mà được định vị bởi hệ điều hành, chứa địa chỉ vật lí của thư mục trang

Thư mục trang bao gồm các đầu vào thư mục trang nhớ mà mỗi đầu vào chiếm 4 byte (8 byte trên hệ thống thực hiện ảnh nhân PAE) và miêu tả trạng thái của tất cả bảng trang nhớ có thể cho tiến trình Dạng của PDE không được nhắc lại ở đây vì nó gần giống như PTE(hình 4)

Hình 4 : PTE của phần cứng x86 hợp lệ

Trên hệ thống x86, 1024 bảng trang nhớ(2048 trên hệ thống PAE), cần để miêu tả không gian địa chỉ ảo 4 Gb Thư mục trang nhớ của tiến trình mà ánh xạ những bảng trang nhớ này chứa 1024 PDE Do đó, chỉ số thư mục trang cần 10 bit

Ví dụ về thư mục trang và PDE :

Bạn có thể thấy địa chỉ vật lí của thư mục trang nhớ của tiến trình hiện tại đang chạy bằng cách kiểm tra trường DirBase trong câu lệnh !process

Bạn có thể thấy địa chỉ ảo của thư mục trang :

2.3 Bảng trang nhớ hệ thống và tiến trình :

Trước khi tham chiếu đến 1 byte bên trong trang với địa chỉ đoạn offset, đầu tiên CPU cần để có thể tìm trang mà chứa các byte cần tìm cảudữ liệu Để tìm trang này, hệ điều hành xây dựng trang khác cảu bộ nhớ mà chứa thông tin ánh xạ cần để tìm các trang yêu cầu chứa dữc liệu Trang ánh xạ thông tin này được gọi là bảng trang nhớ Bởi vì window 2000 cung cấp không gian địa chỉ riêng cho mỗi tiến trình.

CẤU TRÚC CHUNG CỦA ĐĨA TỪ

Partition và Master Boot

Để quản lý tốt hơn đĩa cứng, người ta thường chia thành các phần nhỏ hơn, mỗi phần gọi là 1 partition(phân khu), hay một ổ đĩa logic được sử dụng như một đĩa từ độc lập Một đĩa cứng tối đa có thể chia thành 4 partition và mỗi partition có thể cài một hệ điều hành riêng, do đó có thể cài đồng thời 4 hệ điều hành trên cùng một đĩa cứng.

Thông tin về sự phân chia đĩa nằm trong Master Boot ở sector đầu tiên của đĩa cứng

(cylinder 0, head 0, sector 1) Hai byte cuối cùng của Master boot luôn được đặt là

55AA, đây là chữ kí dấu hiệu kết thúc sector hay chữ kí của hệ điều hành, chữ kí này cũng được dùng cho Boot Record mở rộng (EBR) và Boot Sector.

Cấu trúc của Master Boot Record

Phần 1: Chương trình nhận biết cấu trúc, có chức năng sau: o Tìm trong bảng Partition nào tích cực o Tìm sector đầu tiên của Partition tích cực o Nạp boot sector đó vào bộ nhớ. o Chuyển quyền điều khiển cho chương trình mồi ở boot sector.

Phần 2: Bảng partition (Bảng phân chương)

Bắt đầu tại địa chỉ 1BE, gồm 64 bytes, chia thành 4 đầu vào (entry), mỗi đầu vào dài

16 byte chứa thông tin về 1 partition.

Mỗi đầu vào chia thành 10 trường, 8 trường đầu chiếm tất cả 8 byte, 2 trường cuối mỗi trường chiếm 4 byte.

1 byte 1 byte 10 bit 6 bit 1 byte 1 byte 10 bit 6 bit 4 byte 4 byte

Bi H C S Si H C S Địa chỉ bắt đầu

Partition l Ý nghĩa của từng trường như sau:

Byte offset Độ dài Giá trị

Viết tắt Tên trường và Ý nghĩa

Boot Indicator Cho biết partition là tích cực hay không + 00: không tích cực

+ trường hợp khác : Không hợp lệ.

0x01BF Byte 01 H Head bắt đầu

Có thể nhận giá trị lớn nhất là 1023.

System ID Cho biết Partition thuộc Hệ điều hành nào 01: FAT12 (5 )

0 Địa chỉ offset tương đối bắt đầu partition (tính theo sector)

Tổng số sector trong Partition

Nếu Si thì đĩa có thêm bảng Partition mở rộng, cấu trúc của bảng mở rộng cũng tương tụ như bảng Partition chính Hình sau minh hoạ chi tiết về bảng này, minh hoạ chi tiết về MRB, Partition Table và Boot Sector của 1 đĩa với 4 Partition:

Master boot record Master Boot Code

4 th Partition Table Entry 5x55AA

QUẢN LÍ FILE TRONG WINDOW

Các thuật ngữ cơ bản

a Disks: là một thiết bị lưu trữ vật lí như ổ cứng, đĩa mềm 3.5’’,hoặc ổ CD-ROM. b Track : Trong đĩa mềm hoặc đĩa cứng, đây là một trong các đường tròn đồng tâm được mã hóa trên đĩa khi tiến hành định dạng mức thấp, và được dùng để xác định các vùng lưu trữ dữ liệu riêng biệt trên mặt đĩa. c Sector : là đơn vị nhỏ nhất của đĩa từ Trên đĩa mềm hoặc đĩa cứng, đây là một đoạn trên một trong các rãnh ghi đồng tâm đã được mã hoá của đĩa đó trong quá trình định khuôn thức mức thấp Một sector thường chứa 512 byte thông tin Khi làm việc thông tin được ghi lên các sector Do đó nếu hệ diều hành muốn chỉnh sửa byte thứ 634 trên đĩa thì nó phải viết một khối dữ liệu 512 byte rồi đến sector thứ 2 khi đó mới chỉnh sửa đực byte yêu cầu. d Simple volumes , là các đối tượng, các đối tượng này tượng trưng cho các sector từ một partition độc lập, mà các bộ phận điều khiển hệ thống file quản lý như một đơn vị riêng rẽ. e Multipartition volumes , là các đối tượng, các đối tượng này tượng trưng cho các sector từ nhiều partition khác nhau, và khi đó các bộ phận điều khiển hệ thống file quản lý như một đơn vị riêng rẽ Multipartition volume đòi hỏi sự thực thi, độ tin cậy, và đặc điểm kích thước mà Simple volume không có. f Clusters , là những khối địa chỉ có sẵn mà ở đó các hệ thống file coi như một chuẩn mực Kích thước của cluster luôn gấp nhiều lần so với kích thước của sector ( Hình-1), là 2, 4, 8, 16… lần kích thước của sector Các định dạng hệ thống file sử dụng cluster để quản lý không gian đĩa một cách hiệu quả nhất Kích thước của cluster lớn hơn kích thước của sector, nó phân đĩa từ thành các khối để dễ sử dụng.

Hình-1 Nhiều sector và một cluster trên đĩa từ g Metadata , là kiểu dữ liệu được lưu trữ trên Volume, trong đó có sự hỗ trợ của hệ thống quản lý địng dạng hệ thống file Nó không phải là kiểu đặc thù thích hợp cho các ứng dụng Ví dụ, Metadata bao gồm các dữ liệu mà nó xác định rõ các file hoặc các thư mục lưu trên Volume.

Tham số Chương trình mồi

Các thành phần cơ bản

4.2.1 Boot sector : là sector đầu tiên của đĩa từ, có 3 phần : tham số, chương trình mồi, chữ kí. a) Chương trình mồi cần cho đĩa khỉ động hay đĩa hệ thống

Tham số chia ra thành các trường như ở bảng sau : Bảng dưới đây miêu tả các trường nằm trong phân vùng boot sector cho các đĩa từ được định dạng

Bảng 1: Các trường trong phân vùng boot sector (FAT File System)

03 8 bytes MSDOS5.0 Tên hệ thống format đĩa từ

24 26 bytes Khối tham số BIOS mở rộng

3E 448 bytes Mã chương trình mồi

1FE 2 bytes 0x55AA Kết thúc

Bảng dưới đây miêu tả các khối tham số BIOS và các trường khối tham số mở rộng Bảng 2 : Các trường của khối tham số BIOS và khối tham số BIOS mở rộng

0x0B WORD 0x0002 Số byte/sector Kích thước của một sector trên đĩa cứng, thông thường là 512 byte

0x0D BYTE 0x08 Số sector/.cluster Kich thước mặc định của cluster ohụ thuộc vào kích thước của ổ đĩa và hệ thống file 0x0E WORD 0x0100 Số lượng sector từ phân vùng boot sector để bắt đầu cho FAT đầu tiên , bao gồm phân vùng boot sector Giá trị nhỏ nhất là 1 Nếu giá trị lờn hơn 1 thì điều đó có nghĩa là mã chương trình mồi quá dài nên không thể đủ để chứa trong phân vùng boot sector

0x10 BYTE 0x02 Số lượng bảng FAT Số bản sao của FAT trên đĩa >già trị này thường là 2.

0x11 WORD 0x0002 Số phần tử tối đa trong thư mục gốc Đầu vào của nó luôn được sử dụng như là nhãn của ổ đĩa Các file với chiều dài tên của nó sử dụng nhiều đầu vào trên một file.

Do đó, số lượng lớn nhất các file có trong thư mục gố là

511 0x13 WORD 0x0000 Số lượng sector của đĩa từ nếu như kích thước ≤ 32 MB 0x15 BYTE 0xF8 Kiểu media Cung cấp về thông tin về media đang sử dụng Với đĩa cứng nó có già s trị là 0xF8

0x16 WORD 0xC900 Số sector dành cho 1 bảng

FAT Số lượng sector đã xuất hiện bởi mỗi bảng FAT trên mỗi đĩa từ Bàng cách sử dụng thông tin này kết hợp với số bảng FAT và các sector dành riêng, chúngta có thể cxác định vị trí bắt đầu của thư mục gốc the root folder,

0x1C DWORD 3F 00 00 00 Hidden Sectors . 0x20 DWORD 51 42 06 00 Tổng số sector trên đĩa từ nếu như đĩa từ có kích thước

≥32 MB Nếu trường số lượng sector tren đĩa nhỏ bằng 0, trường này chứa tổng số sector trên đĩa từ Nếu đĩa từ nhỏ có giá trị khác 0 thì tường này có giá trị bằng 0

 Các phương pháp truy nhập boot sector :

- Sử dụng công cụ API : trợ giúp chúng ta đi trực tiếp vào hệ thống vật lí.

- ROM BIOS: BIOS là một con chip gắn ngay trên mainboard, nó không phụ thuộc vào hệ điều hành Trong Pascal có thư viện hỗ trợ ROM BIOS

Tất cả các thư mục trừ thư mục gốc chỉ là các file, nó có chức năng là tìm kiếm file , chứa các thông tin phục vụ phân quyền truy nhập Trong window thư mục có tên là

Forder Một file là một dòng các byte được định vị trong vùng dữ liệu là một phần của đĩa từ được tạo ra trừ 1 hay nhiều cluster Kích thước chính xác của file được ghi lại trong cấu trúc thư mục

Kích thước của file thư mục không được ghi lại ở bất cứ đâu Các thư mục được có kích thước là bội kích thước của cluster Thư mục sẽ được mở rộng khi một đầu vào mới được thêm vào và thư mục đã đầy.

Thư mục bao gồm nhiều phần tử, mỗi phần tử gồm 32 byte : bao gồm phần tử tên ngắn và phần tử tên dài Đầu vào mỗi thư mục có các thông tin sau :

0x00: File chưa sử dụng bao giờ

0x05: Kí tự ban đầu thực sự là 0xE5, phần tử này đã sử dụng và nay đã bị xoá 0x2E: Đầu vào dot hay dot-dot tức là '.' hoặc ' ' 0xE5: Phần tử này đã sử dụng và nay đã bị xoá.

3 B 1 Thuộc tính Byte đầu tiên có thể có các giá trị sau :

0x01: Read Only : Cờ này để ngăn cản chương trình không được tự động xoá hay ghi đè lên file hay thư mục này

0x02: Hidden : Nói cho hệ thống và chương trình rằng file này bị ẩn đối với người sử dụng Nhưng trpong 1 số chương trình, có thể ghi đề lên bởi người sử dụng.

0x04: System : những file hay thư mục có thuộc tính này là quan trọng đối với hệ thống, không được thao tác.

0x08: Tên đĩa từ (V): Khi cờ này được thiếtlập thì đầu vào thư mục không trỏ đến file Thông tin này chỉ sử dụng dựa vào đầu vào này la tên file (8 byte) cộng với phần tên mở rộng Những byte này hình thành nên 11 byte là tên của đĩa từ Có thể chỉ có 1 đầu vào giá trị trên toàn bộ đĩa với cờ này được thiết lập

ĐỊnh dẠng file FAT trong Window

Các kiểu FAT

Ngày nay có 3 kiểu FAT : FAT12, FAT16, FAT32 Trong window 2000, bộ điều khiển hệ thống file FAT được thực hiện trong \Winnt\System32\Drivers\Fastfat.sys Không gian trên đĩa cứng, tại hầu hết các mức cơ bản của nó dược phân chia thành các sector Mỗi sector thường có 512 byte Nhưng hệ thống file FAT không làm việc trực tiếp với các sector mà thay vào đó nó tập hợp các sector lại thành cluster Một cách khác để nghĩ đến kiểu này là giả sử mỗi sector trên đĩa cứng là một người mà mang theo một cái túi, trong mỗi túi có thể chứa 512 byte của thông tin Bây giờ ta thay thế cách đánh số cho mối người là 1,2… bằng cách nhóm một số người lại thành một nhóm Nếu một nhóm có 4 người và có tất cả 400 người thì chúng ta sẽ có 100 nhóm Hay nói một cách khác, với 400 sector (khoảng 200k không gian) và kích thước cảu mỗi định phần là 4 sector (hay là 2K) thì sẽ có 100 cluster Vì thế khi hệ thống cần truy cập đến 1 sector cụ thể thì đầu tiên nó phải tìm địa chỉ cluster tương ứng với cluster đó, và sau đó bên trong các cluster thì nó truy nhập thẳng đến sector đó dựa vào chỉ số của nó Tất cả các hệ thống file của Window đều được thực hiện như trên Sự khác nhau chủ yếu nằm ở bao nhiêu không gian cho mỗi file có thể điều khiển, hay hiệu quả sử dụng của mỗi file như bảng sau đã chỉ rõ :

Số byte trên cluster Giới hạn cluster

FAT16 2 Nằm giữa 4087 and 65526 clusters

Mỗi định dạng FAT bao gồm một số mà chỉ ra số của bit định dạng sử dụng để xác định cluster trên đĩa Định danh cluster 12 bit của FAT12giới hạn phân vùng để lưu trữ lớn nhất 2 12 (4096) cluster Window2000 sử dụng kích thước cluster từ 512 byte đến 8 KB, giới hạn kích thước ổ đĩa đến 32 MB Do đó, Window 200 sử dụng FAT12 như là định dạng của tất cả cỏc đĩa mềm 5ẳ- inch và 3.5 inch , lưu trữ 1,44

FAT16, với địnhdanh 16 bit cho cluster có thể đánh địa chỉ của 2 16 (65,536) Trên

Window 2000, kích thước của cluster FAT16 từ 512 byte đến 64 KB, giới hạn kích thước của ổ đĩa FAT16 là 4GB Kích thước của cluster trên window 2000 sử dụng phụ thuộc vào kích thước của ổ đĩa Kích thước thay đổi đợc đưa ra như bảng dưới đây Nếu bạn định dạng ổ đĩa mà ít hơm 16 MB bằng cách dùng lệnh format hay

Disk Management snap-in thì Window 2000 sử dụng định dạng FAT 12 thay thế cho FAT16.

Bảng kích thước mặc định của cluster FAT16 trong window 2000

FAT32 là định dạng hệ thống file dựa trên FAT được đưa ra gần đây nhất., và nó cúng có trong Windows 95 OSR2, Windows 98, và Windows Millennium

Edition FAT32 sử dụng định danh 32 bit cluster nhưng dành riêng 4 bit cao, vì thế nó là định danh 28 bit cluster Bởi vì kích thước cluster FAT32 có thể là 32KB, theo lí thuyết FAT32 có thể đánh địa chỉ ổ đĩa 8TB Mặc dù window 2000, làm việc với ổ đĩa FAT32 đang tồn tại với kích thước lớn(đợc tạo ra trong hệ điều hành khác), nó giới hạn ổ đĩa FAT32 mới đến tối đa 32 GB Với số lượng cluster cao hơn nên nó quản lí đĩa hiệu quả hơn FAT16 Nó có thể quản lí ổ dĩa 128 MB với kích thước của cluster là 512 byte

Table 12-2 Kích thước mặc đinh của FAT32

32 GB 32 KB Ổ đĩa FAT được chia vào một số vùng, như hình dưới đây Bảng định vị file có một đầu vào cho mỗi cluster trên ổ đĩa Bởi vì bảng định vị file quyết định sự thể hiện thành công của nội dung ổ đĩa, định dạng FAT duy trỳ 2 bản sao của bảng vì thế nếu bộ điều khiển hệ thống file hay chương trình kiểm tra tính chắc chắn ví dụ như Chkdsk không thể truy cập đến 1 sector (ví dụ như sector của đĩa hỏng), nó có thể đọc từ bản khác

Bảng : Cách tổ chức của định dạng FAT

Dưới đây là một ví dụ về các sector được sử dụng cho ổ đĩa FAT :

Boot record

Cả 3 hệ thống FAT đều có một boot record được đặt bên trong vùng sector dành riêng Các chương trình theo khuôn dạng DOS dành riêng 1 sector cho FAT12, FAT16, và thường là 32 sector cho FAT32 Nó đặt tại nơi bắt đầu của file FAT Boot sector của FAT12, FAT16 chiếm một sector trong khi FAT32 chiếm 32 sector.

Sector đầu tiên hoặc một số sector đầu tiên hay cũng được biết như là các sector dành riêng hay vùng dàng riêng Vùng sector được dành riêng nằm trong boot record nói cho chúng ta biết vùng này rộng bao nhiêu Ghi nhớ rằng FAT đầu tiên nằm ngay sau vùng dành riêng này

FAT32 không chỉ chứa boot record mà còn chứa cả bản sao của boot record nữa.

Boot record bao gồm một trường mà miêu tả kích thước của sector của media và nó có thể có 1 kích thước boot record khác với kích thước 512 byte thông dụng mà ta đã biết trên đĩa cứng

Bên trong boot record có 1 cấu trúc gọi là BPB hay BIOS khối tham số Cấu trúc này tạo nên boot record Về cơ bản, vì kĩ thuật lưu trữ và không gian đĩa ngày càng lớn nên có thêm một số trường được thêm vào boot record để hỗ trợ những đĩa có kích thước lớn hơn

Ví dụ về boot record : Ở đây chúng ta chỉ nói đến cách bố trí của BPB và cấu trúc còn lại của boot record FAT

12 và FAT16 có cấu trúc của boot sector là giống nhau

Boot sector của FAT

Phần đầu của boot sector cũng giống như boot sector của đĩa từ, nó có thêm các trường sau :

0x24 BYTE 0x80 Địa chỉ vật lí của ổ đĩa từ A:

0x25 BYTE 0x00 Đầu từ hiện tại Không được sử dụng bởi hệ thống file

FAT 0x26 BYTE 0x29 Chữ kí Phải là 0x28 hoặc

0x29 để được nhận đạng bởi window NT

Số hiệu của đĩa từ Đây là số duy nhất được tạo ra khi bạn format đĩa

0x2B 11 bytes NO NAME Tên đĩa từ Đây là trường đã được sử dụng để lưu tên của đĩa từ nhưng bây giờ nos dược lưu trữ trong một file đặc biệt trong thư mục gốc

0x36 8 bytes FAT16 ID hệ thống Cả FAT12 và

FAT16 đều phụ thuộc vào định dạng của đĩa từ.

0x24 4 BYTE Số lượng sector dành cho 1 bảng FAT

0x2A 2 BYTE Phiên bản của hệ điều hành, byte sau ghi só chính, byte sau ghi số phiên bản con.

0x2C 4 bytes Ghi địa chỉ cluster của thư mục gốc, cho biết địa chỉ bắt đầu của cluster thứ mấy 0x30 2 bytes 2 byte thông tin

0x32 2 bytes Ghi địa chỉ sao lưu của boot sector

0x40 1 bytes Ghi điạc chỉ của ổ đĩa từ 0x41 1 bytes 00 Byte dữ trữ

0x42 1 bytes Dấu hiệu của ROM BIOS mở rộng ghi 29H

0x43 4 bytes Ghi số seri của đĩa từ(lấy ngày giờ sau khi format ;àm số seri) 0x47 11 bytes Ghi tên ổ đĩa

Sau đây là một ví dụ về boot sector :

Thư mục gốc

là thư mục tại điểm gốc của cấu trúc thư mục mà được tổ chức file trên ổ cứng Thư mục gốc là xác định rõ bởi vì nó theo quy tắc mà không phải thêm cái khác, là thư mục bình thường trên đĩa cứng

Có thể chỉ có một thư mục gốc cho bất kì đĩa từ nào Để bám chặt cây thư mục, thư mục gốc phải được đặt ở nơi thích hợp tại nơi bắt đầu của ổ đĩa Nó được định vị một cách trực tiếp ngay sau 2 bản sao của FAT

Ngoài việc được định vị ở một nơi thích hợp, thư mục gốc phải có kích thước cố định. Thư mục bình thường thì có thể có kích thước thay đổi, chúng sử dụng không gian trên đĩa nhiều cách mà file làm, và khi không gian lớn hơn cần thiết để nắm giữ hơn 1 đầu vào, thư mục có thể được trải rộng ra cùng cách mà một file nó có thể Thư mục gốc bị giới hạn bởi số đầu vào xác định bởi vì trạng thái xác định của nó Số đầu vào của thư mục gốc có thể nắm giữ phụ thuộc vào kiểu của đĩa từ.

Volume Type Maximum Number of

Root Directory Entries 360KB 5.25" Floppy Disk 112

Ghi nhớ rằng bản FAT32 mới nhất của hệ thống file FAT không có hạn chế trên việc sắp xếp và kích thước của thư mục gốc thư mục gốc được đối xử như các thư mục bình thường và có thể được định vị lại và mở rộng kích thước ra

Có hai đặc điểm khác của thư mục gốc Một là nó không thể bị xoá , nó cũng không có cha vì nó là nút gốc ở trong cây Thư mục gốc vẫn còn chứa đầu vào” ” ngưng thay thế điểm trỏ tới số cluster của thư mục cha giống như đầu vào cha của thư mục bình thường. Các công thức sau đây đưa ra cho chúng ta số của sector xuất phát của thư mục gốc

 Root_Sectors = Root_Directory_Entries * 32 / Bytes_Per_Sector FAT_Sectors = Number_Of_FATs * Sectors_Per_FAT

Data_Sectors = Total_Sectors – (Reserved_Sectors + FAT_Sectors + Root_Sectors)

Total_Clusters = Data_Sectors / Sectors_Per_Cluster Root_Starting_Sector = Reserved_Sectors + FAT_Sectors Đối với hệ thống FAT32 thư mục gốc tạo ra chuỗi cluster Trường nằm trong thư mục gốc sẽ nói cho chúng ta số cluster bắt đầu Khi chúng ta có cluster bắt đầu thì chúng ta rất dễ dàng đưa ra số sector xuất phát cho FAT 32 như sau :

Root_Starting_Sector = ((Root_Cluster – 2) * Sectors_Per_Cluser) + Data_Area_Start

Data_Area_Start = Reserved_Sectors + FAT_Sectors + Root_Sectors

Root_Starting_Sector = ((Root_Cluster – 2) * Sectors_Per_Cluser) + Data_Area_Start

Root_Starting_Sector = Reserved_Sectors + FAT_Sectors Đó là cách chính xác mà chúng ta có thể tìm sector xuất phát cho 1 file hay một thư mục Công thức Data_Area_Start bao gồm root_sector Boot record đối với FAT32 sẽ có trường mà nắm giữ số đầu vào trong thư mục gốc

Nhìn vào hình trên ta có thể thấy được các thuộc tình của ổ đĩa định dạng FAT, từ đây ta đọc được cluster xuất phát và từ đó sẽ có các cluster tiếp theo của file.

Hệ thống định vị file

Lưu trữ, quản lí bộ nhớ phân phối theo từng file Quản lí bộ nhớ tự do

Quản lí bộ nhớ kém chất lượng Bảng định vị file chứa các kiểu thông tin sau về mỗi cluster trên đĩa từ :

Bảng giá trị của cluste

Dữ liệu của người sử dụng, trỏ đến cluster tiếp theo

Cluster bị lỗi FF7 FFF7 0FFFFFF7

Marker kết thúc FF8-FFF FFF8-FFFF 0FFFFFF8-0FFFFFFF

Nằm tại nơi bắt đầu của đĩa từ Đầu vào của FAT số 0 và FAT số 1 là được dành riêng và lưu trữ một số thông tin đặc biệt Từ đầu vào thứ 2 trở đi sẽ nói cho chúng ta trạng thái của cluster tương ứng trong vùng dữ liệu Để bảo vệ đĩa từ, có 2 bản sao của bảng được lưu trữ để đề phòng trường hợp một bảng bị mất Hơn nữa, bảng định vị file cần phải được lưu tại một vị trí thích hợp vì thế file cần được khởi đầu hệ thống có thể được định vị một cách chính xác.

Hình : Chuỗi các cluster của FAT thứ nhất

Hình : Chuỗi các cluster của FAT thứ hai Khi ghi 1 file lên đĩa từ thì nó sẽ ghi dữ liệu lên từng cluster, mỗi khi ghi hết một cluster thì nó sẽ được cấp phát thêm một cluster khác để ghi tiếp Cho đến khi người sử dụng ghi hết dữ liệu của mình Mỗi file đều có 1cluster xuất phát được lưu trữ trong đầu vào của thư mục gốc Số cluster xuất phát là địa chỉ của cluster đầu tiên được sử dụng bởi file. Mỗi cluster chứa một con trỏ trỏ tới cluster tiếp theo trong file hay dấu hiệu 0Xffff đánh dấu kết thúc file.Bảng định vị được sử dụng để giữ các cluster mà được ánh xạ đến mỗi file Hệ điều hành và các ứng dụng có thể quyết định nơi mà dữ liệu của file được lưu trữ bằng cách sử dụng đầu vào của thư mục cho file và bảng định vị file Tương tự, FAT cũng giữ các cluster mà được mở hay có giá trị sử dụng Khi một ứng dụng cần tạo hay mở rộng một file, nó cần nhiều cluster từ hệ điều hành mà được tìm kiếm chúng trong bảng định vị file.

Có một đầu vào trong bảng định vị file cho mỗi cluster được sử dụng trong đĩa Mỗi đầu vào chứa một giá trị mà biểu diễn cluster nào đang được sử dụng Có một số mã khác được sử dụng để thể hiện các trạng thái có thể của cluster.

Mỗi cluster mà được sử dụng bởi một file nào đó thì nó sẽ có con trỏ trỏ đén cluster tiếp theo sau nó mà file sử dụng để lưu trữ thông tin Cluster cuối cùng được sử dụng bởi 1 file được đánh dấu với 1 mã đặc biệt để nói cho hệ thống rằng đây là cluster cuối cùng của file, thường là số 65535(hay FFFF) Vì cluster được liên lết đén cluster khác trong kiểu này nên chúng được gọi là chuỗi cluster Mỗi file (Sử dụng hơn 1 cluster) được nối lại theo kiểu nà Nhìn ví dụ dưới đây se làm cho chúng ta dẽ hiểu hơn : Để thêm cluster hay một chữ kí kết thúc file, đầu vào của cluster có thể chứa một mã đặc biệt, thường là 0 được đặt trong bảng FAT ứng với cluster chưa sử dụng Đièu này nói cho hệ điều hành biết cluster nào có thể dược sử dụng cho các file cần thêm không gian lưu trữ Mã khác được sử dụng để thể hiện cluster hỏng Để truy cập đến toàn bộ chiều dài của file được thực hiện bằng cách sử dụng sự kết hợp của đầu vào thư mục và đầu vào cluster của nó trong FAT Điều này rất khó để miêu tả, Chúng ta hãy theo dõi ví dụ dưới đây Chúng ta xem rằng đĩa từ sử dụng 4096 byte trên 1 cluster, và file trong thư mục C:\DATA được gọi ra là “PCGUIDE.html” có kích thước là 20.000 byte File này sẽ cần đến 5 cluster để lưu trữ Vid thế chúng ta có file này trên đĩa, chúng ta nói chúng ta muốn mở nó để sửa chữa Chúng ta mở trình soạn thảo của chúng ta và hỏi file được mở Để tìm kiếm cluster trên đĩa mà chứ phần đầu tiên của file, hệ thống tìm đầu vào thư mục để tìm kiếm cluster đầu tiên của file, Chúng ta giả sử rằng cluster đó có số là 12.720 Sau đó hệ thống sẽ đi đến cluster có địa chỉ là 12720 trên đĩa để lấy phần đầu tiên của file. Để tìm cluster thứ 2 trong file này, hệ thống tìm trong đầu vào bảng FAT của cluster 12.720 Nó sẽ tìm thấy một số khác là số của cluster tiếp theo trong file này Giả sử số đó là 12.721 Vì thế phần tiếp theo của file được lấy từ cluster 12721 và đầu vào bảng FAT sẽ quyết định số cảu cluster tiếp theo cluster 12721… Quá trình này sẽ tiếp tục cho đến khi cluster cuối cùng được tìm thấy Sau đó, hệ thống sẽ kiểm tra đầu vào của FAT để tìm số của cluster tiếp theo, nhưng thay vào việc tìm các cluster có giá trị, nó sẽ tìm một số dặc biệt như 0xFFFF (bởi vì đâylà số lớn nhất của số 16 bit ) Đây là chữ kí kết thúc để báo cho hệ thống biết không có cluster nào được sử dụng trong file này nữa Sau đó nó phục hồi lại toàn bộ file

Vì mỗi cluster được móc xích với một cluster khác nên không cần thiết lưu toàn bộ file theo thứ tự kề nhau File có thể được địnhvị bất cứ đâu trên đĩa, và có thể di chuyển sau khi file được tạo ra

Hình trên minh hoạ 3 file File1.txt có cluster xuất phát là 2, từ cluster sô 23 4

0Xffff Cũng tương tự như vậy đối với file2.txt, file3.txt Các cluster không bắt buộc phải liền nhau như file2.txt

Nhân bản dữ liệu FAT (FAT Mirror)

Tất cả các bộ điều khiển FAT, có thể có nhiều bản sao của FAT Nếu lỗi xuất hiện trong việc đọc bản sao gốc, hệ thống file sẽ cố gắng để đọc từ bản sao dự trữ Trên các bộ điều khiển FAT12, FAT16, FAT đầu tiên luôn là bản sao gốc và việc sửa chứa sẽ tự động được viết trên tất cả các bản sao Tuy nhien, trên bộ điều khiển của FAT32,việc nhân bản dữ liệu FAT được thể không cho phép và FAT khác có thể hơn FAT đầu tiên có thể là bản sao chính hay động của FAT.

Việc nhân bản được cho phép bằng cách xoá bit 0x0080 trong

Khi nhân bản dữ liệu được cho phép sử dụng thì bất cứ khi nào sector của FAT được viết thì nó cũng sẽ đươc viết lại trên tất cả các FAT Sector của FAT được nhân bản cũng có thể đọc từ các FAT khác.

Bộ điều khiển FAT32 với nhièu FAT sẽ được xử như các bộ điều khiển của FAT12 và FAT16 Đó là, nhiều FAT được lưu trữ dự phóng với nhau.

Khi việc nhân bản không cho phép thì chỉ có 1 trong các FAT được hoạt động FAT hoạt động là The active FAT is the one specified by bits 0 through 3 of the extdpb_flags member of DPB The other FATs are ignored Việc không cho phép nhân bản dữ liệu cho phép ổ đĩa điều khiển tốt hơn với sector bị hỏng trong một trong các FAT Nếu một sector hỏng mà tồn tại thì khi truy cập đến FAT có thể hoàn toàn không được cho phép Sau đó nếu một FAT mớicó thể được tạo ra trong một trong các FAT không hoat động và sau đó thì có thể truy cập được bằng cách thay đổi giá trị của FAT hoạt động trong extdpb_flags.

FAT32

Về cơ bản, nó cũng giống như FAT12, FAT16 nhưng do nó sử dụng cho đĩa cứng có không gian lưu rữ lớn hơn nên nó sẽ có số sửa đổi để cho phù hợp

Sự sửa đổi của boot sector và chương trình mồi:

Bảng sửa chữa của boot setor:

Sự sửa chữa Miêu tả Reserved

Bộ điều khiển FAT32 chứa nhiều sector dành riêng hơn FAT12, FAT16 Số sector dành riêng thường là 32 nhưng có thể thay đổi

Bởi vì khối tham số BIOS của FAT32 (BPB) được trình bày theo cấu trúc của BPB là lớn hơn BPB chuẩn, boot record trên bộ điều khiển FAT32 là lớn hơn 1 sector Hơn nữa, trong vùng dành riêng có 1 sector nằm trên bộ điều khiển của FAT32 mà chứa các số lượng custer chưa sử dụng và và địa chỉ của cluster mới được định vị nhất Những giá trị này là thành phần của cấu trúc BIGFATBOOTFSINFO mà ssược chứa trong sector này. Những trường thêm vào cho phép hệ thống khởi tạo các giá trị bên ngoài viẹc đọc toàn bộ bảng địh vị file

Root Directory Thư mục gốc trên FAT32 không được lưu trên một vị trí cố định như của FAT12 và FAT16 Trên FAT32, thư mục gốc là chuỗi các cluster.Thành phần A_BF_BPB_RootDirStrtClus trong cấu trúc BPB chứa điạ chỉ của cluster đầu tiên trong thư mục gốc Điều này cho phép thư mục gốc phát triển khi cần. Thêm vào đó thành phần BPB_RootEntries của BPB is ignored on a FAT32 drive.

Sectors Per FAT Thành phần A_BF_BPB_SectorsPerFAT của BPB luôn là 0 trên bộ điều khiển của FAT32 Hơn nữa các thành phần

A_BF_BPB_BigSectorsPerFatHi của BPB được cậpnhật cung cấp thông tin về media của FAT32

BPB đối với bộ điều khiển win32 là phiên bản mở rộng của bpb của FAT12 và FAT16.

Nó không những chứa thông tin xác nhận một BPB chuẩn mà còn bao gồm một số trường them cho thông tin cụ thể của FAT32

A_BF_BPB_BytesPerSector Kích thước sector tính theo byte

A_BF_BPB_SectorsPerCluster Kích thước cluster tính theo sector

A_BF_BPB_ReservedSectors Số của sector dành riêng, bắt đầul à sector số

A_BF_BPB_NumberOfFATs Địa chỉ của bảng đinh vị file

A_BF_BPB_RootEntries This member is ignored on FAT32 drives.

A_BF_BPB_TotalSectors Kích thước của phân vùng tính theo byte

A_BF_BPB_MediaDescriptor Miêu tả media Giá trị được xác nhận bởi chuẩn của BPB

A_BF_BPB_SectorsPerFAT Số sector trên FAT

ĐỊNH DẠNG NTFS TRONG WINDOW

NTFS File System Driver (Bộ phận điều khiển hệ thống file NTFS) 41 6.2 Cấu trúc tổ chức đĩa từ trong NTFS

Trong cơ cấu tổ chức hệ thống vào ra của Windows 2000, 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 mà chạy trong “kernel- mode” chúng được viện dẫ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 con 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 7: 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ư bộ phận 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 ả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, được trình bày bên trái trong hình 3 dưới đây mà đóng lại quan hệ với hệ thống file.

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 (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 Windows 2000 để truy nhập log file hiện tại xuyên qua cache, trong hình dưới đây.

Hình 8 :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 lưu 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 file dược lưu trữ bằng cách ánh xạ chúng vào trong không gian hệ thống đị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à thu được nội dung file từ đĩa Trình quản lý cache tối ưu đĩa bằng cách sử dụng tuyến lazy writer của nó để 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 9: 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.

Một đối tượng tạo ra và truy cập file đúng như nó làm như với các đối tượng khác trong Windows 2000 bằng cách thức của object handles.By the time một I/O yêu cầu đến NTFS,bộ phận quản lý đối tượng Windows 2000 và hệ thống bảo mật đã xác minh rằng tiến trình gọi có quyền truy cập file đối tượng theo cách mà nó đang cố làm Hệ thống bảo mật đã so sánh đấu hiệu truy cập của lời gọi tới những mục trong danh sách điều khiển-truy cập cho đối tượng hồ sơ.Bộ phận điều khiển vào-ra cũng thay đổi file handle vào trong một con trỏ tới một đối tượng hồ sơ.NTFS sử dụng thông tin trên file đối tượng để truy nhập vào file trên đĩa.

Hình 10 cho thấy cấu trúc dữ liệu kết nối một bộ phận điều khiển file với cấu trúc trên đĩa của hệ thống file

Hình 10: 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

6.2 Cấu trúc tổ chức đĩa từ trong NTFS :

Nó gồm có một số đặc điểm tiên tiến như: o Sự bảo mật các file và các thư mục o Hạn ngạch của đĩa từ o Sự nén File o Sự liên kết các thư mục căn bản đặc trưng o Cơ chế khôi phục hệ thống

Cấu trúc quản lý đĩa từ trong NTFS bao gồm các mục sau:

 Sự phân chia và tổ chức không gian đĩa thành các Cluster.

 Các file lưu trữ trong các thư mục như thế nào?

 Thực hiện lưu trữ dữ liệu file và thông tin về thuộc tính của trên đĩa từ như thế nào?

 Việc nén dữ liệu trong NTFS thực hiện ra sao?

Bên trong nó, NTFS chỉ tham chiếu đến các cluster (tuy nhiên, NTFS định hình mức thấp cho hệ thống vào ra trên đĩa, như nó sắp xếp các sector thẳng hàng và độ dài của nó là bội số của kích thước sector) NTFS sử dụng các cluster như là một đơn vị của sự phân phối để duy trì sự độc lập từ các kích thước sector vật lý Sự phụ thuộc này cho phép NTFS hỗ trợ một cách hiệu quả đối với các đĩa có dung lượng lớn bằng việc sử dụng thừa số nhân lớn hoặc hỗ trợ không ở mức chuẩn các đĩa có kích thước sector lớn hơn 512 bytes Trên một ổ đĩa lớn, việc sử dụng các thừa số nhân có thể giảm sự phân mảnh và tốc độ định vị tại mức thấp nhất trong sự giao tiếp với phần đĩa lãng phí Cả hai lệnh format sẵn có trong Windows 2000 Command Promt và bảng Format chọn lựa tất cả các tác vụ lựa chọn trên bảng Action trong phần Quản lý đĩa MMC, chọn một thừa số nhân mặc định dựa trên kích thước ổ đĩa, nhưng bạn có thể thay thế kích thước này. NTFS tham chiếu tới các vị trí vật lí trên đĩa từ bởi ý nghĩa các logical cluster numbers (LCNs) Các LCN đơn giản là sự đánh số của tất cả các cluster kể từ vị trí đầu tiên trên ổ đĩa từ cho tới vị trí cuối cùng Để chuyển đổi một số LCN thành một địa chỉ trên đĩa vật lý, NTFS nhân với số LCN bằng thừa số nhân cluster để tính ra số byte vật lý còn thừa trên ổ đĩa, như ổ đĩa đòi hỏi để liên kết NTFS tham chiếu tới dữ liệu trong phạm vi một file bởi ý nghĩa của virtual cluster numbers - số cluster ảo (VCNs) CácVCNs đánh số các cluster thuộc về một file đặc biệt từ 0 đến m Tuy nhiên, VCNs không nhất thiết phải tiếp giáp vật lý, chúng có thể được lập bản đồ thành bất kỳ số lượng LCNs nào trên đĩa từ.

Boot sector của NTFS

Bảng sau đây miêu tả boot sector của ổ địa với định dạng NTFS Khi định dạng phân vùng NTFS, chương trình định dạng sẽ phân ra 16 sector đầu tiên cho boot sector và mã chương trình mồi.

Bảng 3 : Boot sector của NTFS:

0x0B 25 bytes Khối tham số BIOS

0x24 48 bytes Khối tham số BIOS mở rộng 0x54 426 bytes Mã chương trình mồi 0x01FE WORD Dầu hiệu sector kêt thúc Trên phân vùng NTFS, vùng dữ liệu theo sau BPB tạo thành khối tham số BIOS mở rộng Dữ liệu trong các trường này cho phép Ntldr(chương trình NT loader) tìm kiếm bảng file chủ (MFT) trong lúc khởi động Trên phân vùng NTFS, bảng MFT không được định vị tại sector xác đinh trước như FAT16 và FAT32 Vì lí do này, MFT có thể di chuyển nếu có 1 sector bị hỏng trong vị trí của nó Tuy nhiên, nếu dữ liệu bị sai sót, MFT không thể định vị.

Ví dụ dưới đây minh hoạ boot sector của phân vùng NTFS được định dạng trong khi chạy window 2000 Dữ liệu in ra được định dạng gồm 3 phần:

- Byte 0x00-0x0A : lệnh jump và OEM ID

- Byte 0x0B-0x53 : là BPB và BPB mở rộng

- Phần còn lại là mã của chương trình mồivà sector kêt thúc

Bảng sau đây miêu tả các trường của BPB và BPB mở rộng trên phân vùng NTFS Các trường bắt đầu tại 0x0B, 0x0D, 0x15, 0x18, 0x1A, và 0x1C

Bảng 4 : Các trường của BPB và BPB mở rộng

Byte Offset Chiều dài Giá trị minh hoạ Ý nghĩa

0x0B WORD 0x0002 Số byte trên 1 sector

0x0D BYTE 0x08 Số sector trên 1 cluster

0x13 WORD 0x0000 Không sử dụng trong

0x15 BYTE 0xF8 Miêu tả Media

0x1A WORD 0xFF00 Số đầu từ

0x20 DWORD 0x00000000 Không sử dụng trong

0x24 DWORD 0x80008000 Không sử dụng trong

G 0x0400000000000000 Logical Cluster Number for the file $MFT

G 0x54FF070000000000 Số sector logic cho file

0x40 DWORD 0xF6000000 số cluster trên phân đoạn bản ghi file

0x44 DWORD 0x01000000 số Clusters trên Index

Bảng file chính (Master File Table)

Trong NTFS , tất cả các dữ liệu lưu trên đĩa được chứa đựng trong các file , gồm cấu trúc dữ liệu sử dụng để định vị và truy cập file , chương trình mồi, bitmap một bảng phân chia trạng thái của toàn bộ đĩa Lưu mọi thứ trong file làm cho hệ thống file được định vị và bảo dưỡng một cách đơn giản , từng file riêng biệt có thể được bảo vệ bởi những thông số cho an toàn dữ liệu riêng Hơn nữa nếu một phần nào đó của đĩa bị hỏng , NTFS có thể xây dựng lại các file siêu dữ (metadata files – file chứa các dữ liệu sử dụng cho file) để ngăn ngừa sự truy cập của ổ đĩa vào vị trí này

MFT – Bảng file chủ là trọng tâm của cấu trúc đĩa NTFS MFT là file đầu tiên trên đĩa NTFS , nó chính là một mảng lưu các bản ghi của các file (file records) Mỗi bản ghi file được cố định một kích thước là 1KB , không phụ thuộc vào cỡ cluster Như thế MFT chứa các bản ghi cho mỗi file trên đĩa , và ngay cả một bản ghi cho chính MFT (vì hệ thống NTFS coi mọi thứ đều là file) Thêm vào trong MFT , mỗi đĩa NTFS bao gồm một tập hợp các file siêu dữ liệu (metadata file) ở đó có các thông tin dùng cho hệ thống cấu trúc file Các file này được gọi là các file siêu dữ liệu vì nó lưu các thông tin về dữ liệu Mỗi file siêu dữ liệu NTFS có một tên bắt đầu với dấu đôla ($) , nhưng kí tự này được ẩn đi Hình sau là hệ thống các file siêu dữ liệu

Hình 11: Các bản ghi file cho các file siêu dữ liệu NTFS trong MFT.

Để tiện hơn cho việc đọc tài liệu chúng ta cần phân biệt hai tên gọi , thứ nhất là bảng

MFT đây là bảng file chủ chứa toàn bộ các bản ghi của các file , và thứ hai là bản MFT dây chính là một bản ghi của một file được lưu trong bảng MFT

16 KB đầu tiên trong bảng MFT được dùng cho các bản ghi của các file siêu dữ liệu trong đó 12 KB đầu đã dùng cho 12 bản ghi file còn 4 KB sau còn dự trữ chưa sử dụng Bình thường mỗi bản MFT tương ứng với mỗi file khác nhau Nhưng nếu file có số lượng thuộc tính lớn , hay là bị phân mảnh nhiều , thì sẽ cần nhiều bản ghi hơn để sử dụng cho file này , trong trường hợp này bản MFT đầu tiên sẽ lưu vị trí của các bản MFT khác sau đó, đó gọi là bản ghi file cơ sở.

 Ví dụ Tổng quan về một MFT:

Tiện ích Nfi chứa đựng trong công cụ OEM cho phép ta kết xuất phần nội dung MFT một cách chính xác của ổ đĩa NTFS để biên dịch số cluster trong ổ đĩa hoặc số sector đĩa vật lý (chỉ trên các ổ không phải định dạng RAID) thành một file mà file này chứa đựng nó.

 16 mục nhập vào đầu tiên trong MFT được đảo ngược cho các file siêu dữ liệu, nhưng sự lựa chọn các file siêu dữ liệu (mà là hiện hữu chỉ khi nếu một ổ có liên hệ có đặc tính) rơi ngoài vùng: \$Extend\$Quota, \

$Extend\$ObjId, \$Extend\$UsnJrnl, và \$Extend\$Reparse.

 Phần kết xuất tiếp theo được biểu diễn trên một ổ đĩa mà sử dụng trỏ reparse ($Reparse), hạn ngạch ($Quota), và IDs đối tượng ($ObjId).

NTFS File Sector Information Utility.

Copyright (C) Microsoft Corporation 1999 All rights reserved.

$DATA (nonresident) logical sectors 32-52447 (0x20-0xccdf)

Master File Table Mirror ($MftMirr)

$DATA (nonresident) logical sectors 2048728-2048735 (0x1f42d8-0x1f42df)

$DATA (nonresident) logical sectors 2048736-2073343 (0x1f42e0-0x1fa2ff)

$INDEX_ALLOCATION $I30 (nonresident) logical sectors 2073416-2073423 (0x1fa348-0x1fa34f)

$DATA (nonresident) logical sectors 2073424-2073675 (0x1fa350-0x1fa44b)

$DATA (nonresident) logical sectors 0-15 (0x0-0xf)

$DATA $SDS (nonresident) logical sectors 2073932-2074447 (0x1fa54c-0x1fa74f) logical sectors 523160-523163 (0x7fb98-0x7fb9b)

$INDEX_ALLOCATION $SDH (nonresident) logical sectors 1876152-1876159 (0x1ca0b8-0x1ca0bf)

$INDEX_ALLOCATION $SII (nonresident) logical sectors 24-31 (0x18-0x1f)

$DATA (nonresident) logical sectors 2073676-2073931 (0x1fa44c-0x1fa54b)

Khi lần đầu tiên truy cập vào ổ đĩa, NTFS phải lắp đặt ổ này với ổ khác, đọc các siêu dữ liệu từ đĩa và thiết lập các cấu trúc dữ liệu bên trong vì vậy nó có thể xử lý hệ thống file ứng dụng truy nhập Để lắp đặt tới một ổ đĩa, NTFS xem trong các sector khởi động để tìm địa chỉ đĩa vật lý thuộc MFT Phần bản ghi thuộc sở hữu của MFT là mục nhập vào đầu tiên trong bảng, bản ghi file thứ hai trỏ tới một file đã xác định trên đoạn giữa của đĩa, gọi là MFT mirror (tên file là $MftMirr), ở đó nó chứa đựng một bản sao chép một vài hàng đầu tiên của MFT Phần sao chép riêng biệt này của MFT được sử dụng để định vị các file siêu dữ liệu nếu một phần thuộc file MFT không thể được đọc cho lý do nào đó Một khi NTFS tìm thấy bản ghi file cho MFT, nó thu được phần thông tin ánh xạ từ VCN sang LCN trong thuộc tính dữ liệu của bản ghi file và lưu trữ nó trong bộ nhớ. Mỗi lần thực hiện một chương trình có một ánh xạ từ VCN sang LCN và một độ dài của chương trình thực hiện bởi vì đó là các thông tin cần thiết để định vị một LCN cho bất kỳ VCN nào Phần thông tin chuyển đổi này báo cho NTFS biết nơi đó các chương trình thực hiện soạn ra MFT được xác định vị trí trên đĩa từ NTFS sau đó xử lý dữ liệu của các phần bản ghi MFT cho một vài file siêu dữ liệu và mở các file này Tiếp theo, NTFS thực hiện thao tác khôi phục hệ thống file của nó; Cuối cùng, nó mở các file siêu dữ liệu trong phần còn lại của nó Ổ đĩa lúc này sẵn sàng cho người sử dụng truy nhập.

Giống như hệ thống thực hiện một chương trình, NTFS ghi tới một file siêu dữ liệu quan trọng khác, gọi là log file (có tên $Logfile) NTFS sử dụng log file để ghi lại mọi hoạt động mà ảnh hưởng tới cấu trúc ổ đĩa NTFS, bao gồm sự thiết lập file hoặc bất kỳ câu lệnh nào, như lệnh Copy, những cái đó làm thay đổi cấu trúc thư mục Log file được sử dụng để khôi phục ổ đĩa NTFS sau khi hệ thống hoạt động khôn như mong đợi.

Mục nhập vào khác trong MFT được dành riêng cho root directory (giống như “\”). Bản ghi file của nó chứa chỉ mục của càc file và các thư mục đã lưu trữ trong root của cấu trúc thư mục NTFS Khi NTFS yêu cầu thông tin thứ nhất để mở file, nó bắt đầu tìm kiếm các file trong bản ghi file của thư mục root Sau khi mở file thành công, NTFS lưu trữ phần tham chiếu file MFT của file đó vì thế nó có thể truy nhập trực tiếp bản ghi MFT của file khi nó đọc và ghi các file sau đó.

NTFS ghi lại trạng thái phân chia của ổ đĩa trong bitmap file (có tên $Bitmap) Thuộc tính dữ liệu của file bitmap chứa một ảnh bitmap Mỗi một trong các bit của nó miêu tả một cluster trên ổ đĩa Nhận biết được hay không cluster là trống hoặc đã từng được định phần tới file.

Security file (tên file $Secure) chứa phần cơ sở dữ liệu miêu tả bảo mật theo bề rộng ổ đĩa Các file và các thư mục NTFS có thể thiết lập riêng lẻ miêu tả bảo mật, nhưng để duy trì phần kích thước còn trống trên đĩa, NTFS lưu trữ phần xác lập trong một file thông thường, nó cho phép các file và các thư mục mà có phần thiết lập bảo mật giống nhau để tham chiếu tới phần miêu tả bảo mật giống nhau Trong hầu hết các môi trường, toàn bộ các cây thư mục có sự thiết lập bảo mật giống nhau, vì vậy sự tối ưu này cung cấp cất giữ một cách quan trọng.

File hệ thống khác là, boot file (tên file là $Boot), lưu trữ mã khởi động Windows

2000 Để một hệ thống khởi động, mã khởi động phải được xác định tại địa chỉ trên phần đĩa đặc biệt Tuy nhiên, trong suốt quá trình định dạng, lệnh format xác định một cách rõ ràng vùng đó như một file bằng bản ghi file cho nó Sự thiết lập các file khởi động cho phép NTFS giữ nguyên quy tắc của nó trong việc tạo ra một file trên đĩa từ File khởi động giống như các file siêu dữ liệu NTFS có thể được bảo vệ một cách riêng rẽ bởi ý nghĩa của các miêu tả bảo mật, các miêu tả bảo mật này được áp dụng cho mọi đối tượng trong Windows 2000 Việc sử dụng kiểu lưu trữ “mọi thứ lưu trữ trên đĩa là một file” cũng có nghĩa hệ thống khởi động có thể thay đổi bởi các file vào ra thông thường, mặc dù hệ thống file khởi động được bảo vệ từ các thành phần không cần thiết.

NTFS cũng duy trì một bad-cluster file (tên file: $BadClus) để ghi bất kỳ vết hỏng nào trên ổ đĩa từ và một file volume-file (tên file: $Volume); nó chứa tên của ổ đĩa, phiên bản NTFS cho ổ đĩa nào đó đã được định dạng, và một bit mà khi thiết lập dấu hiệu mà một đĩa trở nên hỏng đã từng xảy ra và được sửa chữa bởi tiện ích Chkdsk Upercase file (có tên $Upcase) bao gồm một bảng dịch giữa các kí tự chữ hoa và chữ thường NTFS luôn duy trì một file chứa phần attribute definition table (tên file là $AttrDef) nó định nghĩa kiểu thuộc tính đã hỗ trợ trên ổ đĩa và chỉ rõ được hay không chúng có thể được chỉ mục, được phục hồi trong suốt hoạt động khôi phục hệ thống, …

NTFS lưu trữ một vài file siêu dữ liệu trong phần thư mục siêu dữ liệu extensions (tên thư mục: $Extend), bao gồm các file: object identifier (tên file: $ObjId), quota (tên file:

$Quota), change journal (tên file: $UsnJrnl), và reparse point (tên file: $Reparse) Các file đó lưu trữ thông tin có liên quan tới sự lựa chọn các đặc điểm của NTFS File object identifier chứa các ID đối tượng file, file quota chứa mức giới hạn quota và các thông tin xác thực trên ổ đĩa mà nó có hạn ngạch cho phép, file change journal ghi lại sự thay đổi các file và các thư mục, và file reparse point lưu trữ phần thông tin về các file và thư mục nào trên đĩa bao gồm dữ liệu reparse point.

Số tham chiếu file (File Reference Numbers)

Hình sau cho thấy cách thức cho một tiến trình truy cập tới một file trên đĩa

NTFS dùng một vài con trỏ trong file object để định vị một file trên đĩa , con trỏ sẽ trỏ tới khối điều khiển luồng (stream control block - SCB) , trong lần trở này chương trình gọi sẽ cố gắng đọc hay ghi các thuộc tính file Trong hình tiến trình gọi cả unnamed data attribute (thuộc tính dữ liệu không tên đây chính là phần dữ liệu ) và named stream của file Khối điều khiển luồng SCB mô tả các thuộc tính file riêng biệt và chứa các thông tin để tìm các thuộc tính cụ thể trong một file Tất các các khối điều khiển luồng SCB cho file đều trỏ tới một cấu trúc dữ liệu chung được gọi là file control block (FCB – khối diều khiển file ) FCB chứa một con trỏ mà thực chất gọi là tham chiếu file ( file reference ) để trỏ tới bản ghi của file trên bảng MFT

Tham chiếu file (file reference) gồm 64 bit , trong đó có 2 trường file number và sequence number (như hình vẽ ) file number tương ứng với vị trí của bản ghi file của file trong bảng MFT trừ đi 1 ( hay là vị trí của bản ghi file cơ bản nếu file có nhiều bản ghi file trừ đi 1 nếu file có nhiều bản ghi file ) sequence number sẽ tăng mỗi lần khi bản MFT được sử dụng lại

Bản ghi file nằm trong bảng file chủ MFT NTFS lưu các file như một tập hợp các cặp thuộc tính và giá trị , và một trong đó chính là dữ liệu mà nó lưu trữ ( được gọi là thuộc tính dữ liệu không tên unnamed data attribute) Thuộc tính kia gồm có tên file , thông tin nhãn thời gian ( thời gian tạo ra,thời gian truy cập gần nhất ), và có lẽ thêm tên của thuộc tính dữ liệu

Và đây là một hình ảnh đầy đủ hơn cho bản ghi file của một file nhỏ

Phần trống chính là phân còn dư ở bản ghi này Mỗi thuộc tính file được lưu trong các doạn byte riêng biệt trong file Nói đúng ra , NTFS không đọc và viết vào file mà chúng đọc và viết vào các lớp thuộc tính vì phần dữ liệu trong file được coi là thuộc tính không tên (unnamed data attribute) NTFS cho phép : tạo , xóa , đọc , và ghi Đọc và ghi thông thường hoạt động trên những thuộc tính dữ liệu không tên của file (file's unnamed data attribute) Tuy nhiên , chương trình được gọi có thể nhận biết rõ một thuộc tính dữ liệu khác bởi việc sử dụng cú pháp cho lớp dữ liệu tên

Một file trên ổ đĩa NTFS được nhận biết bởi giá trị 64-bit được gọi là file reference. File reference chứa đựng một số file và số trình tự Số file tương ứng để xác định vị trí của bản ghi file của file đó trong -1 MFT ( hoặc để xác định vị trí -1 của bản ghi cơ sở nếu file đó có nhiều hơn một bản ghi file ) Số trình tự tham chiếu file, là những giá trị tăng lên mỗi lần một bản ghi file MFT được dùng lại, cho phép NTFS thực hiện sự kiểm tra chắc chắn bên trong nó Một file reference được minh hoạ trong hình sau:

Bản ghi File (File Records)

Thay vì xem một file vừa mới cất giữ các dữ liệu nguyên bản hoặc dữ liệu nhị phân, NTFS lưu trữ các file như là một tập hợp của cặp thuộc tính/giá trị, một trong file đó là dữ liệu mà nó chứa (được gọi là thuộc tính dữ liệu không tên ) Những thuộc tính được nén trong một file bao gồm: tên file, thông tin nhãn giờ, và có thể thêm các thuộc tính dữ liệu có tên Hình sau minh hoạ bản ghi MFT của một file nhỏ:

Hình-5 Bản ghi MFT cho một file nhỏ

Mỗi thuộc tính file được lưu trữ như một luồng riêng rẽ các byte trong một file Nói đúng ra, NTFS không đọc và ghi các file mà đọc và ghi các luồng thuộc tính NTFS cung cấp sự hoạt động thuộc tính: thiết lập, xoá, đọc (miền byte), và ghi (miền byte) Việc đọc và ghi phục vụ cho các hoạt động bình thường trên thuộc tính dữ liệu không tên của file.

Tuy nhiên, người gọi có thể chỉ định một thuộc tính dữ liệu riêng rẽ bằng việc sử dụng cú pháp luồng dữ liệu có tên.

Bảng danh sách các thuộc tính cho các file trên ổ NTFS.

Thuộc tính Tên thuộc tính Phần mô tả

Thông tin ổ đĩa $VOLUME_INF

Các thuộc tính hiển thị chỉ trong file siêu dữ liệu $Volume Chúng lưu trữ các phiên bản ổ đĩa và các thông tin nhãn.

Các thuộc tính file như chỉ cho phép đọc, lưu trữ,…; các thời điểm, bao gồm khi file đã được thiết lập hoặc lần sửa đổi sau cùng; và làm thế nào các thư mục trỏ tới file ( phần cứng của nó liên kết với hành động đếm ).

Tên file $FILE_NAME Tên của file sử dụng các kí tự mã Unicode.

Một file có thể có nhiều các thuộc tính tên file, như nó làm việc khi phần cứng kết nối tới các file đã tồn tại hoặc khi một file với phần tên dài tự động thực hiện chuyển sang tên ngắn cho truy cập bằng MS-DOS và ứng dụng

Miêu tả sự bảo mật $SECURITY_D

Thuộc tính đó hỗ trợ cho sự tương thích ngược với phiên bản trước của NTFS Phiên bản của Windows 2000 của NTFS lưu trữ mọi miêu tả bảo mật trong file siêu dữ liệu

$Secure, sự phân chia phần nhãn miêu tả giữa các file và các thư mụcmà có sự thiết lập giống nhau Các phiên bản trước của NTFS đã lưu trữ thông tin miêu tả bảo mật riêng rẽ với mỗi file và thư mục.

Dữ liệu $DATA Đó là nội dung của file Trong NTFS, một file có một thuộc tính dữ liệu không tên mặc định và có thể có thêm vào các thuộc tính dữ liệu có tên; chính điều này, một file có thể có nhiều luồng dữ liệu Một thư mục không có thuộc tính dữ liệu mặc định nhưng có thể có tuỳ chọn tên các thuộc tính dữ liệu.

Chỉ số gốc, định phần chỉ số, and chỉ số bitmap

Ba thuộc tính sử dụng để thực thi sự chỉ định tên file và các ảnh bitmap chỉ số cho các thư mục lớn(chỉ đối với thư mục).

Danh sách thuộc tính $ATTRIBUTE_

Một danh sách các thuộc tính mà tạo ra file và số tham chiếu file của bản ghi MFT trong đó mỗi thuộc tính được xác định vị trí Thuộc tính hiếm khi sử dụng là hiện hữu khi một file đòi hỏi nhiều hơn một bản ghi file MFT.

ID đối tượng $OBJECT_ID Một định danh 64-byte cho một file hoặc thư mục, với mức thấp nhất là 16-bytes (128 bits) đối với ổ đĩa Dịch vụ link-tracking gán các ID dối tượng tới shell shortcut và các file nguồn liên kết OLE NTFS cung cấp các API vì vậy mà các file và các thư mục có thể được mở với

ID đối tượng hơn là đối với tên của chúng. Thông tin phân tích lại $REPARSE_POI

Thuộc tính này lưu trữ dữ liệu trỏ phân tách lại NTFS nối liền và tổ chức các trỏ bao hàm các thuộc tính.

Các thuộc tính mở rộng $EA,

Các thuộc tính mở rộng không được sử dụng một cách năng động nhưng được cung cấp cho tính tương thích ngược với các ứng dụng

Thông tin EFS $LOGGED_UTI

EFS lưu trữ các dữ liệu trong thuộc tính này, nó sử dụng để quản lý sự mã hoá một file, giống như phiên bản mã hoá của phím cần để giải mã file và danh sách người sử dụng có quyền truy nhập vào file đó Từ khoá logged có ở trong tên của thuộc tính bởi vì các thay đổi tới thuộc tính này được ghi lại trên file log của ổ đĩa cho khả năng khôi phục dữ liệu.

Bảng trên chỉ ra các tên thuộc tính, tuy nhiên, các thuộc tính này chỉ tương ứng với các mã dạng số, NTFS sử dụng kiểu này để phân loại thuộc tính với một bản ghi file.

Thuộc tính file trong một bản ghi MFT được sắp xếp thứ tự bằng các mã loại này (về số lượng theo thứ tự tăng) với một vài kiểu thuộc tính xuất hiện nhiều hơn một lần, ví dụ nếu một file có thuộc tính dữ liệu phức tạp, hoặc tên file phức tạp.

Mỗi thuộc tính bên trong bản ghi file được định nghĩa với mã kiểu thuộc tính của nó và một giá trị và tên tuỳ chọn Một giá trị thuộc tính là số phân phối các bytes tạo nên tổng thể cấu trúc thuộc tính Ví dụ, giá trị của thuộc tính $FILE_NAME là tên file, giá trị của thuộc tính $DATA là bất kỳ các byte nào mà người sử dụng lưu trữ trong một file.

Hầu hết các thuộc tính chưa từng có tên, mặc dù thuộc tính index-related và thuộc tính

$DATA thường xuyên.sử dụng Các tên phân biệt nằm trong số các thuộc tính phức tạp của kiểu giống nhau mà một file có thể tính đến Ví dụ, một file có một luồng dữ liệu đã có têncó hai thuộc tính $DATA:thuộc tính $DATA không tên lưu trữ luồng dữ liệu không tên mặc định và thuộc tính $DATA thứ hai có tên của luồng dữ liệu luân phiên và lưu dữ liệu của luồng đã có tên.

Tên file (Filenames)

Cả NTFS và FAT cho phép mỗi tên là một chuỗi kí tự trên 1 dòng có thể dài tới 255 kí tự Tên file gồm các kí tự được mã hóa theo mã Unicode có thể có cả dấu cách Tuy nhiên Hệ thống file dạng FAT với MS-DOS chỉ giới hạn 8 kí tự cho tên file, kí tự được mã hóa theo mã ACSII và 3 kí tự cho phần mở rộng Hình sau cho thấy một cách tượng trưng hình ảnh về sự khác nhau của các dạng tên file của các hệ thống mà Windows 2000 hỗ trợ.

Hình 12: Tên file trong Window 2000

Hệ thống con POSIX bao một vùng tên lớn nhất trong tất cả các môi trường thực thi ứng dụng mà Windows 2000 hỗ trợ , vùng tên của NTFS cũng trùng với vùng tên củaPOSIX POSIX có thể tạo ra các tên mà có thể trên các ứng dụng của Win32 hay MS-DOS không hiển thị được , như tên với nhiều dấu chấm liên tiếp hay nhiều dấu cách liên tiếp , điều này có thể thử một các dễ dàng nếu bạn đang dùng Windows 2000 hayWindows XP

Vùng Win32 trong hình trên có những tên file được hệ thống Win32 tạo ra trên đĩa NTFS nhưng các ứng dụng Win16 và MS-DOS không thể thấy được Nhóm này gồm tên file dài hơn dạng 8.3 , tên với kí tự mã hóa theo mã Unicode , tên với nhiều dấu chấm hay bắt đầu bằng dấu chấm , tên có dấu cách , NTFS tự động tạo ra một tên thay thế theo dạng của MS-DOS để dùng cho file Và trong Windows 2000 trường tên ngắn này sẽ hiển thị khi bạn dùng lệnh dir với tham số /x

Tên file kiểu MS-DOS được ẩn đi và lưu trên cùng thư mục với tên dài Bản MFT cho một file với tên file kiểu MS-DOS được tạo tự động như sau

Hình 13 : Bản ghi file MFT với các thuộc tình tên file MS-DOS

Thuật toán NTFS sử dụng để phát sinh tên MS-DOS từ phần tên dài của tệp:

1 Xóa tất cả các kí tự không hợp lệ theo quy định dạng tên của MS-DOS trong tên dài , gồm dấu cách , kí tự mã Unicode Xóa dấu chấm ở đầu hay vệt dấu chấm trong tên , rồi xóa tất cảc các dấu chấm trừ dấu cuối cùng

2 Chuỗi kí tự trước dấu chấm (nếu có ) được cắt đi và để lại 6 kí tự đầu rồi thêm vào đằng sau 2 ki tự “ ~n ” ( n là số được bắt đầu bằng 1 dùng để tạo ra những tên khác nhau khi mà xuất hiện nhiều tên giống nhau sau khi cắt ) Cắt trường sau dấu chấm (nếu có) chỉ lấy 3 kí tự đầu

3 Chuyển tất cả các kí tự thu được thành chữ in hoa MS-DOS không phân biệt chữ hoa và thường

4 Nếu tên mới được tạo ra giống một tên đã tồn tại trong thư mục hiên tại thì số n được tăng lên 1

Bảng dưới đây chỉ rõ các tên file dài Win32 từ Hình-6 và NTFS-phát sinh phiên bảnMS-DOS của nó Thuật toán hiện tại và các ví dụ trong Hình-6 chỉ cho ta ý tưởng của những cái mà NTFS phát sinh tên file dạng MS-DOS nhận thấy Dù cho, các nhà phát triển ứng dụng không nên dựa vào thuật toán này, bởi vì nó có thể thay đổi trong tương lai.

Bảng-5 NTFS-Sự phát sinh các tên file.

Win32 Long Name NTFS-Generated Short Name

File.Name.With.Dots FILENA~1.DOT

File.Name2.With.Dots FILENA~2.DOT

Name With Embedded Spaces NAMEWI~1

Các thuộc tính thường trực và không thường trực(Resident

Nếu một file có kích thước nhỏ , thì tất cả các thuộc tính và dữ liệu của nó có thể đưa lên một bản ghi file nào đó Khi các giá trị của các thuộc tính được lưu trực tiếp trên MFT , những thuộc tính đó gọi là các thuộc tính nội trú (resident arttibute) Một vài thuộc tính thuộc tính luôn luôn được mặc định là nội trú để NTFS dùng xác định các thuộc tính ngoại trú , như các thông tin chuẩn và thuộc tính index root luôn luôn là nội trú

Mỗi thuộc tính bắt đầu với một header chuẩn gồm các thông tin về thuộc tính , thông tin để cho NTFS sử dụng để quản lí các thuộc tính theo một nguyên lí chung Header luôn luôn là nôi trú mặc dù giá trị thuộc tính là nội trú hay ngoại trú Như thuộc tính nôi trú , header cũng gồm một khoảng thừa trong từ header tới giá trị thuộc tính và độ dài của giá trị thuộc tính

Hình 14 : Giá trị và phần header của thuộc tính nội trú

Khi một giá trị thuộc tính được lưu trực tiếp trên MFT , thời gian để NTFS truy cập tới giá trị được giảm bớt đi rất nhiều Thay vì tìm file trong bảng và sau đó đọc những đơn vị có vị trí liên tiếp để tìm dữ liệu file ( ví dụ như hệ thống FAT) , thì NTFS truy cập đĩa một lần và gọi ra dữ liệu một cách trực tiếp

Các thuộc tính cho một thư mục nhỏ , cũng như cho một file nhỏ , có thể nằm trên một bản MFT như ở hình sau Trong này thuộc tính root index gồm một danh sách các tham chiếu file của các file và thư mục con trong thư mục này

Hình 15 : Bản ghi file MFT đối với file nhỏ.

Tất nhiên nhiều file và thư mục không ép cố định cỡ 1KB cho bản MFT Nếu một thuộc tính đặc biệt nào đó như thuộc tính dữ liệu file ( file's data attribute) mà quá lớn không thể chứa trong bản MFT của file , NTFS phân chia các cluster cho dữ liệu thuộc tính và được tách rời trên các bản MFT Vùng này được gọi run ( hay an extent )

Nếu gía trị thuộc tính kèm sau đó ( ví dụ khi người sử dụng thêm dữ liệu vào cuối file ) , NTFS phân chia những run khác cho dữ liệu thêm vào Các thuộc tính mà toàn bộ giá trị được lưu trong các run được gọi là thuộc tính ngoại trú (nonresident attributes) Hệ thống file sẽ quyết định những thuộc tính nhất định nào đó là nội trú hay ngoại trú

Khi một thuộc tính là ngoại trú , như thuộc tính dữ liệu cho một file lớn , thì header của nó chứa nhưng thông tin mà NTFS cần để đinh vị giá trị thuộc tính trên đĩa Hình sau cho thấy thuộc tính dữ liệu ngoại trú được lưu trên 2 run

Hình 16 : Bản ghi file MFT đối với file lớn với 2 run

Trong các thuộc tính chuẩn , chỉ những thuộc tính có thể gia tăng về kích thước mới có thể là ngoai trú Ví dụ như các thuộc tính dữ liệu và danh sách thuộc tính Còn các thông tin chuẩn và các thuộc tính tên file luôn là thuộc tính nội trú

Với thư mục thì một thư mục lớn cũng có thể có các thuộc tính ngoại trú (hay một bộ phận của các thuộc tính là ngoại trú ) như ở ví dụ sau Trong ví dụ này , bản ghi fileMFT không đủ chỗ để lưu các mục của file trong thư mục lớn này Một phần của chỉ mục được lưu trên thuộc tính chỉ mục gốc ( index root ) , và một phần của chỉ mục được lưu trên các run bên ngoài ( nonresident runs) được gọi là index buffers Thông tin chuẩn và các thuộc tính tên file luôn là nội trú Header và một phần tối thiểu giá trị của thuộc tính chỉ mục chủ ( index root attribute) cũng là nội trú cho các thư mục

Hình 17 : Bản ghi file đối với thư mục lớn với chỉ mục tên file ngaọi trú

Khi một thuộc file ( hay thư mục) không thể đặt trên một bản MFT của file thì nó sẽ được được phân chia ra rồi được lưu trênc các run , NTFS giữ vị trí của các run bởi cặp ánh xạ từ VCN đến LCN LCN mô tả thứ tự luster trên toàn bộ đĩa từ 0 tới n Số VCN là chỉ số cluster được đánh số cho một file nào đó , nó được đánh số từ 0 tới m Một minh hạo đơn giản cho việc đánh số cluster trong run như hình sau

Hình 18 : VCNs đối với thuộc tính dữ liệu ngoại 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 Header của thuộc tính dữ liệu ánh xạ từ VCN tới LCN cho 2 run này để tìm vị trí của nó trên đĩa như sau

HÌnh 19 : Ánh xạ từ địa chỉ ảo sang địa chỉ logic đối với thuộc tính dưc liệu ngoại trú

Mặc dù ở hình này chỉ chỉ vẽ các run dữ liệu , các thuộc tính khác có thể được được lưu trong các run khác Và nếu một file đặc biệt nào đó có quá nhiều thuộc tính để đưa lên một bản MFT , thì một bản MFT thứ hai sẽ được dùng để lưu các thuộc tính ( hay các header cho các thuộc tính ngoại trú ) Trong trường hợp này , một thuộc tính được gọi là thuộc tính danh sach (list attribute ) được thêm vào Thuộc tính này chứa các mã của tên và loại của mỗi thuộc tính file và tham chiếu file của bản MFT Thuộc tính list attribute được cung cấp trong các trường hợp file lớn hay bị phân mảnh nhiều thì một bản MFT không thể chứa quá nhiều ánh xạ từ VCN tới LCN tìm để tìm các run của nó Các file với khoảng hơn 200 run thường cần một danh sách thuộc tính attribute list.

Trong NTFS , một thư mục (cũng được coi là file) đơn giản là một chỉ mục của các tên file trong nó, một tập hợp các các tên file được tổ chức một cách đặc biệt để truy cập nhanh Khi tạo môt thư mục , NTFS lập ra bảng chỉ mục cho các thuộc tính tên file của file trong thư mục đó Bản MFT của thư mục gốc (root) của đĩa được thể hiện trong hình sau

Hình 20 : Hình ảnh về chỉ mục tên file cho thư mục gốc của đĩa

Một bản MFT cho thư mục chứa thuộc tính chỉ mục gốc của nó ( index root ) , thuộc tính index root chứa danh sách các file trong thư mục đã được sắp xếp Tuy nhiên để cho một thư mục lớn , tên file thực sự được lưu trên các index buffers có cỡ cố định là 4KB , nơi chứa và tổ chức các tên file Thuộc tính root index chứa các con của thư mục gốc (root subdirectories) và các con trỏ tới index buffers chứa các mức tiếp theo

Hình trên chỉ thể hiện tên file trong thuộc tính index root và index buffers ( ví dụ như file6 ), nhưng trong một chỉ mục còn có cả tham chiếu file trong bản MFT NTFS sao lại nhãn thời gian và cỡ file từ MFT của file Công nghệ này được FAT và NTFS sử dụng đòi hỏi cập nhập thông tin để viết trên 2 chỗ , nhưng lại có sự tối ưu về tốc độ cho việc duyệt thư mục , bởi vì nó cho phép hệ thống file lấy nhãn thời gian và cỡ file mà không cần mở mọi file trong thư mục

Nén dữ liệu và Các file rải (Data Compressing and Sparse Files) 70 6.11 Các File rải (Sparse Files)

Dữ liệu thưa (Sparse data) thường lớn nhưng lại chỉ chứa một lượng nhỏ dữ liệu khác không Một ma trân thưa chính là một ví dụ cho dữ liệu thưa NTFS dùng các VCN , từ

0 tới m để đếm số cluster của file Mỗi VCN ánh xạ tới một LCN tương ứng , ánh xạ này để tìm ra vị trí của cluster trên đĩa Hình sau mô tả các run của một file không nén bình thường mà có lược đồ của các VCN và LCN tương ứng của nó

Hình 21: Các run của file không nén

File này được lưu trên 3 run , mỗi run là 4 cluster và tổng là 12 cluster Hình sau đây là bản MFT cho file , có chứa lược đồ ánh xạ từ VCN-tới-LCN , và chỉ có một lược đồ cho mỗi run Định dạng chỉ mục này là điển cho một file không nén

Hình 22 : Bản MFT cho một file không nén

Khi người sử dụng chọn một file trên đĩa NTFS để nén , cộng nghệ nén của NTFS sẽ bỏ đi những chuỗi bằng 0 của file Nếu dữ liệu file thưa , thì nó sẽ thu gọn lại và chiếm giữ một vùng khác của đĩa mà nó cần Trên những phần ghi vào file về sau ,NTFS chỉ phân chi khu vực cho các run mà ở đó sẽ chứa dữ liệu khác 0 (nonzero data) Nói tóm lại việc nén ở đây chính là loại bỏ các dữ liệu zero rồi gom các dữ liệu còn lại lên các run mới được cấp phát ở những vị trí hợp lí Hình sau mô tả các run của file nén chứa dữ liệu thưa

Hình 23 : Các run của file được nén mà chứ dữ liệu thưa

Bản MFT cho file nén bỏ qua các khối của các số VCN nơi chứa zero bởi vậy không thiết bị lưu trữ vật lí nào phân chia vị trí cho nó Mục dữ liệu đầu tiên ở hình sau là một ví dụ , bắt đầu với VCN là 0 và chiếm tới 16 cluster mục dữ liệu thứ hai nhảy tới VCN 32 và chiếm 16 cluster

Hình 24: Bản MFT cho một file nén chứa dữ liệu thưa

Khi một chương trình đọc dữ liệu từ file nén , NTFS kiểm tra bản MFT để tìm bản ánh xạ từ VCN tới LCN để định vị trí và bắt đầu đọc Nếu chương trình đọc từ một chỗ không được định phần trong file , nghĩa là dữ liệu chứa trong phần đó của file là zero thì NTFS nhận luôn zero mà không cần truy cập đĩa Nếu chương trình viết dữ liệu khác zero vào một chỗ , thì NTFS lặng lẽ định phần một vùng đĩa rồi ghi dữ liệu lên đó 6.10.2 Nén dữ liệu không thưa :

Thực tế dữ liệu trong rất nhiều file là không thưa (Nonsparse Data) , nhưng nó vẫn được nén , và ở đây là bởi dùng các thuật toán nén

Trong NTFS , người dùng có thể chỉ định nén cho các file riêng biệt hay cho tất cả các file trong một thư mục Khi nén một file , NTFS phân chia dữ liệu ban đầu của file vào các đơn vị nén gọi là compression units dài 16 clusters (tương đương với 8 KB nếu mỗi cluster 512 byte ) Chắc chắn dải dữ liệu trong file không được nén nhiều ; nên NTFS quyết định chọn quá trình nén một đơn vị phải tiết kiệm được ít nhất là một cluster Còn nếu nén một đơn vị mà không không giảm được ít nhất 1 cluster thì NTFS không nén nữa và cấp cho một run 16 cluster để ghi dữ liệu lên đó Nếu dữ liêu trong 16 cluster sẽ được nén tới 15 cluster hay ít hơn thì NTFS chỉ cấp cho số cluster cần thiết để chứa dữ liệu nén và ghi chúng lên đĩa Hình sau cho thấy việc nén dữ liệu của một file với 4 run Những vùng trắng là vị trí lưu trữ thực sự của nó sau khi nén Các run 1 , 2 và 4 được nén còn run 3 thì không Nén file này tiết kiệm được 26 cluster hay 41 %

Hình 25: Các run dữ liệu của file nén

Chú ý : Mặc dù các lược đồ trong chương này ghi các số LCN liên nhau , nhưng một đơn vị nén không cần lưu trên các cluster vật lí liền nhau Các run chiếm các cluster không liền nhau được tạo ra nhờ bản MFT phức tạp hơn , được thể hiện ở hình sau

Hình 26 : Bản MFT cho file nén

Khi ghi dữ liệu vào một file nén , NTFS chắc chắn rằng mỗi run 16 cluster Nên số VCN bắt đầu cho mỗi run là bội của 16 , và các run không dài hơn 16 cluster NTFS đọc và ghi ít nhất một đơn vị nén trong một lần khi nó truy cập file nén Tuy nhiên khi ghi dữ liệu nén , NTFS cố gắng ghi các đơn vị nén trên những vị trí vật lí liền nhau để có thể đọc tất cả chúng trong một tiến trình đơn vào ra (single I/O operation ) Cỡ16-cluster của đơn vị nén NTFS được chọn để giảm bớt sự phân mảnh (fragmentation) bên trong Đơn vị nén 16 cluster là sự kết hợp tốt nhất cho việc tiết kiệm không gian đĩa và tăng tốc độ đọc file

Nếu dữ liệu trong file đã được nén , NTFS sẽ giải nén dữ liệu vào trong một vùng đệm gọi là scratch buffer và sau đó copy nó tới caller's buffer NTFS cũng nạp dữ liệu đã giải nén vào trong bộ đệm cache rồi tiến hành đọc dữ liệu từ các run , quá trình đọc các run trên bộ đệm cache sẽ nhanh hơn rất nhiều

Công nghệ nén này là đặc điểm rất tiên tiến của hệ thống file NTFS , nó giúp tiết kiệm được không gian đĩa Người dùng có thể thực hiện công việc nén một cách dễ dàng trong Windows 2000 hay Windows XP

Các bước cho việc nén dữ liệu :

1 Chọn thư mục cần nén , click chuột phải , rồi chọn properties

2 Chon General rồi click chuột vào nút Advanced

3 Trong Compress and encrypt attributes chọn Compress content to save disk space và tíc vào đó

4 Cuối cùng OK và đợi quá trình nén thực hiện

6.11 Các File rải (Sparse Files)

Các file rải (kiểu file NTFS, như là sự tương phản với các file mà chứa đựng các dữ liệu rải rác, được miêu tả bên trên) về cơ bản là các file đã nén cho loại mà NTFS không áp dụng kỹ thuật nén thành dữ liệu không rải rác của file Tuy nhiên, NTFS quản lý run của nó.

Các trỏ Reparse (Reparse Points)

Một trỏ reparse là một khối lên tới 16 KB của dữ liệu reparse định nghĩa ứng dụng và đuôi reparse 32-bit mà nó được lưu trữ trong thuộc tính $REPARSE_POINT của file hoặc thư mục Khi nào một ứng dụng tạo ra hoặc xoá một trỏ reparse, NTFS cập nhật file siêu dữ liệu \$Extend\$Reparse, trong nó NTFS lưu trữ các mục nhập vào mà nó định nghĩa số bản ghi file của các file và thư mục chứa các trỏ reparse Quá trình lưu trữ các bản ghi trong một vị trí trung tâm cho phép NTFS cung cấp giao diện cho ứng dụng thành đếm mọi trỏ reparse của ổ hoặc đúng các kiểu đặc biệt của các trỏ reparse, như là các trỏ mount File \$Extend\$Reparse sử dụng các tiện ích của các mục tổng quát củaNTFS bằng thứ tự các mục nhập vào của file(trong mục có tên $R) bởi các đuôi trỏ reparse.

Sự thay đổi File Journal (The change Journal File)

Sự thay đổi file nhật ký,\$Extend\$UsnJrnl, là một file rải mà NTFS thiểt lập chỉ khi nào một ứng dụng cho phép các quá trình truy nhập thay đổi Journal lưu trữ các mục thay đổi trong luồng dữ liệu $J Các mục nhập vào bao gồm các thông tin sau về sự thay đổi một file hoặc thư mục:

 Thay đổi về thời gian

 Thay đổi về kiểu loại(xoá, đổi tên, kích thước phần mở rộng, … )

 Các thuộc tính của file hoặc thư mục

 Tên của file hoặc của thư mục

 Số tham chiếu file của file hoặc của thư mục

 Số tham chiếu file của thư mục chính của file.

File journal là rải rác vì thế nó không bao giờ bị tràn; khi kích thước trên đĩa của journal vượt quá kích thước tối đa của một file, NTFS đơn giản bắt đầu từ vị trí đầu tiên của file dữ liệu mà thư tự thông tin thay đổi của cửa sổ đang có kích thước ngang bằng với kích thước tối đa journal, như Hình-20 Để ngăn cản việc đưa lại kích thước cố định khi một ứng dụng vượt quá mức liền kề của kích thước file, NTFS rút ngắn journal chỉ khi kích thước của nó giá trị gấp đôi được ứng dụng định nghĩa vượt quá giá trị cực đại của kích thước định dạng.

Hình-27 Phần không gian của file journal($UsnJrnl ) thay đổi.

Các ID đối tượng (Object IDs)

Trong phần thêm vào để lưu ID đối tượng được gán cho một file hoặc thư mục trong thuộc tính $OBJECT_ID của bản ghi MFT của nó, NTFS cũng giữ thông tin qua lại giữa các ID đối tượng và các số tham chiếu file của chúng trong mục $O của file siêu dữ liệu

\$Extend\$ObjId Mục lục này sắp xếp các mục nhập vào dựa trên ID đối tượng, tạo ra một cách dễ dàng cho NTFS để định vị một cách nhanh chóng một file dựa trên các ID của nó Đặc điểm này cho phép các ứng dụng đang sử dụng không dựa trên các tư liệu sinh ra hàm API, để mở một file hoặc một thư mục đang sử dụng ID đối tượng của nó.

Kiểm tra Hạn ngạch (Quota Tracking)

Tiện ích kiểm tra hạn ngạch NTFS liên kết một ID của chủ sở hữu với mỗi người sử dụng là người thiết lập các file và lưu trữ ID chủ sở hữu của người sử dụng với mỗi file hoặc thư mục mà người dùng thiết lập, Để quyết định được hay không một người sử dụng đã từng được gán bởi một ID, NTFS sử dụng SID của người dùng như một khoá để mục nhập vào mục $O của file siêu dữ liệu \$Extend\$Quota Nếu một ID không được định vị, NTFS định phần một ID duy nhất cho người sử dụng và ghi các liên kết trong mục $O.

\$Extend\$Quota cũng chứa một mục có tên $Q mà NTFS sử dụng để lưu các mục nhập thông tin hạn ngạch trên một người dùng, theo thứ tự các mục nhập vào bởi ID chủ sở hữu Khi một người dùng cố gắng định phần không gian trên ổ đĩa, NTFS sử dụng ID chủ sở hữu để tìm mục nhập hạn ngạch của người dùng và quyết định được hay không có đủ không gian đĩa bỏ lại trong hạn ngạch của người dùng để cho phép định phần.

Tính bảo mật hợp nhất (Consolidated Security)

Tiện ích kiểm tra hạn ngạch NTFS liên kết một ID của chủ sở hữu với mỗi người sử dụng là người thiết lập các file và lưu trữ ID chủ sở hữu của người sử dụng với mỗi file hoặc thư mục mà người dùng thiết lập, Để quyết định được hay không một người sử dụng đã từng được gán bởi một ID, NTFS sử dụng SID của người dùng như một khoá để mục nhập vào mục $O của file siêu dữ liệu \$Extend\$Quota Nếu một ID không được định vị, NTFS định phần một ID duy nhất cho người sử dụng và ghi các liên kết trong mục $O.

\$Extend\$Quota cũng chứa một mục có tên $Q mà NTFS sử dụng để lưu các mục nhập thông tin hạn ngạch trên một người dùng, theo thứ tự các mục nhập vào bởi ID chủ sở hữu Khi một người dùng cố gắng định phần không gian trên ổ đĩa, NTFS sử dụng ID chủ sở hữu để tìm mục nhập hạn ngạch của người dùng và quyết định được hay không có đủ không gian đĩa bỏ lại trong hạn ngạch của người dùng để cho phép định phần.

CẤU TRÚC ĐIỀU KHIỂN CỦA HỆ THỐNG FILE

LOCAL FSD

Local FSDs bao gồm Ntfs.sys, Fastfat.sys, Udfs.sys, Cdfs.sys, và raw FSD(được hợp nhất trong Ntoskrnl.exe) Hình dưới đây đưa ra cách nhìn về cách tương tác của FSD với bọ quản lí vào ra và bộ điều khiển thiết bị lưu trữ Khi FSD được dăng kí, bộ quản lí vào ra có thể gọi trên nó để thực hiện nhận dạng ổ đĩa khi trình ứng dụng hay hệ thống truy nhập lần đầu Nhận dạng ổ đĩa bao gồm sự kiểm tra của boot sector của ổ đĩa.

Sector đầu tiên cua rmỗi định dạng hệ thống file được dành riêng như là boot sector của ổ đĩa Boot sector chứa đầy đủ các thông tin nì thế local FSD có thể vừa nhận dạng ổ đĩa mà sector nào nằm vì chứa đựng một định dạng mà FSD quản lí và định vị các siêu dữ liệu khác cần thiết để nhận dạng nơi mà siêu dữ liệu đang được lưu trữ trên ổ đĩa

Khi local FSD nhận dạng ổ đĩa, nó tạo ra các đối tượng thiết bị mà biểu diến các định dạng hệ thống file được kết gắn Bộ quản lí vào ra tạo ra sự kết nối qua khối tham số ổ đĩa(VPB) giữa các đối tượng thiết bị (được tạo ra bởi đối tượng thiết bị) và đối tượng thiết bị mà FSD tạo ra Sự kết nối của VPB dẫn đến bộ quan rlí vào ra gửi lại một lần nữa yêu cầu vào ra. Để cải thiện việc thực hiện, local FSD thường sử dụng quản lí bộ nhớ đệm để lưu dữ liệu của hệ thống file, baogòm siêu dữ liệu Chúng cũng kết hợp với quản lí bộ nhớ chính vì thế file được ánh xạ được thực hiện một cách chính xác Ví dụ, chúng phải yêu cầu quản lí bọ nhớ bất kì khi nào một ứng dụng cố gắng để cắt bỏ file để xác minh rằng không có quy trình nào được ánh xạ đến phần của file vượt qua khỏi điểm cắt bỏ.

Local FSD cũng hỗ trợ thao tác thào dỡ hệ thống file mà chophép hệ thống không kết nốiFSD từ đối tượng ổ đĩa Viẹc tháo bỏ xuất hiện bất cứ khi nào một ứng dụng yêu cầu truy cập thô đến nội dung của ổ đĩa hay media được phù hợp với ổ đĩa bị thay đổi Lần đầu tiên, mọt ứng dụng truy cập thông tin sau khi tháo bỏ, quản lí vào ra khởi tạo lại thao tác kết gắn ổ đĩa cho media.

Hoạt động của hệ thống file

Các ứng dụng hay hệ thống truy cập file theo 2 cách : trực tiếp, qua chức năng vào ra của file( như readfile hay writefile) và gián tiép bằng cách đọc hay viết vị trí của không gian địa chỉ mà tham chiếu đến phần file được ánh xạ HÌnh 12-7 là một biểu đồ đơn giản mà chỉ ra thành phần bao gồm trong thao tác của những hệ thống file này và cách mà chúng tương tác Như bạn thấy, FSD có thể gồm các phần sau:

 Trực tiếp từ chuỗi hệ thống hoặc người sử dụng mà thực hiện vào ra file.

 Trực tiếp từ modified page writer của quản lí bộ nhớ.

 Gián tiếp từ lazy writer của quản lí bộ nhớ đệm

 Gián tiếp read-ahead thread của quản lí bộ nhớ đệm

 Trực tiếp từ bộ điều khiển lỗi trang nhớ của quản li bộ nhớ

Hình 29 : Các thành phần của vào ra của hệ thống file

Memory Manager's Modified and Mapped Page Writer

Tuyến Memory Manager's Modified and Mapped Page Writer bắt đầu giai đoạn định kì để chỉnh sửa trang Tuyến này gọi IoAsynchronousPageWrite để tạo ra IRP của kiểuIRP_MJ_WRITE và ghi vào trang nhớ đến trang đánh số hay một file mà ợưc chỉnh sửa sau khi ánh xạ Giống như IRP mà MiDispatchFault tạo ra, những IRP này được đánh dấu như là không được lưu trữ hay vào ra đánh số trang.

Lazy Writer của quản lí bộ nhớ đệm

Tuyến Lazy Writer của quản lí bộ nhớ đệm cũng thực hiện vai trò trong việc ghi vào trang được chỉnh sửa bởi vì một cách định kì nó xem trực tiếp phần của file đợc ánh xạ trong bộ nhớ đệm mà nó biết là đã bị nhiễm bẩn Thao tác flush mà quản lí bộ nhớ đệm thực hiện bằng cách gọi MmFlushSection, bắt đaầuquá trình quản lí bộ nhớ ghi vào bất kì trang nhớ được chỉnh sửa trong phần của đoạn mà đang đợc flush đến đĩa.

MmFlushSection sử dụng IoAsynchronousPageWrite để gửi dữ liệu đến FSD.

Tuyến Read-Ahead của quản lí bộ nhớ đệm

Quản lí bộ nhớ đệm bao gồm một tuyến mà có trách nhiệm để cố gắng đọc dưc liệu từ file trước khi một ứng dụng hay một bộ điều khiển hay tuyến hệ htống yêu cầu nó Tuyến read-ahead sử dụng thao tác đọc trước đó mà đã được thực hiện trên 1 file được lưu trữtrong bản đò lưu trữ riêng của đối tượng file để quyết định co bao nhiêu dưc liệu để đọc Khi tuyến thực hiện read-ahead, đơn giản nó ánh xạ phần của file mà nó muốnđọcvào trong bộ nhớ đệm

Vào ra file

Cách rõ ràng nhất để một ứng dụng có thể truy cập đến file là bằng cách gọi các hàm vào ra như creatfile, readfile và writefile Một ứng dụng mở một file với creatfile và sau đó đọc, viết, xoá file bằng cách qua bộđiều khiển quay lại từ creatfile đến các hàm win32 Hàm creatfile được thực hiện trong kernel32.dll, gồm các hàm động Ntcreatfile, định dạng đường dẫn đến gốc, ví dụ như \??\C:\Susan\Todo.txt

NtCreateFile sử dụng ObOpenObjectByName để mở file, phân tách tên bắt đầu với thư mục gốc mà quản lí đối tượng và thành phần đầu tiên trong đường dẫn ("??") ?? là thư mục con chứa các kết nối kí tự biểu diễn ổ đĩa mà được gán cho một kí tự ổ đĩa (và kết nối kí tự đến seri cổng và các đối tượng thiết bị khác mà win32 truy cập trực tiếp), vì thế

“C”: thành phần của tên đường dẫn \??\C : kết nối kí tự Điểm kết nối kí tự đến đối tượng thiết bị ổ đĩa bên dưới \Device, vì thế khi quản lí đối tượng gặp đối tượng ổ đĩa, quản lí đối tượng chuyển cho phần còn lại của tên đường dẫn đến hàm phân tách mà quản lí vào ra đang kí với đối tượng thiết bị IopParseDevice Trong ổ đĩa trên đĩa động, kí tự kết nối trỏ tới một kí tự kết nối trung gian mà trỏ tới đối tượng thiết bị ổ đĩa(Hình 12-8 chỉ ra cách mà đối tượng ổ đĩa được truy cập qua không gian tên quản lí đối tượng Hình chỉ ra các mà kết nối kí tự \??\C trỏ tới đối tượng thiết bị ổ đĩa \Device\HarddiskVolume1).

Sau khi khoá ngữ cảnh bảo mật của người gọi và chưa thu được các thông tin bảo mật từ mã thông báo của người gọi IopParseDevice tạo ra gói tin yêu cầu vào ra (IRP) của kiểu IRP_MJ_CREATE, tạo ra đối tượng file mà lưu trữ tên của file đang được mở, theo sau khối tham số ảo VPB của đối tượng thiết bị ổ đĩa để tìm đối tượng thiết bị của hệ thống file được kết gắn với ổ đĩa, và sử dụng IoCallDriver để vượt qua bộ điều khiển hệ thống file IRP mà làm chủ đối tượng thiết bị hệ thống file.

Khi Một FSD nhận một IRP_MJ_CREATE IRP, nó tìm kiếm file cụ thể, thi hành hiệu lực bảo mật, và nếu file tồn tại và người sử dụng có quyền truy nhập theo cách được yêu cầu thì nó sẽ trả về mã thành công Quản lí đối tượng tạo ra bộ điều khiển cho đối tượng file trong bảng điều khiển của tiến trinh và điều khiển việc quay trở lại bằng cách gọi chuỗi, cuối cùng đi đến được ứng dụng như một tham số trả về từ Creatfile Nếu hệ thống file bị lỗi tạo file, Quản lí vào ra xoá đối tượng file mà được tạo ra cho nó.

Chúng ta bỏ qua chi tiết cách mà FSD định vị file đang được mở trên ổ đĩa, nhưng hàm

ReadFile gọi thao tác chia sẻ nhiều tương tác của FSD với quản lí bộ nhớ đệm và bộ điều khiển lưu trữ Đường dẫn trong nhân đưa ra kết quả của lời gọi ReadFile là giống với lời gọi CreateFile nhưng dịch vụ hệ thống NtReadFile không cần thực hiện việc tìm kiếm tên, nó gọi trên quản lí đối tượng để chuyển điều khiển qua được từ ReadFile bên trong con trỏ của đối tượng file Nếu bộ điều khiển chỉ ra rằng người gọi có quyền đọc file khi file được mở, NtReadFile tiến đến tạo một IRP của kiểu IRP_MJ_READ và gửi nó đến FSD tại nơi mà file được lưu trữ NtReadFile thu được đối tượng thiết bị của FSD mà được lưu trữ trong đối tượng file, và gọi IoCallDriver , quản lí vào ra định vị FSD từ đối tượng thiết bị và đưa IRP đến FSD.

Nếu 1 file đang được đọc có thể được lưu trữ ( cờ FILE_FLAG_NO_BUFFERING không qua Creatfile khi mà file được mở), FSD kiểm tra để thấy dù việc lưu trữ có được khởi tạo cho đối tượng file hay không Trường PrivateCacheMap trong đối tượng file trỏ tới cấu trúc dữ liệu ánh xạ riêng nếu việc lưu trữ được khởi tạo cho file Nếu FSD không được khởi tạo lưu trữ cho đối tượng file( lần đầu tiên mà file được đọc hay ghi vào).Trường PrivateCacheMap sẽ là null FSD gọi hàm quản lí bộ nhớ

CcInitializeCacheMap để khởi tạo lưu trữ, bao hàm quản lí bộ nhớ đệm tạo ra ánh xạ bộ nhớ đệm riêng lẻ và nếu đối tượng file khác đề cập đến cùng file đượckhở tạo việc lưu trữ, bao gồm việc tạo ra bản đò bộ nhớ riêng lẻ và nếu đối tượng file đề cập tới cùng file mà không được khởi tạo việclưu trữ, bản đồ bộ nhớ đệm chia sẻ và đối tượng đoạn.

Sau khi nó kiểm tra việc lưu trữ đợc chophép đối với file, FSD sao lại dữ liệu của file yêu cầu từ bộ nhớ ảo của quản lí bộ nhớ đệm đến vùng đệm mà chuỗi qua để đọc file Hệ thống file thợc hiện việc copy bên trong khối thử/ngoại trừ vì thế ns lưu trữ bất kì lỗi nào mà là kết quả của vùng đệm của ứng dụng không có hiệu lực Hàm mà hệ thống file sử dụng để thực hiện việc copy là hàm CcCopyRead của quản lí bộ nhớ đệm, CcCopyRead đưa ra các tham số là đối tượng file, địa chỉ đoạn file và chiều dài của file.

Khi quản lí bộ nhớ thực hiện CcCopyRead , nó lấy lại con trỏ để bản đồ bộ nhớ dùng chung đệm mà được lưu trữ trong đối tương file Bản đồ bộ nhớ đệm dùng chung lưu trữ con trỏ đến khối điều khiển địa chỉ ảo với một đầu vào trên khối 256 KB của một file.Nếu con trỏ VACB cho phần mà file đang được đọc là null, CcCopyRead định vị mộtVACB, dành riêng một phần theo lí thuyết của file trong tổng quát Sau đó, CcCopyRead đơn giản copy dữ liệu file từ việc ánh xạ đến vùng đệm mà nó đi qua (vùng đệm được đi qua để mà đọc file) Nếu dữ liệu file khong nằm trong bộ nhớ vật lí, thao tác copy tạo ra llỗi trang, mà được giúp đỡ bởi MmAccessFault

Khi lỗi trang xuất hiện, MmAccessFault kiểm tra địa chỉ ảo mà gây ra lỗi và định vị mô tả địa chỉ ảo( VAD ) trong cây VAD của tiến trình mà gây ra lỗi Trong chuỗi sự kiện này, VAD miêu tả viêc ánh xạ của quản lí bộ nhớ đệm, vì thế MmAccessFault gọi MiDispatchFault để điều khiển lỗi trang nhớ trong địa chỉ có hiệu lực MiDispatchFault định vị vùng điều khiển (mà được VAD trỏ tới ) và qua vùng điều khiển để tìm đối tượng file mà thưc hiện việc mở file Nếu file đã được mở hơn một lần, có thể có một danh sách các đối tượng file được liên kết qua con trỏ trong bản đồ bộ nhớ đệm riêng của chúng.

Với việc có đối tượng file, MiDispatchFault gọi hàm quản lí vào ra IoPageRead để xây dựng nên một IRP (của kiểu IRP_MJ_READ) và gửi IRP đến FSD mà làm chủ đối tượng thiết bị mà đối tượng file trở tới Do đó, hệ thống file được nhậplại để đọc dữ liệu mà nó được yêu cầu qua CcCopyRead , nhưng lần này IRP đánh dấu không lưu trữ Trường của khối tham số ổ đĩa (VPB) trong đối tựng thiết bị FSD trỏ tới đối tượng thiết bị ổ đĩa.

Quản lí bộ nhớ ảo chờ FSD hoàn thành việc đọc IRP và sau đó quay trở lại điều khiển quản lí bọ nhớ đệm tiếp tục thực hiện thao tác copy mà bị ngắt bởi lỗi trang nhớ.Khi

CcCopyRead hoàn thành, FSD quay lại điều khiển chuỗi mà được gọi bởi NtReadFile, copy dữ liệu file yêu cầu - với trợ giúp của quản lí bộ nhớ đệm và quản lí bộ nhớ ảo - đến vùng đệm của chuỗi. Đường dẫn cho writefile tương tự việc loại bỏ mà dịch vị hệ thống NtWriteFile tạo ra IRP của kiểu IRP_MJ_WRITE và FSD ánh xạ vào trong bộ nhớ đệm và sau đó copy đến bộ nhớ đệm mà vùng đệmđược qua để writefile.

Nếu dữ liệu của file đã được lưu rữ trong tập hợplàm việc của hệ thống, có vài biến đổi trong chuỗi sự kiện mà chúng ta mô ta Nếu dữ liệu của file đã được lưu trữ trong bộ nhớ đệm, CcCopyRead không mắc phải lỗi trang nhớ Cũng như vậy, NtReadFile và

Ngày đăng: 07/08/2023, 05:18

HÌNH ẢNH LIÊN QUAN

Hình  1 :  Ánh xạ địa chỉ ảo sang địa chỉ vật lí - Quan li file trong window 216421
nh 1 : Ánh xạ địa chỉ ảo sang địa chỉ vật lí (Trang 5)
Hình 3 : Chuyển  một địa chỉ ảo hợp lệ Các bước cơ bản để chuyển đổi địa chỉ ảo : - Quan li file trong window 216421
Hình 3 Chuyển một địa chỉ ảo hợp lệ Các bước cơ bản để chuyển đổi địa chỉ ảo : (Trang 6)
Hình 2 : Các thành phần của  địa chỉ ảo trên hệ thống x86 - Quan li file trong window 216421
Hình 2 Các thành phần của địa chỉ ảo trên hệ thống x86 (Trang 6)
Hình 4 : PTE của phần cứng x86 hợp lệ - Quan li file trong window 216421
Hình 4 PTE của phần cứng x86 hợp lệ (Trang 8)
2.3. Bảng trang nhớ hệ thống và tiến trình : - Quan li file trong window 216421
2.3. Bảng trang nhớ hệ thống và tiến trình : (Trang 9)
Hình 5 : Bảng trang nhớ của tiến trình và hệ thống - Quan li file trong window 216421
Hình 5 Bảng trang nhớ của tiến trình và hệ thống (Trang 10)
Hình 6 : Truy cập chuyển đổi vùng đệm look-aside - Quan li file trong window 216421
Hình 6 Truy cập chuyển đổi vùng đệm look-aside (Trang 13)
Bảng dưới đây miêu tả các trường nằm trong phân vùng boot sector cho các đĩa từ được định dạng - Quan li file trong window 216421
Bảng d ưới đây miêu tả các trường nằm trong phân vùng boot sector cho các đĩa từ được định dạng (Trang 21)
Bảng 1: Các trường trong phân vùng boot sector (FAT File System) Byte   Offset - Quan li file trong window 216421
Bảng 1 Các trường trong phân vùng boot sector (FAT File System) Byte Offset (Trang 22)
Bảng kích thước mặc định của cluster FAT16 trong window 2000 - Quan li file trong window 216421
Bảng k ích thước mặc định của cluster FAT16 trong window 2000 (Trang 30)
Bảng giá trị của cluste - Quan li file trong window 216421
Bảng gi á trị của cluste (Trang 37)
Hình : Chuỗi các cluster của FAT thứ hai - Quan li file trong window 216421
nh Chuỗi các cluster của FAT thứ hai (Trang 38)
Hình trên minh hoạ 3 file. File1.txt có cluster xuất phát là 2, từ cluster sô 23  4 - Quan li file trong window 216421
Hình tr ên minh hoạ 3 file. File1.txt có cluster xuất phát là 2, từ cluster sô 23 4 (Trang 40)
Bảng sửa chữa của boot setor: - Quan li file trong window 216421
Bảng s ửa chữa của boot setor: (Trang 41)
w