Linux 磁盘 UUID

2022-08-06 15:17:37 浏览数 (1)

LInux 磁盘分区可以使用 UUID 进行表示和区分,本文记录 Linux 磁盘UUID相关内容。

UUID

UUID 意即 通用唯一识别码(Universally Unique Identifier),它可以帮助 Linux 系统识别一个磁盘分区而不是块设备文件。

PARTUUID

PARTUUIDs 是GUID分区表(GPT)的组件,该表替代了与主引导记录(MBR)相关的磁盘分区,也可以像UUID一样用于磁盘挂载。

有关更多信息,请参见Linux.com-在Linux中使用新的GUID分区表

GPT GUID(全局唯一标识符)和我们熟悉的Linux UUID(通用唯一标识符)虽然具有相同的有用目的,但它们并非一回事:给块设备唯一的名称。Linux UUID是文件系统的功能,并且在创建文件系统时创建。要查看Linux UUID,只需启动blkid命令即可。请注意Partition GUID代码以及其显示为“ Microsoft基本数据”的方式。是的,Microsoft总是会崩溃,因为这是EXT4分区,因此Windows无法读取它,但是会将其视为未格式化的分区。在当前版本的gdisk中,您将看不到这一点,因为直到2011年为止,还没有Linux文件系统GUID。现在有了,所以如果您不使用像我的旧Linux(Mint 13), 您将在fstab中使用分区唯一的GUID,如下所示:

代码语言:javascript复制
PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA /data ext4 defaults 0 0

—— Linux.com

修改 UUID

  • 生成 UUID
代码语言:javascript复制
uuidgen
  • tune2fs 命令写入
  • 示例
代码语言:javascript复制
$ uuidgen
2125190c-0317-4460-8cad-4f5b9fa46633

$ sudo tune2fs /dev/sda1 -U 2125190c-0317-4460-8cad-4f5b9fa46633

注意:这个命令不要轻易试,如果忘记修改对应的grub.cfg和fstab等文件,系统会不正常

查看磁盘 UUID

通过设备目录
  • 通过设备目录信息可以获取磁盘部分信息
代码语言:javascript复制
ls -l /dev/disk/by-uuid/  # 按照 UUID 查看设备
ls -l /dev/disk/by-path/  # 按照路径查看设备
ls -l /dev/disk/by-id/    # 按照 ID 查看设备
ls -l /dev/disk/by-label/ # 按照卷标查看设备

  • 示例:
代码语言:javascript复制
 ls -l /dev/disk/by-uuid/
总用量 0
lrwxrwxrwx 1 root root 10 1月   4 08:31 127386cd-a14d-4346-b914-eb11c6a40303 -> ../../sdd4
lrwxrwxrwx 1 root root 10 1月   4 08:31 161c25c8-348a-4c0d-931d-cfc7861ad4f6 -> ../../sdc3
lrwxrwxrwx 1 root root 10 1月   4 08:31 2a69fb2c-a734-46e0-a154-230429895150 -> ../../sdb1
lrwxrwxrwx 1 root root 10 1月   4 08:31 35a891ef-4058-42fe-85d6-2e79170c4357 -> ../../sdg4
......

  • 目录结构
代码语言:javascript复制
/         (这就是著名的根)
├── bin         (你在终端运行的大多数程序,比如cp、mv...)
├── boot         (内核放在这里,这个目录也经常被作为某个独立分区的挂载点)
│   └── grub   (grub引导程序和引导菜单就放在这里)
├── cdrom
├── dev         (存放设备文件,这里相当于一个设备管理器,由系统自动生成。视硬件环境不同变化很大)
│   ├── block
│   ├── bsg
│   ├── bus
│   ├── char
│   ├── disk         (磁盘信息,要挂载硬盘分区就要注意这里的信息喽)
│   │   ├── by-id     (硬盘分区的永久性符号链接)
│   │   ├── by-label  (按卷标识别的硬盘分区,常用于挂载)
│   │   ├── by-path   (硬盘分区的节点链接)
│   │   └── by-uuid   (按UUID识别的硬盘分区,常用于挂载)

blkid命令
  • 使用命令
代码语言:javascript复制
sudo blkid
  • 可以看到所有设备的 UUID 、PARTUUID 等信息
代码语言:javascript复制
$ sudo blkid

