计算机系统和计算机的制作方法

文档序号:14958955发布日期:2018-07-18 00:08阅读:240来源:国知局

本发明涉及计算机系统和计算机。



背景技术:

作为公开本技术领域的背景技术的文献,有日本专利第4480479号公报(专利文献1)。该公报中,记载了使存储系统(文件系统)作为操作系统(operatingsystem:os)的一部分工作的技术。

现有技术文献

专利文献

专利文献1:日本专利第4480479号公报



技术实现要素:

发明要解决的课题

为了提高存储程序的可移植性而提高开发效率,存在存储程序不是为os内部的程序、而是安装为在os上运行的程序的新要求。该情况下,也要求高速且高可靠地执行大量且多样的存储处理。

但是,使存储程序在os上运行的情况下,例如os与存储程序之间的通信量增大,i/o带宽不足时,存在i/o性能降低的可能性。关于这一点,专利文献1没有设想使存储程序在os上运行,没有提及抑制i/o性能降低的技术。

于是,需要提供一种使存储程序在os上运行同时维持i/o性能的技术。

用于解决课题的技术方案

为了解决上述课题,本发明的一个方式的计算机系统具有处理器,其运行操作系统和在操作系统上运行的对主机提供逻辑卷的存储程序。另外,计算机系统还具有存储器,其具有保持操作系统与存储程序的通信数据的队列、和包含应用于对存储程序提供的逻辑卷的存储功能的信息的卷管理信息。操作系统在从主机接收到了对逻辑卷的i/o请求的情况下,参考卷管理信息,基于应用于作为i/o请求的对象的逻辑卷的存储功能的信息,判断是否需要由存储程序进行的i/o请求的处理,判断为需要的情况下,经由队列与存储程序通信。然后存储程序执行基于i/o请求的处理。另外,操作系统在判断为不需要由存储程序进行的i/o请求的处理的情况下,执行对主机的针对i/o请求的响应。

发明效果

根据本发明,能够提供一种能够使存储程序在os上运行、同时维持i/o性能的技术。上述以外的课题、结构和效果,通过以下实施方式的说明而说明。

附图说明

图1是表示i/o处理的概要的示意图。

图2是表示i/o处理的概要的流程图。

图3是表示计算机系统10的结构例的图。

图4是表示服务器200的存储器320的结构例的图。

图5是表示计算机系统10的其他结构例的图。

图6是表示initiator-target队列410的结构例的图。

图7是表示target-initiator队列420的结构例的图。

图8是表示卷管理表1000的结构例的图。

图9是表示缓存管理表900的结构例的图。

图10是表示进程管理表1300的结构例的图。

图11是表示资源管理表1400的结构例的图。

图12是表示队列对管理表1500的结构例的图。

图13是表示策略管理表1600的结构例的图。

图14是通信驱动程序500的流程图。

图15是存储程序700的流程图。

图16是缓存操作处理的流程图。

图17是表示存在多个队列对的服务器200的结构例的图。

图18是队列对监视程序1700的流程图。

图19是队列对增加处理的流程图。

图20是队列对减少处理的流程图。

图21是管理系统设定的gui的一例的图。

具体实施方式

以下,参考附图说明本发明的实施方式。为了说明的明确化,对于以下记载和附图,适当进行省略和简化。本发明不限于本实施方式,符合本发明的思想的所有应用例都包括在本发明的技术范围内。只要没有特别限定,各构成要素就可以是多个或单个。

以下说明中,例如有时用“×××表”的表达说明各种信息,但各种信息可以用表以外的数据结构表达。为了表示各种信息不依赖于数据结构,有时将“×××表”称为“×××信息”。

管理系统能够由一台或多台计算机构成。例如,管理计算机处理和显示信息的情况下,管理计算机是管理系统。例如,用多台计算机实现与管理计算机同等的功能的情况下,该多台计算机(由显示用计算机进行显示的情况下可以包括显示用计算机)是管理系统。本实施方式中,管理终端240是管理系统。

以下说明中,存在以“程序”或其进程作为主语说明处理的情况,但程序通过由处理器(例如cpu(centralprocessingunit:中央处理器))执行,而适当使用存储资源(例如存储器)和/或通信接口装置(例如通信端口)进行规定的处理,所以处理的主语也可以是处理器。处理器通过按程序工作,而作为实现规定的功能的功能部工作。包括处理器的装置和系统,是包括这些功能部的装置和系统。

以程序、进程、或处理器为主语说明的处理,也能够以计算机(例如服务器、存储系统、管理计算机、客户端或主机)为主语进行说明。处理器可以包括进行由处理器进行的处理的一部分或全部的硬件电路。计算机程序可以从程序源安装至各计算机。程序源例如可以是程序发布服务器(例如管理计算机)或存储介质。

图1是表示i/o处理的概要的示意图。计算机系统10具有服务器200和主机210。服务器200具有共享存储器400和盘装置360。服务器200中,os600运行,另外,存储程序700在os600上运行。os600具有i/o请求接收程序620、i/o响应发送程序640和通信驱动程序500。

存储程序700用多个盘装置360的物理存储区域构成1个或2个以上虚拟的盘装置,对主机210提供。此后的说明中,将该虚拟的盘装置称为逻辑卷340。逻辑卷340的构成方法中,例如有raid(redundantarraysofinexpensivedisks:磁盘冗余阵列),通过使用多个盘装置360,能够期待通过数据冗余化提高可靠性并通过盘装置360的并行工作提高性能。

共享存储器400具有initiator-target(发起端-目标端)队列(itq)410与target-initiator(目标端-发起端)队列(tiq)420的对(以下也称为“队列对”)以及缓存800。

itq410保持从i/o请求接收程序620对存储程序700发送的通信数据。tiq420保持从存储程序700对i/o响应发送程序640发送的通信数据。同一队列对的itq410和tiq420在实际的处理中成对使用。存在多个队列对的情况下,通信时,存储程序700需要在一系列通信中使用成对的tiq420与itq410。另外,可以由1个存储程序700独占1个队列对进行处理,也可以由多个存储程序700共享1个队列对进行处理。

图1的虚线示出了控制信息的流。以下说明中,控制信息是i/o请求或i/o响应。另外,图2是表示i/o处理的概要的流程图。用图1和图2在以下说明服务器200从主机210接收了对逻辑卷340的i/o请求的情况下的i/o处理的概要。

主机210对服务器200发送对逻辑卷340的i/o请求。服务器200从主机210接收i/o请求时,服务器200所具有的hba331或nic332发出i/o中断请求。cpu核心311接受i/o中断请求,开始图2所示的i/o处理(s3000)。

