Cấu trúc bảng phân vùng (partition) của một đĩa cứng

Vì sao dữ liệu trên đĩa cứng của bạn có thể được chia thành nhiều phần và lưu trữ một cách hệ thống? Bài viết sau đây TTnguyen tìm hiểu về cấu trúc bảng phân vùng của một đĩa cứng giúp bạn trả lời câu hỏi này.

Xem thêm:

ổ đĩa cứng là gì

Full câu hỏi trắc nghiệm nguyên lý hệ điều hành

1. Phân vùng (Partition)

Phân vùng là gì?

Phân vùng (partition) là cách chia nhỏ không gian lưu trữ trên ổ đĩa cứng thành các phần riêng biệt để sử dụng cho các mục đích khác nhau. Mỗi phân vùng được xác định bởi một loạt các cylinder (vùng trên đĩa cứng). Mỗi phân vùng có thể được xử lý như một ổ đĩa độc lập.

Ví dụ bạn có một ổ cứng có dung lượng lớn, ví dụ 500GB. Bạn có thể chia: 100GB phân vùng hệ thống, 300 phân vùng dữ liệu, 20-30 GB phân vùng khôi phục.

Cách phân vùng tối ưu ổ đĩa cứng

Phân chia phân vùng giúp việc quản lý các nội dung, lưu trữ, phân loại dữ liệu được thuận tiện và tối ưu hơn, tránh sự phân mảnh của các tập tin. Chúng ta có thể phân vùng như sau:

Phân vùng hệ thống: Đây là nơi bạn cài đặt hệ điều hành Windows và các tập tin hệ thống cần thiết khác. Nên thiết lập phân vùng này ở phía ngoài rìa của đĩa từ (outer zone). Bởi vùng này có tốc độ đọc/ghi cao hơn. Từ đó, hệ điều hành và các phần mềm khởi động và làm việc được nhanh hơn. Phân vùng này thường được gán tên là C.

Phân vùng dữ liệu: Đây là nơi lưu trữ tất cả các dữ liệu cá nhân, tài liệu, hình ảnh, video,… Những tập tin thường xuyên được truy cập nên đặt tại phân vùng thứ hai ngay sau phân vùng hệ thống. Nên thường xuyên thực thi tác vụ chống phân mảnh tập tin trên phân vùng này.

Định dạng của phân vùng

Tuỳ thuộc vào hệ điều hành mà bạn cần lựa chọn các kiểu định dạng trên ổ đĩa cứng. Dưới đây là một số định dạng sử dụng trong các hệ điều hành họ Windows:

FAT (File Allocation Table): Đây là chuẩn định dạng phân vùng được hỗ trợ bởi các hệ điều hành DOS và các phiên bản Windows trước Windows 95 OSR2. Phân vùng FAT hỗ trợ độ dài tên file ngắn (8.3) và có dung lượng tối đa khoảng 2GB.

FAT32 (File Allocation Table, 32-bit): Là một phiên bản cải tiến của FAT, FAT32 hỗ trợ dung lượng phân vùng lớn hơn, lên đến 2 TB (2.048 GB). FAT32 được sử dụng phổ biến trên hệ điều hành Windows 98 và phiên bản sau này.

NTFS (Windows New Tech File System): Là hệ thống tệp mới được Microsoft giới thiệu từ Windows NT và được sử dụng rộng rãi trên các phiên bản Windows sau này như Windows 2000, XP, Vista, 7, 8, và 10. NTFS hỗ trợ nhiều tính năng như bảo mật tệp tin, nén dữ liệu, phân quyền, và dung lượng phân vùng lớn, lên đến 16 exabytes.

exFAT (extended File Allocation Table): Là một định dạng phân vùng mới hơn được Microsoft phát triển để hỗ trợ các thiết bị lưu trữ flash như USB và thẻ nhớ. exFAT hỗ trợ tệp tin lớn và dung lượng phân vùng lớn, nhưng không có tính năng bảo mật như NTFS.

2. Cấu trúc bảng phân vùng (Partition table) của một đĩa cứng

Thông tin về các phân vùng chính và phân vùng mở rộng được chứa trong bảng phân vùng. Cấu trúc dữ liệu 64 byte nằm trong cùng khu vực với bản ghi khởi động chính Master Boot Record
(cylinder 0, head 0, sector 1). Bảng phân vùng tuân theo bố cục tiêu chuẩn độc lập với hệ điều hành. Mỗi mục nhập Bảng phân vùng dài 16 byte, tạo tối đa bốn mục nhập. Mỗi mục bắt đầu ở phần bù được xác định trước từ đầu của khu vực, như sau:

  • Phân vùng 1: 0x01BE (446)
  • Phân vùng 2: 0x01CE (462)
  • Phân vùng 3: 0x01DE (478)
  • Phân vùng 4: 0x01EE (494)

Hai byte cuối cùng trong sector là một từ chữ ký cho sector và luôn là 0x55AA. Khi có ít hơn bốn phân vùng, các trường còn lại đều là số không.

Bảng sau đây mô tả từng mục trong bảng phân vùng. Các giá trị mẫu tương ứng với thông tin cho phân vùng 1.

Trường bảng phân vùng

