Đị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
Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005
-------------------
Cập nhật 2014/5/28