USB大容量存储器已识别,但SCSI块设备未显示

USB大容量存储的块设备在Ubuntu 16.04中没有显示出来,而我可以在Ubuntu 14.04看到它。 问题:如何使它在Ubuntu 16.04显示?

笔记:

  1. 这两台机器在同一个硬件上都是虚拟的,所以它不是布线,布线,电源,连接,等等… USB虚拟化是相同的,我已经三重检查,这不是问题。
  2. 实际上…在Ubuntu 14.04Ubuntu 16.04 都能正确检测到USB层(请参阅下面的日志)。
  3. 块设备/dev/sdbUbuntu 14.04 (如预期的)中显示,但是在Ubuntu 16.04 (这个问题的话题)中没有显示。
  4. 这个问题似乎是位于名为usb-storage东西,在Ubuntu 14.04是桥接USBSCSI但似乎是在我的安装Ubuntu 16.04缺less。

上下文

我有两台Vagrant / VirtualBox机器。 一个是Ubuntu 14.04 ,另一个是Ubuntu 16.04 。 在主机上,我有一个基于JMicronJMicron ,插入1T HD(芯片产品JMS56x )。

驱动器没有格式化,也没有分区,我计划在ZFS池中使用原始块设备。

我想从Ubuntu 16.04内部使用ZFS

在Ubuntu 14.04

我使用vagrant image config.vm.box = "ubuntu/trusty64" ,我已经安装了usbutils

 root@vagrant-ubuntu-trusty-64:/home/vagrant# apt list --installed | grep usb WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts. libusb-0.1-4/trusty,now 2:0.1.12-23.3ubuntu1 amd64 [installed] libusb-1.0-0/trusty,now 2:1.0.17-1ubuntu2 amd64 [installed] usbutils/trusty,now 1:007-2ubuntu1 amd64 [installed] 

我告诉VirtualBox连接JMicron并成功地将块设备作为SCSI磁盘。

连接之前

在连接磁盘之前,我可以看到sda及其独特的分区sda1

 root@vagrant-ubuntu-trusty-64:/home/vagrant# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Nov 26 13:06 /dev/sda brw-rw---- 1 root disk 8, 1 Nov 26 13:06 /dev/sda1 

连接后

连接后,我可以看到sdasdb (在这种情况下, sdb没有分区,如预期):

 root@vagrant-ubuntu-trusty-64:/home/vagrant# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Nov 26 13:06 /dev/sda brw-rw---- 1 root disk 8, 1 Nov 26 13:06 /dev/sda1 brw-rw---- 1 root disk 8, 16 Nov 26 16:56 /dev/sdb 

fdisk通过/dev/sd*列表提供了一致的结果。

因此, Ubuntu 14.04行为与预期完全一样,因为块设备/dev/sdb显示出来。

在Ubuntu 16.04

我使用vagrant图像config.vm.box = "gbarbieru/xenial" ,我没有安装usbutils 。 我通过apt install usbutilsapt install usbutils ,之后我得到:

 root@vagrant:/home/vagrant# apt list --installed | grep usb WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libusb-0.1-4/xenial,now 2:0.1.12-28 amd64 [installed] libusb-1.0-0/xenial,now 2:1.0.20-1 amd64 [installed,automatic] usbutils/xenial,now 1:007-4 amd64 [installed] 

我告诉VirtualBox连接JMicron ,我没有得到任何额外的块设备 ,这是主要的问题。

连接之前

在连接磁盘之前,我可以看到sda及其几个分区sda1sda2sda5

 root@vagrant:/home/vagrant# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Nov 26 10:55 /dev/sda brw-rw---- 1 root disk 8, 1 Nov 26 10:55 /dev/sda1 brw-rw---- 1 root disk 8, 2 Nov 26 10:55 /dev/sda2 brw-rw---- 1 root disk 8, 5 Nov 26 10:55 /dev/sda5 

连接后

连接之后,我无法Ubuntu 16.04 看到任何sdb因为我可以看到Ubuntu 14.04

 root@vagrant:/home/vagrant# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Nov 26 10:55 /dev/sda brw-rw---- 1 root disk 8, 1 Nov 26 10:55 /dev/sda1 brw-rw---- 1 root disk 8, 2 Nov 26 10:55 /dev/sda2 brw-rw---- 1 root disk 8, 5 Nov 26 10:55 /dev/sda5 

fdisk通过/dev/sd*列表提供了一致的结果。

所以Ubuntu 16.04不像预期的那样工作,因为块设备/dev/sdb没有显示出来。 尽pipe如此,低级USB设备实际上已经被正确检测到了。 查看日志:

痕迹和日志

