USB设备 – >在Ubuntu的块设备映射?

道歉,如果这是一个重复,但是。

我有2个USB海量存储设备,我需要能够计算出哪个物理设备映射到块设备。

它们并不总是在场,所以我不能只依靠固定的块设备path。

我试图从lsusb确定设备path,但是这只是提供设备信息。

总线001设备016:ID 0781:​​5406 SanDisk公司Cruzer微1/2 / 4GB闪存驱动器
 Bus 001 Device 015:ID 4971:ce23 SimpleTech

sudo fdisk -l无法读取任何分区作为其真实encryption卷。

有什么办法来检测哪个物理设备映射到块设备?

我不能挂载文件系统,直到我知道哪个是哪个。

我是否以错误的方式处理了这个问题?

有什么build议么 ?

物理设备的尺寸是否相同? 他们是完全一样的品牌吗?

如果它们大小不同, fdisk -l应该显示标题中整个磁盘的大小以及块设备名称,这应该对您有所帮助。

你也可以检查dmesg的输出。 当连接USB设备时, dmesg将显示其进行联机的过程,并向您显示所分配的块设备。 这是一个示例输出:

 Aug 14 16:35:02 xen kernel: [2526561.710931] usb 5-5: new high speed USB device using ehci_hcd and address 4 Aug 14 16:35:02 xen kernel: [2526561.859909] usb 5-5: configuration #1 chosen from 1 choice Aug 14 16:35:02 xen kernel: [2526562.138808] usbcore: registered new interface driver libusual Aug 14 16:35:02 xen kernel: [2526562.162072] Initializing USB Mass Storage driver... Aug 14 16:35:02 xen kernel: [2526562.163248] scsi4 : SCSI emulation for USB Mass Storage devices Aug 14 16:35:02 xen kernel: [2526562.163452] usbcore: registered new interface driver usb-storage Aug 14 16:35:02 xen kernel: [2526562.163455] USB Mass Storage support registered. Aug 14 16:35:07 xen kernel: [2526567.161157] scsi 4:0:0:0: Direct-Access WDC WD50 00AAKS-00A7B0 PQ: 0 ANSI: 2 CCS Aug 14 16:35:07 xen kernel: [2526567.171712] sd 4:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB) Aug 14 16:35:07 xen kernel: [2526567.172736] sd 4:0:0:0: [sdb] Write Protect is off Aug 14 16:35:07 xen kernel: [2526567.173733] sd 4:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB) Aug 14 16:35:07 xen kernel: [2526567.174606] sd 4:0:0:0: [sdb] Write Protect is off Aug 14 16:35:13 xen kernel: [2526567.174616] sdb: sdb1 Aug 14 16:35:13 xen kernel: [2526572.854493] sd 4:0:0:0: [sdb] Attached SCSI disk Aug 14 16:35:13 xen kernel: [2526572.854544] sd 4:0:0:0: Attached scsi generic sg2 type 0 

如您所见,内核将/ dev / sdb分配给USB设备。 希望这可以帮助!

一旦你连接一个设备,你可以访问/ dev / disk,并从那里知道它的符号链接是dynamic创build的:

 [user@host disk]$ pwd /dev/disk [user@host disk]$ ll -R .: total 0 drwxr-xr-x 2 root root 80 Jul 30 09:54 by-id drwxr-xr-x 2 root root 80 Jul 30 09:54 by-label drwxr-xr-x 2 root root 160 Jul 30 09:54 by-path drwxr-xr-x 2 root root 80 Jul 30 09:54 by-uuid ./by-id: total 0 lrwxrwxrwx 1 root root 9 Jul 30 09:54 usb-WD_10EAVS_External_57442D574341553436313337373137 -> ../../sdb lrwxrwxrwx 1 root root 10 Jul 30 09:54 usb-WD_10EAVS_External_57442D574341553436313337373137-part1 -> ../../sdb1 ./by-label: total 0 lrwxrwxrwx 1 root root 10 Jul 30 09:54 backup -> ../../sdb1 lrwxrwxrwx 1 root root 10 Mar 3 18:51 boot -> ../../sda1 ./by-path: total 0 lrwxrwxrwx 1 root root 9 Jul 30 09:54 pci-0000:00:1d.7-usb-0:6:1.0-scsi-0:0:0:0 -> ../../sdb lrwxrwxrwx 1 root root 10 Jul 30 09:54 pci-0000:00:1d.7-usb-0:6:1.0-scsi-0:0:0:0-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 Mar 3 18:51 pci-0000:00:1f.1-ide-0:0 -> ../../hda lrwxrwxrwx 1 root root 9 Mar 3 18:51 pci-0000:02:0e.0-scsi-0:2:0:0 -> ../../sda lrwxrwxrwx 1 root root 10 Mar 3 18:51 pci-0000:02:0e.0-scsi-0:2:0:0-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 Mar 3 18:51 pci-0000:02:0e.0-scsi-0:2:0:0-part2 -> ../../sda2 ./by-uuid: total 0 lrwxrwxrwx 1 root root 10 Mar 3 18:51 72734cea-d59d-443b-8fdd-3e7a0e2c7731 -> ../../sda1 lrwxrwxrwx 1 root root 10 Jul 30 09:54 efcb8d1e-3f46-4021-bc55-22a85846429b -> ../../sdb1 [user@host disk]$ 

希望这可以帮助。

您可以查询sysfs来报告驱动器的供应商和型号:

 $ cat /sys/block/sdd/device/{vendor,model} DSE MicroDrive 1GB $ cat /sys/block/sdc/device/{vendor,model} JetFlash Transcend 4GB 

如果您想进一步研究,可以添加udev规则(假设您的linux发行版具有udev),将不同的驱动器映射到不同的设备名称,或者提供基于驱动器模型的不同的符号链接

EG, 这里有一些例子。

我可以做这样的事情来创build一个/ dev /超链接符号链接,在适当的时候将分区编号添加到我插入我的创见棒时实际创build的任何实际设备上:

 KERNEL=="sd*", SUBSYSTEMS=="scsi", ATTRS{model}==\ "Transcend 4GB", SYMLINK+="transcend%n" 

当然,如果我把多个设备放在同一个模型中,就会有碰撞,但是通过一些工作你可以避开