Byte bù Chiều dài trường Giá trị mẫu Ý nghĩa
00 BYTE 0x80 Chỉ số khởi động. Cho biết liệu phân vùng là phân vùng hệ thống. Giá trị chuẩn là: 00 = Không sử dụng để khởi động. 80 = Phân vùng hệ thống.
01 BYTE 0x01 Đầu bắt đầu
02 BYTE 0x01 Sector bắt đầu . Chỉ các bịt 0-5 được sử dụng. Các bit 6-7 là hai bịt trên cho trường Cylinder bắt đầu.
03 BYTE 0x00 Cylinder bắt đầu. Trường này chứa 8 bit thấp hơn của giá trị Cylinder. Do đó, Cylinderbắt đầu là một số 10 bit, với giá trị tối đa là 1023.
04 BYTE 0x06 ID hệ thống . Byte này xác định loại âm lượng. Trong Windows NT, nó cũng chỉ ra rằng một phân vùng là một phần của ổ đĩa yêu cầu sử dụng HKEY_LOCAL_MACHINE\SYSTEM\DISK để đăng ký khóa con
05 BYTE 0x0F Đầu kết thúc
06 BYTE 0x3F Sector kết thúc. Chỉ các bịt 0-5 được sử dụng. Các bit 6-7 là hai bịt trên cho trường Sector kết thúc.
07 BYTE 0x196 Cylinder kết thúc. Trường này chứa 8 bịt thấp hơn của giá trị Cylinder. Do đó, Cylinder kết thúc là một số 10 bit, với giá trị tối đa là 1023.
08 DWORD 3F 00 00 00 Sector quan hệ
09 DWORD 51 42 06 00 Tổng số sector

Các định nghĩa của các trường trong bảng phân vùng giống nhau:

Trường chỉ thị khởi động (Boot Indicator)

Trường chỉ báo khởi động cho biết liệu ổ đĩa có phải là phân vùng hệ thống hay không. Trên các máy tính dựa trên x-86, chỉ có một phân vùng chính trên đĩa nên có trường này được cài đặt.

Trên các máy tính sử dụng kiến trúc RISC (Reduced Instruction Set Computer), thông tin về việc khởi động được lưu trữ trong Non-Volatile Random Access Memory (NVRAM), không phải là trong bảng phân vùng như trên các máy tính x86. NVRAM chứa các thông tin cần thiết để tìm và tải các tệp tin khởi động từ các phân vùng trên ổ đĩa.

Trên các máy tính x86, vì có thể cài đặt nhiều hệ điều hành và hệ thống tệp tin khác nhau trên các phân vùng khác nhau, trường chỉ thị khởi động cho phép người dùng chỉ định phân vùng nào sẽ được sử dụng để khởi động máy tính bằng cách đặt chỉ thị khởi động cho phân vùng đó trong bảng phân vùng. Điều này giúp hệ thống biết phân vùng nào cần được truy cập để tìm và chạy các tệp tin khởi động của hệ điều hành cụ thể.

Trường ID hệ thống

Đối với các phân vùng chính và ổ đĩa vật lý, trường ID hệ thống mô tả hệ thống tệp được sử dụng để định dạng ổ đĩa. Windows NT sử dụng trường này để xác định trình điều khiển thiết bị hệ thống tệp nào sẽ tải trong khi khởi động. Nó cũng xác định phân vùng mở rộng, nếu có một phân vùng được xác định.

Đây là các giá trị cho trường ID hệ thống:

Giá trị Ý nghĩa
0x0B Phân vùng Fat32 chính, sử dụng các phần mở rộng ngắt 13 (INT 13).
0x0C Phân vùng Fat32 mở rộng, sử dụng phần mở rộng INT 13.
0x0E Phân vùng Fat16 chính, sử dụng phần mở rộng INT 13.
0x0F Phân vùng Fat16 mở rộng, sử dụng phần mở rộng INT 13.

Ví dụ về cách các giá trị ID hệ thống có thể được sử dụng để chỉ định các loại phân vùng khác nhau trên ổ đĩa:

Phân vùng chính FAT hoặc ổ đĩa vật lý là phần tử của bộ ổ phân vùng hoặc bộ đường có giá trị ID hệ thống là 0x86:

  • ID hệ thống là 0x86: Đánh dấu phân vùng là phần của một bộ ổ phân vùng hoặc bộ đường.
  • Nếu phân vùng gặp sự cố: Bit quan trọng thứ hai được đặt và byte ID hệ thống chuyển thành C6.

Phân vùng chính hoặc ổ đĩa logic NTFS có giá trị ID hệ thống là 0x87:

  • ID hệ thống là 0x87: Chỉ ra phân vùng chứa hệ thống tệp tin NTFS.
  • Nếu phân vùng gặp sự cố: Bit quan trọng thứ hai được đặt và byte ID hệ thống chuyển thành C7.

Lời kết

Như vậy, qua bài viết, chúng ta đã được nắm bắt một cách tổng quát về cấu trúc bảng phân vùng của một đĩa cứng. Hiểu rõ về nó không chỉ giúp chúng ta trong việc quản lý dữ liệu tốt hơn mà còn là yếu tố quan trọng để giải quyết các vấn đề liên quan đến nguyên lý hệ điều hành hệ thống máy tính.

Bài viết liên quan:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em