Dia cung - 18 - NTFS - Siêu tập tin



Một số siêu tập tin

Trong hệ thống NTFS mọi thứ đều được lưu dưới dạng các tập tin. Do đó, thông tin mô tả về tổ chức của NTFS cũng được lưu dưới dạng các tập tin. Để phân biệt giữa các tập tin dữ liệu, tập tin chương trình thông thường với các tập tin mô tả cho hệ thống NTFS, người ta gọi các tập tin mô tả hệ thống NTFS là siêu tập tin (metadata file). Phần dưới đây sẽ mô tả thông tin chung của một số siêu tập tin.

Siêu tập tin $MFT

Một trong những siêu tập tin quan trọng nhất là $MFT, vì $MFT chứa MFT (master file table). MFT chứa danh mục của tất cả các tập tin và thư mục trong một ổ đĩa logic. Để tìm được các tập tin, thư mục, cần phải truy cập tới siêu tập tin này.
Vị trí (cluster) bắt đầu của MFT được lưu trong boot sector; cụ thể là trong BPB, tại offset 30h, gồm 8 byte.
Thông tin mô tả về MFT được lưu trong entry đầu tiên của MFT, entry này có tên là $MFT. Attribute $DATA được sử dụng để chứa nội dung của MFT. Siêu tập tin $MFT cũng sử dụng attribute $BITMAP để quản lý việc cấp phát và sử dụng các entry, sử dụng attribute $FILE NAME và atrribute $STANDARD_INFORMATION để chứa các thông tin mô tả khác.
Lưu ý: cần phân biệt hai khái niệm entry $MFT và siêu tập tin $MFT. Siêu tập tin $MFT chứa toàn bộ thông tin mô tả và nội dung của MFT, trong đó có entry $MFT.
Trong Windows, siêu tập tin $MFT ban đầu có kích thước nhỏ nhất có thể, kích thước này sẽ được tăng lên khi hệ thống hoặc người dùng tạo thêm các thư mục và tập tin khác.

Siêu tập tin $MFTMirr

Như đã biết, siêu tập tin $MFT rất quan trọng, vì nó là đầu mối để đi đến các tập tin, thư mục khác. Trong trường hợp boot sector hoặc entry $MFT bị hỏng, hệ thống sẽ không thể truy cập được dữ liệu, bên cạnh đó, việc khôi phục dữ liệu cũng gặp nhiều khó khăn. Để hạn chế rủi ro này, hệ thống NTFS có lưu dự phòng một số entry quan trọng. Một số entry quan trọng sẽ được lưu dự phòng trong siêu tập tin $MFTMirr.
Hệ thống sử dụng entry số 1 trong MFT để mô tả cho siêu tập tin $MFTMirr. Entry này sử dụng một attribute kiểu không thường trú (non-resident), đó là attribute $DATA, để chứa một số entry đầu tiên của MFT, attribute này sẽ được sử dụng trong quá trình khôi phục hệ thống.
Attribute $DATA chứa bốn entry đầu tiên của MFT, gồm: $MFT, $MFTMirr, $LogFile và $Volume. Các cluster chứa $DATA nằm ở chính giữa của ổ đĩa logic. Như vậy, nếu có hư hỏng hệ thống MFT hoặc boot sector, chương trình khôi phục sẽ dựa vào kích thước của ổ đĩa logic để định vị và đọc được siêu tập tin $MFTMirr, từ đó có thông tin đầu mối để khôi phục dữ liệu.

Siêu tập tin $Boot

