如何确定我的硬盘是使用MBR还是GPT格式布置的?

评论

关于AU
的相同问题

#1 楼

您可以使用parted -l确定分区表的类型。例如:

$ 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)


Partition Table字段显示我在两个磁盘上都使用了msdos MBR分区表(Linux和Windows仍常用的分区表)。在man页面上,parted可以创建(并因此希望标识)以下类型的分区表(或更广泛地说是“磁盘标签”):

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


Update

值得添加列出单个分区的命令,因为在不了解parted的情况下这并不明显,如果有多个驱动器,则可能很难找到所需的数据。对于/dev/sda,您可以执行以下操作:

parted /dev/sda print


评论


这是一个很棒的命令,格雷姆。尽管我已经使用Linux几年了,但我从未真正注意到它。谢谢!

– Tim
2014年3月18日15:59

分开的/ dev / sda p也可以。

– sjas
2015年5月4日在22:35

我不得不做“须藤分开-l”

– Santropedro
18-10-30在3:43

#2 楼

在Linux上,您可以通过gdisk工具进行检查,该工具应可用于任何发行版。

gdisk -l /dev/sda


这里,/dev/sda是物理驱动器的设备节点,而不是分区(/dev/sda1/dev/sda2等是分区)。

如果看到的内容包括:

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


您具有MBR样式的磁盘。不用担心,这不会造成任何伤害。

如果没有看到此警告,则说明您有GPT磁盘或GPT / MBR混合磁盘。后者主要用于不支持GPT的MS Windows双重引导版本的Apple计算机上。 gdisk将通过以下方式表明这一点:

Found valid GPT with hybrid MBR; using GPT


它们还可以用于需要同时支持两种样式的其他情况。

评论


或相反-尝试在GPT分区上使用cfdisk也会导致警告。

–猎户座
2014年3月18日14:54

如果未安装且不在gdisk软件包中,则可以在gptfdisk软件包中找到它……至少在Gentoo上。

–user44370
2014年3月18日在15:22

@orion我不建议这样做,因为某些版本的工具(例如fdisk或cfdisk)可能支持GPT,因此不会显示错误。

–金锁
2014年3月18日在15:37

对我来说,gdisk检测到混合GPT + MBR分区表,并提供带有混合MBR的“找到的有效GPT”;使用GPT。这似乎是检测混合表的唯一方法。

– Graeme
2014年3月18日19:11

@Graeme:谢谢。我没有意识到这些(原始混合参考由Stephane Chazelas编辑),但是我做了一些阅读,并添加了一些细节。

–金锁
2014年3月18日在20:34



#3 楼

由于未指定操作系统,因此这是FreeBSD的处理方式。

所有操作均通过gpart命令完成(GEOM partioner的缩写-与GNU无关)。

一个简单的gpart show将显示所有磁盘的所有可用分区,但是您可以指定该设备在一个磁盘上具有更精确的外观:




$ 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)



使用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)



要了解更多信息,请参见gpart手册。

#4 楼

使用

$ 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


请参阅Disklabel类型:dos。如果显示dos,则表示它是MBR模式,否则是GPT模式

#5 楼

在Linux上使用udisks:上面,我有一个带有混合GPT + MS-DOS分区的驱动器。在这种情况下,Linux内核将忽略MS-DOS分区,这就是为什么udisks将UDISKS_PARTITION_TABLE_SCHEME设置为gpt的原因。
该udisks-part-id工具用于填充udev数据库。因此,如果您安装了udisks,则即使以非特权用户身份,也应该能够查询以下信息:

$ 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


评论


请注意,无论是否存在混合GPT + MBR,您都将获得类似的输出。 GPT需要具有单个0xee类型的完整磁盘分区的伪MBR。在混合系统中,这是具有一个0xee分区的普通MBR(如果MBR数据与GPT数据不同步,则可能会出现重大问题)。

– Graeme
2014年3月18日在18:55

#6 楼

在我的Alpine Linux分区脚本中,我使用:

check_scheme() {
    fdisk -l  |grep "Disklabel type:" |awk '{ print  }'
}


评论


在我的Ubuntu 18.04系统上,fdisk -l / dev / sda | grep -i disklabel不返回任何内容,(GNU Fdisk 1.3.0a)。

–agc
18年11月18日在18:02

#7 楼

您可以使用blkid

输出示例:

# 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


或者在脚本中,使用-o value选项:

disk=
part_type=$(blkid -o value -s PTTYPE $disk)
case $part_type in
    gpt)  echo "GPT";;
    dos)  echo "MBR";;
    *)    echo "partition is $part_type";;
esac