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


12

我有一个未接收到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

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


您需要弄清楚您正在谈论的设备。/dev/sdb不会有UUID,但/dev/sdb1应该如果它已被格式化。
goldilocks 2013年

1
我指的是/ dev / sdb下的/ dev / sdb1
monksy

发布的输出fsck -n /dev/sdb1。您也可以尝试给它一个UUID,tune2fs -U random /dev/sdb1然后再看。UUID是什么都没有关系。
goldilocks 2013年

发布[对不起,如果这变得令人烦恼]
monksy

1
没问题。“超级块无效”位可以解释为什么没有UUID。如果您需要在此处备份内容,请尝试将其安装并执行此操作,然后卸载和fsck -y /dev/sdb1; 如果您无法安装它,只需运行fsck并希望不会丢失任何内容。阅读man fsck以了解-n和之间的区别-y
goldilocks 2013年

Answers:


13

那是应该发生的。

这里有两个俗称“磁盘”或“驱动器”的用法:第一个是指物理设备,例如USB记忆棒。第二个是指文件系统分区,一个物理设备上可能有多个分区

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

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

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

最后,由于是用来格式化设置UUID的分区的工具,所以很老的工具可能无法做到这一点。但是,您始终可以使用设置一个新的(用于ext)tune2fs,例如:

tune2fs -U random /dev/whatever

SDA是我的主要驱动器。SDB,SDD等是USB驱动器。我已经更新了答案,包括fdisk -l来证明它具有分区。
13年

@monksy:不报告UUID的设备节点为/dev/sdb1/dev/sdb?后者不应该。同样,fdisk输出不会指示分区已格式化,因此不能证明其具有可用的UUID。我在上面添加了一些简短的段落来解释这一点。
goldilocks 2013年

格式化。插入[pre fstab项目]时,gnome自动安装程序将启动它。我没有sdb1的UUID。fdisk -l只是证明那里存在分区
monksy

1
在分区出现之前,我不得不重新启动/dev/disk/by-uuid(Ubuntu 16.04,但可能会影响其他用户)。因此(1)创建分区和文件系统,(2)重新启动。可能有一种非重启方式,但我更喜欢检查所有内容均来自冷启动,因此未进行调查。
疯狂的

2

/ dev / disk / by-uuid在启动时由程序“ partprobe”填充。如果您有partprobe无法识别的磁盘或分区,则partprobe会失败并显示错误,并停止扫描其余分区:

root@machine1:~# partprobe 
Error: /dev/mapper/sda5_crypt: unrecognised disk label
root@machine1:~# 

这显然是partprobe part错误。可能特定于ubuntu 14.04(可信任)。解决方法是在未扫描的分区上显式运行partprobe:

root@machine1:~# partprobe /dev/sdd1

请注意,由于每次磁盘管理操作都会启动partprobe很多次,因此解决方法是短期的。


2

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

1

ls -l /dev/disk/by-uuid或尝试sudoblkid /dev/sdb1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.