/dev/mapper/ubuntu--vg-swap_1: UUID="9f50bf3a-35e0-43a7-9c59-5ad8a37ade7e" TYPE="swap"
/dev/mapper/ubuntu--vg-root: UUID="7f44d86a-3ca7-418e-b4af-4e23dd432d53" TYPE="xfs"
/dev/sdb1: LABEL="BACKUP_I_S" UUID="21694b2c-ab34-47e0-a1b54-230629895150" TYPE="xfs" PARTLABEL="BACKUP_I_S" PARTUUID="23ca3ca7-3da0-489c-89aa-3dafa4add9cc"
/dev/sdb2: LABEL="BACKUP_I_M" UUID="f3b49e52-ea03-4d5a-a4e1-b1bd248f0a38" TYPE="xfs" PARTLABEL="BACKUP_I_M" PARTUUID="5fa8cffe-2c3d-4466-a904-cfe20a3fa659"
/dev/sdb3: LABEL="BACKUP_I_L" UUID="68d51ac4-6d5c-44bb-9b5b-fc60bf2ce5f3" TYPE="xfs" PARTLABEL="BACKUP_I_L" PARTUUID="095a4566-75f7-4f3e-b4ac-891fa374bc06"
/dev/sdb4: LABEL="BACKUP_I_XL" UUID="c73928c2-3927-4d39-b117-54af3c2808d4" TYPE="xfs" PARTLABEL="BACKUP_I_XL" PARTUUID="e28a06bb-2b10-4a41-b5f5-72747efef306"

  • 添加 -p 选项可以获得更详细的设备信息
代码语言:javascript复制
$ sudo blkid -p /dev/sda1
/dev/sda1: LABEL="DATA_I_S" UUID="5f4cff5e-aa7c-f0a0-bd1b-8fde325a125b" TYPE="xfs" USAGE="filesystem" PART_ENTRY_SCHEME="gpt" PART_ENTRY_NAME="DATA_I_S" PART_ENTRY_UUID="13fd5af6-d5cb-4fb1-9cf2-fa6a574d2388" PART_ENTRY_TYPE="0fc63daf-8d83-4578-4379-ad69dd477de4" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="1048576000" PART_ENTRY_DISK="8:0"

lsblk 命令

lsblk 列出所有有关可用或指定块设备的信息。lsblk 命令读取 sysfs 文件系统和 udev 数据库以收集信息。

  • 如果 udev 数据库不可用或者编译的 lsblk 不支持 udev,它会试图从块设备中读取卷标、UUID 和文件系统类型。这种情况下,必须以 root 身份运行。该命令默认会以类似于树的格式打印出所有的块设备(RAM 盘除外)。
代码语言:javascript复制
$ lsblk -o name,mountpoint,size,uuid
NAME   MOUNTPOINT  SIZE UUID
sda                 30G 
└─sda1 /            20G d92fa769-e00f-4fd7-b6ed-ecf7224af7fa
sdb                 10G 
sdc                 10G 
├─sdc1               1G d17e3c31-e2c9-4f11-809c-94a549bc43b7
├─sdc3               1G ca307aa4-0866-49b1-8184-004025789e63
├─sdc4               1K 
└─sdc5               1G 
sdd                 10G 
sde                 10G 
sr0               1024M

hwinfo 命令

hwinfo 意即硬件信息工具,是另外一种很好的实用工具。它被用来检测系统中已存在的硬件,并且以可读的格式显示各种硬件组件的细节信息。

代码语言:javascript复制
$ hwinfo --block | grep by-uuid | awk '{print $3,$7}'
/dev/sdc1, /dev/disk/by-uuid/d17e3c31-e2c9-4f11-809c-94a549bc43b7
/dev/sdc3, /dev/disk/by-uuid/ca307aa4-0866-49b1-8184-004025789e63
/dev/sda1, /dev/disk/by-uuid/d92fa769-e00f-4fd7-b6ed-ecf7224af7fa

udevadm 命令

udevadm 需要命令和命令特定的操作。它控制 systemd-udevd 的运行时行为,请求内核事件、管理事件队列并且提供简单的调试机制。

代码语言:javascript复制
$ udevadm info -q all -n /dev/sdc1 | grep -i by-uuid | head -1
S: disk/by-uuid/d17e3c31-e2c9-4f11-809c-94a549bc43b7

tune2fs 命令

tune2fs 允许系统管理员在 Linux 的 ext2、ext3、ext4 文件系统中调整各种可调的文件系统参数。这些选项的当前值可以使用选项 -l 显示。

代码语言:javascript复制
$ tune2fs -l /dev/sdc1 | grep UUID
Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7

dumpe2fs

dumpe2fs 打印出现在设备文件系统中的超级块和块组的信息。

代码语言:javascript复制
$ dumpe2fs /dev/sdc1 | grep UUID
dumpe2fs 1.43.5 (04-Aug-2017)
Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7

参考资料

  • https://blog.csdn.net/chrisniu1984/article/details/7245711
  • https://blog.csdn.net/andie_guo/article/details/9011653
  • https://zhuanlan.zhihu.com/p/62459117
  • https://qastack.cn/raspberrypi/75027/whats-the-difference-between-uuid-and-partuuid

0 人点赞