He thong quan ly tap tin NTFS - 2 - MBR

(tiếp theo của He thong quan ly tap tin NTFS - 1 - MBR)


Địa chỉ dạng CHS


Đĩa cứng thường sử dụng hai phương pháp đánh địa chỉ: CHS và LBA. Phương pháp CHS được sử dụng cho các đĩa theo chuẩn IDE. Trong khi phương pháp LBA được sử dụng cho các đĩa theo chuẩn IDE, EIDE, và SCSI.

Để hiểu về địa chỉ dạng CHS, trước hết cần biết một số khái niệm liên quan đến tổ chức vật lý và logic của đĩa cứng.

-         Track[1]: là một vòng tròn đồng tâm của các bit từ (magnetic bit).

-         Sector: là các đoạn bit bằng nhau trên track. Mỗi sector thường có kích thước là 512 byte, có một định danh (ID) riêng. Định danh của sector là một số kiểu nguyên, thường gọi là chỉ số của sector. Cấu trúc của một sector gồm: header, mã sửa lỗi (error correction code – ECC) và phần chứa dữ liệu. Hình 6[2] minh họa về track và sector.

-         Cylinder: là tập hợp các track có cùng bán kính trên các mặt đĩa (các vòng tròn màu đỏ trong Hình 7[3] là một cylinder).

-         Head: là đầu từ đọc/ghi, số head tương ứng với số mặt đĩa.

-         Platter: phiến đĩa, là những phiến tròn làm bằng kim loại, thủy tinh, hoặc gốm…v.v. Trên bề mặt được phủ một lớp chất nhạy từ tính. Mỗi phiến đĩa thường được sử dụng cả hai mặt.







CHS là dạng viết rút gọn của Cylinder-Head-Sector, là một phương pháp đánh địa chỉ cho các khối dữ liệu trên đĩa cứng. Với ba giá trị cylinder, head và sector sẽ xác định được vị trí duy nhất của các khối dữ liệu, khối dữ liệu ở đây có thể hiểu là sector.

Địa chỉ dạng CHS gồm ba byte. Trong đó, H (head) gồm tám bit của byte đầu tiên, S (sector) gồm sáu bit thấp của byte thứ hai, cuối cùng C (cylinder) gồm tám bit của byte thứ ba và hai bit cao của byte thứ hai (Hình 8[4]).



Từ Hình 8, với ba byte dữ liệu của CHS (byte 1, 2, 3), tính ra giá trị hệ 10 là: H = 254, S = 63 và C = 723.

Hạn chế của CHS là chỉ có thể đánh địa chỉ cho đĩa có dung lượng không vượt quá 504MB. Cụ thể, số cylinder không vượt quá 1024, số head không vượt quá 16, số sector trên một track là 63, kích thước của một sector là 512 byte, thì  ta có:

1024 x 16 x 63 x 512 = 504 MB.

Để khắc phục hạn chế này, một phương pháp đánh địa chỉ khác đã được giới thiệu là ECHS (Extended CHS). ECHS là cải tiến của phương pháp CHS. Tuy nhiên, phương pháp này cũng chỉ đánh được địa chỉ cho đĩa có dung lượng không vượt quá 7560 MB.

Hiện nay (năm 2014), phương pháp đánh địa chỉ được sử dụng rộng rãi là phương pháp LBA.

 

Địa chỉ dạng LBA


LBA (logical block addressing) là một hệ thống đánh địa chỉ, được sử dụng để đánh địa chỉ cho các khối dữ liệu (block hay sector) trên các thiết bị lưu trữ của máy tính, thường là các thiết bị lưu trữ thứ cấp, ví dụ: đĩa cứng.

LBA là hệ thống đánh địa chỉ tuyến tính đơn giản, các khối dữ liệu được đánh dấu bằng các số nguyên. Khối đầu tiên mang giá trị 0, các khối tiếp theo mang giá trị 1, 2, 3 ...v.v.

Đĩa cứng theo chuẩn IDE sử dụng địa chỉ LBA 22-bit, chuẩn ATA-1 (1994) là 28-bit, chuẩn ATA-6 (2003) là 48-bit. Hầu hết các ổ đĩa cứng sản xuất sau năm 1996 sử dụng hệ thống đánh địa chỉ LBA.

 

Kiểu của phân vùng


Để dễ quản lý và đảm bảo an toàn dữ liệu, đĩa cứng vật lý thường được chia thành các đơn vị lưu trữ logic nhỏ hơn gọi là các phân vùng (partition), trong mỗi partition lại có thể được chia nhỏ hơn nữa thành các ổ đĩa logic (logical drive).

