GPT hoặc MBR: Làm sao tôi biết?


Câu trả lời:


87

Bạn có thể sử dụng parted -lđể xác định loại bảng phân vùng. Ví dụ:

$ sudo parted -l
Model: ATA TOSHIBA THNSNS25 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  32.2GB  32.2GB  primary  ext4         boot
 2      32.2GB  256GB   224GB   primary  ext4


Model: ATA Hitachi HDT72101 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4            boot
 2      32.2GB  996GB   964GB   primary  ext4
 3      996GB   1000GB  4295MB  primary  linux-swap(v1)

Trường Partition Tablenày cho thấy tôi đang sử dụng msdosbảng phân vùng MBR (bảng vẫn được sử dụng phổ biến cho Linux và Windows) trên cả hai đĩa. Từ mantrang partedcó thể tạo (và do đó hy vọng xác định) các loại bảng phân vùng sau (hoặc rộng hơn là 'nhãn đĩa'):

bsd
dvh
gpt    - this is a GPT partition table
loop   - this is raw disk access without a partition table
mac
msdos  - this is a standard MBR partition table
pc98
sun

Cập nhật

Đáng để thêm lệnh để liệt kê một phân vùng duy nhất vì điều này không rõ ràng nếu không có một số kiến ​​thức partedvà nó có thể gây khó khăn cho việc tìm kiếm dữ liệu bạn cần nếu có nhiều ổ đĩa. Đối với /dev/sdabạn sẽ làm:

parted /dev/sda print

Đó là một mệnh lệnh tuyệt vời, Graeme. Mặc dù tôi đã sử dụng Linux được vài năm nhưng tôi chưa bao giờ thực sự chú ý đến nó. Cảm ơn!
Tim

3
parted /dev/sda pcũng sẽ làm
sjas

tôi đã phải làm "sudo parted -l"
Santropedro

33

Trên linux, bạn có thể kiểm tra điều này thông qua gdiskcông cụ sẽ có sẵn cho bất kỳ bản phân phối nào.

gdisk -l /dev/sda

Dưới đây, /dev/sdalà nút thiết bị của ổ đĩa vật lý , không phải là một phân vùng ( /dev/sda1, /dev/sda2, vv là phân vùng).

Nếu bạn thấy một cái gì đó bao gồm:

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

Bạn có một đĩa kiểu MBR. Đừng lo lắng, điều này đã không làm hại gì.

Nếu bạn không thấy cảnh báo này, bạn có đĩa GPT hoặc đĩa GPT / MBR lai . Loại thứ hai được sử dụng chủ yếu trên các máy Apple dành cho phiên bản khởi động kép của MS Windows không hỗ trợ GPT. gdisksẽ chỉ ra điều này với:

Found valid GPT with hybrid MBR; using GPT

Chúng cũng có thể được sử dụng trong các tình huống khác khi cần hỗ trợ cho cả hai phong cách.


Hoặc ngược lại - cố gắng sử dụng cfdisktrên phân vùng GPT cũng sẽ dẫn đến cảnh báo.
orion

Nếu không được cài đặt và không có trong một gdiskgói, nó có thể được tìm thấy trong gptfdiskgói ... ít nhất là trên Gentoo.

2
@orion Tôi không khuyến nghị rằng vì một số phiên bản của các công cụ như fdiskhoặc cfdiskcó thể hỗ trợ GPT và do đó không hiển thị lỗi.
goldilocks

Đối với tôi gdiskphát hiện một bảng phân vùng lai GPT + MBR và đưa ra Found valid GPT with hybrid MBR; using GPT.. Đây dường như là phương pháp duy nhất sẽ phát hiện bảng lai.
Graeme

@Graeme: Cảm ơn. Tôi đã không biết về những điều này (tài liệu tham khảo lai ban đầu được chỉnh sửa bởi Stephane Chazelas), nhưng tôi đã đọc một chút và thêm một số chi tiết.
goldilocks

17

Vì hệ điều hành không được chỉ định, đây là cách làm FreeBSD .

Tất cả được thực hiện thông qua gpartlệnh (viết tắt của GEOM partioner - không liên quan gì đến GNU).

