Ổ đĩa GPT 4TB được hình thành trong Windows hiển thị là 2TB trong Linux


3

Tôi có ổ đĩa 4 TB được kết nối với bộ điều khiển Dell H200. Ổ đĩa được định dạng trong Windows bằng GPT và hiển thị chính xác 4TB trong Windows.

Cùng một ổ đĩa trong cùng một máy tính đã khởi động trong linux (Ubuntu 16.04) không được công nhận hoàn toàn là có 4 TB.

Chạy gdisk /dev/sdb -lkết quả trong

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Warning! Secondary partition table overlaps the last partition by
3519068194 blocks!
You will need to delete this partition or resize it in another utility.
Đĩa / dev / sdb: 4294967295 ngành, 2.0 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): F8EA0B25-8D84-4BBB-88EB-BA90615C5318
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 4294967261
Partitions will be aligned on 8-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34          262177   128.0 MiB   0C01  Microsoft reserved ...
   2          264192      7814035455   3.6 TiB     0700  Basic data partition

Lưu ý "2.0 TiB" in đậm ở trên

Tôi cũng không thể gắn kết bất kỳ của nó. Việc gắn kết / dev / sdb1 dẫn đến lỗi "mount: false fs type ..." và kết quả mount / dev / sdb2 trong

mount: special device /dev/sdb2 does not exist

Lúc đầu, tôi nghĩ đó là sự cố phần sụn với bộ điều khiển H200, nhưng điều đó không giải thích tại sao nó hoạt động trong Windows mà không phải Linux và tại sao nó không thể được gắn kết. Làm cách nào để Linux nhận ra ổ đĩa? Tôi có cần định dạng lại ổ đĩa bằng Linux không? Làm thế nào tôi có thể đảm bảo hệ điều hành có thể thấy ổ đĩa đúng trong tương lai?

CẬP NHẬT:

Chà, bây giờ tôi cảm thấy hơi ngớ ngẩn. Hóa ra đó là một vấn đề với phần sụn của bộ điều khiển H200.

Lần đầu tiên tôi thử cập nhật firmware cho bộ điều khiển H200 và gdiskbây giờ trả về đúng cách:

Disk /dev/sdb: 7814037168 sectors, 3.6 TiB

và / dev / sdb2 gắn kết mà không có vấn đề. Điều tôi hiện đang cố gắng hiểu là tại sao đĩa lại đọc đúng trong Windows (7) chứ không phải trong Linux với phần mềm H200 lỗi thời.


Điều đó thật kỳ quái. Nó thấy rằng đó là GPT, vì vậy nó không nên có giới hạn kích thước đĩa MBR (512 B / sector * 2 ^ 32 khu vực có thể định địa chỉ). Nó thấy kích thước phân vùng chính xác (3.6TB là về ngay sau khi chuyển đổi từ Base10 TB). Bạn đang chạy một kernel gần đây, vì vậy có lẽ nó không chỉ là hỗ trợ phần cứng lỗi thời ...
CBHacking

Thực hiện uname -r chỉ để đảm bảo kernel của bạn đủ mới. Tôi có thể giả định mọi thứ, nhưng tôi đã học được rằng nó nguy hiểm như thế nào. Tôi không biết nếu có thể, nhưng tôi sẽ giết MBR bảo vệ vô nghĩa.
gian mạng

@SkyNT: Bạn có thể cho tôi biết phiên bản phần mềm H200 nào bạn đã sử dụng không, và bản cập nhật nào đã khắc phục sự cố?
Rod Smith

Câu trả lời:


3

Tình hình dường như rõ ràng, ít rõ ràng hơn là tại sao nó lại xảy ra. Trạng thái đầu ra của bạn:

Warning! Secondary partition table overlaps the last partition by 3519068194 blocks!

GPT có hai bảng phân vùng, một bảng chính nằm ở đầu đĩa và một bảng thứ hai (hoặc sao lưu) nằm trong 33 cung (16K) cuối cùng của đĩa, xem wiki Arch Linux hữu ích về điều này.

Nó thường xảy ra rằng mọi người không dành chỗ cho PT dự phòng, khi phân vùng đĩa thủ công, điều này dẫn đến khiếu nại của các tiện ích đĩa về việc thiếu bảng phân vùng phụ và cảnh báo thay đổi kích thước phân vùng cuối cùng bằng cách thu nhỏ 33 phân vùng .

