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

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

我的 USB 驱动器未接收 UUID。当我查看 /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

分区表和分区是用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

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

答案1

这就是应该发生的事情。

这里术语“磁盘”或“驱动器”有两种口语用法:第一个指的是身体的USB 记忆棒等设备。第二个指的是文件系统分区,其中一台物理设备上可能有多个。

设备节点指的/dev/sda是第一意义上(物理设备);设备节点类似于/dev/sda1第二个(文件系统分区)。合理? sda1 是物理磁盘 sda 上的文件系统分区。可以用一个分区格式化整个设备,但这种情况并不常见,因此一般来说/dev/sda永远不会有 UUID。

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

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

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

tune2fs -U random /dev/whatever

  1. 显然GPT 格式的可以,尽管问题中的设备是隐式 MBR 格式的(它没有 EFI 分区,并且fdisk要么指示 GPT 磁盘,要么对于旧版本将其报告为不受支持)。

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

    PARTUUID 的 32 位基数显示在问题的 fdisk 输出中:Disk identifier: 0x00082145

答案2

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

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

答案3

我发现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)

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

答案4

你问,

有没有办法获取该分区的 UUID?

您还可以使用:lsblk -f来获取 UUID。

相关内容