khu vực trên đĩa sau MBR và trước điểm bắt đầu phân vùng


10

Nếu tôi sử dụng sơ đồ phân vùng MBR và tạo phân vùng chính hoặc mở rộng với fdisk(phiên bản 2.20.1), thì nó bắt đầu trên sector 2048. Nếu tôi nhớ chính xác, thì các phiên bản cũ hơn đã fdiskbắt đầu phân vùng đầu tiên trên sector 63. Nếu MBR chỉ cần 512 byte, tại sao phân vùng đầu tiên không bắt đầu trên sector 2? Những gì được giữ trên các ngành 2047? Một số giai đoạn của trình nạp khởi động?


FYI, liên kết 1 MiB (2048 ngành) đã được giới thiệu cho Linux , fdisktrong util-linux-ng-2.17.1/fdisk/fdisk.cchức năng update_sector_offset(void), được phát hành vào ngày 2010-2-22. Windows Vista được phát hành vào năm 2006-11.
pts

Các câu hỏi và câu trả lời liên quan: superuser.com/q352572/19956 , superuser.com/q/565577/19956 .
pts

Câu trả lời:


16

Khoảng cách 32KiB cũ giữa MBR và sector đầu tiên của hệ thống tệp được gọi là vùng tương thích DOS hoặc khoảng cách MBR, bởi vì DOS yêu cầu các phân vùng bắt đầu ở ranh giới hình trụ (và mỗi hình trụ có 64 cung, tức là 64 sector * 512 byte / sector = 32KiB space) .

nhập mô tả hình ảnh ở đây

Legacy GRUB (GRUB1) có thể đã sử dụng nó để cài đặt bộ tải khởi động 1,5 tầng GRUB1 ở đó: http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation .

Liên kết bổ sung:

  1. http://www.pixelbeat.org/docs/disk/
  2. /superuser/107235/how-do-boot-sector-and-multipl-drive-works/108152#108152
  3. http://www.dedoimedo.com/computers/grub.html

1
Ok, cảm ơn vì đã giải thích điều này! Có vẻ như GRUB2 sử dụng cùng một khu vực giữa MBR và trước phân vùng cho mã khởi động của nó. Theo grub-install -vtôi đã cài đặt GRUB2 và nếu tôi thực thi dd if=/dev/sda obs=1 ibs=1 skip=512 count=2047 2>/dev/null | strings -n4thì có "đang tải", "Geom", "Đọc", "Lỗi" trong khu vực này và chúng phải thuộc về GRUB2.
Martin

@Martin Hừm, quan sát thú vị. Tôi cũng chỉ có "^ @" ở đó, grub2. Có vẻ như giai đoạn 2 của tôi là ngay trong hệ thống tập tin. :)
Boris Burkov

1
@Martin: Nếu trước đây bạn đã cài đặt GRUB 0.99, nó vẫn có thể ở trong khu vực đó, ngay cả khi bộ tải khởi động hiện tại của bạn là GRUB 2.x và không sử dụng nó.
Ben Voigt

6

Đây là một tối ưu hóa hiệu suất và hoàn toàn không liên quan đến Linux, chỉ liên quan đến phần cứng. Các đĩa hiện đại (được gọi là đĩa "4K") sử dụng các cung vật lý 4096 byte thay vì 512. Bạn vẫn có thể xử lý các cung 512 byte đơn nhưng điều đó có thể ảnh hưởng nghiêm trọng đến hiệu suất nếu các phân vùng (hay đúng hơn là: hệ thống tệp) không được căn chỉnh theo 4K .

Bắt đầu khu vực 64 sẽ là đủ cho yêu cầu này. Việc tăng lên 2048 dường như là phòng ngừa (ví dụ: cho phép đặt phân vùng khởi động UEFI ở đó nếu đĩa nên được chuyển đổi thành GPT sau).


Bằng cách tối ưu hóa hiệu suất, bạn có nghĩa là nếu hệ thống tệp bắt đầu ở giữa khu vực 4K, thì tất cả dữ liệu trong hệ thống tệp này cũng bị sai lệch và điều này có nghĩa là nếu một thay đổi ngay cả một byte trong tệp trên hệ thống tệp, Sau đó, hai lĩnh vực 4K vật lý cần phải được đọc và sửa đổi? Nếu hệ thống tệp được căn chỉnh, thì chỉ cần sửa đổi một khu vực 4K miễn là tất cả các byte nằm trên cùng một khu vực vật lý 4K?
Martin

2
@Martin Vấn đề là kernel luôn ghi các khối 4K (kích thước trang) vào đĩa (vì các trang được lưu trữ). Ngược lại với một khu vực duy nhất, một trang 4K có thể là một phần của hai lĩnh vực. Trong trường hợp đó không phải 4K mà phải viết 8K. Và thậm chí tệ hơn: Có thể là một hoặc thậm chí cả hai khối 4K trên đĩa phải được đọc trước.
Hauke ​​Laging
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.