一种内存数据的迁移方法、计算机和装置的制造方法_4

文档序号:9597126阅读:来源:国知局
源内存卡中的非错误数据。
[0141 ] 在进行内存数据迀移之前,所述处理器可以指示所述源内存卡的内存控制器执行内存巡检操作,以确定所述源内存卡中的非错误数据,并根据检测结果打上检测标记,使得后续将所述源内存卡的内存数据迀移到所述备份内存卡时,能够根据所述检错标记只迀移所述源内存卡中的非错误数据,避免了将错误数据迀移到所述备份内存卡而导致的计算机重启等问题。
[0142]所述源内存卡的内存控制器,能够根据所述处理器的指示,启动内存巡检操作,所述内存巡检操作具体可以是,根据设定的检错机制,对所述源内存卡的内存数据进行检测,以判断所述源内存卡中哪些数据是错误数据,并标记所述错误数据的系统地址,即根据检测结果打上检测标记,使得后续进行内存数据迀移时,所述处理器能够根据标记的所述错误数据的系统地址,迀移所述源内存卡中的非错误数据。
[0143]所述源内存卡的内存控制器在执行完巡检操作之后,可以对自身的寄存器进行配置,所述处理器可以通过查询该寄存器,确定所述巡检操作是否完成,当所述巡检操作完成之后,所述处理器可以执行步骤309,即将所述源内存卡和所述备份内存卡设置为镜像模式,以进行内存数据的迀移。
[0144]此步骤为可选步骤,所述处理器并不一定要指示所述源内存控制器进行内存巡检操作。
[0145]S309:若所述备份内存卡满足迀移条件,则所述处理器根据所述B1S的内存数据的迀移指令,将所述源内存卡和所述备份内存卡设置为镜像模式。
[0146]为了实现内存数据的迀移,所述处理器可以将所述源内存卡和所述备份内存卡设置为镜像模式,在设置了所述镜像模式之后,所述源内存卡的内存控制能够根据所述处理器的指示,将所述源内存卡的内存数据写入所述备份内存卡。
[0147]具体地,所述处理器在执行所述B1S的内存数据的迀移指令时,可以在所述源内存卡的内存控制器中配置所述备份内存卡的标识,在所述备份内存卡的内存控制器中配置所述源内存卡的标识,以使得所述源内存卡与所述备份内存卡之间设置为镜像模式,从而所述源内存卡能够根据所述处理器的指示,将所述源内存卡的内存数据发送到所述备份内存卡的内存控制器,使得所述备份内存卡的内存控制器将所述源内存卡的内存数据写入所述备份内存卡。
[0148]此外,将所述源内存卡和所述备份内存卡设置为镜像模式还可以包括,所述处理器将所述源内存卡的内存控制器的地址配置信息复制到所述备份内存卡的内存控制器,使得所述备份内存卡按照所述源内存卡的地址分配方式,为所述备份内存卡分配系统地址。
[0149]S310:所述处理器根据所述B1S的内存数据的迀移指令,指示所述源内存卡的内存控制器进行内存数据的迀移。
[0150]所述处理器在配置所述源内存卡与所述备份内存卡之间的镜像模式之后,可以指示所述源内存卡的内存控制器对所述源内存卡进行内存数据的迀移。
[0151]具体地,所述处理器可以向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,在确定所述源内存卡的内存控制器完成所述数据读指令之后,所述处理器可以向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,从而使得所述源内存卡的内存控制器可以根据所述数据读指令,读取所述源内存卡的内存数据,然后再根据所述数据写指令,将所述读取的数据写入所述源内存卡,以及根据所述镜像模式,将所述读取的数据发送给所述备份内存卡的内存控制器,使得所述备份内存卡的内存控制器能够将所述读取的数据写入所述备份内存卡,实现了内存数据的迀移,能够将所述源内存卡的所有内存数据迀移到所述备份内存卡,而不仅仅只迀移启动内存数据迀移后,新写入所述源内存卡中的数据。
[0152]由于在进行内存数据迀移的过程中,所述处理器如果一直执行B1S的指令来进行内存数据的迀移,将在较长的时间内无法执行0S的指令以进行业务处理,这会影响计算机的正常运行导致其它业务处理长时间处于中止状态,因此所述处理器可以分多次进行内存数据的迀移,例如,在完成一次内存数据迀移之后,所述处理器可以退出所述B10S,执行所述0S的指令,进行正常的业务处理,直到进行下一次内存数据迀移时,再退出所述0S,再次执行所述B1S的内存数据的迀移指令,以继续进行内存数据的迀移。这种分多次进行内存数据的迀移的方式,使得处理器交替执行0S和B1S的指令,并最终完成了内存数据的迀移,避免了系统业务的长时间中断,保证了系统的正常运行。在本发明实施例中,为了实现上述分多次进行内存数据的迀移方法,可以对所述B1S的内存数据的迀移指令进行进一步改进,例如预先在所述B1S的内存数据的迀移指令中配置每次迀移的数据量或每次迀移的时长,即配置分次迀移策略,使得所述处理器执行所述B1S的内存数据的迀移指令时,可以按照所述分次迀移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迀移,具体地,所述处理器可以通过以下步骤指示所述源内存卡的内存控制器分多次进行内存数据的迀移:
[0153]a)所述处理器根据所述每次迀移指定的数据量确定当次迀移的数据量,指示所述源内存卡的内存控制器将所述当次迀移的数据量迀移到所述备份内存卡,或者,所述处理器根据每次迀移的时长确定所述当次迀移的时长确定当次迀移的时长,指示所述源内存卡的内存控制器在所述当次迀移的时长内进行内存数据的迀移,或者根据处理器的运行状态,指示所述源内存卡的内存控制器102-A在处理器的运行状态为空闲的时间段内进行内存数据的迀移,其中所述处理器的运行状态为空闲状态可以是处理器的占用率小于设定阈值;
[0154]b)在确定所述源内存卡的内存控制器完成所述当次迀移之后,所述处理器退出所述B1S并执行所述0S的指令;
[0155]c)所述处理器接收第二触发指令,所述第二触发指令用于指示所述处理器返回执行所述B1S的指令以继续进行内存数据的迀移
[0156]d)所述处理器根据所述B1S的指令,返回执行步骤a),直至所述源内存卡的内存数据全部迀移到所述备份内存卡。
[0157]在步骤b)中,所述处理器退出所述B1S并执行所述OS的指令进行业务处理时,可能对所述源内存板进行读写操作,即使所述0S利用所述处理器对所述源内存卡中已经迀移的数据块A进行数据写操作,由于设置了镜像模式,所述源内存卡的内存控制器也能够将所述写操作的数据写入所述备份内存卡的数据块A,避免了数据的丢失,保证了所述备份内存卡与所述源内存卡数据的一致性。
[0158]此外,用户还可以在所述分次迀移策略中配置所述第二触发指令的触发条件,所述第二触发指令的触发条件可以是每次迀移的间隔时长,则处理器可以从所述迀移策略中获取所述每次迀移的间隔时长,并根据所述每次迀移的间隔时长配置内存迀移定时器,以使得所述内存迀移定时器根据所述每次迀移的间隔时长触发所述第二触发指令,即根据所述每次迀移的间隔时长指示所述处理器继续进行内存数据的迀移,例如,所述处理器可以在计算机的南桥中设置所述内存迀移定时器;
[0159]所述第二触发指令的触发条件还可以是处理器的运行状态,所述处理器可以根据自身的运行状态,触发所述第二触发指令,例如,所述处理器的运行状态可以是处理器处于空闲状态,或者处理器的占用率小于特定阈值,所述处理器在执行所述0S的指令时可以实时监控自身运行信息,当处理器的占用率小于设置的特定阈值时,触发所述第二迀移指令,使得所述处理器根据自身触发的所述第二迀移指令,退出所述0S执行所述B1S的指令,继续进行内存数据的迀移,当然,所述处理器还可以利用主板控制单元(Base MainboardController, BMC)对自身是运行状态进行监控并触发所述第二触发指令,本发明实施例在此不作限定。
[0160]进一步,所述处理器在指示所述源内存卡的内存控制器进行内存数据的迀移时,可以根据所述源内存卡的内存控制器记录的所述错误数据的地址,指示所述源内存卡的内存控制器将所述源内存卡中的非错误数据迀移到所述备份内存卡,避免将所述源内存卡中的错误数据迀移到所述备份内存卡而可能导致的计算机重启。
[0161]S311:所述处理器根据所述B1S的内存数据的迀移指令,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。
[0162]在内存数据迀移完成之后,所述处理器可以将源内存卡的系统地址映射到所述备份内存卡,使得所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡,所述备份内存卡可以替代所述源内存卡,接管对所述源内存卡的所有读写操作。
[0163]S312:所述处理器根据所述B1S的内存数据的迀移指令,对所述源内存卡执行下电操作。
[0164]在所述源内存卡的内存数据迀移完成之后,所述处理器可以对所述源内存卡执行下电操作,使得在所述计算机不下电的情况下,可以移除或者更换所述源内存卡,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。
[0165]在本发明实施例中,所述处理器可以获取第一触发指令,根据所述第一触发指令,退出0S并执行B1S的内存数据的迀移指令,所述B1S的内存数据的迀移指令使得所述处理器能够确定所述源内存卡和所述备份内存卡,并在确定所述备份内存卡满足迀移条件后,将所述源内存卡和所述备份内存卡设置为镜像模式,指示所述源内存卡的内存控制器根据所述镜像模式,将所述源内存卡的内存数据写入所述备份内存卡,从而在计算机不下电的情况下,能够对所述源内存卡的内存数据进行迀移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。并且,所述处理器根据触发的第一触发指令,启动内存数据的迀移,只在源内存卡出现故障或需要进行内存数据迀移时才进行内存数据迀移,有效节约了系统资源。此外,由于所述处理器是执行B1S的指令完成内存数据的迀移,能够实现对OS内核模块所在的内存卡的数据进行迀移,避免了不能对0S内核模块数据进行迀移的问题。。
[0166]在本发明实施例中,所述处理器还可以将所述源内存卡的所有数据迀移到所述备份内存卡,而不是只迀移在启动内存迀移之后,新写入所述源内存卡的内存数据,保证了内存数据的完整迀移。进一步,所述处理器还可以根据分次迀移策略,指示所述源内存卡的内存控制器分多次将所述源内存卡的内存数据迀移到所述备份内存卡,使得在进行内存数据迀移的过程中,所述处理器能够根据需求退出0S执行B1S的内存数据的迀移指令,或者退出B1S执行0S的指令进行业务处理,从而保证所述计算机的业务能够及时处理,避免在进行大量内存数据迀移时导致的计算机业务的长时间中断,保障了该计算机的正常运行。进一步,所述处理器还能够指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数据,并指示所述源内存卡的内存控制器将所述非错误数据迀移到所述备份内存卡,避免将所述源内存卡中的错误数据迀移到所述备份内存卡而可能导致的计算机重启。
[0167]进一步,在本发明实施例中,在进行内存数据迀移之前,所述处理器还可以确定所述备份内存卡是否满足迀移条件,如果满足迀移条件,才对所述源内存卡进行内存数据的迀移,保证了内存数据迀移的顺利进行,避免由于所述备份内存卡未完成初始化或者内存容量不够等问题而导致的数据迀移失败。
[0168]具体实施例二
[0169]结合图1所示的计算机,本发明实施例提供了一种内存数据的迀移方法,如图3所示,用于迀移计算机中内存数据,所述计算机的B1S中存储有内存数据的迀移指令,例如,能够将源内存卡的内存数据迀移到备份内存卡,所述源内存卡可以是内存卡101-A,所述备份内存卡可以是内存卡101-C,所述内存卡101-C可以是计算机开机之前已经插入硬件插槽的内存卡,也可以是临时新增的内存卡,在进行内存数据迀移之前,所述内存卡101-C的标识被配置在ACPI列表中并在执行迀移之前执行完毕初始化过程即可,本发明实施例的内存数据的迀移方法可以包括:
[0170]S401:处理器根据0S的指令将指定的备份内存卡的标识配置到ACPI列表中。
[0171 ] 在所述计算机开机启动后,所述处理器执行所述0S的指令,用户可以向所述0S提供指定备份内存卡的标识,所述处理器可以根据所述0S的指令获取用户指定的备份内存卡的标识,并配置到所述ACPI列表中,由于所述ACPI列表为B1S和0S都可以访问的列表,使得所述处理器后续执行所述B1S的代码时可以通过读取所述ACPI列表,获取所述备份内存卡的信息,当然所述备份内存卡的标识也可以记录在其它的存储单元或者列表中,保证所述处理器在执行所述0S的指令和所述B1S的指令时都可以访问该存储单元或者列表即可,本发明实施例在此不作限定。
[0172]本步骤为可选步骤,用户还可以在计算机开机启动时指定备份内存卡的标识,此时所述处理器运行所述B1S的指令,用户可以向所述B1S提供所述备份内存卡的标识,所述处理器可以根据所述B1S的指令获取用户指定的所述备份单元的标识。
[0173]其中,所述备份单元的标识可以是所述备份内存卡所插入的槽位的槽位编号或者所述槽位相关的号码。在本发明实施例中,所述备份内存卡可以是在计算机开机启动前就已经插入槽位中,也可以是在计算机开机启动后再插入到槽位中的,如果所述备份内存卡已经插入槽位中,则所述备份内存卡的标识为当次插入的槽位的槽位编号,如果所述备份内存卡还未插入到槽位中,则所述备份内存卡的标识可以是用户指定的槽位的槽位编号,所述备份内存卡可以在后续直接插入所述用户指定的槽位。
[0174]进一步,所述处理器还可以根据所述B1S的指令对所述备份内存卡进行初始化,使得所述备份内存卡准备就绪,可以正常使用,但是对所述0S不可见,即所述处理器执行所述0S的指令时不能对所述备份内存卡进行读写操作,具体地,当所述指定的备份内存卡是在计算机开机启动后再插入到槽位中的,则可以在所述备份内存卡插入槽位时,通过所述备份内存卡上的触发按钮,触发处理器执行所述B1S的初始化指令对所述备份内存卡进行初始化,当然,也可以在后续需要使用该备份内存卡的时候,所述处理器再执行所述B1S的初始化指令对所述备份内存卡进行初始化;当所述指定的备份内存卡是在计算机开机启动前就已经插入槽位中,则在计算机开机启动时,所述处理器执行B1S的指令,用户需要通过B1S的起始菜单,配置所述备份内存卡的标识,使得所述处理器执行所述BIS0的指令,在确定所述备份内存卡已经硬件存在时对所述备份内存卡进行特殊的初始化。
[0175]S402:所述处理器根据所述0S的指令将指定的源内存卡的标识配置到ACPI列表中。
[0176]在所述计算机开机启动后,所述处理器执行所述0S的指令时,当用户发现某个内存卡性能不稳定或是工作时间太长时或者其他需要更换的情况,可以指定该内存卡为待迀移数据的内存卡,即源内存卡,并将所述源内存卡的标识提供给所述0S,所述处理器可以根据所述0S的指令获取用户指定的源内存卡的标识,并将所述源内存卡的标识配置到ACPI列表中,以使得后续所述处理器执行所述B1S的内存数据的迀移指令时,可以通过读取所述ACPI列表,获取所述源内存卡的信息。
[0177]在本发明实施例中,用户可以分别将所述源内存卡与所述备份内存卡的标识提供给所述0S,还可以一起将所述源内存卡与所述备份内存卡的标识提供给所述0S,使得所述处理器可以分别将所述源内存卡与所述备份内存卡的标识配置到
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1