如何判断块设备与之前连接的块设备是否相同?

如何判断块设备与之前连接的块设备是否相同?

我有一个块设备。它已从系统中删除,稍后再次添加。如何验证它是否是完全相同的设备?

该设备将始终是大容量存储设备(我不打算写入并且只会以只读方式安装)。

我可以md5sum同时使用两个设备并验证哈希值是否匹配,但这对于大型存储设备来说非常耗时。

有没有更快的方法?

答案1

的输出fdisk -l $device包括一行以“磁盘标识符:”开头的行,其中包含来自设备的一些详细信息,这些详细信息通常对其来说是唯一且持久的。插图:

# fdisk -l /dev/sda | grep 'Disk identifier:'

答案2

您可以使用设备 UUID。 lsblk -f或者blkid

UUID 可以设置(使用tune2fs),但对于大多数用例来说,它应该足够唯一。

答案3

硬编码唯一(?)ID

大多数大容量存储设备(也许不是全部)都有一个硬编码的唯一 ID,可以在 中看到/dev/disk/by-id。以下命令行将显示此 ID,

sudo ls -l /dev/disk/by-id|grep -v '[1-9]$'|tr -s ' ' '\t'|cut -f 9- | sed 's#../../#/dev/#'

并显示它所代表的块设备,' -> /dev/sdx'

示例(我的工作计算机连接了三个 USB 闪存盘),

$ sudo ls -l /dev/disk/by-id|grep -v '[1-9]$'|tr -s ' ' '\t'|cut -f 9- | sed 's#../../#/dev/#'

ata-HL-DT-STDVD+-RW_GSA-H21L    ->  /dev/sr0
ata-KINGSTON_SKC300S37A120G_50026B724703BCA8    ->  /dev/sda
ata-WDC_WD4002FYYZ-01B7CB1_K3GWHAEB ->  /dev/sdb
usb-Corsair_Voyager_GT_3.0_070883862E1B9719-0:0 ->  /dev/sdc
usb-SanDisk_Cruzer_Blade_200429068118E7C2CFFD-0:0   ->  /dev/sde
usb-SanDisk_Cruzer_Blade_200429068118F440A09E-0:0   ->  /dev/sdd
wwn-0x5000cca25ccc7f97  ->  /dev/sdb
wwn-0x50026b724703bca8  ->  /dev/sda

文件系统的 UUID

如果存在带有文件系统的分区,则每个文件系统也有 UUID,这些文件系统通常但并不总是唯一的,具体取决于它们是单独创建的还是从某些常见的原始文件系统或映像文件克隆的。 UUID 可以通过blkid以下lsblk命令行显示,

lsblk -l -o name,size,UUID,model

示例(我的工作计算机连接了三个 USB 闪存盘),

$ lsblk -l -o name,size,UUID,model
NAME   SIZE UUID                                 MODEL
sda  111,8G                                      KINGSTON SKC300S
sda1 106,9G 0ac1cb43-1609-4fc3-8c69-3e21299729bc 
sda2     5G 6d54c49d-31ac-45fe-917c-2335bcfe7399 
sdb    3,7T                                      WDC WD4002FYYZ-0
sdb1   510M 9F05-5B18                            
sdb2     5G 08b7164f-8852-451b-9624-63b16a66359a 
sdb3    10G fa242ddd-90f8-4603-af5c-c89f4b71ac70 
sdb4    15G 491a6a2b-4867-44d5-94d8-082f79066a5a 
sdb5     1M                                      
sdb6   100G 44156f43-0958-4ea1-800d-b02afbc7d306 
sdb7   3,5T 862210fd-a6fd-4fe3-913c-e18e1448ef36 
sdb8     5G 6958d86a-57a9-4e40-8376-1e41258e5810 
sdc   29,5G                                      Voyager GT 3.0  
sdc1   9,1G 38028BF9184E3FB4                     
sdc2     1M                                      
sdc3   244M 4299-B748                            
sdc4   1,8G 2018-04-26-18-43-51-00               
sdc5  18,4G 033ffb75-518d-4335-89cb-ef7d159cf20b 
sdd    3,7G 2016-08-24-07-06-03-00               Cruzer Blade    
sdd1   1,3G 2016-08-24-07-06-03-00               
sde    3,7G 2016-07-19-21-27-51-00               Cruzer Blade    
sde1   1,4G 2016-07-19-21-27-51-00               
sde2   2,3M 0F7B-9366                            
sr0   1024M                                      DVD+-RW GSA-H21L

这些方法足以帮助我在快速手动检查后识别连接的大容量存储设备。

可以自动使用硬编码 ID 和/或 UUID。例如,您可以为您拥有的每个大容量存储设备创建一个相应的 md5sum,并将 md5sum 存储在 shell 脚本的变量中,您可以在其中检查匹配项。

相关内容