不会出现在 /dev/disk/by-uuid 或 blkid 中的驱动器的 UUID

mon*_*ksy 21 mount ext3 fstab uuid disk

我有一个未收到 UUID 的 USB 驱动器。当我查看 /dev/disk/by-uuid 的内容时,它不存在。分区所在的开发点位于 /dev/sdb 上。我可以在 /dev/disk/by-path 下看到 sdb。此外,当使用 blkid 时,我的输出为零。我假设我收到了返回的错误代码。

有没有办法获得这个分区的 UUID?

的结果 fdisk -l /dev/sdb:

Disk /dev/sdb: 320.1 GB, 320072932352 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142446 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
Disk identifier: 0x00082145

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   625141759   312569856   83  Linux
Run Code Online (Sandbox Code Playgroud)

分区表和分区是用gparted创建的,所以它被分区并运行命令mkfs.ext3。

fsck -n /dev/sdb1 的输出

fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
fsck.ext2: Superblock invalid, trying backup blocks...
zwei was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
zwei: 11/19537920 files (0.0% non-contiguous), 1275097/78142464 blocks
Run Code Online (Sandbox Code Playgroud)

它被格式化为 ext3 驱动器。为什么显示为ext2?

gol*_*cks 20

这就是应该发生的事情。

此处使用的术语“磁盘”或“驱动器”有两种口语用法:第一种是指物理设备,例如 U 盘。第二个是指文件系统分区,其中一个物理设备上可能有多个。

设备节点 like/dev/sda指的是第一感觉(物理设备);设备节点是/dev/sda1指第二个(文件系统分区)。有道理?sda1 是物理磁盘 sda 上的文件系统分区。可以使用一个分区来格式化整个设备,但这是不常见的,因此通常/dev/sda不会有 UUID。

文件系统分区有 UUID,物理设备没有1 我相信它们是在创建文件系统时随机创建的(这就是为什么它们会在您重新格式化分区时发生变化的原因,以及为什么如果您块级复制一个分区并使用映像创建一个新分区,您将有两个具有相同 UUID 的分区)。

因此,请记住 UUID 是在分区格式化时创建。当您对磁盘进行分区时(例如,使用 fdisk),您并没有格式化任何东西,您只是在分区表中设置分区类型(和大小等),因此新的未格式化分区没有 UUID。

最后,由于设置 UUID 的是用于格式化分区的工具,因此很旧的工具可能无法执行此操作。但是,您始终可以使用 设置一个新的(用于 ext)tune2fs,例如:

tune2fs -U random /dev/whatever
Run Code Online (Sandbox Code Playgroud)
  1. 显然是GPT 格式的,尽管问题中的设备是隐式 MBR 格式的(它没有 EFI 分区,并且fdisk要么指示 GPT 磁盘,要么在旧版本中报告它不受支持)。

    但是,还应该注意的是,MBR 格式的磁盘确实具有与每个分区索引组合的类似标识符,因此包含无法保留自己的 UUID(例如vfat)的文件系统的分区可以具有唯一的“PARTUUID” ; 这可以以相同的方式用于许多事情(例如,in fstab、 withudev和用于安装),但它不是真正的 128 位 UUID。

    所述PARTUUID的32位基被示出在从所述问题输出的fdisk: Disk identifier: 0x00082145


小智 14

尝试使用 sudols -l /dev/disk/by-uuidblkid /dev/sdb1

我也有一个分区+格式化的分区sdb1,由于某种原因它不会显示在列表中,除非我使用sudo.


mwf*_*ley 12

我发现file -s在以下情况下可以给出分区的 UUID blkid

sudo file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=ef55765f-dae5-426f-82c4-0d98265c5f21 (needs journal recovery)
Run Code Online (Sandbox Code Playgroud)

如果它检测到其他内容(例如DOS/MBR boot sector),请尝试添加-k以返回所有匹配项。