接受了i/o中断请求的cpu核心311调用i/o请求接收程序620(s3010)。cpu核心311执行i/o请求接收程序620,接收i/o请求。cpu核心311将接收到的i/o请求记录在存储器320中,对通信驱动程序500发出i/o请求到达的通知。之后,cpu核心311结束i/o请求接收程序620的处理。图1的虚线c1示出了执行该s3010和s3020时的控制信息(此处为i/o请求)的流。

接着,cpu核心311调用通信驱动程序500(s3020),执行通信驱动程序500,决定是否需要由存储程序700进行的处理(s3030)。

此处,cpu核心311在s3030中“是”的情况、即判断为需要存储程序700的处理的情况下,将i/o请求入队至itq410。图1的虚线c2示出了s3030为“是”的情况下的控制信息(此处为i/o请求)的流。

入队至itq410的i/o请求,被在os600上运行的存储程序700处理(s3040)。存储程序700将i/o响应入队至tiq420,对通信驱动程序500进行系统调用。图1的虚线c3示出了执行s3040时的控制信息(此处为i/o请求或i/o响应)的流。

cpu核心311执行通过系统调用而调用的通信驱动程序500,使存储程序700生成的i/o响应从tiq420出队,对i/o响应发送程序640通知(s3050)。图1的虚线c4示出了执行s3050时的控制信息(此处为i/o响应)的流。

另一方面,cpu核心311在s3030中“否”的情况、即判断为不需要存储程序700的处理的情况下,通过不将i/o请求入队至itq410,而不对存储程序700通知i/o请求。该情况下,cpu核心311执行通信驱动程序500,进行i/o响应。例如,如果i/o请求是读请求,则调用i/o响应发送程序640,通知存在读对象的数据的缓存800的地址和长度(s3050)。图1的虚线c6示出了该s3030为“否”的情况下的控制信息(此处为i/o请求或i/o响应)的流。

接着,cpu核心311执行i/o响应发送程序640,对主机210进行i/o响应(s3060)。被调用的i/o响应发送程序640,作为对i/o请求的响应,对主机210发送i/o完成通知。

例如,如果i/o请求是读请求,则cpu核心311对hba331或nic332,指示对主机210传输读数据。该指示中包括用s3050的i/o响应通知的存在读对象的数据的缓存800的地址和长度。hba331或nic332参考该缓存800的地址和长度,从缓存800的对应区域读取读数据,对主机210传输读数据。然后,cpu核心311对hba331或nic332指示对主机210发送i/o处理(读处理)的完成通知(s3170)。

另外,例如,如果i/o请求是写请求,则cpu核心311对hba331或nic332指示对主机210发送i/o处理(写处理)的完成通知。

对主机210发送i/o处理的完成通知,图2所示的i/o处理完成(s3070)。图1的虚线c5示出了执行s3060时的控制信息(此处为i/o响应)的流。

从而,图2的i/o处理的流程图中,s3030为“是”的情况、即判断为需要存储程序700的处理的情况下,控制信息的流如图1的虚线c1、c2、c3、c4、c5所示。另一方面,s3030中“否”的情况、即判断为不需要存储程序700的处理的情况下,控制信息的流如图1的虚线c1、c6、c5所示。

此处,存储程序700不是os600内部的程序,而是在os600上运行。因此,例如用存储程序700处理对存储程序700提供给主机210的逻辑卷340的所述i/o请求时,os600与存储程序700之间的通信量增大。由此,因i/o带宽不足和用cpu核心311执行的处理的增加,而存在i/o性能降低的可能性。

于是,本实施方式中,通信驱动程序500决定是否需要由存储程序700进行的处理(s3030),不需要用存储程序700进行的处理的情况下,虽然存储程序700提供作为i/o请求的对象的逻辑卷340,但是不用存储程序700处理该i/o请求。这样,即使不使用由存储程序700实现的存储功能也能够进行i/o响应的情况下,通过用通信驱动程序500进行i/o响应,能够使存储程序700在os600上运行,同时抑制i/o性能的降低、维持或提高i/o性能。例如,os600从主机210接收了对逻辑卷340的写请求的情况下,经由队列对与存储程序700通信。然后,存储程序700中,执行基于写请求的处理。另一方面,os600从主机210接收了对逻辑卷340的读请求的情况下,参考缓存管理表900,在判断为缓存800中存在与读请求对应的数据时,基于缓存800中存在的数据,对主机210执行对读请求的响应。

另外,图1中,示出了在1个os600(os内核610)中配置了i/o请求接收程序620的进程和i/o响应发送程序640的进程各1个的例子,但不限定于该结构,也能够在1个os600(os内核610)内配置多个i/o请求接收程序620的进程和i/o响应发送程序640的进程。

图3是表示计算机系统10的结构例的图。计算机系统10具有服务器200、主机210和管理终端240。服务器200与主机210与管理终端240用网络220彼此连接。

服务器200是能够处理多种数据通信协议的计算机。例如,服务器200使用fcp(fibrechannelprotocol:光纤信道协议)、iscsi(internetsmallcomputersysteminterface:网络小型电脑系统界面)、nfs(networkfilesystem:网络文件系统)、cifs(commoninternetfilesystem:通用互联网文件系统)、http(hypertexttransferprotocol:超文本传送协议)等数据通信协议,与主机210和管理终端240进行数据通信。

服务器200例如经由网络220接收来自主机210的i/o请求,执行其i/o处理后,对主机210返回处理结果(i/o响应)。服务器200可以是在数据中心等设施中固定设置的方式,也可以是集装箱型等可移动的,根据需要变更地理位置。另外,服务器200也可以不是1台计算机,而是由多台计算机构成。

管理终端240是管理服务器200的软件和各种设定等的管理计算机。管理终端240保存管理程序,通过执行管理程序而进行关于服务器200的管理的各种处理。

网络220只要是通信网络,就可以是任意的方式。网络220例如是互联网、lan(localareanetwork:局域网)、wan(wideareanetwork:广域网)、san(storageareanetwork:存储域网)、无线lan、移动电话通信网等。另外,网络220也可以不是由单一的通信网络,而是由多种通信网络构成。

主机210可以在数据中心等设施中固定设置,也可以是集装箱型等可移动的而改变地理位置。作为主机210,例如设想为包括智能手机的移动电话和通用计算机等。另外,主机210也可以不是由单一的装置、而是由多台不同的计算机构成。

另外,本实施方式中,举例示出了服务器200作为计算机的一例,但本发明不限定于此。作为其他例子,也可以使用存储系统。本实施方式中,服务器200也可以是计算机、存储系统或存储装置。