Siêu tập tin $Boot được mô tả trong entry $Boot, đây là entry số 7 trong MFT. Siêu tập tin $Boot chứa nội dung của boot sector. Đây là siêu tập tin duy nhất có vị trí cố định trên ổ đĩa logic. Attribute $DATA của siêu tập tin này luôn nằm ở sector đầu tiên của ổ đĩa logic, nội dung của attribute này được sử dụng trong quá trình khởi động hệ thống.
Windows thường cấp phát 16 sector đầu tiên cho siêu tập tin $Boot, nhưng thực tế chỉ được sử dụng khoảng một nửa số sector này.
Boot sector của hệ thống NTFS không có nhiều khác biệt so với boot sector của hệ thống FAT32. Do vậy, khi khôi phục hệ thống cần lưu ý trường hợp giống nhau này, để tránh ngộ nhận.
Boot sector cung cấp một số thông tin: kích thước của mỗi cluster, tổng số sector của ổ đĩa logic, cluster bắt đầu của vùng MFT, kích thước của mỗi MFT entry. Ngoài ra, boot sector còn chứa đoạn mã khởi động, đoạn mã này có nhiệm vụ tìm kiếm, nạp và chạy các tập tin trong quá trình khởi động hệ điều hành.
Tùy thuộc vào từng hệ thống, bản dự phòng của boot sector được lưu ở sector cuối cùng hoặc sector giữa của ổ đĩa logic. Sector này không được cấp cho bất kì tập tin nào, vì vậy tổng số sector do hệ thống quản lý tập tin quản lý sẽ ít hơn tổng số sector thật của ổ đĩa logic là một sector. Trong các hệ thống Windows NT 4.0, 2000, XP bản dự phòng được lưu ở sector cuối cùng.

Siêu tập tin $Volume

Siêu tập tin $Volume nằm tại vị trí số 3 trong MFT, siêu tập tin này chứa tên (label) của ổ đĩa logic và một số thông tin về phiên bản của NTFS. Entry của siêu tập tin $Volume trong MFT có chứa hai attribute chỉ có duy nhất trong entry này là attribute $VOLUME_NAME và attribute $VOLUME_INFORMATION.
Attribute $VOLUME_NAME chứa tên (dạng Unicode) của ổ đĩa logic. Attribute $VOLUME_INFORMATION cho biết phiên bản của NTFS và một số thông tin khác. Windows NT 4.0 sử dụng NTFS phiên bản 1.2; Windows 2000 là 3.0 và Windows XP là 3.1.

Siêu tập tin $AttrDef

Siêu tập tin $AttrDef nằm tại entry số 4 trong MFT. Attribute $DATA của siêu tập tin này chứa tên và mã loại (type indentifier) của tất cả các attribute. Trong hệ thống NTFS có một số vấn đề có tính “lòng vòng”, đây là một ví dụ, tức là bạn phải đọc attribute $DATA trong siêu tập tin $AttrDef để biết được mã loại của attribute $DATA. Tuy nhiên, thực tế các attribute đã được gán những mã loại mặc định.
Siêu tập tin $AttrDef giúp cho việc quản lý các attribute được thống nhất, có thể định nghĩa lại mã loại cho các attribute quan trọng.

Các vấn đề liên quan đến nội dung của tập tin

Cluster

Mỗi tập tin trong hệ thống NTFS luôn được bắt đầu từ một entry trong vùng MFT, thông tin mô tả và nội dung của một tập tin lưu trong các attribute. Các attribute có thể là thường trú (resident) hoặc không thường trú (non-resident). Nội dung của các attribute thường trú được lưu ngay trong entry trong vùng MFT, nội dung của các attribute không thường trú đươc lưu trên các cluster.
Cluster là một nhóm các sector liền nhau, số sector của một cluster luôn là lũy thừa của 2 (ví dụ: 1, 2, 4, 8, 16).
Mỗi cluster được đánh một địa chỉ, bắt đầu từ 0. Cluster 0 bắt đầu từ sector đầu tiên của hệ thống tập tin (ổ đĩa logic). Để tìm sector bắt đầu của một cluster bất kì, chỉ cần lấy địa chỉ của cluster nhân với số sector của một cluster.
Sector = Cluster * sectors_per_cluster
(sectors_per_cluster: số sector của một cluster)
Hệ thống NTFS không có cấu trúc tổ chức một cách chặt chẽ, bất kì cluster nào cũng có thể được cấp cho các tập tin hay các attribute, chỉ ngoại trừ siêu tập tin $Boot luôn được lưu tại cluster đầu tiên. Lưu ý: hệ điều hành của Microsoft sẽ sử dụng một số cách thức cấp phát cluster đặc thù. Nếu kích thước của một ổ đĩa (tính bằng sector) mà không chia hết cho kích thước của một cluster, thì một vài sector ở cuối đĩa sẽ không thuộc về cluster nào và kích thước của vùng này luôn nhỏ hơn kích thước của một cluster.

