From 47872a36a7e2ab550a0b374e5d4cc58f3fe25afb Mon Sep 17 00:00:00 2001 From: leafee98 Date: Fri, 30 Dec 2022 11:44:29 +0800 Subject: [PATCH] refactor: disk-uuid-partuuid-ptuuid.md --- content/essays/disk-uuid-partuuid-ptuuid.md | 22 +++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/content/essays/disk-uuid-partuuid-ptuuid.md b/content/essays/disk-uuid-partuuid-ptuuid.md index bf460ec..91e68a6 100644 --- a/content/essays/disk-uuid-partuuid-ptuuid.md +++ b/content/essays/disk-uuid-partuuid-ptuuid.md @@ -8,7 +8,7 @@ show_comments: true draft: false --- -在 Linux 中使用 `fdisk` 和 `blkid` 可以看到磁盘的 3 种 UUID,分别是 UUID、PARTUUID、PTUUID,下面将介绍每一种 UUID 的意义。 +在 Linux 中使用 `fdisk` 和 `blkid` 可以看到磁盘的几种 UUID,如 UUID、PARTUUID、PTUUID,下面将介绍每一种 UUID 的意义。 @@ -38,17 +38,19 @@ Device Start End Sectors Type-UUID UUID /dev/sda1: LABEL="WDP" UUID="b9ea8994-e79c-4e79-92ea-2c97ca669023" UUID_SUB="87bbaa99-549b-43b9-98fd-55a8e896c195" BLOCK_SIZE="4096" TYPE="btrfs" USAGE="filesystem" PART_ENTRY_SCHEME="gpt" PART_ENTRY_UUID="b967bef5-a7a2-334c-a564-1360313a9bc8" PART_ENTRY_TYPE="0fc63daf-8483-4772-8e79-3d69d8477de4" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="4096" PART_ENTRY_SIZE="3907024896" PART_ENTRY_DISK="8:0" ``` -从上面的输出可以看到几种 UUID +上述输出的 UUID 可以分为以下几类: -1. `fdisk` 输出的 `Disk identifier` 和 `blkid` 的 PTUUID 一致,是此分区表的唯一标识,一块磁盘只会在分区时得到一个这样的标识,它的作用是区分不同的磁盘。 +1. 分区表唯一标识 +2. 特定分区的入口标识(记录在分区表中) +3. 分区类型标识 +4. 文件系统唯一标识 -2. `fdisk` 的 UUID 和 `blkid` 的 PART_ENTRY_UUID 一致,表示分区表中特定分区的唯一标识,此标识直接从分区表中读取得到。`fdisk` 无需对文件系统的支持就可以拿到这个 UUID,即无论此分区是 `ext4` 还是 `btrfs` 又或是 `NTFS` 甚至尚未进行格式化,`fdisk` 只需要从 GPT 的分区表中就能获得这个唯一标识。 - -3. `blkid` 输出中有一项 `UUID` 是 `fdisk` 中没有提及的,它是文件系统级别的唯一标识,需要进入分区并文件系统的元数据中读取,也就是需要对 `ext4` 或者 `btrfs` 等文件系统的支持才能读取到。 - -除此之外还有一个 UUID 样式的 Type-UUID,在 `blkid` 中是 PART_ENTRY_TYPE,又被称为 GUID (Globally unique identifier),它用来记录分区的类型,或者只是提示此分区的用途,但是没有严格的要求(可能不准确)。 - -在 Linux 内核参数(如在 GRUB 或其他引导程序中指定要挂载根目录的分区)和 fstab(如按需要挂载到目录树)中,使用 UUID 的位置都指的是分区表中此分区的 UUID。 +| UUID | 程序输出 | 作用 | 保存位置 | 备注 | +| --- | --- | --- | --- | --- | +| 分区表唯一标识 | Disk identifier 和 PTUUID | 唯一标记一块磁盘 | 分区表 | 一块磁盘只会在分区时得到这样一个标记。| +| 分区的入口标记 | `fdisk` 的 UUID 和 `blkid` 的 PART_ENTRY_UUID | 唯一标记一个分区 | 分区表 | 所以无需对文件系统格式的支持就可以获取。如使用 UUID 通过 fstab 挂载分区或通过 Linux 启动参数指定根目录时,都是使用此标记。| +| 分区类型标识 | Type-UUID 和 PART_ENTRY_TYPE | 记录了分区的类型,或者只是提示了此分区的用途 | 分区表 | 如 swap 和 Linux file system。| +| 文件系统唯一标识 | `blkid` 的 UUID | 唯一标记一个文件系统 | 文件系统的元数据中 | 需要进入分区并支持目标文件系统才能读取。如使用多块磁盘的 Btrfs 文件系统,多个磁盘分区下的此文件系统唯一标识是一致的。| ## 参考