服务器200具有存储器320、hba(hostbusadaptor:主机总线适配器)331、nic(networkinterfacecard:网络接口卡)332、盘装置360和与它们连接的作为控制运算单元的cpu310。

也可以代替存储器320或者另外再采用其他种类的存储资源。也可以代替hba331和nic332地采用其他种类的通信接口设备。

cpu310执行存储器320中保存的计算机程序。cpu310具有多个作为运算单元的cpu核心311,各核心能够独立地工作,并行地执行计算机程序。

cpu核心311是从存储器320中读取并执行包括存储程序700、os600、i/o请求接收程序620和i/o响应发送程序640的各种程序的处理器核心。cpu核心311也可以称为处理器。

存储器320存储计算机程序和其他数据。存储器320可以包括暂时存储从主机210接收到的数据和要对主机210发送的数据的缓存800。

hba331与网络220连接,nic332与lan或wan、互联网等网络220连接,用于与管理终端240和主机210的数据通信。

作为盘装置360,具有作为服务器200的二级存储装置的ssd(solidstatedrive:固态硬盘)351、hdd(harddiskdrive:硬盘驱动器)352。二级存储装置作为存储,保存i/o处理的数据。ssd351、hdd352的个数并不特别限定,分别不限定于图3所示的数量。另外,盘装置360典型上是ssd351、hdd352,但只要能够保存块形式的数据就可以是任意的。本实施方式中,举例示出了盘装置360作为存储设备的一例,但本发明不限定于此。作为其他例子,盘装置360可以是具备磁带存档、或者dvd、cd等的光盘库的装置。以下,将ssd351、hdd352总称为盘装置360。本实施方式中,盘装置360可以是存储设备。

图4是表示服务器200的存储器320的结构例的图。在存储器320中保存有存储程序700、队列对监视程序1700、进程管理表1300、资源管理表1400、策略管理表1600、os600。os600具有os内核610。os内核610具有通信驱动程序500、i/o请求接收程序620、i/o响应发送程序640。

另外,在存储器320中,具有作为能够从存储程序700、队列对监视程序1700、os600访问的区域的共享存储器400。共享存储器400具有缓存800、缓存管理表900、initiator-target队列(itq)410、target-initiator队列(tiq)420、队列对管理表1500和卷管理表1000。图4所示的程序或管理信息,从盘装置360载入,保存至存储器320。

通信驱动程序500实现i/o请求接收程序620和i/o响应发送程序640与存储程序700之间的通信。通信驱动程序500经由tiq420传达从os内核610到存储程序700的通信。通信驱动程序500经由itq410传达从存储程序700到os内核610的通信。

i/o请求接收程序620使用fcp/iscsi等通信协议,从主机210接收i/o请求,将接收到的i/o请求(输入输出请求)经由通信驱动程序500对存储程序700发送。

i/o响应发送程序640经由通信驱动程序500从存储程序700接收i/o响应,对主机210发送i/o响应。

存储程序700经由fcp/iscsi等通信协议,按照来自主机210的i/o请求,使用缓存800对盘装置360写入数据,或者使用缓存800从盘装置360读取数据。存储程序700是在os内核610上运行的程序,是执行对存储(盘装置360)写入数据的处理、或者从存储(盘装置360)读取数据的处理的程序。存储程序700是执行快照和raid等存储功能的程序。存储程序700也可以称为存储处理程序、存储进程、存储功能。

存储缓存(缓存)800暂时保存要对盘装置360写入的数据或者从盘装置360读取的块数据(数据)。“主机210对逻辑卷340写入块数据”这样的说明,实际上指的是存储程序700对缓存800或盘装置360写入块数据。同样地,“主机210从逻辑卷340读取块数据”这样的说明,实际上指的是存储程序700从缓存800或盘装置360读取块数据。

逻辑卷340被卷管理表1000管理。

一般而言,存储程序700从主机210接收了对逻辑卷340写入数据的请求(写请求)的情况下,对访问速度快的缓存800暂时写入数据后,对主机210通知写入完成作为i/o响应。然后,与来自主机210的写入请求非同步地对盘装置360写入缓存800中保存的数据。由此,即使在盘装置360的性能低的情况下,也能够用缓存800的性能提高系统的i/o性能。

本实施例中,存储程序700为了实现高响应性能和高吞吐率性能,而轮询地进行i/o处理。

缓存800用于暂时保存要对盘装置360写入的数据或者从盘装置360读取的块数据。另外,图4的例子中,缓存800位于存储器320的内部,但实施方式并不限定于此。出于容错性的观点,也可以与存储程序700分别地保存在非易失性的半导体存储器中,也可以使用比半导体存储器更低速的存储装置作为缓存800的一部分。

缓存管理表900是管理缓存800中保存的块数据的状态的表。例如,保存有缓存800中保存的块数据的、缓存800中的地址、保存目标卷地址和数据长度。缓存管理表900也可以称为缓存管理信息。

卷管理表1000是保存逻辑卷340的信息的表。例如,保存有关于各逻辑卷340的卷编号、卷属性和卷状态。卷管理表1000也可以称为卷管理信息。

tiq420是存储程序700经由通信驱动程序500对i/o响应发送程序640发送数据时、用于记录该数据的区域。tiq420具有fifo(firstinfirstout:先进先出)型的数据结构。

itq410是i/o请求接收程序620经由通信驱动程序500对存储程序700发送数据时、用于记录该数据的区域。itq410具有fifo型的数据结构。

进程管理表1300是管理在服务器200内运行的存储程序700的信息的表。在进程管理表1300中,保存已起动的存储程序700的进程id和该存储程序700所监视的队列对的id。

资源管理表1400是用于管理服务器200所具有的资源的表。在资源管理表1400中保存服务器200内连接的hba331的端口数、nic332的端口数、存储器320内用作共享存储器400的存储量、用作共享存储器400的存储量中用作缓存800的存储量。

队列对管理表1500是管理共享存储器400中保存的tiq420与itq410的对(此后简称为队列对)的表。在队列对管理表1500中,保存用于识别队列对中保存的信息的队列对id、tiq420的起始地址、itq410的起始地址和队列长度。

策略管理表1600是管理用于增减队列对的策略的表。在策略管理表1600中,保存决定在何种条件下增加队列对、在何种条件下减少队列对的策略。策略管理表1600也可以称为队列对增减策略管理信息。

