将一个硬盘虚拟成多个彼此隔离 独立子盘的装置和方法 本发明涉及计算机系统中的存储器管理技术,更具体地说,涉及一种将一个硬盘虚拟成多个彼此隔离独立子盘的装置和方法。
现有技术中,一个物理计算机硬盘,可以通过划区、建立逻辑设备来实现虚拟的多个逻辑设备,即一个物理硬盘可以影射成C、D、E三个或更多个存储设备,分配给不同的用户或作业使用,但任何一个时刻,这映射出的多个硬盘是同时存在或互相关联的,换言之,几个逻辑设备并非彼此隔离的。这就给安全性带来问题,特别是在网络环境下,外网与内网如果使用这样的硬盘,即使使用不同的但并不隔离的逻辑存储设备(如内网使用驱动器C,外网使用驱动器D),也存在极大的安全性隐患,为此,有专利提出通过内外网使用两个分立的彼此隔离的硬盘来防范数据受到破坏,具体是在开机通电时确定只对其中一个硬盘驱动器通电,以保证任何一种应用环境下,不会影响另一环境所使用的另一个硬盘,显然,其前提是使用两个(或多个)可以分别独立控制其通电(或工作)的硬盘。
本发明的目的在于提供一种将一个硬盘虚拟成多个彼此隔离独立子盘的方法和装置,利用这种方法和装置,可以有效实现一个硬盘不同存储区域的隔离,即经过这种虚拟装置,一个硬盘上的不同部分可以彼此完全隔离地存在,换言之,对其中一个存取时,另一个是绝对不工作的,反之也然。利用本发明的这种装置和方法,可以和传统硬盘设备一起,实现将一个物理硬盘分隔成两个或多个彼此隔离的物理硬盘,从而保证数据安全以及硬盘存储容量地充分利用。
按照本发明提供的将一个硬盘虚拟成多个彼此隔离的独立子盘的装置,连接在原硬盘与主机硬盘接口之间,使得所述多个独立虚拟子盘的存储空间分别占据所述硬盘彼此不相交的连续的存储空间但在任何时刻所述多个独立虚拟子盘中只有一个可存取,所述装置包括控制单元和一个参数存储单元用于存储原硬盘的参数以及每一个所述独立虚拟子盘的可存取存储空间的起始磁道和结束磁道,各独立虚拟子盘的结束磁道与起始磁道之差的总磁道数之和小于或等于所述原硬盘的总磁道数。
按照本发明提供的装置,其特征在于,所述装置在安装配置时,从所述原硬盘读取硬盘参数,并根据用户设置需虚拟子盘个数和每个子硬盘空间要求,确定每一个虚拟子盘的磁盘参数,各个虚拟子盘彼此的区别在于起始磁道和结束磁道。
按照本发明提供的装置,其特征在于,所述装置在主机加电初始化时,所述控制单元根据外部选择信号和参数存储单元确定当前子硬盘起始磁道、结束磁道,并将其通过硬盘接口传给所述主机作为当前物理硬盘参数。
按照本发明提供的装置,其特征在于,所述控制单元在收到主机硬盘接口的读写信号时,将加电初始化确定的当前子磁盘起始磁道与来自硬盘接口的磁道号相加,如果相加结果小于当前子磁道结束,则将该相加的结果作为存取原磁盘的起始磁道,与其他数据一起传送到原硬盘,如果相加结果大于当前子磁盘结束磁道,则返回读写错误。
按照本发明提供的装置,其特征在于,所述外部选择信号可以是网络选择信号或用户标识信号。
按照本发明提供的装置,其特征在于,将C个磁道(0,1,。。。C-1)的原硬盘划分为彼此邻接的n(n≥2)个虚拟子盘,所述控制单元在安装配置时这样确定当前小磁盘起始磁道、结束磁道的,第j个子硬盘的磁道数由结束磁道数Lj与起始磁道Sj之差确定为Cj=(Lj-Sj),该磁道数由用户输入确定,其中,S1=0,L1=C1-1,S2=C1,L2=C2-1,S3=C2,。。。,即Si=Ci-1,Li=C1,而在如果外部选择信号选择第i(1≤i≤n)个虚拟子盘,则设置当前起始磁道为∑ Cj(j=1,i-1),设置当前结束磁道∑Cj(j=1,i-1)+Ci。
按照本发明提供的装置,其特征在于,所述控制单元可以是一个微处理器或一个逻辑电路。
本发明另一目的这样实现,一种将一个硬盘虚拟成多个彼此隔离的独立子硬盘的方法,可以通过改造机器启动时运行的基本输入/出模块(BIOS)模块来实现,具体包括以下步骤:将硬盘存储容量空间划分为多个彼此隔离的n个部分(n>1),其中第i个部分的起始磁道为Si而结束磁道Li,在开机启动BIOS时根据表示使用哪一部分的外部选择命令设置当前起始磁道数和最大磁道数,并将之改写到BIOS中硬盘寻址最大寻址磁道和改变BIOS中硬盘读写函数使每次读写在原磁道基础上加上一定偏移。
实施本发明提供的将一个硬盘虚拟成多个彼此隔离独立子盘的装置和方法,可以将该装置连接在硬盘与主机接口之间或改造机器启动时运行的输入/出模块(BIOS),实现在开机后,根据预先设定的要求,自动选择属于同一物理硬盘但彼此隔离的多个部分中的一个进行存取(另部分则完全不动作)从而实现在一个硬盘环境下数据的绝对安全。在这种硬盘隔离的基础上,还可象传统硬盘一样,对虚拟子盘进行格式化和逻辑分区,除了可以解决网络数据安全问题,更可解决多用户环境下数据保密问题。
下面,结合附图和实施例,进一步说明本发明的特点,附图中:
图1是本发明的装置的原理框图。
图2是本发明的装置的参数配置的流程示意图。
图3是每次上电和磁盘数据读写的流程图。
图4是基于软件的通过改写BIOS参数和增加扩展BIOS模块实现本发明方法的参数配置过程流程示意图;
图5是基于软件的初始化及硬盘数据读写过程示意图。
图1示出本发明的装置的一个实施例的结构情况,该装置可以连接在主机1的IDE总线或其它总线接口与被虚拟物理硬盘10之间,该装置的一方面连接主板IDE接口1,另一方面连接硬盘10,另有一个配置接口5和一个选择信号接口9,前者用于将该接口与PC机连接而通过该PC机上的操作完成对虚拟硬盘的设置,后者用于在每次开机时将用户选择使用哪一个虚拟硬盘的信号传给该装置,该装置除了这四个端口外还有与总线连接的控制单元7和命令寄存器6,与控制单元7连接有参数寄存器3,所述参数寄存器3通过接口处理单元4与配置设置接口5连接,所述用户选择状态接口单元9与所述控制单元7连接,所述命令寄存器6也与控制单元7连接可被该控制单元7直接存取,所述控制单元7通过IDE仿真接口8连接到被虚拟硬盘,所述总线通过硬盘仿真接口连接到主板1,该控制单元7可以由一个微处理器实现,也可以由一个逻辑电路实现。配置接口5用于与PC机通讯并互传数据,实现虚拟子盘参数设置,该接口可以是RS-232接口或其他接口;用户状态选择状态接口9,可以是接收状态信号、开关或其他电路传来的电平信号。
接口处理单元4用于处理配置接口5上的通讯信号,并将配置好的参数存放于参数寄存器3。
参数寄存器3,用于存放硬盘参数、虚拟子磁盘参数。
命令寄存器6,用于接收主板上IDE接口发来的控制命令。
控制单元7,用于处理命令寄存器6中的参数,根据用户选择状态接口9和参数寄存器3中的数据变换为命令寄存器6中的数据并传给硬盘,将接收到的硬盘传来的各种数据传送给主板。
所述控制单元7的功能主要体现在三个环节:1)安装配置;2)上电初始化;3)读写硬盘数据。分述如下:
1)安装配置;即通过配置接口5连接一台PC机的通讯端口,该PC机可以是安装本发明装置的PC机,也可以是其它PC机,只要PC与可通过配置接口进行通信即可,通过在该PC机上运行安装软件对本发明装置中虚拟子盘等参数进行配置,其过程是这样:PC机运行参数配置软件,从原硬盘读取硬盘参数,由用户输入虚拟子盘个数及大小,以及每个虚拟子盘的使用权限(条件),控制单元根据用户设置需虚拟子盘个数和每个子硬盘空间要求,确定每一个虚拟子盘的磁盘参数,各个虚拟子盘彼此的区别在于起始磁道和结束磁道,并将以下数据存储在本装置的存储单元中:
①原硬盘的所有参数,包括总磁道数、起始磁道和结束磁道等;
②虚拟子盘个数n;
③N个虚拟子盘在原硬盘的起始磁道、结束磁道等磁盘参数;
④每个虚拟子盘的使用权限。
图2示出了一个简化的配置过程。
2)上电初始化,即在完成配置后,每次计算机加电启动时根据使用状态确定当前子盘,并将当前子盘数据传给计算机硬盘接口的过程。具体有下面几个环节:
①读取原硬盘参数;
②将读取的参数与存储单元内存储的原硬盘参数进行比较,如果相同进行以下步骤,如果不相同,则返回“硬盘错”信息给主机硬盘接口;
③检查当前状态,(网络使用情况或用户情况)根据该状态和存储单元中的虚拟子盘的使用权限,确定当前虚拟子盘,
④根据当前子盘对应存储单元中的预存内容,确定当前子盘的起始磁道、结束磁道和其它磁盘数据,将这些当前子盘数据传给计算机硬盘接口。
3)读写硬盘数据。
接收到来自主机的硬盘读写数据时,将加电初始化确定的当前子磁盘起始磁道与来自硬盘接口的磁道号相加,如果相加结果小于当前子盘结束磁道,则将该相加的结果作为存取原磁盘的起始磁道,与其他数据一起传送到原硬盘进行磁盘数据读写,如果相加结果大于当前子磁盘结束磁道,则返回读写错误。
上电初始化和硬盘数据读写的一个示例流程框图如3所示。PC初始化是这样进行的,上电后,读硬盘参数,将之与参数寄存器中的参数进行比较,如不一致,认为是磁盘错;如比较结果两者一致,则根据读出的当前选择状态参数读对应硬盘参数传给PC机,供显示和存储;在进行硬盘数据读写时,根据PC机的磁盘读写命令进行参数修改,主要是磁道加一个偏移量,最后进行常规的磁盘数据读写。
如图4和图5所示,本发明方法可以通过改写BIOS程序来实现,具体就是在执行完已有BIOS程序后,通过一个新的模块进行硬盘驱动程序改写,改写的内容就是寻址的起始磁道,该起始磁道数据由开机时用户选择哪一个网络或有哪一个用户来确定,例如可将总共900个磁道分成2个部分,0-599磁道分配给内网(或用户A),600-899磁道分配给外网使用(或用户B),这样,当开机时选择进入外网(可以通过开关实现)时,经改写的硬盘管理程序将600-899磁道的存储空间视为一个物理硬盘(例如C:),应用程序中磁道0的实际访问的是磁道600,由于是在底层修改,因此可以在此基础上再通过磁盘应用程序进行划区,分成若干个逻辑磁盘(例如C:、D:E:),此时,相当于属于内网用户的部分(磁道0-599)与正在工作的部分完全无关,不能对其进行任何操作。同样,如果开机时选择进入内网,应用程序中磁道0的实际访问的是磁道也是磁道0,同时,磁道的最大寻址范围是0-599,同样,可在此基础上划区成若干个逻辑磁盘(例如C:、D:),此时,外网部分(磁道600-899)与正在工作的部分完全无关,不能对其进行任何操作。另外,还包括根据网络选择信号或其它开关信号设置标志位的步骤。
图4示出参数配置过程,其结果是将用户确定的虚拟子盘划参数存放到扩展BIOS参数区;图5示出每次加电运行及硬盘数据读写过程,其过程主要是计算读写磁盘磁道偏移量。