Gra*_*eme 125
您可以使用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)
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)
值得添加用于列出单个分区的命令,因为如果没有一些知识,这并不明显,parted如果有多个驱动器,查找所需的数据可能会很痛苦。因为/dev/sda你会这样做:
parted /dev/sda print
Run Code Online (Sandbox Code Playgroud)
gol*_*cks 41
在 linux 上,您可以通过gdisk任何发行版都可用的工具进行检查。
gdisk -l /dev/sda
Run Code Online (Sandbox Code Playgroud)
这里,/dev/sda是设备节点的物理驱动器的,而不是一个分区(/dev/sda1,/dev/sda2等是分区)。
如果您看到包含以下内容的内容:
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Run Code Online (Sandbox Code Playgroud)
你有一个 MBR 风格的磁盘。别担心,这并没有造成任何伤害。
如果您没有看到此警告,则您使用的是 GPT 磁盘或混合 GPT/MBR磁盘。后者主要用于不支持 GPT 的 MS Windows 双启动版本的 Apple 机器。 gdisk将表明这一点:
Found valid GPT with hybrid MBR; using GPT
Run Code Online (Sandbox Code Playgroud)
它们也可用于需要支持两种样式的其他情况。
Ouk*_*uki 19
由于没有指定操作系统,这里是FreeBSD的处事方式。
一切都是通过gpart命令完成的(GEOM 分区器的缩写 - 与 GNU 无关)。
一个简单的方法gpart show会向您显示所有磁盘的所有可用分区,但您可以指定设备以更精确地查看其中一个:
带有MBR(又名“msdos”)和BSD分区方案的旧分区布局(BSD 系统通常需要 2 级分区,除非使用完整磁盘):
$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)
Run Code Online (Sandbox Code Playgroud)使用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)
Run Code Online (Sandbox Code Playgroud)要了解更多信息,一切都在gpart手册中。
Rak*_*kib 11
用
$ 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
Run Code Online (Sandbox Code Playgroud)
查看磁盘标签类型: dos。如果它显示 dos,则表示它是 MBR 模式,否则是 GPT 模式
随着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
Run Code Online (Sandbox Code Playgroud)
上面,我有一个混合 GPT+MS-DOS 分区的驱动器。在这种情况下,Linux 内核会忽略 MS-DOS 分区,这就是udisks将 UDISKS_PARTITION_TABLE_SCHEME 设置为 gpt 的原因。
该 udisks-part-id 工具用于填充 udev 数据库。因此,如果您已经udisks安装,即使作为非特权用户,您也应该能够查询该信息:
$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
Run Code Online (Sandbox Code Playgroud)
从v. 2.33 及更高版本开始lsblk,可以通过以下方式仅打印分区表类型util-linux
lsblk /dev/nvme0n1 -dno pttype
Run Code Online (Sandbox Code Playgroud)
总蛋白
d省略子项/从属项,n省略标头并o仅打印指定的字段。
它非常方便,因为它不需要对输出进行后处理,也不需要 root 访问权限。