队列对监视程序1700是定期地监视进程管理表1300、资源管理表1400、队列对管理表1500和策略管理表1600,根据状况增减队列对的数量的程序。队列对监视程序1700可以是存储程序700的一部分,也可以是不同于存储程序700的程序。

图5是表示计算机系统10的其他结构例的图。如图5所示,也可以是在服务器200中虚拟机管理器203工作,在虚拟机管理器203上,1台或多台虚拟计算机202运转。os600和存储程序700、队列对监视程序1700可以在虚拟计算机202上运行。即,图4所示的各程序可以在物理计算机的硬件上运行,也可以在虚拟计算机上运行。另外,主机210可以是在虚拟计算机上运行的主机程序,也可以是物理的主机计算机。运行os600和存储程序700、队列对监视程序1700的虚拟计算机、与运行主机程序的虚拟计算机可以在同一服务器200上,也可以在经由网络220连接的不同服务器200上。

图6是表示initiator-target队列(itq)410的结构例的图。图7是表示target-initiator队列(tiq)420的结构例的图。

图6所示的itq410具有先进先出式即fifo型的数据结构。对于itq410,顺次加入i/o请求接收程序620从主机210接收到的i/o请求。

图7所示的tiq420也具有fifo型的数据结构。对于tiq420,将存储程序700对于经由通信驱动程序500从i/o请求接收程序620接收到的i/o请求返回的i/o响应顺次入队。i/o响应也可以称为i/o处理完成通知。

图6的例子中,在itq410中保持有2个i/o请求。i/o请求中,可以包括表示作为i/o请求的对象的逻辑卷340的卷编号1110、i/o种类1120、卷地址1130、数据长度1140的信息。进而,在i/o种类1120是写的情况下,可以包括表示保存了写数据的存储器320的存储器地址1150的信息。例如,根据图6,先保存的i/o请求中,对象的卷编号1110是“1”,i/o种类1120是“读”,卷地址1130是“0x100”,数据长度1140是“0x100”。后保存的i/o请求中,对象的卷编号1110是“2”,i/o种类1120是“写”,卷地址1130是“0x3000”,数据长度1140是“0x400”,存储器地址1150是“0x58000”。可以将i/o种类1120是“写”的i/o请求称为写请求。可以将i/o种类1120是“读”的i/o请求称为读请求。

图7的例子中,在tiq420中,保存有2个i/o响应(i/o处理完成通知)。i/o响应可以包括表示作为i/o响应的对象的逻辑卷340的卷编号1210、i/o种类1215、卷地址1220、数据长度1225的信息。进而,i/o种类1120是读的情况下,可以包括表示保存了读数据的存储器320(缓存800)的存储器地址1230的信息。先保存的i/o响应中,卷编号1210是“1”,i/o种类1215是“读”,卷地址1220是“0x100”,数据长度1225是“0x100”,存储器地址1230是“0x58000”。后保存的i/o响应中,卷编号1210是“2”,i/o种类1215是“写”,卷地址1220是“0x300”,数据长度1225是“0x400”。

图8是表示卷管理表1000的结构例的图。在卷管理表1000中,记录存储程序700所管理的逻辑卷340的信息。例如,存储程序700生成逻辑卷340时,将逻辑卷340的信息记录在卷管理表1000中。图8的例子中,在卷管理表1000中,存在相当于存储程序700生成的逻辑卷340的数量的行。

卷管理表1000中,作为逻辑卷340的信息,包括卷编号1010、卷状态1020、卷长度1030、卷地址1035、盘装置编号1040、盘装置地址1050、存储功能1060。

在卷编号1010中,保存唯一识别逻辑卷340的卷id。在卷状态1020中,保存表示对逻辑卷340的i/o是允许还是禁止的信息。此处保存“允许i/o”或“禁止i/o”中的任一者。在卷长度1030中,保存逻辑卷340的容量。

在卷地址1035中,保存逻辑卷340中的逻辑地址。在盘装置编号1040中,保存构成逻辑卷340的盘装置360的识别符。盘装置地址1050保存与卷地址1035关联的物理存储区域的地址、即用盘装置编号1040识别的盘装置360中的地址。另外,图8的例子中,使从卷地址1035起规定长度(例如“0x100”)的逻辑卷340的逻辑存储区域、与从盘装置地址1050起规定长度的盘装置360的物理存储区域关联。该规定长度的大小不限定于图8的例子,也不一定按每个规定长度的固定长度管理。

卷管理表1000可以对于逻辑卷340的全部存储区域,与盘装置360的物理存储区域关联地进行管理。或者,也可以用卷管理表1000管理保存有逻辑卷340的数据的盘装置360的物理存储区域、与逻辑卷340的存储区域的对应关系。该情况下,存储程序700可以在对于剩余的逻辑卷340的存储区域发生了写请求时,分配盘装置360的物理存储区域,用卷管理表1000管理该逻辑卷340的存储区域与盘装置360的物理存储区域的对应关系。

在存储功能1060中,保存适用于逻辑卷340的存储功能。作为存储功能的例子,有快照和raid等。服务器200接收了i/o请求的情况下,对逻辑卷340应用了需要存储程序700中的处理的规定的存储功能的情况下,也可以在存储功能1060中保存表示该含义的信息(例如“是”)。

根据图8的例子,示出了卷编号1010是“1”的逻辑卷340中,卷状态1020是“允许i/o”,卷长度1030是“1tb”,作为存储功能1060应用了raid和快照。

图9是表示缓存管理表900的结构例的图。在缓存管理表900的各行中,保存关于存储程序700在缓存800中保存的数据的信息。保存的信息中,包括卷编号910、卷地址920、数据长度930、存储器地址940、数据状况950。

缓存管理表900中,存在相当于缓存800中保存的数据的数量的行。缓存管理表900中,最多存在能够管理相当于缓存800的容量的数据的容量。

在卷编号910中,对于缓存800中保存的数据,保存数据所属的逻辑卷340的、由卷管理表1000管理的卷id。

在卷地址920中,对于缓存800中保存的数据,保存逻辑卷340中的地址。数据长度930表示缓存800中保存的数据的长度。存储器地址940对于该数据,表示缓存800中的地址。

在数据状况950中,对于缓存800中的数据,保存表示已对盘装置360写入的“干净”、表示对盘装置360写入未完成的“脏”、表示存储程序的处理状况的“正在读”或“正在写”。

图9中,举例示出了在缓存800内保存有5个数据的情况下的缓存管理表900。例如,在某一行中示出了卷编号910是“1”、卷地址920是“0x100”、数据长度930是“0x400”、存储器地址940是“0x0000”、数据状况950是“干净”的数据。