Bạn có chính xác trường hợp tương tự, ngoại trừ PT dự phòng của bạn xuất hiện 3,5x10 ^ 9 cung (\ khoảng 1,8TB) quá sớm. Nói cách khác, gdisktiện ích nhìn thấy một PT sao lưu bị đặt sai vị trí và nghĩ rằng đây là phần cuối của đĩa. Do đó, kích thước đĩa nhỏ hơn (2TiB thay vì 4TB của bạn) và không thể gắn kết phân vùng vượt ra ngoài cạnh đĩa (giả định).

Việc này xảy ra như nào thế? Tôi chỉ có thể suy đoán, nhưng điều đặc biệt là PT dự phòng xuất hiện ở cuối chính xác 2TiB, giới hạn trên lý thuyết (xem hộp ngoài cùng bên phải trong bài viết Wikipedia này ) cho các hệ thống tệp FAT32 (với các cung 512B). Mã của hệ thống tệp từ đầu ra của gdisk, 0x0700không có nhiều thông tin: theo cuốn sách của Rod Smith ,

Windows sử dụng một mã GUID duy nhất cho tất cả các phân vùng dữ liệu của mình, có thể là FAT hoặc NTFS

mà thực chất là mã 0x0700. Do đó tôi không thể biết đó là FAT32 hay NTFS, nhưng nếu là FAT32, chúng tôi có thể hiểu được câu hỏi hóc búa mà bạn thấy mình gặp phải. Điều rắc rối hơn là sự hiện diện của một phân vùng ( sdb2) lớn hơn đĩa có sẵn,

... last usable sector is 4294967261

trong khi khu vực cuối sdb2là 7814035455 và thông báo lỗi

 mount: special device /dev/sdb2 does not exist

Nhiều khả năng, chúng tôi đang thấy kết quả của một số lần thử phân vùng, với một số lỗi / lỗi / whatchamacallit.

Ngoài ra, gdisklà kiên quyết về lựa chọn của bạn:

    You will need to delete this partition or resize it in another utility.

Hoặc là tùy chọn ngụ ý mất dữ liệu. Tôi không biết những gì trên đĩa của bạn, cho dù đó là thương hiệu mới hay đầy dữ liệu cá nhân được ấp ủ từ lâu, vì vậy tôi không biết chính xác những gì cần đề xuất. Tất nhiên, sao lưu mọi thứ (từ Windows), sau đó định dạng lại đĩa (trong Linux) và thử đĩa trên Windows trước khi thực sự lưu trữ bất cứ thứ gì trên đó nghe có vẻ như là một hành động hợp lý. Ngoài ra, tôi khuyên bạn nên chọn một hệ thống tệp như NTFS, không giới hạn kích thước đĩa (hoặc ít nhất, không có liên quan đến đĩa 4TiB), một lần nữa hãy xem điều này trên hộp ngoài cùng bên phải của bài viết Wikipedia này .


HƯỚNG DẪN GÌ? Tôi nghĩ GUID trên GPT là mã 16 byte. Loại phân vùng MBR chỉ có 1 byte và 0x07 dành cho NTFS nhưng FAT32 LBA là 0x0C, cùng với nhiều giá trị khác cho FAT12, FAT16 ...
phuclv

@ LưuViênPhúc Bạn đúng về mọi tính, nhưng, theo cuốn sách của Rod Smith, Windows sử dụng một mã GUID duy nhất cho tất cả các phân vùng dữ liệu của nó, có thể là FAT hoặc NTFS. Do đó, trong trường hợp này, một số mã MBR khác nhau được dịch thành một mã GPT GUID duy nhất. GPT fdisk sử dụng, phần nào tùy ý, mã 0x0700 (hay chính xác hơn là EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) cho tất cả các mã này.
MariusMatutiae

@MariusMatutiae Cảm ơn câu trả lời của bạn. Xin vui lòng xem cập nhật của tôi; Tôi đã giải quyết vấn đề của mình bằng cách cập nhật trình điều khiển H200. Tôi vẫn còn một chút bối rối, tuy nhiên. Bạn có biết tại sao phần sụn sẽ khiến một hệ điều hành không nhìn thấy ổ đĩa đúng cách, trong khi một hệ điều hành khác có thể không?
SkyNT

Tôi đoán là các hệ điều hành đang sử dụng các cuộc gọi cấp thấp khác nhau để xác định kích thước đĩa. Có lẽ bộ điều khiển đĩa được phát triển và thử nghiệm chủ yếu với Windows, do đó lỗ hổng phần sụn gây ra sự cố với Linux đã không được phát hiện cho đến khi sản phẩm được xuất xưởng.
Rod Smith
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.