LInux 磁盘分区可以使用 UUID 进行表示和区分,本文记录 Linux 磁盘UUID相关内容。
UUID
UUID 意即 通用唯一识别码(Universally Unique Identifier),它可以帮助 Linux 系统识别一个磁盘分区而不是块设备文件。
PARTUUID
PARTUUIDs
是GUID分区表(GPT)的组件,该表替代了与主引导记录(MBR)相关的磁盘分区,也可以像UUID一样用于磁盘挂载。
有关更多信息,请参见Linux.com-在Linux中使用新的GUID分区表
代码语言:javascript复制GPT GUID(全局唯一标识符)和我们熟悉的Linux UUID(通用唯一标识符)虽然具有相同的有用目的,但它们并非一回事:给块设备唯一的名称。Linux UUID是文件系统的功能,并且在创建文件系统时创建。要查看Linux UUID,只需启动blkid命令即可。请注意Partition GUID代码以及其显示为“ Microsoft基本数据”的方式。是的,Microsoft总是会崩溃,因为这是EXT4分区,因此Windows无法读取它,但是会将其视为未格式化的分区。在当前版本的gdisk中,您将看不到这一点,因为直到2011年为止,还没有Linux文件系统GUID。现在有了,所以如果您不使用像我的旧Linux(Mint 13), 您将在fstab中使用分区唯一的GUID,如下所示:
PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA /data ext4 defaults 0 0
—— Linux.com
修改 UUID
- 生成 UUID
uuidgen
tune2fs
命令写入- 示例
$ uuidgen
2125190c-0317-4460-8cad-4f5b9fa46633
$ sudo tune2fs /dev/sda1 -U 2125190c-0317-4460-8cad-4f5b9fa46633
注意:这个命令不要轻易试,如果忘记修改对应的grub.cfg和fstab等文件,系统会不正常
查看磁盘 UUID
通过设备目录
- 通过设备目录信息可以获取磁盘部分信息
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/ # 按照卷标查看设备
- 示例:
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
......
- 目录结构
/ (这就是著名的根)
├── bin (你在终端运行的大多数程序,比如cp、mv...)
├── boot (内核放在这里,这个目录也经常被作为某个独立分区的挂载点)
│ └── grub (grub引导程序和引导菜单就放在这里)
├── cdrom
├── dev (存放设备文件,这里相当于一个设备管理器,由系统自动生成。视硬件环境不同变化很大)
│ ├── block
│ ├── bsg
│ ├── bus
│ ├── char
│ ├── disk (磁盘信息,要挂载硬盘分区就要注意这里的信息喽)
│ │ ├── by-id (硬盘分区的永久性符号链接)
│ │ ├── by-label (按卷标识别的硬盘分区,常用于挂载)
│ │ ├── by-path (硬盘分区的节点链接)
│ │ └── by-uuid (按UUID识别的硬盘分区,常用于挂载)
blkid命令
- 使用命令
sudo blkid
- 可以看到所有设备的 UUID 、PARTUUID 等信息
$ 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
选项可以获得更详细的设备信息
$ 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 盘除外)。
$ 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 的运行时行为,请求内核事件、管理事件队列并且提供简单的调试机制。
$ 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
显示。
$ tune2fs -l /dev/sdc1 | grep UUID
Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7
dumpe2fs
dumpe2fs
打印出现在设备文件系统中的超级块和块组的信息。
$ 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