Các hệ thống máy tính chạy hệ điều hành DOS, Windows, Linux và các hệ thống tương thích với IBM PC khác, thường sử dụng hai loại partition là: primary partition và extended partition.

Sau đây là một số tùy chọn liên quan đến việc chia đĩa cứng dựa trên primary partition và extended partition:

-         Có thể tạo nhiều nhất bốn primary partition, hoặc

-         Ba primary partition + một extended partition, hoặc

-         Hai primary partition + một extended partition, hoặc

-         Một primary partition + một extended partition (hay được chọn).

Các thông tin về chia partition này được lưu trong các entry 16-byte tại partition table của MBR.

Trong mỗi entry 16-byte, hệ thống sử dụng một trường có kích thước một byte, để lưu một giá trị là một số nguyên, giá trị này cho biết kiểu của partition. Giá trị này được thống nhất và được dùng như một “mã nhận diện”. Ví dụ:

-         0x05: là extended partition.

-         0x07: là ổ đĩa logic, định dạng theo NTFS.

-         0x0B: là ổ đĩa logic, định dạng theo FAT32.

Tham khảo thêm các mã khác trên Internet.

Đoạn mã khởi động dựa vào “mã nhận diện” này để xác định xem nó có thể truy cập tới partition đó hay không.

Ngoài ra, mã này còn là cơ sở để hệ thống thực hiện các thao tác khác, như ẩn partition không cho hệ điều hành thấy. Mã này có thể bị thay đổi bởi phần mềm tiện ích.

 

Lưu dữ liệu theo định dạng little-endian


Little-endian là một trong hai cách thức lưu dữ liệu trên đĩa cứng, loại khác là big-endian.

Để dễ hiểu, xét việc lưu dữ liệu xuống đĩa cứng theo đơn vị byte. Giả sử, cần lưu một số có giá trị không vượt quá khả năng biểu diễn của một byte, ví dụ, số 2A hệ 16. Số 2A sẽ được lưu xuống một byte nào đó trên đĩa cứng theo đúng định dạng 2A, tức là: số 2 nằm ở phần bit cao (bốn bit phía trái của byte) và số A nằm ở phần bit thấp (bốn bit phía phải của byte).

Tuy nhiên, nếu cần lưu một số có giá trị từ hai byte trở lên, hệ thống sẽ sử dụng kiểu lưu dữ liệu little-endian.

Các byte trên đĩa cứng được ngầm hiểu là đã được đánh số thứ tự theo chiều tăng dần, tính từ đầu đĩa.

Đặc điểm của kiểu little-endian: nội dung trên byte thấp của biến, hoặc thanh ghi sẽ được lưu vào byte có số thứ tự nhỏ trên đĩa cứng, và nội dung trên byte cao của biến, hoặc thanh ghi sẽ được lưu vào byte có số thứ tự lớn trên đĩa cứng.

Ví dụ:

-         Một ổ đĩa logic có kích thước là 3992 MB, hệ thống đĩa cứng sử dụng một trường bốn byte (32-bit) để lưu kích thước này.

-         Vì dữ liệu lưu trên đĩa cứng là hệ 16, và kích thước đĩa được tính theo đơn vị là sector, nên cần đổi 3992 MB sang số sector ở hệ 16 trước khi lưu. Giả sử một sector có kích thước 512 byte, vậy 3992 MB tương đương 8 177 085 sector, đổi sang hệ 16 là 0x7CC5BD. Để lấp đầy bốn byte, cần thêm giá trị 0 vào byte đầu tiên, kích thước đĩa khi đó là 0x007CC5BD.

-         Bây giờ cần lưu số 32-bit hệ-16 này vào đĩa cứng. Cách lưu được thể hiện trong Hình 9.



[1] http://www.dataclinic.it/data-recovery/hard-disk-functionality.htm
[2] http://flylib.com/books/2/48/1/html/2/images/0321268172/graphics/02fig09.gif
[3] http://www.dataclinic.it/data-recovery/HDD7.gif
[4] http://thestarman.pcministry.com/asm/mbr/PartTables.htm



Tài liệu đã tham khảo

Lê Gia Công, FAT32, Khoa CNTT, Đại học Đà Lạt
Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005

-------------------
Cập nhật 2014/5/28
-------------------
Đọc thêm
He thong quan ly tap tin - NTFS - 3 - EBR