Siêu tập tin $Bitmap

Trạng thái cấp phát các cluster được lưu trong siêu tập tin $Bitmap, đây là entry số 6 trong MFT. Mỗi bit trong attribute $DATA sẽ được ánh xạ tới một cluster trong ổ đĩa logic. Ví dụ: bit 0 sẽ tương ứng với cluster 0, bit 1 tương ứng với cluster 1. Nếu bit 0 được thiết lập giá trị là 1, có nghĩa là cluster 0 đã được cấp phát (đã được sử dụng), nếu mang giá trị 0 nghĩa là cluster 0 chưa được cấp phát.

Siêu tập tin $BadClus

Hệ thống NTFS quản lý các cluster bị hỏng trên ổ đĩa logic bằng siêu tập tin $BadClus. Siêu tập tin này nằm tại entry số 8 trong MFT. Attribute $DATA lưu thông tin về các cluster bị hỏng. Attribute $DATA được đặt tên là $Bad, đây là một attribute “thưa” (sparse attribute, đọc lại phần Attribute “thưa”). Khi một cluster được báo là bị hỏng, địa chỉ của nó sẽ được lưu vào attribute $DATA. Việc sử dụng attribute “thưa” sẽ giúp tiết kiệm không gian đĩa, cụ thể các cluster chứa toàn các giá trị 0 sẽ không được cấp phát không gian đĩa.
Kích thước của attribute $Bad (được hệ thống thông báo) chính bằng kích thước của cả hệ thống (cả ổ đĩa logic), nhưng thực tế, ban đầu nó không được cấp cluster nào. Windows sẽ đưa cluster vào attribute $Bad khi nó phát hiện cluster bị hỏng, có một số hệ thống, đĩa cứng sẽ làm việc này trước khi Windows làm.

Cách cấp phát đĩa cứng

Mỗi một hệ điều hành sử dụng các cách cấp phát đĩa cứng khác nhau. Hệ thống Windows XP sử dụng kĩ thuật best-fit (phù hợp nhất).
Khi cần cấp phát một không gian đĩa cứng để lưu dữ liệu, kĩ thuật best-fit sẽ tìm vùng đĩa cứng còn trống nhỏ nhất, có kích thước bằng hoặc lớn hơn kích thước cần thiết để lưu dữ liệu.
Ví dụ: cần cấp phát một không gian đĩa cứng là 10 cluster cho một tập tin. Trên đĩa cứng hiện tại có ba vùng còn trống. Vùng đầu tiên là từ cluster 100 đến cluster 199 (100 cluster), vùng thứ hai từ cluster 280 đến 319 (40 cluster) và vùng thứ ba từ cluster 370 đến 549 (180 cluster). Dựa vào kĩ thuật best-fit, hệ thống sẽ chọn vùng thứ hai để cấp phát cho tập tin. Xem hình minh họa bên dưới.

Cấu trúc tổ chức của hệ thống quản lý tập tin NTFS