图10是表示进程管理表1300的结构例的图。在进程管理表1300的各行中,保存已起动(正在执行)的存储程序700的信息。保存的信息中包括进程id1310和队列对id1320。在进程管理表1300中,存在相当于存储程序700的已起动(正在执行)的进程数的行。

在进程id1310中,保存已起动(正在执行)的存储程序700的进程的识别符即进程id。在队列对id1320中,保存关于已起动的存储程序700所使用的队列对的、用队列对管理表1500管理的队列对id。

在图10中,举例示出了已起动的存储程序700为2个的情况下的进程管理表1300。例如,在行1330中,示出了进程id1310是“2000”、队列对id1320是“1,2”的已起动的存储程序700。

图11是表示资源管理表1400的结构例的图。资源管理表1400的各行中示出了关于与服务器200连接的资源的信息。资源中包括存储器320、hba331和nic332。关于资源的信息中,包括各资源的资源种类1410和资源量1420。

在资源管理表1400中,存在相当于hba331的端口种类数、nic332的端口种类数、共享存储器、缓存的数量的合计数量的行。

在资源种类1410中,保存与服务器200连接的hba331的端口种类、nic332的端口种类、共享存储器、缓存中的任一者。

在资源量1420中,保存与服务器200连接的hba331或nic332的端口数、或共享存储器或缓存800的容量。

在图11中,举例示出了表示了端口种类为fc端口的hba331、端口种类为ethernet(以太网)端口(ethernet是注册商标)的nic332、和缓存800的资源管理表1400。例如,在行1430中,保存了资源种类1410是“fc端口”、资源量1420是“8”的资源的信息。

图12是表示队列对管理表1500的结构例的图。在队列对管理表1500的各行中,记录关于tiq420和itq410的队列对的信息。记录的信息中,包括队列对id1510、tiq保存起始地址1520、itq保存起始地址1530、队列长度1540和是否允许操作1545。

队列对管理表1500中,存在相当于tiq420和itq410的队列对的数量的行。

在队列对id1510中,保存对各队列对分配的id。

在tiq保存起始地址1520中,保存有tiq420的存储器320中的起始地址被保存。

在itq保存起始地址1530中,保存有itq410的存储器320的起始地址被保存。

在队列长度1540中,保存tiq420和itq410的长度。在是否允许操作1545中,保存表示对队列对的操作是允许还是禁止的信息。此处保存“允许”和“禁止”中的任一者。

在图12中,举例示出了队列对有4个的情况下的队列对管理表1500。例如,在行1550中,保存了队列对id1510是“1”、tiq保存起始地址是“0x800000”、itq保存起始地址是“0x880000”、队列长度是“0x80000”、是否允许操作为“禁止”的数据。

图13是表示策略管理表1600的结构例的图。在策略管理表1600的各行中,保存在决定增减队列对的判断中使用的策略的信息。策略的信息中,包括策略项目1610、上限1620和下限1630。

本实施方式中,策略项目1610中,存在“存储程序负责处理的队列对数”、“fc端口数”、“以太网(ethernet)端口数”、“队列对使用存储量”。对于“存储程序负责处理的队列对数”能够设定上限和下限,对于“fc端口数”、“以太网(ethernet)端口数”和“队列对使用存储量”能够设定上限。

例如,在行1640中,设定了策略项目1610是“存储程序处理的队列对数”、上限1620是“8”、下限1630是“1”的策略。

是否需要执行队列对增减,通过对存储程序700的已起动的进程数和各种资源的使用量、与各自的上限和下限进行比较而决定。存储程序700的已起动的进程数,能够根据进程管理表1300计算得出。

作为各种资源,有fc端口数和以太网(ethernet)端口数、共享存储量与缓存量、和队列对使用的存储量。fc端口数和以太网(ethernet)端口数被记载在资源管理表1400中。共享存储量和缓存量也被记载在资源管理表1400中。队列对使用的存储量根据队列对管理表1500计算得出。

各资源的上限和下限根据策略管理表1600的各策略项目1610的上限或下限得到。

图14是通信驱动程序500的流程图。cpu核心311在从i/o请求接收程序620接收i/o请求到达的通知时,开始通信驱动程序500的处理。或者,cpu核心311在存储程序700发出系统调用时,开始通信驱动程序500的处理(s3300)。

接着,cpu核心311进行通信驱动程序500是否已接收i/o请求到达的通知的判断处理(s3310)。

在步骤s3310的判断中,已接收i/o请求到达的通知的情况下(s3310:是),cpu核心311参考卷管理表1000,判断作为i/o请求的对象的逻辑卷340是否使用了规定的存储功能1060(s3315)。此处,规定的存储功能指的是服务器200接收了i/o请求的情况下、需要存储程序700中的处理的存储功能。规定的存储功能可以事先设定。存储程序700具备的多种存储功能中的一部分,可以是规定的存储功能。

在步骤s3315的判断中,逻辑卷340未使用规定的存储功能1060的情况下(s3315:否),cpu核心311参考卷管理表1000,判断作为i/o请求的对象的逻辑卷340的卷状态1020是允许i/o还是禁止i/o(s3320)。

在步骤s3320的判断中,逻辑卷340的卷状态1020是允许i/o的情况下(s3320:是),cpu核心311判断i/o请求的i/o种类是否为读(s3330)。

步骤s3330的判断中,i/o请求的种类是读的情况下(s3330:是),cpu核心311对于作为i/o请求的对象的逻辑卷340的地址和数据长度,参考缓存管理表900判断缓存800中是否存在数据(s3340)。

在步骤s3340的判断中,对于i/o请求对象的逻辑卷340的地址范围,在缓存800中存在数据的情况下(s3340:是),cpu核心311判断itq410内,是否存在请求对i/o请求对象的逻辑卷340的地址范围写入数据的写请求(s3350)。

在步骤s3350的判断中,itq410内不存在对i/o请求对象的逻辑卷340的地址范围的写请求的情况下(s3350:是),cpu核心311发出i/o处理完成通知(i/o响应)(s3360)。这相当于图2的s3030中否的情况、即cpu核心311判断为不需要存储程序700的处理的情况,通过不将i/o请求入队至itq410,而不对存储程序700通知i/o请求。cpu核心311调用i/o响应发送程序640,通知存在读对象的数据的缓存800的地址和长度。cpu核心311在步骤s3360的处理完成后,结束通信驱动程序500的处理(s3400)。

步骤s3315的判断中,使用了规定的存储功能的情况下(s3315:是),因为作为i/o请求的对象的逻辑卷340使用了需要存储程序700中的处理的存储功能,所以cpu核心311将i/o请求入队至itq410(s3370)。