Một đơn giản gpart showsẽ hiển thị cho bạn tất cả các phân vùng có sẵn của tất cả các đĩa, nhưng bạn có thể chỉ định thiết bị để có cái nhìn chính xác hơn về một:

  • Bố cục phân vùng kế thừa với MBR (còn gọi là "msdos") và các lược đồ phân vùng BSD ( phân vùng 2 cấp thường được yêu cầu cho các hệ thống BSD, trừ khi sử dụng toàn bộ đĩa):

    $gpart show

    =>      63  67108801  ada0  MBR  (32G)
            63  67108545     1  freebsd  [active]  (32G)
      67108608       256        - free -  (128k)
    
    =>       0  67108545  ada0s1  BSD  (32G)
             0   2097152       2  freebsd-swap  (1.0G)
       2097152  65011393       1  freebsd-ufs  (31G)
    
  • bố cục phân vùng hiện đại bằng GPT :

    $gpart show /dev/ada2

    =>       34  976773101  ada2  GPT  (465G)
             34          6        - free -  (3.0k)
             40        128     1  freebsd-boot  (64k)
            168   67108864     2  freebsd-swap  (32G)
       67109032  901775360     3  freebsd-zfs  (430G)
    

Để biết thêm, tất cả là trong gparthướng dẫn .


9

Với udisksLinux:

$ sudo /lib/udev/udisks-part-id /dev/sda
using device_file=/dev/sda syspath=/sys/devices/pci0000:00/0000:00:0b.0/ata1/host0/target0:0:0/0:0:0:0/block/sda, offset=0 ao=0 and number=0 for /dev/sda
Entering MS-DOS parser (offset=0, size=500107862016)
MSDOS_MAGIC found
found partition type 0xee => protective MBR for GPT
Exiting MS-DOS parser
Entering EFI GPT parser
GPT magic found
partition_entry_lba=2
num_entries=128
size_of_entry=128
Leaving EFI GPT parser
EFI GPT partition table detected
UDISKS_PARTITION_TABLE=1
UDISKS_PARTITION_TABLE_SCHEME=gpt
UDISKS_PARTITION_TABLE_COUNT=4

Ở trên, tôi đã có một ổ đĩa với phân vùng lai GPT + MS-DOS. Trong trường hợp đó, nhân Linux bỏ qua phân vùng MS-DOS, đó là lý do tại sao udisksđặt UDISKS_PARTITION_TABLE_SCHEME thành gpt.

Công cụ udisks-part-id đó được sử dụng để điền vào cơ sở dữ liệu udev. Vì vậy, nếu bạn đã udiskscài đặt, bạn sẽ có thể truy vấn thông tin đó ngay cả với tư cách là người dùng không được bảo mật với:

$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt

2
Lưu ý rằng bạn sẽ nhận được đầu ra tương tự bất kể có GPT + MBR lai hay không. GPT yêu cầu MBR giả với một phân vùng đĩa đầy đủ 0xee. Trong một kết hợp, đây là một MBR bình thường với một 0xeephân vùng (và tiềm ẩn các vấn đề lớn nếu dữ liệu MBR không đồng bộ với dữ liệu GPT).
Graeme

6

Sử dụng

$ sudo fdisk -l 

Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x987c1a05


Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048    999423    997376   487M 83 Linux
/dev/sda2       1001470 250068991 249067522 118.8G  5 Extended
/dev/sda5       1001472 250068991 249067520 118.8G 8e Linux LVM

Xem loại Đĩa: dos . Nếu nó hiển thị dos có nghĩa là lược đồ MBR thì lược đồ GPT khác



1

Bạn có thể sử dụng blkid.

Ví dụ với đầu ra:

# blkid /dev/sdc
/dev/sdc: PTUUID="92f03b9b-7402-4ad2-8316-08a991c237b3" PTTYPE="gpt"

# blkid -o export /dev/sdc
DEVNAME=/dev/sdc
PTUUID=92f03b9b-7402-4ad2-8316-08a991c237b3
PTTYPE=gpt

Hoặc trong một tập lệnh, với -o valuetùy chọn:

disk=$1
part_type=$(blkid -o value -s PTTYPE $disk)
case $part_type in
    gpt)  echo "GPT";;
    dos)  echo "MBR";;
    *)    echo "partition is $part_type";;
esac
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.