Hệ thống quản lý tập tin NTFS không có quy định chặt chẽ về cấu trúc tổ chức, nhưng các hệ điều hành Windows luôn có các quy ước chung trong việc tổ chức quản lý hệ thống tập tin.
Khái niệm quan trọng đầu tiên trong hệ thống NTFS là vùng MFT. Windows luôn tạo ra vùng này với kích thước nhỏ nhất có thể, sau đó vùng này sẽ được mở rộng ra khi có nhu cầu. Điều này có thể dẫn tới việc đĩa bị phân mảnh, nếu vùng đĩa ngay sau MFT được cấp phát cho các tập tin. Để ngăn ngừa tình huống này, Windows đã dành riêng một vùng cho MFT, các cluster thuộc vùng này sẽ không được cấp phát cho các tập tin, trừ trường hợp các vùng khác của đĩa đã được sử dụng hết. Windows thường dành 12.5% không gian đĩa cho vùng MFT.
Tất các các phiên bản NTFS và Windows đều cấp phát cluster đầu tiên cho siêu tập tin $Boot. Windows NT và 2000 luôn đặt các siêu tập tin ngay sau $Boot và vùng giữa của ổ đĩa logic. Ví dụ, nếu một hệ thống tập tin có kích thước một cluster là 1KB (2 sector), thì 8 sector đầu tiên sẽ được cấp cho $Boot, các cluster cấp cho $MFT sẽ bắt đầu tại cluster 16 hoặc 32. Vùng MFT có thể mở rộng tới 12.5% không gian đĩa. Cluster ở vùng giữa của ổ đĩa logic sẽ được cấp cho $MFTMirr, theo sau là $LogFile, $Root, $Bitmap và $Upcase. Trong hệ thống Windows NT, $AttrDef nằm sau $MFT. Trong hệ thống Windows 2000, $AttrDef nằm trước $MFT.
Trong hệ thống Windows XP: $LogFile, $AttrDef, $MFT, và $Secure nằm tại vị trí 1/3 của ổ đĩa logic. Các siêu tập tin còn lại nằm ở giữa của ổ đĩa logic. Chỉ có $Boot là luôn nằm ở các cluster đầu tiên của ổ đĩa logic. Các cluster còn lại được sử dụng để cấp cho các tập tin và thư mục thông thường của người dùng. Hình dưới đây minh họa tổ chức của NTFS trên hai hệ thống Windows 2000 và XP.


---------------

Tham khảo
[1] Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005
----------------------
Cập nhật: 2014/1/14

Switch4_Quản lý switch

Quản lý switch

Nội dung
- Kết nối tới switch.
- Các chế độ cấu hình một switch
- Sử dụng lệnh ?
- Hiển thị các lệnh đã thực hiện
- Chọn hệ điều hành (IOS) khởi động
- Kết nối máy tính tới switch
- Cấu hình chế độ truyền song công (full duplex)
- Quản lý bảng địa chỉ MAC
- Lưu (dự phòng) tập tin cấu hình của switch
Hướng dẫn
- Đọc thêm các bài viết Switch1, Switch2
Bài tập
Bảng địa chỉ
Thiết bị
Interface
Địa chỉ IP
Subnet Mask
S1
VLAN99
172.17.99.11
255.255.255.0
PC1
NIC
172.17.99.21
255.255.255.0
Server
NIC
172.17.99.31
255.255.255.0
Sơ đồ mạng

1. Kết nối tới switch
- B1. Sử dụng cáp console, nối cổng RS232 của máy tính PC1 với cổng console của switch S1.
- B2. Chọn PC1, chọn thẻ Desktop, chọn Terminal, để mặc định các thiết lập, bấm OK.
- B3. Bạn đã thực hiện kết nối tới S1, gõ phím Enter để xuất hiện dấu nhắc nhập lệnh cho S1.
2. Khảo sát một số chế độ cấu hình
[đọc thêm bài Switch1_basic để biết thêm về các chế độ cấu hình một switch]
- B1. Ở chế độ User, gõ lệnh ? để biết các lệnh có thể thực hiện được ở chế độ này.
- B2. Gõ lệnh enable để chuyển sang chế độ privileged, dấu nhắc sẽ chuyển từ > sang #
Switch>enable
Switch#
- B3. Gõ lệnh ? để biết các lệnh có thể thực hiện được ở chế độ này.
- B4. Gõ lệnh configure terminal để chuyển sang chế độ global configuration, sau đó gõ lệnh ? để biết các lệnh có thể thực hiện được ở chế độ này.
- B5. Gõ lệnh hostname để đổi tên switch thành S1
Switch(config)#hostname S1
S1(config)#
- B6. Gõ lệnh interface vlan 99 để chuyển sang chế độ interface configuration cho VLAN99
S1(config)#interface vlan 99
S1(config-if)#
- B7. Sử dụng lệnh ip address để gán địa chỉ IP cho interface này, và sử dụng lệnh no shutdown để kích hoạt interface.
S1(config-if)#ip address 172.17.99.11 255.255.255.0
------------
- Interface VLAN hay SVI (switched virtual interface) là một cổng logic, đại diện cho tất cả các cổng của switch thuộc VLAN đó.
- Mỗi VLAN có duy nhất một interface VLAN. Interface VLAN được sử dụng trong quá trình định tuyến giữa các VLAN, cho phép người quản trị có thể truy cập tới switch bằng một địa chỉ IP…v.v. VLAN1 luôn được hệ thống tạo sẵn một interface VLAN.
  ------------