在步骤s3320的判断中,逻辑卷340的卷状态1020是禁止i/o的情况下(s3320:否),因为存在逻辑卷340处于故障状态的可能性和正在格式化的可能性,所以cpu核心311将i/o请求入队至itq410(s3370)。

在步骤s3330的判断中,i/o种类不是读的情况(s3330:否)、例如i/o种类是写的情况下,因为使用缓存操作处理和raid等存储功能(或者存在使用的可能性),所以cpu核心311将i/o请求入队至itq410(s3370)。

在步骤s3340的判断中,对于i/o请求对象的卷地址范围在缓存800中不存在数据的情况下(s3340:否),因为存在需要用存储程序700从盘装置360读取数据或写入数据的可能性,所以cpu核心311将i/o请求入队至itq410(s3370)。

在步骤s3350的判断中,itq410内存在对i/o请求对象的逻辑卷340的地址范围的写请求的情况下(s3350:否),因为需要在用存储程序700处理该在先的写请求后、处理本次的i/o请求(读请求),所以cpu核心311将i/o请求入队至itq410(s3370)。

i/o请求被入队至itq410时,成为需要存储程序700的处理的状态。cpu核心311在步骤s3370的处理完成后,结束通信驱动程序500(s3400)。

s3310的判断中,未接收i/o请求的情况(s3310:否)、即通信驱动程序500通过系统调用被调用的情况下,cpu核心311使i/o响应从tiq420出队(s3380)。

接着,cpu核心311对i/o响应发送程序640通知i/o响应(s3390)。cpu核心311在步骤s3390的处理完成后,结束通信驱动程序500(s3400)。

以上,通过步骤s3300至s3400处理完成。另外,对于图14所示的各判断步骤s3310、s3315、s3320、s3330、s3340、s3350,可以变更一部分步骤的顺序,也可以省略一部分步骤。

os600在s3315中从主机210接收了对逻辑卷340的i/o请求的情况下,参考卷管理表1000,基于适用于作为i/o请求的对象的逻辑卷340的存储功能1060的信息,判断是否需要用存储程序700进行的i/o请求的处理。判断为需要用存储程序700进行的i/o请求的处理的情况下,经由队列对与存储程序700通信。在存储程序700中,执行基于i/o请求的处理。另一方面,os600在判断为不需要用存储程序700进行的i/o请求的处理的情况下,对主机210执行对于i/o请求的响应。能够使存储程序700在os600上运行、同时抑制i/o性能的降低、维持或提高i/o性能。

存储程序700将数据写入至缓存800之后降级至存储设备(盘装置360)。i/o响应发送程序640接受数据输出的请求时,如果该请求的对象的数据存在于缓存800中则输出缓存800的数据。另一方面,如果该请求的对象的数据不存在于缓存800中,则i/o响应发送程序640经由itq410对存储程序700通知该请求。由此,在用缓存800使数据输出的处理高速化的结构中,数据存在于缓存800中时,通信驱动程序500能够不经过使用队列对的通信和存储程序700的处理地,迅速地完成数据输出的处理。

图15是存储程序700的流程图。cpu核心311在服务器200起动时,开始图15所示的处理(s3500)。cpu核心311首先参考进程管理表1300,从正在执行的存储程序700的进程负责的队列对中选择1个作为处理对象的队列对。队列对的选择方法并不限定,例如可以列举轮转地从多个队列对中顺次逐一选择的方法。

接着,cpu核心311参考队列对管理表1500,判断选择的处理对象的队列对是否处于可操作的状态(是否允许操作1545)(s3505)。处理对象的队列对是禁止操作的情况下(s3505:否),cpu核心311再次返回步骤3500重新进行处理。

处理对象的队列对是可操作的情况下(s3505:是),cpu核心311判断itq410中是否存在条目(s3510)。

s3510的判断中,itq410中不存在条目的情况下(s3510:否),cpu核心311返回步骤s3500。另一方面,s3510的判断中,itq410中存在条目的情况下(s3510:是),cpu核心311使i/o请求从itq410出队(s3520)。

接着,cpu核心311对于作为从itq410出队的i/o请求的对象的逻辑卷340,发出测试用命令,进行判断是否能够进行对逻辑卷340的i/o的处理(s3530)。s3530的判断中,不能进行对逻辑卷340的i/o的情况下(s3530:否),cpu核心311将错误响应作为i/o响应入队至tiq420(s3590)。

s3530的判断中,能够进行对逻辑卷340的i/o的情况下(s3530:是),cpu核心311进行图16的缓存操作处理(s3535)。接着,cpu核心311判断从itq410出队的i/o请求的i/o种类是否为读(s3540)。

s3540的判断中,i/o种类是“读”的情况下(s3540:是),cpu核心311将i/o请求的对象的逻辑卷340的数据从盘装置360传输至缓存800(s3570)。接着,cpu核心311将缓存管理表900中的、i/o请求的对象的逻辑卷340的数据状况950更新为“干净”(s3580)。

s3540的判断中,i/o种类不是“读”的情况下(s3540:否),cpu核心311基于i/o请求,在缓存800中写入数据(s3620)。接着,cpu核心311将缓存管理表900中的、i/o请求的对象的逻辑卷340的数据状况950更新为“脏”(s3580)。

接着,cpu核心311将i/o响应入队至tiq420(s3590)。cpu核心311发出系统调用,对通信驱动程序500通知进行了对tiq420的入队(s3600)。步骤s3600的处理结束后,cpu核心311返回步骤s3500。

以上,通过步骤s3500至s3620执行存储程序700的处理。

图16是存储程序700中的s3535的缓存操作处理的流程图。

cpu核心311用缓存管理表900判断缓存800中是否存在空闲区域(s3730)。

在步骤s3730的判断中,缓存800中存在空闲区域的情况下(s3730:是),cpu核心311为了使用空闲区域而更新缓存管理表900的表示空闲区域的行的信息,追加表示使用的区域的行,由此更新缓存管理表900(s3780)。

在步骤s3730的判断步骤中,缓存800中不存在空闲区域的情况下(s3730:否),cpu核心311进而参考缓存管理表900,判断缓存800中是否存在干净数据(s3740)。

在步骤s3740的判断中,存在干净数据的情况下(s3740:是),cpu核心311将缓存800中的干净数据丢弃(s3750)。

接着,cpu核心311删除与丢弃的干净数据对应的缓存管理表900中的行,为了将该区域用作空闲区域,而更新缓存管理表900(s3780)。

