虚拟磁带库知识入门
2009-04-04 16:59:36 来源:WEB开发网以仿真SCSI指令响应的方式来虚拟SCSI装置
SCSI装置与主机沟通的方式则是透过所谓的SCSI指令(SCSI Commands)来进行。如当某SCSI装置接上系统,并安装好驱动程序后,应用程序或操作系统就可透过ASPI驱动程序或功能相似的API送出「INQUIRY」指令,要求该SCSI装置传回本身的信息。透过SCSI装置响应讯息中装置型态码(Peripheral device type)字段的数值,系统即可得知该装置的类型。所以只要VTL软件能模仿实体磁带装置响应系统的SCSI指令格式,将磁带响应的装置型态码送回给系统(如在ASPI中磁带设备的装置型态16位代码是01h),就能使系统将VTL视为实体的磁带装置。
不过这只是单就系统辨识SCSI装置的部分,由于不同的SCSI装置间的SCSI指令有所差异,如磁带机有倒带(REWIND),光驱有拨放音乐(PLAY AUDIO)指令等,因此当以硬盘仿真这些装置时,光是骗过驱动接口是不够的,仿真程序本身也必须能够提供相应于被仿真装置的完整指令,才能确保虚拟出来的装置能够正常动作。
由于SCSI指令都是以指令描述块(CDB,Command descriptor block)的格式来表示,因此仿真软件的关键就在于收到主机送来的CDB后,是否能正确的提供与所欲仿真装置相同的CDB响应。
理论上只要VTL响应CDB的方式与真的磁带机一样,则在应用程序看来,VTL就等同于像是一台真的磁带机般在执行动作。
由于SCSI的使用环境限制大、扩充性也较小,因此实际上的VTL解决方案都是透过光纤信道(FC)或iSCSI来实现。我们以iSCSI架构的VTL为例来作一说明:
iSCSI是将SCSI指令封装在TCP/IP的封包中,可允许IP主机透过TCP来存取储存设备,在IP网络中实现SCSI指令的传输与操作,因而在iSCSI的指令封包(PDU)中也封装有SCSI的指令描述块CDB,因此基于iSCSI的VTL仿真程序也就可以依照前面所述的方式,仿真实体磁带装置响应CDB的方式,来使iSCSI主机判断VTL为依真正的磁带设备,VTL仿真程序会依照所仿真的磁带类型、规格,以映像(mapping)方式对应磁盘与磁带的存取区块(block),当iSCSI主机要求读取磁带上特定区块的数据时,VTL软件就能透过映像把磁盘上相应的区块取出,送回给主机。
更多精彩
赞助商链接