CN101452369B - 用于控制usb大容量存储设备的逻辑单元的方法和系统 - Google Patents
用于控制usb大容量存储设备的逻辑单元的方法和系统 Download PDFInfo
- Publication number
- CN101452369B CN101452369B CN2007101961858A CN200710196185A CN101452369B CN 101452369 B CN101452369 B CN 101452369B CN 2007101961858 A CN2007101961858 A CN 2007101961858A CN 200710196185 A CN200710196185 A CN 200710196185A CN 101452369 B CN101452369 B CN 101452369B
- Authority
- CN
- China
- Prior art keywords
- logical block
- mass
- memory unit
- hot plug
- lun
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明涉及一种用于控制大容量存储设备的逻辑单元的方法和大容量存储设备、大容量存储设备驱动器以及大容量存储系统。其中,大容量存储设备通过USB接口连接到主计算机,在根据本发明的方法中:响应于对逻辑单元的添加和/或去除,在所述大容量存储设备上,动态管理与逻辑单元关联的逻辑单元表并产生相应的热插拔事件;以及将所述热插拔事件通知给所述主计算机。在本发明中,通过对逻辑单元的动态管理并产生相应的热插拔事件,以及将其报告给主机,实现了逻辑单元的即插即用。
Description
技术领域
本发明涉及基于通用串行总线的大容量存储技术,更具体的,本发明涉及一种用于控制大容量存储设备的逻辑单元的方法和大容量存储设备、大容量存储设备驱动器以及大容量存储系统。
背景技术
通用串行总线(USB)大容量存储设备类(USB mass storage deviceclass)是由USB-IF(USB实施者论坛)定义的运行在USB上的计算通信协议集,其包括:(1)USB大容量存储设备类控制/批量/中断(control/bulk/interrupt或CBI)传输;(2)USB大容量存储设备类批量单独(bulk-only)传输。其还包括了以下的子类规范:(1)USB大容量存储设备类ATA命令块;(2)USB大容量存储设备类UFI命令规范;(3)USB大容量存储设备类RBC命令规范;(4)USB大容量存储设备类QIC-157命令规范;(5)USB大容量存储设备类SFF-8070i命令规范;(6)SCSI透明命令集。前两个传输协议定义了数据/命令/状态在USB上的传输方法:CBI传输规范使用control/bulk/interrupt三种类型的端点进行数据/命令/状态传送,而bulk-only传输规范仅仅使用批量(bulk)端点来传输数据/命令/状态。大多数USB存储设备都是基于bulk-only传输规范和SCSI透明命令集设计的。bulk-only在大部分通信中使用批量传输,只有在bulk端点上清除阻塞(Stall)状况,以及传送特定类别请求(class-specific request)时才使用控制传输。
通常将诸如硬盘驱动器(HDD)等遵循该规范连接到计算机的存储设备称为USB大容量存储设备。典型地,将通过USB批量单独(bulk-only)传输协议与计算机通信的存储设备称为USB批量单独传输大容量存储设备(USB bulk-only mass storage device)。这种设备被广泛地用在个人计算机和嵌入式系统中,例如USB磁盘/软盘/CD/DVD、多功能媒体读卡器、移动电话、照相机和扫描仪。
USB批量单独传输大容量存储设备支持共享共同设备特性的多个逻辑单元,逻辑单元可以是物理存储单元或者逻辑地址空间,每个逻辑单元可以由逻辑单元号(LUN)来标识。
图1为例示具有多个逻辑单元的USB大容量存储系统的示意图,如图所示,大容量存储设备通过USB批量单独接口(USB bulk-only interface)与主机连接。大容量存储设备包括本地逻辑单元和远程逻辑单元,这些逻辑单元既可以为物理器件,也可以是通过网络或者其它接口甚至通过各种虚拟化技术连接到大容量存储设备的逻辑地址空间。在某些应用中,可能需要在设备工作时动态地将新的逻辑单元添加到该大容量存储设备上,或从其上去除现有的逻辑单元。
图2为例示USB大容量存储系统的结构框图。如图2所示,该系统包括位于主计算机(下文中也称为“主机”)上的USB大容量存储设备驱动器堆栈20和USB主机控制器21,以及大容量存储设备22。大容量存储设备驱动器堆栈20是一个多层次的结构,在驱动器堆栈20的底层是USB控制器驱动器201(controller driver)和USB核心驱动器202(USB coredriver),用来负责USB总线的数据传输。USB核心驱动器202提供了一组通用接口来供USB驱动器来访问和控制USB硬件(即主机控制器和大容量存储设备)的公用接口,因此无需担心系统中存在的不同类型的USB主机控制器21。在驱动器堆栈20的中间层是USB大容量存储设备驱动器203(USB mass storage driver),负责实现USB大容量存储设备类的各种子类规范和传输协议,例如典型的SCSI透明子类规范和bulk-only传输协议。驱动器堆栈20上层是存储介质访问驱动器,对于大多数USB bulk-only大容量存储设备22而言,进行具体的存储介质访问操作一般是通过SCSI命令来完成的,所以在驱动器堆栈20的最上层一般是SCSI驱动器204(下文中对该层将直接使用SCSI驱动器来描述)。但是本领域技术人员可以理解,不同的子类规范,其上层可以有不同的驱动器。USB大容量存储器驱动器203保存了设备特定的配置信息,并提供给上层存储介质访问驱动器(SCSI驱动器204)适当的接口来使其与USB大容量存储设备22通过不同的子类规范和传输协议通信。USB大容量存储器驱动器203也需要将设备信息向上层驱动器传送,对于大多数bluk-only存储设备而言,传送到SCSI驱动器204。SCSI驱动器204认为每个有效的逻辑单元都是独立的存储源,它将为其创建内部的SCSI设备对象,并为每个设备对象在文件系统中注册独立的接入点,例如在linux系统中的/dev/scd*或者/dev/sd*。通过这些接入点,用户模式的应用可以将操作请求发送到SCSI驱动器204,SCSI驱动器204将这些请求转换为具体的SCSI命令,并通过内部的SCSI设备对象将它们向下传递到USB大容量存储器驱动器203,以最终到达大容量存储设备22。
一般而言,正常的USB bulk-only大容量存储设备的引导过程包括3级初始化:
1.第一级-USB核心驱动器初始化
当插入USB大容量存储设备时,主计算机上的USB核心驱动器负责为该USB设备分配唯一的地址。主计算机也会发送请求到USB设备以获取配置信息来确定其能力和特性(capabilities and characteristics)。USB设备可以有一种或多种配置,而在每一种配置中,设备可以支持多个接口。接口是对主机呈现单一特性或功能的端点的相关集。典型的USB批量单独传输大容量存储设备包括缺省控制通道(Default Control Pipe)(端点0)和bulk-only传输接口。
2.第二级-USB大容量存储设备类初始化
USB大容量存储器驱动器将特定类别的请求“获得最大的逻辑单元号”(“GET MAX LUN”)发送给缺省控制通道,通过返回的结果来确定该设备支持的逻辑单元数。大容量存储设备的逻辑单元数将从LUN 0开始到最大值LUN 15(十六进制为0x0F)连续编号。此外,USB大容量存储设备驱动器将分配所需的资源并记录相应的信息,还向SCSI驱动器报告该存储设备。
3.第三级-SCSI层初始化
SCSI驱动器将发送“查询”(“INQUIRY”)命令给从0到最大LUN编号的逻辑单元以完成初始化过程。每个逻辑单元被认为是单独的存储装置,对“查询”命令的响应指示这些单独的存储装置的特性。最后SCSI驱动器将所有这些存储装置提供给操作系统。
这样,USB bulk-only大容量存储设备完成其引导过程。现在所有的逻辑单元都是可操作的。
虽然USB技术支持USB设备的热即插即用,但是USB大容量存储设备不支持其逻辑单元的热即插即用。图3和图4分别为现有技术的对大容量存储设备的逻辑单元进行添加和去除的流程图。如图3和图4所示,当对大容量存储设备插入或去除逻辑单元时,需要从USB总线上断开该设备。当主机得知该设备被移除时,USB驱动器将通知SCSI驱动器除去所有的逻辑单元。然后,大容量存储设备重新配置自己的逻辑单元,再重新连接到USB总线。主机重新初始化该设备,即USB驱动器通过“获得最大的逻辑单元号”请求来获取该设备支持的逻辑单元的最大数目,并将其向SCSI驱动器报告,SCSI驱动器将发送“查询”命令给该设备当前连接的每个逻辑单元以完成初始化过程。这一系列的操作导致主机USB核心驱动器在添加或去除逻辑单元后重启新的引导过程并重新初始化所有的逻辑单元。这将中断现在正在运行的使用这些逻辑单元的应用,虽然在理论上这些只与未变化的逻辑单元通信的应用是不应该被中断的。
在现有技术条件下,由于逻辑单元的添加和去除会造成正在运行的应用被中断,这将严重影响应用的性能、可用性和可靠性。于是,需要一种更加智能的能够保证其逻辑单元热即插即用的USB大容量存储设备。
发明内容
针对上述问题,本发明提供了一种用于控制大容量存储设备的逻辑单元的方法、大容量存储设备、大容量存储设备驱动器以及大容量存储系统。
根据本发明的第一方面,提供了一种用于控制大容量存储设备的逻辑单元的方法,所述大容量存储设备通过USB接口连接到主计算机,所述方法包括:响应于对逻辑单元的添加和/或去除,在所述大容量存储设备上,动态管理与逻辑单元关联的逻辑单元表并产生相应的热插拔事件;以及将所述热插拔事件通知给所述主计算机。
根据本发明的第二方面,提供了一种大容量存储设备,具有多个逻辑单元,所述存储设备包括:逻辑单元管理装置,用于响应于对逻辑单元的添加和/或去除,动态管理与逻辑单元关联的逻辑单元表;热插拔事件产生装置,用于针对所述改变的逻辑单元产生相应的热插拔事件;以及通知装置,用于将所述热插拔事件通过通用串行总线通知给主计算机。
根据本发明的第三方面,提供了一种大容量存储设备驱动器,包括:事件接收装置,用于通过通用串行总线接收来自所述大容量存储设备的与其逻辑单元的添加和/或去除相关的热插拔事件;以及事件处理装置,用于响应于接收到的热插拔事件,动态维护相应的逻辑单元表并将所述热插拔事件通知上一层驱动器。
根据本发明的第四方面,提供了一种通用串行总线大容量存储系统,包括上述的大容量存储设备和上述的大容量存储设备驱动器。
根据本发明的第五方面,提供了一种计算机程序产品,包括计算机可执行指令,当在计算机设备上执行所述指令时,该指令致使所述设备被配置为执行上述的方法。
附图说明
结合附图,从下面对本发明的实施例的详细描述中本发明的目的、特点和优点将显而易见,其中:
图1为例示具有多个逻辑单元的USB大容量存储系统的示意图。
图2为例示USB大容量存储系统的结构框图;
图3示出了现有技术的对大容量存储设备的逻辑单元进行添加操作的序列图;
图4示出了现有技术的对USB大容量存储设备的逻辑单元进行去除操作的序列图;
图5示出了根据本发明的实施例的用于控制大容量存储设备的逻辑单元的方法的流程图;
图6示出了根据本发明的实施例对大容量存储设备的逻辑单元进行添加操作的序列图;
图7示出了根据本发明的实施例对大容量存储设备的逻辑单元进行去除操作的序列图;
图8为示出根据本发明的实施例的热插拔事件的热插拔事件记录;
图9为例示大容量存储设备的逻辑单元发生变化的对照表;
图10示出了根据本发明的实施例当去除逻辑单元后如何处理来自主机的命令的序列图;
图11示出了根据本发明的实施例的与现有的大容量存储设备兼容操作的序列图;
图12为示出根据本发明的实施例的大容量存储设备的方框图;以及
图13为示出根据本发明的实施例的大容量存储设备驱动器的方框图。
具体实施方式
下面,结合附图对本发明的实施例进行详细描述。
图5为示出根据本发明的实施例的用于控制大容量存储设备的逻辑单元的方法的流程图。在该方法中,大容量存储设备通过USB接口连接到主计算机,该方法包括:响应于对大容量存储设备添加新的逻辑单元和/或从中去除现有的逻辑单元,在大容量存储设备上动态管理(修改)与逻辑单元关联的逻辑单元表并产生相应的热插拔事件;以及将该热插拔事件通知给所述主计算机。
如图5所示,在步骤S501,检测是否对大容量存储设备添加了新的逻辑单元或者去除了现有的逻辑单元。在步骤S502,响应于该添加或去除,在大容量存储设备上对其逻辑单元表进行动态管理,逻辑单元表用于使用诸如逻辑单元号的标识来记录该大容量存储设备现有的每个激活的逻辑单元,从而反映该大容量存储设备的逻辑单元的变化情况。例如,可以基于逻辑单元号(LUN)对逻辑单元表进行管理:当添加逻辑单元时,在设备的逻辑单元表中新增一个逻辑单元号;在去除现有逻辑单元时,从该表中将与该逻辑单元关联的逻辑单元号删除。这样,通过逻辑单元表可以实现对逻辑单元的动态管理,也可以实现使用同一LUN连接到主机系统的逻辑设备接口对于同一LUN的动态变化,例如LUN 3在某个时期可以代表USB DVD驱动器,但是当拔出之后再插入新的装置时则代表该新的装置,此时其可能是一个USB压缩闪存驱动器。
接下来,在步骤S503,在大容量存储设备上产生与逻辑单元关联的热插拔事件,最后在步骤S504,大容量存储设备将热插拔事件通知给主计算机。
如图6所示,在本发明的一个实施例中,当插入新的逻辑单元时,USB大容量存储设备首先在逻辑单元表中为该逻辑单元分配新的逻辑单元号,同时产生相应的热插拔事件(添加)记录。USB大容量存储器驱动器以特定时间间隔定期向USB大容量存储设备发送“获得热插拔事件”请求。该请求用来查询USB大容量存储设备是否存在热插拔事件,如果有,该大容量存储设备则以相应的热插拔事件作为响应。虽然提供了USB大容量存储设备驱动器在特定时间间隔定期向大容量存储设备查询是否存在热插拔事件的具体的方法,本领域的普通技术人员应理解,以其它方式来获得热插拔事件也在本发明的范围内。例如,也可以当出现某种状况时(例如主机接收到某种状态命令),主机通过大容量存储设备驱动器非定时地向大容量存储设备发送“获得热插拔事件”请求(即应命令而发送请求)。在本实施例中,如果存在多个事件记录,可以一次报告一个,也可以一次报告多个,这依赖于具体的实现方式。当存在多个热插拔事件时,可以按事件发生的时间顺序报告给USB存储设备驱动器。一旦USB大容量存储器驱动器检测到添加了新的逻辑单元时,它要对自己的逻辑单元表进行相应地修改,并向SCSI驱动器报告该变化。SCSI驱动器将单独对该新的逻辑单元进行初始化处理,并将其报告给操作系统。在该过程中其它逻辑单元保持未变,从而实现了该设备的逻辑单元的即插即用。
图7示出了根据本发明的实施例对大容量存储设备进行去除逻辑单元处理的序列图。如图7所示,与添加逻辑单元相类似,如果逻辑单元被去除,则USB大容量存储设备从其本地逻辑单元表中删除该逻辑单元号,并产生相应的热插拔事件(去除)记录。USB大容量存储器驱动器在特定时间间隔通过“获得热插拔事件”请求来查询是否存在热插拔事件。当它获得热插拔事件时,修改其自己的逻辑单元表并通知SCSI驱动器释放在操作系统中与该去除的逻辑单元相关的所有资源。
在本发明的实施例中,只要添加新的逻辑单元或去除现有的逻辑单元,支持逻辑单元即插即用(PnP)的USB大容量存储设备就可以立刻产生热插拔事件记录,并将其放入其本地事件FIFO队列。直到主计算机通过大容量存储设备驱动器发送“获得热插拔事件”请求以查询是否发生热插拔事件或主机重置,该大容量存储设备才可以清除相应的热插拔事件记录。在主机重置情况下,清除所有的事件记录。
另一方面,驻留于主计算机的USB大容量存储设备驱动器可以以诸如1000ms的特定时间间隔定期向USB大容量存储设备的缺省控制通道发送“获得热插拔事件”请求。一旦USB大容量存储设备接收到该请求,它将检查其本地FIFO队列是否为空。如果队列不为空,那么它从该队列头部取热插拔事件记录,并将其作为对该请求的响应返回给主计算机。当队列为空时,返回0条记录。在本发明的实施例中,对该请求的响应的格式可以是以第一个字节指示后面有多少个事件记录,其后跟着一个或多个热插拔事件记录。如果该队列为空,则为0。
图8例示了根据本发明的实施例的热插拔事件记录的格式。其至少包括以下信息:事件类型和逻辑单元号。事件类型字段801用于表示添加新的逻辑单元还是去除现有的某个逻辑单元,而逻辑单元号字段802用于指示哪个逻辑单元了发生变化。
图9为例示根据本发明的实施例的大容量存储设备的逻辑单元发生变化的对照表。如图9所示,在本发明的实施例中,当首次连接USB大容量存储设备时,如果其具有6个逻辑单元,则该设备在其逻辑单元表中为每个逻辑单元分配连续的LUN,例如0、1、2、3、4和5。同样的,在获得该设备具有的最大逻辑单元号后,USB大容量存储设备驱动器将向SCSI驱动器报告最大的LUN为5(即0-5共6个逻辑单元)。如图所示,在完成初始化枚举过程之后,大容量存储设备驱动器和SCSI驱动器中也维持着同样的逻辑单元表,其逻辑单元号为连续分布的0、1、2、3、4和5。
当从该设备去除逻辑单元2和4时,该设备检测到发生了这两个逻辑单元的去除,作为对此的响应,从其逻辑单元表中删除与该逻辑单元关联的逻辑单元号2和4,其逻辑单元表相应地变为:0、1、3、5,并产生表明去除这些逻辑单元的热插拔事件,例如产生热插拔(去除)事件记录。在这种情况下,大容量存储设备驱动器可以通过请求-响应的方式获得该事件,相应地修改自己的逻辑单元表,使其变为0、1、3和5,并向SCSI驱动器报告去除逻辑单元2和4,于是SCSI驱动器对其逻辑单元表进行处理,也变为0、1、3和5。
当再次添加一个新的逻辑单元2时,该设备检测到添加了新的逻辑单元,作为对此的响应,为该新的逻辑单元分配LUN,该逻辑单元表为:0、1、2、3和5,并相应地产生表明添加新的逻辑单元的热插拔事件,例如产生热插拔事件(添加)记录。与去除的操作类似,大容量存储设备驱动器在通过请求-响应方式获得该事件记录后相应地修改自己的逻辑单元表(为:0、1、2、3和5)并向SCSI驱动器报告添加了新的逻辑单元2,于是SCSI驱动器对其逻辑单元表进行处理,也变为0、1、2、3和5。
实际上,在从大容量存储设备去除逻辑单元和主计算机通过大容量存储设备驱动器检测到该热插拔事件之间存在较小的时间差。在该时间期间主计算机可能继续向已去除的逻辑单元发送SCSI命令。图10例示了根据本发明的实施例的当去除逻辑单元后如何处理来自主机的命令的序列图。该设备响应于检测到逻辑单元的去除,产生热插拔(去除)事件。在主机获取这个事件前,如果SCSI驱动器继续向已去除的逻辑单元发送SCSI命令,则当该USB大容量存储设备接收到这些SCSI命令时,其可以将这些SCSI命令的状态设置为“检测状态”,并使该命令失效(fail),此外还产生关于该命令失效的详细信息的诊断数据(sense data)。当主计算机接收到该表示存在问题的SCSI状态时,USB大容量存储器驱动器将发送“请求诊断数据”命令以查询该特定的失效命令的信息。于是USB大容量存储设备以“未准备好(NOT READY)”诊断数据来进行响应。该状态一直持续到USB大容量存储器驱动器检测该热插拔(去除)事件,并停止向该逻辑设备发送SCSI命令。
在本发明的实施例中,可选择的,当主机接收到这种表示存在问题的状态信息时,主机通过大容量存储设备驱动器向大容量存储设备发送“获得热插拔事件”的请求,以及时得到热插拔事件。
图11示出了根据本发明的实施例的与现有的大容量存储设备兼容操作的序列图。考虑到不支持逻辑单元的热即插即用的现有的USB大容量存储设备在缺省控制通道中接收到“获得热插拔事件”的情况,在本发明的实施例中对此进行处理。根据USB协议,现有的USB大容量存储设备应该立即为未知请求阻塞缺省控制通道,将其设置为阻塞(STALL)状态,并在下一个请求到来之前清除该阻塞状态。于是主机中的USB大容量存储设备驱动器获悉该设备为现有的USB大容量存储设备,将不再发送“获得热插拔事件”请求。随后的操作遵循最初的流程。
在本发明的实施例中,大容量存储设备的LUN在初始化之后是连续的,在出现任何热插拔事件之后可能会变为稀疏的。如图9所示,在去除逻辑单元2和4之后,现有的激活的LUN为0、1、3、5。如果在该情况下主机将“获得最大LUN”命令发送给该设备,该设备会保持USBbulk-only大容量存储器协议定义的原始的意义以5来进行响应。优选的,还可以提供“获得现在的位图”命令以使主机能够得到激活的逻辑单元的现在的LUN位图,这样即使在丢失某些命令而使主机上的逻辑单元表不能正确反映大容量存储设备的逻辑单元的情况下,也能够恢复到正确的状态。例如,对该请求可以返回16位数据,每位代表该命令时的激活的LUN。
在本发明的另一实施例中,可以保持LUN连续,这与USB大容量存储类bulk-only子类规范原来的定义一致。当插入逻辑单元时,主机在以前的最大LUN上增加相应的数。如果逻辑单元被去除并且它不是最后的一个,则后面的LUN应该向前移动以填补空缺。如图9所示,例如在该设备的逻辑单元2和4被去除之后,LUN应该是0、1、2、3。下面详细说明该过程:
在保持逻辑单元号为连续的情况下,大容量存储设备产生的逻辑单元事件记录使用的是发生事件当时的单元号。例如,该设备具有逻辑单元0、1、2、3、4和5,如果去除逻辑单元2和5,那么产生去除逻辑单元2和去除逻辑单元5这两个事件。同时阻塞这个bulk-only端点,则后续的SCSI命令将被暂停。主机在检测到STALL状态后,主动在缺省控制通道,即端点0,发送一个“获得热插拔事件”请求来取回这两个事件。此时主机USB大容量存储设备驱动器得知逻辑单元2和5被删除了,那么立即将逻辑单元3和4往前移,变成0,1,2,3,同时将队列中等待的SCSI命令中的目的逻辑单元号进行调整。比如原来是发往逻辑单元3的,现在发送到逻辑单元2。接着通知SCSI驱动器把原来对应于逻辑单元2和5的SCSI设备对象释放掉,此外还需要通知SCSI驱动器把原来对应于逻辑单元3和4的SCSI设备对象中保存的逻辑单元号前移至2和3。最后通过缺省控制通道通知USB大容量存储设备清除bulk-only状态,从而被暂停的SCSI命令可以继续执行。如果在bulk-only端点被阻塞后,对“获得热插拔事件”请求返回的结果是并没有发生热插拔事件,则这时可能发生了其他的异常情况,后续的操作将遵守原来的流程。
对于去除逻辑单元,但并不改变现有逻辑单元号的情况下,情况会比较简单。其不需要阻塞bulk-only端点,也不需要将队列中等待的SCSI命令中的目的逻辑单元号进行调整。在该实施例中保持了“获得最大LUN”的语义,因此不需要“获得现在的位图”命令。
在去除逻辑单元的情况下,大容量存储设备也需要更新未变化的逻辑单元的LUN,以与USB大容量存储设备驱动器同步而保持逻辑单元表为一致。
在同一个发明构思下,图12示出了根据本发明的一个实施例的大容量存储设备的结构框图。在本实施例中,与前述实施例原理相同的部分将适当省略其说明。下面结合附图,对本实施例进行详细的描述。
如图12所示,具有多个逻辑单元的大容量存储设备12包括:检测装置125,用于检测是否发生逻辑单元的添加和/或去除;逻辑单元表管理装置122,用于响应于对逻辑单元的添加和/或去除,动态管理与逻辑单元关联的逻辑单元表;热插拔事件产生装置123,用于针对发生改变的逻辑单元产生相应的热插拔事件;以及通知装置121,用于将热插拔事件通过通用串行总线发送给主计算机。
优选的,该设备12还包括容错装置124,用于当收到向已去除的逻辑单元发送的命令时,设置状态信息并使该命令失效,以及生成关于失效命令的信息,并通过通知装置121将该信息发送到主计算机。
在本发明的实施例中,该设备的逻辑单元表管理装置122可以被配置为在逻辑单元表中对添加的逻辑单元分配新的逻辑单元号和/或从逻辑单元表中删除与去除的逻辑单元关联的逻辑单元号。
该设备的热插拔事件产生装置123可以被配置为当发生逻辑单元改变时产生与热插拔事件关联的热插拔事件记录,其中该热插拔事件记录至少包括事件类型和逻辑单元号;以及通知装置121可以被配置为将热插拔事件记录发送给主计算机。
优选的,通知装置121被配置为响应于主计算机的请求,将热插拔事件产生装置123产生的热插拔事件发送给主计算机。
此外,通知装置121可以被配置来响应主计算机在特定时间间隔定期发送的请求,将热插拔事件发送给主计算机;其也可以当出现某种状况时(例如接收到状态命令),响应主计算机非定期发送的“获得热插拔事件”请求(即应命令来发送的请求)。
图13为示出根据本发明的实施例的大容量存储设备驱动器的原理框图。如图13所示,本发明的实施例的大容量存储设备驱动器13包括:事件接收装置131,用于通过通用串行总线接收来自大容量存储设备12的与其逻辑单元的添加和/或去除相关的热插拔事件;事件处理装置133,用于响应于接收到的热插拔事件,动态维护相应的逻辑单元表并将所述热插拔事件通知上一层驱动器;以及事件请求装置132,用于向该大容量存储设备12周期性地发送请求或者应命令来发送请求以查询/检测是否存在所述热插拔事件。
优选的,事件接收装置131被配置为接收来自大容量存储设备12的与热插拔事件关联的热插拔事件记录,该热插拔事件记录至少包括事件类型和逻辑单元号。
响应于事件接收装置131收到来自大容量存储设备的热插拔事件,事件处理装置133被配置为将热插拔事件通知给上层存储介质访问驱动器,例如SCSI驱动器。
在本发明的实施例中,事件请求装置132还被配置为当发生的热插拔事件为添加逻辑单元时,向大容量存储设备12的新增的逻辑单元单独发送查询请求。
进一步的,当与逻辑单元关联的逻辑单元表中的逻辑单元号不连续时,事件请求装置132还被配置为向大容量存储设备12请求激活的逻辑单元的位图。
可选择的,如果要保持逻辑单元表中的逻辑单元号是连续的,则该大容量存储设备驱动器13还可以被配置为当添加逻辑单元时,对所述大容量存储设备12支持的逻辑单元数增加相应的数目;以及当去除逻辑单元时,如果该逻辑单元的逻辑单元号不是最后一个,则使该逻辑单元之后的逻辑单元的逻辑单元号向前移动,以使该表中逻辑单元号连续排列。
在本发明的实施例中,当事件接收装置131收到来自所述大容量存储设备12的指示存在问题的SCSI状态信息时,大容量存储设备驱动器13的事件请求装置132还被配置为向该大容量存储设备查询关于失效命令的信息,并根据返回的诊断数据进行下一步处理。
在本发明的另外的实施例中,还提供了一种大容量存储系统,包括上述的大容量存储设备12和大容量存储设备驱动器13,当该大容量存储设备的逻辑单元发生添加和/或去除的改变时,可以对该逻辑单元进行动态管理,并产生相应的热插拔事件,并将该热插拔事件发送给该大容量存储设备驱动器,该驱动器根据热插拔事件对逻辑单元表进行添加和/或去除,并通知SCSI驱动器,从而可以实现对大容量存储设备的逻辑单元的即插即用的支持,保证了使用其的应用的可用性和可靠性。
在本发明的实施例中,大容量存储设备12、大容量存储设备驱动器13和大容量存储系统在操作上实现根据本发明的实施例的用于控制大容量存储设备的逻辑单元的方法。
本领域的普通技术人员可以理解上述的方法和设备及其系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的大容量存储设备、驱动器及其组件可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
虽然以上结合具体实施例对本发明的用于控制大容量存储设备的逻辑单元的方法及其计算机程序产品、大容量存储设备及其驱动器和大容量存储系统进行了详细描述,但本发明并不限于此,本领域普通技术人员能够理解可以对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围;本发明的保护范围由所附权利要求来限定。
Claims (25)
1.一种用于控制大容量存储设备的逻辑单元的方法,所述大容量存储设备通过USB接口连接到主计算机,所述方法包括:
响应于对逻辑单元的添加和/或去除,在所述大容量存储设备上,动态管理与逻辑单元关联的逻辑单元表并产生相应的逻辑单元的热插拔事件,所述热插拔事件至少指示以下信息:用于表示添加新的逻辑单元还是去除现有的某个逻辑单元,以及哪个逻辑单元发生了变化;以及
将所述热插拔事件通知给所述主计算机。
2.根据权利要求1所述的方法,其中所述将热插拔事件通知给主计算机的步骤进一步包括:
由大容量存储设备驱动器以请求-响应的方式从所述大容量存储设备获得所述热插拔事件。
3.根据权利要求2所述的方法,进一步包括以下步骤:
由所述大容量存储设备驱动器将所述热插拔事件通知给SCSI驱动器。
4.根据权利要求1到3中任一项所述的方法,其中所述动态管理与逻辑单元关联的逻辑单元表的步骤进一步包括:
在逻辑单元表中对添加的逻辑单元分配新的逻辑单元号和/或从逻辑单元表中删除与去除的逻辑单元关联的逻辑单元号。
5.根据权利要求4所述的方法,其中当所述逻辑单元表中的逻辑单元号不连续时,所述方法进一步包括:
由所述大容量存储设备驱动器向所述大容量存储设备请求激活的逻辑单元的位图。
6.根据权利要求4所述的方法,其中如果在所述逻辑单元表中的逻辑单元号是连续的,则所述方法进一步至少包括以下一种:
当添加逻辑单元时,对所述大容量存储设备支持的逻辑单元数增加相应的数目;以及
当去除逻辑单元时,如果所述逻辑单元的逻辑单元号不是最后一个,使所述逻辑单元之后的逻辑单元的逻辑单元号向前移动,以使所述逻辑单元号连续排列。
7.根据权利要求1到3中任一项所述的方法,进一步包括:
如果收到向已去除的逻辑单元发送的命令时,在所述大容量存储设备处设置状态信息,并使所述命令失效;以及
将关于所述失效命令的信息发送给主计算机。
8.根据权利要求1到3中任一项所述的方法,进一步包括:
当出现未知命令时在所述大容量存储设备处将缺省控制通道设置为阻塞状态。
9.根据权利要求8所述的方法,进一步包括:
如果所述缺省控制通道为阻塞状态,则从所述主计算机处不对所述大容量存储设备发送请求以查询在所述大容量存储设备处是否存在逻辑单元的热插拔事件。
10.一种大容量存储设备,具有多个逻辑单元,所述存储设备包括:
逻辑单元管理装置,用于响应于对逻辑单元的添加和/或去除,动态管理与逻辑单元关联的逻辑单元表;
热插拔事件产生装置,用于针对改变的所述逻辑单元产生相应的热插拔事件,所述热插拔事件至少指示以下信息:用于表示添加新的逻辑单元还是去除现有的某个逻辑单元,以及哪个逻辑单元发生了变化;以及
通知装置,用于将所述热插拔事件通过通用串行总线通知给主计算机。
11.根据权利要求10所述的大容量存储设备,其中所述逻辑单元管理装置被配置为在逻辑单元表中对添加的逻辑单元分配新的逻辑单元号和/或从逻辑单元表中删除与去除的逻辑单元关联的逻辑单元号。
12.根据权利要求10或11所述的大容量存储设备,其中所述通知装置被配置为响应于所述主计算机的请求,将所述热插拔事件通知给所述主计算机。
13.根据权利要求10或11所述的大容量存储设备,其中还包括容错装置,用于当收到向已去除的逻辑单元发送的命令时,设置状态信息并使所述命令失效,以及生成关于失效命令的信息,并控制所述通知装置将所述信息发送到主计算机。
14.一种大容量存储设备驱动器,包括:
事件接收装置,用于通过通用串行总线接收来自所述大容量存储设备的与其逻辑单元的添加和/或去除相关的热插拔事件,所述热插拔事件至少指示以下信息:用于表示添加新的逻辑单元还是去除现有的某个逻辑单元,以及哪个逻辑单元发生了变化;以及
事件处理装置,用于响应于接收到的热插拔事件,动态维护相应的逻辑单元表并将所述热插拔事件通知上一层驱动器。
15.根据权利要求14所述的大容量存储设备驱动器,进一步包括:
事件请求装置,用于向所述大容量存储设备发送请求以查询是否存在所述热插拔事件。
16.根据权利要求14所述的大容量存储设备驱动器,其中所述事件处理装置还被配置为响应于所述事件接收装置,将所述热插拔事件通知给SCSI驱动器。
17.根据权利要求15所述的大容量存储设备驱动器,其中所述事件请求装置还被配置为当与逻辑单元关联的逻辑单元表中的单元号是不连续时,则向所述大容量存储设备请求激活的逻辑单元的位图。
18.根据权利要求15所述的大容量存储设备驱动器,其中所述事件请求装置还被配置为:
响应于所述事件接收装置接收到来自所述大容量存储设备的状态信息,向所述大容量存储设备查询关于失效命令的信息。
19.一种通用串行总线大容量存储系统,包括根据权利要求10到13中任一项所述的大容量存储设备和根据权利要求14到18中任一项所述的大容量存储设备驱动器。
20.一种用于控制大容量存储设备的逻辑单元的装置,所述大容量存储设备通过USB接口连接到主计算机,所述装置包括:
用于响应于对逻辑单元的添加和/或去除,在所述大容量存储设备上,动态管理与逻辑单元关联的逻辑单元表并产生相应的逻辑单元的热插拔事件的装置,所述热插拔事件至少指示以下信息:用于表示添加新的逻辑单元还是去除现有的某个逻辑单元,以及哪个逻辑单元发生了变化;以及
用于将所述热插拔事件通知给所述主计算机的装置。
21.根据权利要求20所述的装置,其中所述动态管理与逻辑单元关联的逻辑单元表的装置进一步包括:
用于在逻辑单元表中对添加的逻辑单元分配新的逻辑单元号和/或从逻辑单元表中删除与去除的逻辑单元关联的逻辑单元号的装置。
22.根据权利要求21所述的装置,其中如果在所述逻辑单元表中的逻辑单元号是连续的,则所述装置进一步至少包括以下之一:
用于当添加逻辑单元时,对所述大容量存储设备支持的逻辑单元数增加相应的数目的装置;以及
用于当去除逻辑单元时,如果所述逻辑单元的逻辑单元号不是最后一个,使所述逻辑单元之后的逻辑单元的逻辑单元号向前移动,以使所述逻辑单元号连续排列的装置。
23.根据权利要求20的装置,进一步包括:
用于如果收到向已去除的逻辑单元发送的命令时,在所述大容量存储设备处设置状态信息,并使所述命令失效的装置;以及
用于将关于所述失效命令的信息发送给主计算机的装置。
24.根据权利要求20所述的装置,进一步包括:
用于当出现未知命令时在所述大容量存储设备处将缺省控制通道设置为阻塞状态的装置。
25.根据权利要求24所述的装置,进一步包括:
用于如果所述缺省控制通道为阻塞状态,则从所述主计算机处不对所述大容量存储设备发送请求以查询在所述大容量存储设备处是否存在逻辑单元的热插拔事件的装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101961858A CN101452369B (zh) | 2007-11-29 | 2007-11-29 | 用于控制usb大容量存储设备的逻辑单元的方法和系统 |
US12/270,335 US7970974B2 (en) | 2007-11-29 | 2008-11-13 | Method and system for adding or removing a logical unit of a USB mass storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101961858A CN101452369B (zh) | 2007-11-29 | 2007-11-29 | 用于控制usb大容量存储设备的逻辑单元的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101452369A CN101452369A (zh) | 2009-06-10 |
CN101452369B true CN101452369B (zh) | 2012-01-25 |
Family
ID=40676936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101961858A Active CN101452369B (zh) | 2007-11-29 | 2007-11-29 | 用于控制usb大容量存储设备的逻辑单元的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7970974B2 (zh) |
CN (1) | CN101452369B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496608B2 (en) * | 2009-10-28 | 2019-12-03 | Sandisk Il Ltd. | Synchronizing changes in a file system which are initiated by a storage device and a host device |
US8856501B2 (en) * | 2009-12-14 | 2014-10-07 | Sandisk Technologies Inc. | Method and system for controlling operation of interconnected devices by circulating host capability without a centralized manager |
US8719480B2 (en) * | 2011-11-30 | 2014-05-06 | International Business Machines Corporation | Automated network configuration in a dynamic virtual environment |
JP5963445B2 (ja) * | 2012-01-06 | 2016-08-03 | キヤノン株式会社 | 電子機器及びプログラム |
KR101993704B1 (ko) * | 2012-08-24 | 2019-06-27 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법 |
CN103336512B (zh) * | 2013-06-29 | 2015-12-02 | 上海飞奥燃气设备有限公司 | 燃气输配智能管理装置 |
CN104077083A (zh) * | 2014-07-01 | 2014-10-01 | 浪潮(北京)电子信息产业有限公司 | 新加存储方法、装置和系统 |
CN104102515A (zh) * | 2014-07-18 | 2014-10-15 | 浪潮(北京)电子信息产业有限公司 | 一种处理外挂存储设备的逻辑单元号的方法及服务器 |
US10042784B2 (en) * | 2014-10-13 | 2018-08-07 | Microchip Technology Incorporated | Side channel access through USB streams |
CN105589657A (zh) * | 2014-10-23 | 2016-05-18 | 中兴通讯股份有限公司 | 一种实现移动存储挂载的方法及装置 |
GB2549892B (en) * | 2015-01-06 | 2021-08-25 | Vertiv It Systems Inc | System and method for presenting driver install files when enabling a USB device |
CN107168896A (zh) * | 2017-04-26 | 2017-09-15 | 烽火通信科技股份有限公司 | 一种usb设备的控制系统及控制方法 |
CN107506323B (zh) * | 2017-07-25 | 2020-03-20 | 华为技术有限公司 | 一种热插拔处理方法及装置 |
CN108108201A (zh) * | 2017-12-26 | 2018-06-01 | 合肥中科云巢科技有限公司 | 基于rdp协议的usb存储设备重定向方法及虚拟机 |
CN108629175B (zh) * | 2018-05-14 | 2020-07-17 | 深圳市江波龙电子股份有限公司 | Usb大容量存储设备的访问控制方法及访问控制装置 |
CN108932113A (zh) * | 2018-06-28 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种磁盘管理方法、装置、设备及可读存储介质 |
US11163482B2 (en) | 2019-06-26 | 2021-11-02 | International Business Machines Corporation | Dynamic performance-class adjustment for storage drives |
US11049570B2 (en) | 2019-06-26 | 2021-06-29 | International Business Machines Corporation | Dynamic writes-per-day adjustment for storage drives |
US11137915B2 (en) | 2019-06-27 | 2021-10-05 | International Business Machines Corporation | Dynamic logical storage capacity adjustment for storage drives |
CN111857842A (zh) * | 2020-06-17 | 2020-10-30 | 天津赢达信科技有限公司 | 一种USB复合设备在Windows和Android显示不同硬件设备的方法 |
CN114168498B (zh) * | 2021-11-09 | 2024-02-06 | 百富计算机技术(深圳)有限公司 | 一种断线保持方法、装置、设备及计算机存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW444165B (en) * | 1998-05-12 | 2001-07-01 | Primax Electronics Ltd | Hot plug and play universal serial bus switch device and control method |
US6141719A (en) * | 1998-12-10 | 2000-10-31 | Network Technologies, Inc. | USB selector switch |
US6871252B1 (en) * | 2000-03-31 | 2005-03-22 | Intel Corporation | Method and apparatus for logical detach for a hot-plug-in data bus |
US6651154B1 (en) | 2000-07-11 | 2003-11-18 | International Business Machines Corporation | Method, system, and program for expanding the storage space in an array of storage units |
US7467290B2 (en) | 2001-10-19 | 2008-12-16 | Kingston Technology Corporation | Method and system for providing a modular server on USB flash storage |
JP3513147B2 (ja) | 2002-05-29 | 2004-03-31 | 株式会社ハギワラシスコム | Usbストレージデバイス及びその制御装置 |
US7346724B1 (en) * | 2002-06-28 | 2008-03-18 | Cypress Semiconductor Corp. | Enabling multiple ATA devices using a single bus bridge |
US20050182615A1 (en) * | 2004-02-12 | 2005-08-18 | International Business Machines Corporation | Method and system for creating an automatically adjusting USB mass storage device |
US7418525B2 (en) * | 2004-10-29 | 2008-08-26 | International Business Machines Corporation | Shared simultaneously-connected removable drives and servers each housing an I/O controller which maintains an uninterrupted protocol connection |
US7644211B2 (en) * | 2004-12-07 | 2010-01-05 | Cisco Technology, Inc. | Method and system for controlling transmission of USB messages over a data network between a USB device and a plurality of host computers |
US7721115B2 (en) * | 2005-02-16 | 2010-05-18 | Cypress Semiconductor Corporation | USB secure storage apparatus and method |
CN100481040C (zh) | 2006-01-13 | 2009-04-22 | 深圳创维-Rgb电子有限公司 | 电视机嵌入式Linux系统下USB存储设备实现实时热拔插的方法 |
US20070180167A1 (en) * | 2006-02-02 | 2007-08-02 | Seagate Technology Llc | Dynamic partition mapping in a hot-pluggable data storage apparatus |
JP4725397B2 (ja) * | 2006-04-05 | 2011-07-13 | セイコーエプソン株式会社 | Usb複合デバイス,usb通信システム,及びusb通信方法 |
-
2007
- 2007-11-29 CN CN2007101961858A patent/CN101452369B/zh active Active
-
2008
- 2008-11-13 US US12/270,335 patent/US7970974B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN101452369A (zh) | 2009-06-10 |
US20090144477A1 (en) | 2009-06-04 |
US7970974B2 (en) | 2011-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101452369B (zh) | 用于控制usb大容量存储设备的逻辑单元的方法和系统 | |
AU2012398220B2 (en) | Data storage method and storage device | |
US9377967B2 (en) | Systems and methods for scalable storage management | |
CN104202197A (zh) | 设备管理的方法和装置 | |
KR20200056538A (ko) | 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법 | |
CN107870869A (zh) | 包括由主机控制的存储装置的计算系统 | |
US8966130B2 (en) | Tag allocation for queued commands across multiple devices | |
CN101663654A (zh) | 用于连接到主机的存储设备的优化的提示模型和用于存储设备的写优化方案 | |
CN108647169B (zh) | 一种热插拔处理方法及装置 | |
US9720621B2 (en) | Storage controller, storage system, and non-transitory computer-readable storage medium having stored therein control program | |
AU2015402888B2 (en) | Computer device and method for reading/writing data by computer device | |
US11137918B1 (en) | Administration of control information in a storage system | |
CN103955441A (zh) | 一种设备管理系统、方法及一种io扩展接口 | |
CN110175146B (zh) | 硬盘信息获取方法和获取硬盘信息的装置 | |
US8631166B2 (en) | Storage devices with bi-directional communication techniques and method of forming bi-directional communication layer between them | |
CN101447982A (zh) | 存储模拟装置及其存取方法 | |
US7831741B2 (en) | Indexing device and method for data storage system | |
US9128873B2 (en) | Memory bus attached input/output (‘I/O’) subsystem management in a computing system | |
CN106227653B (zh) | 一种Linux内核调试系统及方法 | |
CN114301927B (zh) | 一种分布式系统中主节点选取方法、装置及介质 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US20240168877A1 (en) | Solving submission queue entry overflow with an additional out-of-order submission queue entry | |
US10768846B2 (en) | Information processing apparatus and control method of information processing apparatus | |
CN115756311A (zh) | 固态驱动器、设备和固态驱动器的操作方法 | |
TWI427624B (zh) | Hard disk data protection devices, hard disk, computer and hard disk data protection methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160302 Address after: China Hongkong No. 979 King's road, Quarry Bay Taikoo Place Lincoln building 23 floor Patentee after: Lenovo International Ltd Address before: American New York Patentee before: International Business Machines Corp. |