Ubuntu 14.04 ,当连接时,我会在tail -f /var/log/kern.log获得以下跟踪信息:

 Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.532808] usb 1-1: new high-speed USB device number 3 using xhci_hcd Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.553057] usb 1-1: New USB device found, idVendor=152d, idProduct=9561 Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.553060] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=5 Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.553062] usb 1-1: Product: JMS56x Series Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.553064] usb 1-1: Manufacturer: JMicron Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.553065] usb 1-1: SerialNumber: 00000000000000000000 Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.557954] usb-storage 1-1:1.0: USB Mass Storage device detected Nov 26 16:14:34 vagrant-ubuntu-trusty-64 kernel: [11313.557991] scsi2 : usb-storage 1-1:1.0 Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.557915] scsi 2:0:0:0: Direct-Access WDC WD10 EAVS-00D7B1 0105 PQ: 0 ANSI: 6 Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.558304] sd 2:0:0:0: Attached scsi generic sg1 type 0 Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.564883] sd 2:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.566221] sd 2:0:0:0: [sdb] Write Protect is off Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.566225] sd 2:0:0:0: [sdb] Mode Sense: 47 00 10 08 Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.571284] sd 2:0:0:0: [sdb] No Caching mode page found Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.572366] sd 2:0:0:0: [sdb] Assuming drive cache: write through Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.579291] sd 2:0:0:0: [sdb] No Caching mode page found Nov 26 16:14:35 vagrant-ubuntu-trusty-64 kernel: [11314.579651] sd 2:0:0:0: [sdb] Assuming drive cache: write through Nov 26 16:14:36 vagrant-ubuntu-trusty-64 kernel: [11315.056332] sdb: unknown partition table Nov 26 16:14:36 vagrant-ubuntu-trusty-64 kernel: [11315.066919] sd 2:0:0:0: [sdb] No Caching mode page found Nov 26 16:14:36 vagrant-ubuntu-trusty-64 kernel: [11315.067273] sd 2:0:0:0: [sdb] Assuming drive cache: write through Nov 26 16:14:36 vagrant-ubuntu-trusty-64 kernel: [11315.070669] sd 2:0:0:0: [sdb] Attached SCSI disk 

相反,在Ubuntu 16.04中,当连接设备时,我会在tail -f /var/log/kern.log获取这些跟踪信息:

 Nov 26 11:14:59 vagrant kernel: [ 1178.761744] usb 1-1: new high-speed USB device number 4 using xhci_hcd Nov 26 11:14:59 vagrant kernel: [ 1179.088626] usb 1-1: New USB device found, idVendor=152d, idProduct=9561 Nov 26 11:14:59 vagrant kernel: [ 1179.088632] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=5 Nov 26 11:14:59 vagrant kernel: [ 1179.088636] usb 1-1: Product: JMS56x Series Nov 26 11:14:59 vagrant kernel: [ 1179.088638] usb 1-1: Manufacturer: JMicron Nov 26 11:14:59 vagrant kernel: [ 1179.088641] usb 1-1: SerialNumber: 00000000000000000000 

第一个缺失的是:

 usb-storage 1-1:1.0: USB Mass Storage device detected 

因此,比较这两个日志,似乎“名为usb-storage ”不存在。 usb-storage可能是SCSI的桥梁。

问题

  1. usb-storage仍然是2016年的路? 还是应该用另一座桥?
  2. 如何在Ubuntu 16.04激活usb-storage ,使其继续进行,将存储设备暴露给SCSI并获取列出的/dev/sdb块设备?

尝试在连接USB磁盘之前运行modprobe usb-storagemodprobe usb_storage 。 它会改变什么吗?

问题是你只使用通用内核而没有USB存储模块。 有usb存储工作只需安装linux-image-extra软件包

例如在Ubuntu 16.04上:

 apt-get install linux-image-extra-$(uname -r) -y 

然后加载USB存储模块或断开/连接您的设备

 root@ubuntu-xenial:~# modprobe usb-storage root@ubuntu-xenial:~# dmesg | tail [ 698.649461] scsi host3: usb-storage 1-1:1.0 [ 698.650107] usbcore: registered new interface driver usb-storage [ 699.667145] scsi 3:0:0:0: Direct-Access USB DISK 2.0 PMAP PQ: 0 ANSI: 6 [ 699.668667] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 699.679897] sd 3:0:0:0: [sdc] 30289920 512-byte logical blocks: (15.5 GB/14.4 GiB) [ 699.687947] sd 3:0:0:0: [sdc] Write Protect is off [ 699.687951] sd 3:0:0:0: [sdc] Mode Sense: 45 00 00 00 [ 699.695974] sd 3:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 699.753448] sdc: sdc1 [ 699.798466] sd 3:0:0:0: [sdc] Attached SCSI removable disk