S1(config-if)#no shutdown
- B8. Chuyển sang chế độ cấu hình interface configuration, để cấu hình cho Fa0/18
S1(config)#interface fa0/18
S1(config-if)#
- B9. Thiết lập cổng Fa0/18 ở chế độ access, để cho phép cổng này có thể gửi và nhận các frame dữ liệu. Sử dụng lệnh switchport mode access
S1(config-if)#switchport mode access
- B10. Gán cổng Fa0/18 vào VLAN99, sử dụng lệnh switchport access vlan99
S1(config-if)#switchport access vlan 99
- B11. Sử dụng lệnh exit để trở về chế độ global configuration
- B12. Vào chế độ cấu hình cho console line
S1(config)#line console 0
S1(config-line)#
- B13. Gõ lệnh ? để xem các lệnh có thể thực hiện.
- B14. Đặt mật khẩu truy cập cho console line là cisco
S1(config-line)#password cisco
S1(config-line)#login
- B15. Sử dụng lệnh end để trở về chế độ privileged
S1(config-line)#end
S1#
3. Sử dụng gợi ý (lệnh ?) để đặt giờ cho switch
- B1. Tại chế độ privileged, gõ lệnh clock ?
S1#clock ?
  set  Set the time and date
- B2. Gõ tiếp lệnh clock set 12:12:12 ?
S1#clock set 12:12:12 ?
  <1-31>  Day of the month
  MONTH   Month of the year
- B3. Theo hướng dẫn để điền thêm ngày, tháng…, cho tới khi câu lệnh được chấp nhận. Mục đích ở đây là sử dụng lệnh ? để hoàn thiện các câu lệnh. (ví dụ: câu lệnh hoàn thiện trong trường hợp này là: clock set 12:12:12 1 MAY 2014)
- B4. Để kiểm tra xem việc thiết lập giờ đã được hay chưa? Sử dụng lệnh show clock.
4. Xem lại các lệnh đã thực hiện
B1. Sử dụng lệnh show history để xem lại các lệnh đã thực hiện
B2. Chỉnh lại số lệnh sẽ được hiển thị (ví dụ: 35) trong cả hai chế độ cấu hình: console và Telnet.
S1(config)#line console 0
S1(config-line)#history size 35
S1(config-line)#line vty 0 4
S1(config-line)#history size 35
B3. Gõ lại lệnh show history để xem kết quả.
5. Quá trình khởi động của switch
B1. Kiểm tra phiên bản của hệ điều hành (IOS) đang chạy, sử dụng lệnh show version, hàng đầu tiên cho biết phiên bản của hệ điều hành.
S1#show version
Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(25)FX, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2005 by Cisco Systems, Inc.
Compiled Wed 12-Oct-05 22:05 by pt_team
B2. Sử dụng lệnh show flash để xem các phiên bản của IOS đang có trong bộ nhớ flash (flash memory). Kết quả cho biết hiện đang có hai phiên bản của IOS.
S1#show flash
Directory of flash:/
    3  -rw-     4414921          <no date>  c2960-lanbase-mz.122-25.FX.bin
    2  -rw-     4670455          <no date>  c2960-lanbase-mz.122-25.SEE1.bin
    5  -rw-         616          <no date>  vlan.dat