在步骤s3740的判断中,不存在干净数据的情况下(s3740:否),cpu核心311从缓存管理表900中选择1个表示脏数据的行,对选择的行的数据状况950附加“正在写”,将缓存800中的该数据写入至盘装置360(s3770)。

接着,cpu核心311将缓存管理表900中的与已写入至盘装置360的数据对应的行的数据状况950更新为“干净”,为了将该区域用作空闲区域而更新缓存管理表900(s3780)。

通过以上所述,完成缓存操作处理。

图17是表示存在多个队列对的服务器200的结构例的图。图1的服务器200中仅记载了1组队列对,但也可以如图17所示,在服务器200中存在多个队列对。存储程序700的各进程可以使用1个或多个队列对。另外,也可以动态地增减队列对。

图18是队列对监视程序1700的流程图。cpu核心311在服务器200起动时开始图18所示的处理(s4000)。

cpu核心311成对地使用保持从i/o请求接收程序620对存储程序700发送的通信数据的itq410、与保持从存储程序700对i/o响应发送程序640发送的通信数据的tiq420,控制其队列对的个数。

此时,cpu核心311基于与队列对相关联的资源的使用量控制队列对的个数。此处作为资源的例子,有存储程序700处理的队列对数、fc端口数、以太网(ethernet)端口数和队列对使用存储量。因为基于与队列对相关联的资源的使用量控制队列对的个数,所以能够将资源的使用量维持在适当的范围内。

另外,对于队列对的个数决定上限数和下限数,cpu核心311在队列对的个数低于下限数时增加队列对,在队列对的个数超过上限数时减少队列对。由此,能够根据状况对队列对的个数进行增减控制,并且维持在上限与下限之间的适当的范围内。

cpu核心311读取策略管理表1600。该策略管理表1600是表示在队列对的个数的控制中使用的策略的队列对增减策略管理信息。管理终端240用画面显示队列对增减策略管理信息,通过输入操作进行更新。服务器200也可以从管理终端240取得队列对增减策略管理信息(策略管理表1600)。

cpu核心311如以下所示地,参考队列对增减策略管理信息控制队列对的个数。由此,能够根据用户的要求设定或变更队列对的增减控制的条件。

cpu核心311读取资源管理表1400、队列对管理表1500、进程管理表1300。cpu核心311对于策略管理表1600中描述关于存储程序处理的队列对数的策略的行1640中的下限值、与表示要处理的队列对数的队列对管理表1500的行数进行比较,判断策略管理表1600的行1640的下限值是否超过了队列对管理表1500的行数(s4050)。

在步骤s4050的判断中,策略管理表1600的行1640的下限值超过了队列对管理表1500的行数的情况(s4050:是)、即队列对数低于策略上的下限值的情况下,cpu核心311执行队列对增加处理(s4060)。之后,cpu核心311执行休眠处理(s4090)。

在步骤s4050的判断中,策略管理表1600的行1640的下限值超过了队列对管理表1500的行数的情况(s4050:否)、即队列对数不低于策略上的下限值的情况下,cpu核心311在s4070中,对于队列对管理表1500的行数(队列对数)、与进程管理表1300的行数(已起动的存储程序700的进程数)进行比较。进而,cpu核心311在该s4070中,对于策略管理表1600的行1640、行1650和行1660的各上限值、与队列对管理表1500的行数进行比较。进而,cpu核心311在该s4070中,对于策略管理表1600的行1670的上限值、与根据队列对管理表1500计算得出的队列长度合计值进行比较。

在s4070中,根据队列对管理表1500计算得出的行数超过了策略管理表1600的行数的上限值的情况、或者根据队列对管理表1500计算得出的队列长度合计值超过了策略管理表1600的队列对使用存储量的上限值的情况(s4070:是)、即队列对数超过了策略上的上限值的情况下,cpu核心311执行队列对减少处理(s4080)。

多个进程中共享使用同一队列的情况下,产生在某一进程正在对队列进行操作时其他进程不能对队列进行操作这一制约。这样的队列操作的竞争妨碍了达成高吞吐率。与此相对,本实施方式中,cpu核心311与执行存储处理的进程的个数相应地控制队列对的个数。因此,能够防止队列对的个数变得过剩、确认队列的状况的队列检查处理的负担增加,另一方面,也能够减少队列操作的竞争、抑制吞吐率降低。

根据队列对管理表1500计算得出的行数未超过策略管理表1600的行数的上限值、并且根据队列对管理表1500计算得出的队列长度合计值未超过策略管理表1600的队列对使用存储量的上限值的情况(s4070:否)、即队列对数未超过策略上的上限值的情况下,cpu核心311进行一次处理的停止(休眠处理)(s4090)。

另外,在步骤s4060或步骤s4080的处理结束的情况下,cpu核心311也进行休眠处理(s4090)。

在步骤s4090中cpu核心311休眠的时间,此处例如为10秒。但是,实施方式不限定于此。作为其他例子,也可以是1秒或1分钟。或者,休眠时间也可以是可变的。

接着,cpu核心311在步骤s4090的休眠完成后返回步骤s4010,再次反复执行从步骤s4000至s4090的处理。

如本实施方式所示,使存储处理不是成为os内核610的一部分而是成为在os600上运行的程序时,存储程序700的可移植性提高、开发效率提高,另一方面,存储程序700与os600分别独立地运行,从存储程序700到os内核610的通信增加。于是,本实施方式中,为了防止通信数据消失并且高效率地进行处理,不仅在从os内核610到存储程序的方向上、也在从存储程序700到os内核610的方向上配置保持等待队列的队列。通过在两个方向上使用队列,能够实现高吞吐性能。

从存储程序700到os内核610的通信,是对于此前发生的从os内核610对存储程序700传达请求的通信的响应,只要任一者的通信的吞吐率降低,就会成为瓶颈,存储处理整体的吞吐率降低。但是,本实施方式中,因为在两个方向上使用队列,所以能够使存储处理整体维持高吞吐率。

另外,因为从存储程序700到os内核610的通信,是对于此前发生的从os内核610对存储程序700传达请求的通信的响应,所以本实施方式中,进而使保持从os内核610对存储程序700发送的通信数据的队列与保持从存储程序对os内核610发送的通信数据的队列成对,以使它们的个数联动的方式进行控制,由此使控制高效率化。

图19是队列对监视程序1700中的队列对增加处理(s4060)的流程图。cpu核心311在由队列对监视程序1700调用的情况下,开始图19所示的处理(s4200)。

