提供虚拟卷的存储系统及其控制方法_4

文档序号:8487621阅读:来源:国知局
[0325](S2402)
[0326]程序414根据接收到的写入命令所具有的I/O目的地信息确定写入目的地的VVOL以及虚拟页。此处,确定出多个虚拟页的情况很多。之所以这样,是由于写入对象数据的大小通常大于一个虚拟页的容量。针对所确定的每个虚拟页,进行S2403以后的处理。以下,以一个虚拟页为例(在图24的说明中称作“对象虚拟页”),说明S2403以后的处理。另外,在图24的说明中,将针对对象虚拟页的写入对象数据要素称作“对象数据要素”。
[0327](S2403)
[0328]程序414判断对象虚拟页的ID是否存在于迀移页表411中。在该判断的结果是否定性的情况下,进行S2404?S2406,在该判断的结果为肯定性的情况下,进行S2407?S2408o
[0329](S2404)
[0330]程序414基于分配表407(图10)判断实际页是否分配给了对象虚拟页。如果该判断的结果为否定性的,则进行S2405。
[0331](S2405)
[0332]程序414进行以下处理。
[0333]*程序414基于VVOL管理表404 (图8)确定与写入目的地VVOL对应的池以及该池内的默认层。
[0334]*程序414基于层管理表402 (图6)以及实际页管理表408 (图11)确定被确定的默认层内的自由的实际页。
[0335]*程序414对对象虚拟页分配所确定的实际页。即,程序414在分配表407 (图10)中与对象虚拟页的ID对应的栏中登记所分配的实际页的ID、具有该实际页的层的ID、具有该层的池的ID。
[0336]*程序414在根据默认层不能确定自由的实际页的情况下,可以根据与写入目的地VVOL对应的分配层确定自由的实际页,并将所确定的实际页分配给对象虚拟页。
[0337]*程序414更新表402 (图6)中具有所分配的实际页的层(在该S2403的说明中称作“分配源层”)的“使用比例”的值。
[0338]*程序414进行分配源层的“使用比例”的更新后的值是否超过了分配源层的“层阈值”的值的判断(以下称作“判断Z”)。分配源层的“层阈值”的值是登记在表402(图6)中的值、或者登记在表412(图15)中的值,但是可优先采用登记在表412中的值。
[0339]*如果判断Z的结果是肯定性的,则程序414可以进行下述(a)以及(b)中的至少一个处理。
[0340](a)程序414可将错误(error)通知给管理装置107 (以及/或者作为写入命令发送源的主机101)。管理者在针对分配源层知道了错误的情况下,能够在分配源层中追加RVOL0
[0341](b)程序414调用重新配置程序415。重新配置程序415进行图38所示的处理。图38所示的处理将在后面说明。
[0342](S2406)
[0343]程序414从高速缓存确保用于保存在对象虚拟页中的数据要素的CM区域。
[0344](S2407)
[0345]程序414根据迀移页表411中与对象虚拟页对应的“迀移状态”的值确保CM区域。具体如下。
[0346]〈〈情形A迀移状态”为“未迀移”〉)
[0347]例如,进行以下(具体例Al)以及(具体例A2)中的某一个。
[0348](具体例Al)
[0349]*程序414确保CM区域,将与对象虚拟页对应的迀移目的地层中的自由的实际页决定为写入目的地。更具体地,例如,如果迀移目的地层中某一个自由的实际页内的数据要素在高速缓存中,则程序414确保存在该数据要素的CM区域,并且将该自由的实际页决定为写入目的地。迀移目的地层中的自由的实际页如上所述能够基于表402 (图6)以及408 (图11)来确定。
[0350]*程序414将与对象虚拟页对应的“迀移状态”更新为“已迀移”。其结果,针对对象虚拟页不进行数据要素的迀移。即,换言之,针对对象虚拟页,数据要素的迀移被取消。
[0351]*程序414将所决定的写入目的地实际页取代原来的实际页分配给对象虚拟页。即,程序414在分配表407中与对象虚拟页的ID对应的栏中改写上述所决定的写入目的地实际页的ID以及具有该实际页的层的ID(迀移目的地层的ID)。
[0352]*程序414将实际页管理表408 (图11)中分配给对象虚拟页的原来的实际页的“状态”更新为“自由”。另外,程序414将该表408中新分配给对象虚拟页的实际页(所决定的写入目的地实际页)的“状态”更新为“使用中”。
[0353](具体例A2)
[0354]*程序414确保CM区域,将分配给对象虚拟页的实际页(迀移源层内的实际页)决定为写入目的地。更具体地,例如,如果迀移目的地层中任何一个自由的实际页内的数据要素都不在高速缓存中,则程序414确保CM区域(例如存在分配给对象虚拟页的实际页内的数据要素的区域),并且将分配给对象虚拟页的实际页(迀移源层内的实际页)决定为写入目的地。
[0355]*程序414可将与对象虚拟页对应的“迀移状态”更新为“中断”。由此,例如,针对对象虚拟页,不进行基于重新配置程序415的数据迀移。而且,该“迀移状态”的值例如可以通过程序414在后述的降级(destage)完成的情况下从“中断”恢复成“未迀移”。
[0356]〈〈情形B迀移状态”为“迀移中”〉〉
[0357]例如进行以下的(具体例BI)?(具体例B3)之一。
[0358](具体例BI)
[0359]*程序414将与对象虚拟页对应的“迀移状态”更新为“中断”。然后,程序414进行上述的(具体例Al)或者(具体例A2)。在进行了(具体例Al)的情况下,与对象虚拟页对应的“迀移状态”更新为“已迀移”。在进行了(具体例A2)的情况下,与对象虚拟页对应的“迀移状态”更新为“未迀移”。
[0360](具体例B2)
[0361]*程序414确保CM区域。在(具体例B2)的情况下,在与对象虚拟页对应的“迀移状态”更新为“已迀移”之后进行降级。因此,写入目的地(降级目的地)为迀移目的地层内的实际页。之所以这样,是因为对象虚拟页被分配了迀移目的地层内的实际页。
[0362](具体例B3)
[0363]*程序414确保CM区域。在(具体例B3)的情况下,在与对象虚拟页对应的“迀移状态”为“迀移中”期间进行降级,数据要素被降级到分配给对象虚拟页的实际页和迀移目的地层内的实际页的双方(进行所谓的二重写入)。
[0364]〈〈情形C迀移状态”为“已迀移”〉)
[0365]例如进行以下处理。
[0366]*程序414确保CM区域。该情形中,写入目的地(降级目的地)是迀移目的地层内的实际页。之所以这样,是因为由于与对象虚拟页对应的“迀移状态”被更新为了 “已迀移”,所以分配给对象虚拟页的实际页如后面说明的那样被变更为成为迀移目的地的实际页。
[0367](S2408)
[0368]在对于通过S2402所确定的所有虚拟页确保了 CM区域的情况下,程序414向所确保的一个以上的CM区域写入作为写入对象的数据,并将写入完成向主机101进行响应。
[0369]〈写入处理(降级)〉
[0370]图25表示降级处理的流程。
[0371]I/O控制程序414针对构成写入对象数据的各数据要素进行降级处理。
[0372](S2501)
[0373]程序414进行降级。S卩,程序414将存在于高速缓存中的多个数据要素中尚未写入实际页的数据要素(脏数据要素)写入实际页。降级目的地实际页是分配给成为该实际页的写入目的地的虚拟页的实际页(根据分配表407确定的实际页)。而且,此时,如果与该虚拟页对应的“迀移状态”为“中断”,则程序414可以将该“迀移状态”更新为“未迀移”。
[0374](S2502)
[0375]程序414基于表403 (图7)或者404 (图8)判断是否有更新监视表409的必要。可优先表404(图8)。具体地,例如,程序414进行以下的两个判断,即判断P以及判断Q。
[0376](判断P)程序414判断与具有S2501中的降级目的地实际页的池(以下,在图25的说明中称作“对象池”)对应的“重新配置”是否为“0N”、或者与具有分配到该降级目的地实际页的虚拟页的VVOL(以下,在图25的说明中称作“对象VVOL”)对应的“重新配置”是否为“ON”。在该判断P的结果为否定性的情况下,不进行S2503 (即,没有更新监视表409的必要)。
[0377](判断Q)在判断P的结果为肯定性的情况下,程序414判断当前的时刻是否在与对象池对应的“监视时间带”的值所表示的时间带内。在该判断Q的结果为否定性的情况下,不进行S2503。另一方面,不仅判断P,该判断Q的结果也是肯定性的情况下,进行S2503 (即,有更新监视表409的必要)。
[0378](S2503)
[0379]程序414更新监视表409。具体如下。
[0380]*如果表412 (图15)中与对象VVOL对应的“页单位迀移”为“0N”,则程序414更新与对象VVOL对应的激活的监视表409。具体地,例如,程序414更新激活的监视表409中的、与被降级的数据要素的写入目的地虚拟页对应的“合计I/O数”的值(例如增加1),并且更新“最终I/O时刻”的值。另外,程序414针对例如该写入目的地虚拟页将降级时间点的时刻追加到上述的I/O履历表中。该情况下,I/O履历表中可以记录写入目的地虚拟页的ID。例如,可以基于该I/O履历表,而后由程序414更新激活的监视表409中“平均I/O数”以及“最大I/O数”。
[0381]〈读出处理〉
[0382]图26表示读出处理的流程。
[0383](S2600)
[0384]I/O控制程序414从主机101接收读出命令。然后,程序414根据接收到的读出命令所具有的I/o目的地信息确定读出源VVOL以及虚拟页。
[0385](S2601)
[0386]程序414判断高速缓存上是否具有读出对象数据。该判断的结果为否定性的情况下,进行S2603,该判断的结果为肯定性的情况下,进行S2602。
[0387](S2602)
[0388]程序414将高速缓存上的读出对象数据发送给主机101。该情况下,与读出源VVOL对应的监视表409不被更新。这是由于没有进行针对实际页的I/O。
[0389](S2603)
[0390]程序414基于分配表407判断是否对通过S2600所确定的虚拟页分配了实际页。该判断的结果为否定性的情况下,进行S2604,该判断的结果为肯定性的情况下,进行S2605o
[0391](S2604)
[0392]程序414向主机101发送预定响应(例如表示零的数据)。
[0393](S2605)
[0394]程序414判断通过S2600所确定的一个以上的虚拟页的ID中的至少一个是否在迀移页表411中已登记、并且与该已登记的虚拟页ID对应的“迀移状态”是否为“迀移中”。该判断的结果为否定性的情况下,进行S2607,该判断的结果为肯定性的情况下,进行S2606o
[0395](S2606)
[0396]程序414从分别分配给通过S2600所确定的一个以上的虚拟页的一个以上的实际页(根据分配表407所确定的一个以上的实际页)读出数据要素。程序414将由那些数据要素所构成的读出对象数据发送给主机101。
[0397](S2607)
[0398]程序414针对“迀移状态”为“迀移中”的虚拟页等待至“迀移状态”更新为“已迀移”。然后,程序414从分别分配给通过S2600所确定的一个以上的虚拟页的一个以上的实际页(根据分配表407所确定的一个以上的实际页)读出数据要素。程序414将由那些数据要素所构成的读出对象数据发送给主机101。
[0399](S2608)
[0400]程序414基于表403 (图7)或者404 (图8)判断是否有更新监视表409的必要。可优先表404(图8)。具体地,例如,程序414进行以下的两个判断,即判断V以及判断W。
[0401](判断V)程序414判断与分配给读出源VVOL的池(以下,在图26的说明中称作“读出源池”)对应的“重新配置”是否为“ON”、或者与读出源VVOL对应的“重新配置”是否为“0N”。在该判断V的结果为否定性的情况下,不进行S2609(即,没有更新监视表409的必要)。
[0402](判断W)在判断V的结果为肯定性的情况下,程序414判断当前的时刻是否在与对象池对应的“监视时间带”的值所表示的时间带内。在该判断W的结果为否定性的情况下,不进行S2609。另一方面,不仅判断V,该判断W的结果也是肯定性的情况下,进行S2609 (即,有更新监视表409的必要)。
[0403](S2609)
[0404]程序414更新监视表409。具体如下。
[0405]*如果表412 (图15)中与读出源VVOL对应的“页单位迀移”为“0N”,则程序414更新与读出源VVOL对应的激活的监视表409。具体地,例如,程序414更新激活的监视表409中读出源的与写入目的地虚拟页对应的“合计I/O数”的值(例如增加I),并且更新“最终I/O时刻”的值。另外,程序414针对例如该读出源虚拟页将读出时间点的时刻追加到上述的I/o履历表中。该情况下,I/O履历表中还可以记录读出源虚拟页的ID。例如,可以基于该I/O履历表,而后由程序414更新激活的监视表409中“平均I/O数”以及“最大I/O 数”。
[0406]〈I/O频度的监视与重新配置处理的关系〉
[0407]图27表示I/O频度的监视与重新配置的关系的概要。
[0408]在监视针对实际页的1/0,并进行了针对实际页的I/O的情况下,分配到该实际页的虚拟页或者具有该虚拟页的VVOL的I/O频度被更新。即,监视表409被更新。换言之,如上所述,I/O控制程序414虽然从主机101接受了读出命令,但是在没有从实际页读出数据要素的情况下,监视表409不被更新。
[0409]随着监视表409的更新,度数分布表410被更新。而且,度数分布表410可以不预先准备,例如可以在由管理者指令了显示度数分布的情况下基于监视表409生成度数分布表410,并基于该表410显示度数分布。而且,还可以取代度数分布,显示监视表409。
[0410]重新配置处理具有层判定处理和迀移处理。层判定处理中生成迀移页表411。该表411可以基于监视表409所表示的I/O频度和层管理表402 (图6)内的层范围来生成。迀移处理中基于所生成的迀移页表411进行页单位的数据迀移。
[0411]〈重新配置处理〉
[0412]重新配置处理可以在某层的使用比例超过该层的层阈值的情况下来进行,也可以定期性(例如每次到达“重新配置执行时刻”的值所表示的时刻时)进行。
[0413]图28表示重新配置处理的流程。需要说明的是,图28是针对一个VVOL (图28的说明中称作“对象W0L”)的流程。
[0414](S2801)
[0415]重新配置程序415判断是否针对对象VVOL执行数据迀移。具体进行如下处理。
[0416]*程序415判断VVOL管理表404 (图8)中与对象VVOL对应的“自动执行”是否为“0N”。在与对象VVOL对应的“自动执行”的值没有设定的情况下,程序415判断池管理表403 (图7)中与分配给对象VVOL的池(以下,在图28的说明中称作“对象池”)对应的“自动执行”是否为“0N”。
[0417]*在与对象VVOL或者对象池对应的“自动执行”为“0N”的情况下,程序415判断当前时刻是否到达了与对象VVOL或者对象池对应的“重新配置执行时刻”的值所表示的时刻。在该判断的结果为肯定性的情况下,S2801的判断的结果为肯定性,在该判断的结果为否定性的情况下,S2801的判断的结果为否定性。
[0418]*在与对象VVOL或者对象池对应的“自动执行”为“OFF”的情况下,如果程序415从管理者通过管理装置105针对对象VVOL接受到了数据迀移的指示,则S2801的判断的结果为肯定性。
[0419]如果与对象VVOL或者对象池对应的“自动执行”为“0FF”(S2802:否),则程序415进行S2806。
[0420]如果与对象VVOL或者对象池对应的“自动执行”为“ON” (S2802 ??是),则程序415进行S2807。
[0421](S2806)
[0422]程序415判断是否由管理者设定了层范围。在该判断的结果为否定性的情况下,在进行了 S2807之后进行S2808,在该判断的结果为否定性的情况下,不进行S2807,直接进行 S2808。
[0423](S2807)
[0424]程序415进行层范围决定处理。通过该处理来决定层范围。作为决定层范围的方法,可考虑到多种。例如,可预先准备多种层范围,也可由程序415针对每个层从该多种层范围中选择任意的层范围。
[0425](S2808)
[0426]程序415进行层判定处理。层判定处理中,如上所述,生成迀移页表411。
[0427](S2809)
[0428]程序415依照所生成的迀移页表411进行页单位的迀移处理。在页单位的数据迀移中,在对象池内从某层内的实际页向其它层内的实际页迀移数据要素。针对页单位的迀移处理,将在后面详细说明。
[0429]〈〈页单位的迀移处理〉〉
[0430]图34表示图28的S2808中的迀移页表生成处理的流程。
[0431](S3401)
[0432]程序415选择对象VVOL的最初的虚拟页。
[0433](S3402)
[0434]程序415基于分配表407判断是否对被选择的虚拟页分配了实际页。如果该判断的结果是否定性的,则进行S3405,如果该判断的结果是肯定性的,则进行S3403。
[0435](S3403)
[0436]程序415基于监视表409判断是否应该变更分配给被选择的虚拟页的实际页内的数据要素所应该存在的层。具体如下。
[0437]*程序415根据表402 (图6)确定具有分配给被选择的虚拟页的实际页的层(在S3403的说明中称作“对象层”)。
[0438]*程序415基于被选择的虚拟页的I/O频度(例如与对象VVOL对应的激活的监视表409所表示的合计I/O数、平均I/O数、以及最大I/O数中的至少一个)和与对象层对应的“层范围”的值判断是否应该将分配给被选择的虚拟页的实际页内的数据要素从对象层迀移到其它的层。例如,如果被选择的虚拟页的I/O频度未纳入被选择的虚拟页的与对象层对应的层范围中,则判断为应该迀移数据要素。
[0439]如果该S3403的判断的结果为否定性的,则进行S3405,如果该判断的结果为肯定性的,则进行S3404。
[0440](S3404)
[0441]程序415基于被选择的虚拟页的I/O频度(例如与对象VVOL对应的激活的监视表409所表示的合计I/O数、平均I/O数、以及最大I/O数中的至少一个)和与具有对象层的池内的其它分配层对应的“层范围”的值决定迀移目的地层。例如,将与纳入有被选择的虚拟页的I/O频度的层范围对应的分配层(对象VVOL的分配层)决定为迀移目的地层。然后,程序415在迀移目的地页表411中登记被选择的虚拟页的ID、对象层的ID、被决定的迀移目的地层的ID、迀移状态“未迀移”。
[0442](S3405)
[0443]程序415判断被选择的虚拟页是否是对象VVOL的末端的虚拟页。如果该判断的结果为否定性的,则进行S3406,如果该判断的结果为肯定性的,则该迀移页表生成处理结束
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1