32514048 bytes total (23428056 bytes free)
B3. Thay đổi phiên bản IOS cho switch. Sử dụng lệnh boot system, trên packet tracer lệnh này cho nhập, nhưng không được thực thi.
S1(config)#boot system flash:c2960-lanbase-mz.122-25.SEE1.bin
6. Kết nối máy tính PC1 tới switch S1
B1. Gán địa chỉ IP cho PC1, 172.17.99.21/24
- Đóng cửa sổ Terminal, trong thẻ Desktop, chọn IP Configuration, nhập địa chỉ IP và subnet mask, đóng cửa sổ IP Configuration.
B2. Kết nối PC1 tới cổng Fa0/18 của switch.
- Sử dụng cáp thẳng (straight-through) để kết nối PC1 với switch.
B3. Thực hiện lệnh ping từ switch tới PC1 để kiểm tra.
S1>ping 172.17.99.21
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.17.99.21, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/19/63 ms
7. Thiết lập tốc độ, chế độ truyền
B1. (thiết lập cho PC1) Trên PC1, chọn thẻ Config, chọn FastEthernet0, trong phần Bandwidth, chọn 100Mbps và Full Duplex.
B2. (thiết lập cho cổng Fa0/18 của S1) Chọn thẻ Desktop, chọn Terminal, vào chế độ cấu hình S1.
S1(config)#interface fa0/18
S1(config-if)#duplex full
S1(config-if)#speed 100
B3. Ping từ S1 tới PC1 để kiểm tra.
S1#ping 172.17.99.21
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.17.99.21, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms
8. Quản lý bảng địa chỉ MAC
B1. Xem địa chỉ MAC của Server, chọn máy Server, chọn thẻ Config, FastEthernet0, địa chỉ MAC là: 0060.3EDD.19A3
B2. Cấu hình bảng địa chỉ MAC trên S1, sao cho cổng Fa0/24 của S1 sẽ được gắn kết với địa chỉ MAC của máy Server.
S1(config)#mac-address-table static 0060.3edd.19a3 vlan 99 int fa0/24
B3. Mở bảng địa chỉ MAC để xem kết quả cấu hình.
S1#show mac-address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  99    0060.3edd.19a3    STATIC      Fa0/24
9. Quản lý tập tin cấu hình của switch
B1. Kết nối Server tới cổng Fa0/24 của S1 bằng cáp thẳng.
B2. Thiết lập chế độ access cho cổng Fa0/24
S1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
S1(config)#int fa0/24
S1(config-if)#switchport mode access
B3. Gán VLAN99 cho cổng Fa0/24
S1(config-if)#switchport access vlan 99
B4. Ping S1 tới Server để kiểm tra kết nối
S1#ping 172.17.99.31
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.17.99.31, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms
B5. Lưu (dự phòng) thông tin cấu hình của switch (startup configuration) tới máy Server.
- Tại chế độ cấu hình privileged, nhập lệnh copy startup-config tftp:, sau khi Enter, sẽ được hỏi Address or name of remote host[]?, nhập địa chỉ IP của Server (172.17.99.31). Destination filename? để mặc định bằng cách bấm phím Enter.
S1#copy startup-config tftp:
Address or name of remote host []? 172.17.99.31
Destination filename [S1-confg]?
Writing startup-config...!!
[OK - 1005 bytes]
1005 bytes copied in 0 secs
B6. Kiểm tra kết quả
- Chọn Server, chọn thẻ Config, chọn mục Services, chọn mục TFTP, sẽ thấy tập tin S1-confg.
---------------------------------
Tham khảo: Activity 2.3.8: Configuration Basic Switch Management - Cisco
--------------------
2014/1/7