cpu核心311首先计算策略管理表1600中的各行所示的上限值中的最小值。此时,对于行1670(队列对使用存储量),通过求取将行1670(队列对使用存储量)的上限值除以队列对管理表1500的起始行的队列长度的2倍得到的商,而将上限值换算为队列对数。

在步骤s4210中,对于该换算为队列对数的队列对使用存储量的上限值与其他行1640、1650、1660的上限值进行比较。然后,cpu核心311对计算得出的上限值的最小值、与用队列对管理表1500的行数表示的当前的队列对数的差值进行计算,将该差值设为队列对的增加数。

接着,cpu核心311对于s4210中计算得出的队列对增加数与队列长度的积、与缓存管理表900的空闲容量进行比较,判断空闲容量是否超过了队列对增加量的总队列长度(s4220)。

在步骤s4220的判断中,空闲容量超过了队列对增加量的总队列长度的情况下(s4220:是),cpu核心311将缓存管理表900的空闲容量更新为减去队列对增加量得到的值(s4230)。空闲容量低于队列对增加量的总队列长度的情况下(s4220:否),cpu核心311实施缓存操作处理(s4270),增加缓存800的空闲容量。

接着,cpu核心311生成相当于s4210中计算得出的队列对的增加数的队列对(s4240)。

接着,cpu核心311用追加的队列对的信息更新队列对管理表1500(s4250)。

接着,cpu核心311在进程管理表1300中追加已追加的队列对的id(s4260)。步骤s4260的处理完成后,cpu核心311结束队列对增加处理。

如上所述,cpu核心311在增加队列对时,将资源的使用量的上限量转换为能够与队列对的个数的上限数相互比较。进而,cpu核心311求出对上限量进行转换得到的上限数与队列对的个数的上限数中的最小的上限数。进而,cpu核心311将求出的上限数与当前的队列对的个数的差值决定为队列对的增加数。由此,为了能够与上限数进行比较而将资源的使用量的上限量转换为用个数表示的上限数,所以能够通过使用个数的比较简单的运算、将各值维持在限制的范围内,同时使队列对的个数增加至适当的个数。

图20是队列对监视程序1700中的队列对减少处理(s4080)的流程图。cpu核心311在由队列对监视程序1700调用的情况下,开始图20的处理(s4400)。

cpu核心311计算策略管理表1600的各行的上限值中的最小值(s4410)。此时,对于行1670(队列对使用存储量),通过求将行1670(队列对使用存储量)的上限值除以队列对管理表1500的起始行的队列长度的2倍得到的商,而将上限值换算为队列对数。步骤s4410中,对于该换算为队列对数的队列对使用存储量的上限值与其他行1640、1650、1660的各上限值进行比较。然后,cpu核心311将计算得出的最小值与当前的队列对数的差值作为队列对的减少数。

接着,cpu核心311参考队列对管理表1500和缓存管理表900,从最靠近缓存800的区域的一侧起,顺次选择相当于队列对减少数的队列对(s4420)。

另外,本实施方式中,存在多个共享存储器400的情况下,cpu核心311在生成队列对时,尽可能地将队列对配置在配置了缓存800的同一个共享存储器400中。然后,在该步骤s4420中,cpu核心311选择在配置了缓存800的同一个共享存储器400中配置的队列对。

接着,cpu核心311对于步骤s4420中选择的队列对,更新队列对管理表1500的是否允许操作1545的设定,禁止队列对的操作(s4430)。

接着,cpu核心311将选择的队列对内存在的条目移动至其他队列对(s4440)。选择的队列对成为空白时,接着cpu核心311删除选择的队列对(s4450)。接着,cpu核心311从队列对管理表1500中删除关于删除的队列对的信息(s4460)。接着,cpu核心311从进程管理表1300的队列对id1320中,删除已删除的队列对的id(s4470)。

最后,cpu核心311更新缓存管理表900的空闲容量的信息并结束处理(s4480)。

如上所述,在共享存储器400中配置有缓存800的情况下,cpu核心311在删除队列对时,删除最靠近缓存800的区域的队列对。由此,因为在删除队列对时删除最靠近缓存800的区域的队列对,所以能够在能够高效率地用于缓存800的位置生成因删除队列对而出现的空闲区域。

另外,cpu核心311在减少队列对时,将资源的使用量的上限量转换为能够与队列对的个数的上限数相互进行比较。进而,cpu核心311求出对该上限量转换得到的上限数与上述队列对的个数的上限数中的最小的上限数。进而,cpu核心311将求出的上限数与当前的队列对的个数的差值决定为队列对的减少数。因为为了能够与上限数进行比较而将资源的使用量的上限量转换为个数,所以能够通过使用个数的比较简单的运算、将各值维持在限制的范围内,同时适当地减少队列对的个数。

图21是表示管理系统设定的gui(graphicaluserinterface:图形用户界面)的一例的图。由管理终端240所具有的cpu执行的管理程序,对系统管理者提供用于进行系统设定的gui1900。系统管理者使用gui1900对服务器200输入关于系统设定的指示。

gui1900是用于设定队列对数增减策略的gui,包括队列对数增减策略设定部1910、更新按钮1930、取消按钮1940。

队列对数增减策略设定部1910是用于显示服务器200中保存的策略管理表1600的信息、或者用于使系统管理者设定服务器200中保存的策略管理表1600的信息的部位。对于策略项目1610中示出的存储程序处理的队列对数、fc端口数、以太网(ethernet)端口数和队列对使用存储量,在上限1620和下限1630中显示当前设定的值,并且该值是可编辑的。策略项目1610及其上限1620和下限1630各自的含义与策略管理表1600中的各含义相同。

系统管理者对队列对数增减策略设定部1910进行编辑、按下更新按钮1930时,从管理终端240对服务器200通知更新内容。接受了更新内容的服务器200,按照接受的更新内容更新策略管理表1600的内容。

系统管理者按下取消按钮1940时,管理终端240结束系统设定,关闭gui1900。

以上说明了本发明的实施方式,但它是用于说明本发明的示例,并不将本发明的范围限定为上述结构。本发明也能够用其他各种方式实施。

附图标记说明

10计算机系统,200服务器,210主机,220网络,240管理终端,310cpu,311cpu核心,320存储器,331hba,332nic,340逻辑卷,351ssd,352hdd,360盘装置,400共享存储器,410initiator-target队列(itq),420target-initiator队列(tiq),500通信驱动程序,600os,610os内核,620i/o请求接收程序,640i/o响应发送程序,700存储程序,800缓存,900缓存管理表,1000卷管理表,1300进程管理表,1400资源管理表,1500队列对管理表,1600策略管理表,1700队列对监视程序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1