• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 34
    • 下载费用:30 金币  

    重庆时时彩官方网站云顶: 一种内存数据的迁移方法、计算机和装置.pdf

    关 键 词:
    一种 内存 数据 迁移 方法 计算机 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201380002307.9

    申请日:

    2013.11.22

    公开号:

    CN103842968A

    公开日:

    2014.06.04

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 11/14申请日:20131122|||公开
    IPC分类号: G06F11/14 主分类号: G06F11/14
    申请人: 华为技术有限公司
    发明人: 孙红伟; 沈莉梅; 吕腾; 张迪煊; 杨丽萍
    地址: 518129 中国广东省深圳市龙岗区坂田华为总部办公楼
    优先权:
    专利代理机构: 代理人:
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201380002307.9

    授权公告号:

    ||||||

    法律状态公告日:

    2015.11.25|||2014.07.02|||2014.06.04

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明实施例提供了一种内存数据的迁移方法、计算机和装置,用于迁移计算机中内存数据,所述计算机的操作系统能够在获取到第一触发指令后中止当前执行的任务,以执行内存数据的迁移,确定待迁移内存数据的源内存卡,为所述源内存卡确定备份内存卡,指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示读取所述源内存卡的内存数据,将所读取的所述源内存卡的内存数据写入到所述备份内存卡,在计算机不下电的情况下,能够对所述源内存卡的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。

    权利要求书

    权利要求书
    1.  一种计算机,包括:
    处理器;
    主存储器,用于加载所述计算机的操作系统的指令,所述主存储器包括一个或多个内存卡;
    内存控制器,每个内存卡配置有对应的内存控制器;其特征在于,
    所述操作系统用于获取第一触发指令,根据所述第一触发指令中止当前正在执行的任务,确定待迁移内存数据的源内存卡,为所述源内存卡确定备份内存卡,指示所述源内存卡的内存控制器进行内存数据的迁移;
    所述源内存卡的内存控制器用于根据所述操作系统的指示,将所述源内存卡的内存数据迁移到所述备份内存卡。

    2.  根据权利要求1所述的计算机,其特征在于,所述操作系统具体用于将所述源内存卡和所述备份内存卡设置为镜像模式,向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡;
    所述源内存卡的内存控制器具体用于根据所述操作系统的数据读指令读取所述源内存卡的内存数据,接收所述操作系统发送的所述数据写指令,根据所述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存数据发送给所述备份内存卡的内存控制器;
    所述备份内存卡的内存控制器用于将接收到的所述源内存卡的内存数据写入到所述备份内存卡。

    3.  根据权利要求1或2所述的计算机,其特征在于,所述操作系统具体用于获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移。

    4.  根据权利要求3所述的计算机,其特征在于,所述操作系统具体用于根据所述分次迁移策略循环执行如下操作a)-d),直至将所述源内存卡的内存数据全部迁移到所述备份内存卡,所述操作a)-d)包括:
    a)确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;
    b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,中止执行内存数据的迁移;
    c)接收第二触发指令,所述第二触发指令用于指示所述操作系统继续进行内存数据的迁移;
    d)返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。

    5.  根据权利要求4所述的计算机,所述分次迁移策略包括每次迁移指定的数据量或每次迁移的时长;
    所述操作系统具体用于根据所述每次迁移指定的数据量确定所述当次迁移的数据量,或根据每次迁移的时长确定所述当次迁移的时长。

    6.  根据权利要求5所述的计算机,其特征在于,所述分次迁移策略还包括每次迁移的间隔时长或处理器的运行状态,所述第二触发指令根据所述每次迁移的间隔时长或处理器的运行状态被触发。

    7.  根据权利要求1-6任一项所述的计算机,其特征在于,所述源内存卡的内存控制器还用于对所述源内存卡的错误数据进行监控,若所述错误数据的数量超过阈值,所述源内存卡的内存控制器触发所述第一触发指令;
    所述操作系统具体用于接收所述源内存卡的内存控制器触发的所述第一触发指令。

    8.  根据权利要求7所述的计算机,其特征在于,所述源内存卡的内存控制器还用于在自身的寄存器中记录所述源内存卡的错误数据的数量超过阈值;
    则,所述操作系统具体用于查询所述源内存卡的内存控制器的寄存器,确定所述源内存卡。

    9.  根据权利要求1-6任一项所述的计算机,其特征在于,所述操作系统还用于配置内存数据的迁移的启动策略,或者接收用户发送的内存数据的迁移的启动指令,所述操作系统根据所述启动策略或启动指令生成所述第一触发指令。

    10.  根据权利要求9所述的计算机,其特征在于,所述启动策略或者启动指令还包括所述源内存卡的标识;
    所述操作系统还用于将所述源内存卡的标识记录到存储???;
    所述操作系统具体用于查询所述存储???,确定所述源内存卡的标识。

    11.  根据权利要求7-10任一项所述的计算机,其特征在于,所述操作系统具体用于根据预先配置的所述备份内存卡的标识,确定所述备份内存卡。

    12.  根据权利要求1-11任一项所述的计算机,其特征在于,所述操作系统还用于确定所述备份内存卡是否满足迁移条件,如果满足所述迁移条件,执行所述指示所述源内存卡的内存控制器进行内存数据的迁移的操作;
    所述迁移条件包括但不限于以下条件之一或其任意组合:所述备份内存卡完成初始化、所述备份板的内存容量大于或等于所述源内存卡的内存容量。

    13.  根据权利要求12所述的计算机,其特征在于,所述计算机还包括基本输入输出系统;
    所述基本输入输出系统用于根据所述操作系统的指示,对所述备份内存卡进行初始化;
    其中,所述初始化避免为所述备份内存卡分配系统地址。

    14.  根据权利要求1-13任一项所述的计算机,其特征在于,所述操作系统还用于指示所述源内存卡的内存控制器检测所述源内存卡中的非错误数据;
    所述源内存卡的内存控制器还用于根据所述操作系统的检测指示,确定所述源内存卡中的非错误数据,并根据检测结果打上检测标记;
    所述操作系统具体用于指示所述源内存卡的内存控制器根据所述检测标记对所述非错误数据进行迁移。

    15.  根据权利要求1-14任一项所述的计算机,其特征在于,所述操作系统还用于在确定所述源内存卡的内存数据全部迁移到所述备份内存卡之后,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。

    16.  一种内存数据的迁移方法,其特征在于,用于迁移计算机中内存数据,所述方法包括:
    所述计算机的操作系统获取第一触发指令,所述第一触发指令用于指示所述 操作系统执行内存数据的迁移;
    所述操作系统中止当前正在执行的任务以启动内存数据的迁移;
    所述操作系统确定待迁移内存数据的源内存卡;
    所述操作系统为所述源内存卡确定备份内存卡;
    所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示将所述源内存卡的内存数据迁移到所述备份内存卡。

    17.  根据权利要求16所述的方法,其特征在于,所述方法还包括:
    所述操作系统将所述源内存卡和所述备份内存卡设置为镜像模式;
    所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述处理器的指示读取所述源内存卡的内存数据,将所读取的所述源内存卡的内存数据写入到所述备份内存卡,包括:
    所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示读取所述源内存卡的内存数据,将所读取的所述源内存卡的内存数据写入到所述备份内存卡,包括:
    所述操作系统向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据;
    所述源内存卡的内存控制器根据所述操作系统的数据读指令读取所述源内存卡的内存数据;
    所述操作系统向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡;
    所述源内存卡的内存控制器接收所述操作系统发送的所述数据写指令,根据所述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存数据发送给所述备份内存卡的内存控制器,以使得所述备份内存卡的内存控制器将接收到的所述源内存卡的内存数据写入到所述备份内存卡。

    18.  根据权利要求16或17所述的方法,其特征在于,在所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移之前,还包括:
    所述操作系统获取分次迁移策略;
    则,所述操作系统根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移。

    19.  根据权利要求18所述的方法,其特征在于,
    所述操作系统根据所述分次迁移策略指示所述源内存卡的内存控制器分多次进行内存数据的迁移,包括:
    a)所述操作系统确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,所述操作系统确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;
    b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,所述操作系统中止执行内存数据的迁移;
    c)所述操作系统接收第二触发指令,所述第二触发指令用于指示所述操作系统继续进行内存数据的迁移;
    d)所述操作系统返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。

    20.  根据权利要求19所述的方法,所述分次迁移策略包括每次迁移指定的数据量或每次迁移的时长;
    则所述操作系统根据所述每次迁移指定的数据量确定所述当次迁移的数据量,或根据每次迁移的时长确定所述当次迁移的时长。

    21.  根据权利要求20所述的方法,其特征在于,所述分次迁移策略还包括每次迁移的间隔时长或处理器的运行状态,所述第二触发指令根据所述每次迁移的间隔时长或处理器的运行状态被触发。

    22.  根据权利要求16-21任一项所述的方法,其特征在于,还包括:
    所述源内存卡的内存控制器对所述源内存卡的错误数据进行监控,若所述错误数据的数量超过阈值,所述源内存卡的内存控制器触发所述第一触发指令;
    则,所述操作系统接收所述源内存卡的内存控制器触发的所述第一触发指令。

    23.  根据权利要求22所述的方法,其特征在于,还包括:
    所述源内存卡的内存控制器在自身的寄存器中记录所述源内存卡的错误数据 的数量超过阈值;
    所述操作系统确定所述源内存卡包括:
    所述操作系统查询所述源内存卡的内存控制器的寄存器,确定所述源内存卡。

    24.  根据权利要求16-21任一项所述的方法,其特征在于,所述操作系统获取第一触发指令包括:
    所述操作系统根据预先配置内存数据的迁移的启动策略或用户发送的内存数据的迁移的启动指令,生成所述第一触发指令。

    25.  根据权利要求24所述的方法,其特征在于,还包括:
    所述操作系统获取并记录所述所述启动策略或者启动指令中包含的所述源内存卡的标识;
    所述操作系统确定源内存卡包括:
    所述操作系统根据记录的所述源内存卡的标识,确定所述源内存卡。

    26.  根据权利要求22-25任一项所述的方法,其特征在于,还包括:
    记录预先配置的所述备份内存卡的标识;
    所述操作系统确定备份内存卡包括:
    所述操作系统根据记录的所述备份内存卡的标识,确定所述备份内存卡。

    27.  根据权利要求16-26任一项所述的方法,其特征在于,所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移之前,还包括:
    所述操作系统确定所述备份内存卡是否满足迁移条件,如果满足所述迁移条件,执行所述指示所述源内存卡的内存控制器进行内存数据的迁移的步骤;
    所述迁移条件包括但不限于以下条件之一或其任意组合:所述备份内存卡完成初始化、所述备份板的内存容量大于或等于所述源内存卡的内存容量。

    28.  根据权利要求27所述的方法,其特征在于,若所述备份内存卡未完成初始化,所述方法还包括:
    所述操作系统指示基本输入输出系统对所述备份内存卡进行初始化,其中,所述初始化避免为所述备份内存卡分配系统地址。

    29.  根据权利要求16-28任一项所述的方法,其特征在于,在所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移之前,还包括:
    所述操作系统指示所述源内存卡的内存控制器检测所述源内存卡中的非错误数据并进行标记;
    则,所述操作系统指示所述源内存卡的内存控制器根据检测标记对所述非错误数据进行迁移。

    30.  根据权利要求16-29任一项所述的方法,其特征在于,在所述源内存卡的内存数据全部迁移到所述备份内存卡之后,还包括:
    所述操作系统将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。

    31.  一种内存数据的迁移装置,其特征在于,用于迁移计算机中内存数据,所述装置包括:
    获取单元,用于获取第一触发指令,所述第一触发指令用于指示操作系统执行内存数据的迁移;
    确定单元,用于在所述获取单元获取所述第一触发指令之后,中止当次正在执行的任务以启动内存数据的迁移,确定待迁移内存数据的源内存卡,以及为所述源内存卡确定备份内存卡;
    迁移单元,用于指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示将所述源内存卡的内存数据迁移到所述备份内存卡。

    32.  根据权利要求31所述的装置,其特征在于,还包括:
    镜像单元,用于将所述源内存卡和所述备份内存卡设置为镜像模式;
    所述迁移单元具体用于向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,以使得所述源内存卡的内存控制器根据所述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存数据写入到所述备份内存卡源内存卡的内存数据。

    33.  根据权利要求31或32所述的装置,其特征在于,在所述迁移单元具体用于获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制 器分多次进行内存数据的迁移。

    34.  根据权利要求33所述的装置,其特征在于,所述迁移单元具体用于循环执行如下操作a)-d),直至将所述源内存卡的内存数据全部迁移到所述备份内存卡,所述操作a)-d)包括:
    a)确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;
    b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,中止执行内存数据的迁移;
    c)接收第二触发指令,所述第二触发指令用于指示所述操作系统继续进行内存数据的迁移;
    d)返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。

    35.  根据权利要求31-34任一项所述的装置,其特征在于,所述迁移单元还用于确定所述源内存卡的内存控制器完成所述源内存卡的内存数据迁移之后,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。

    36.  一种计算机可读介质,其特征在于,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,所述计算机执行如权利要求16-30中任一所述的内存数据的迁移方法。

    说明书

    说明书一种内存数据的迁移方法、计算机和装置
    技术领域
    本发明涉及计算机技术,特别是一种内存数据的迁移方法、计算机和装置。
    背景技术
    内存(Memory)也被称为主存储器,是计算机中重要的部件之一。计算机中所有程序的运行都是在内存中进行,因此内存的性能对计算机的影响非常大。内存能够用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,处理器就会把需要运算的数据调到内存中进行运算,当运算完成后处理器再将结果传送出来,内存的运行也决定了计算机的稳定运行。
    在X86架构下,服务器支持的内存数量越来越多,最新的Intel E7 V2处理器,单颗处理器最多可以支持2块内存板,每块内存板最多可以支持12根内存条,在一个8P系统中内存条数量可以达到192根。然而,目前系统中内存的故障率能够高达0.1%,内存故障不仅可能引起系统运行不稳定,还可能引起系统的死机。
    现有技术无法实现计算机中内存数据的迁移,当系统中出现内存故障时,无法在计算机正常运行的情况下实现故障内存板或者故障内存条中的数据的迁移,因此无法对故障内存进行在线维护,只能先对该计算机下电后才能更换故障内存板或故障内存条。
    发明内容
    本发明实施例提供了一种内存数据的迁移方法、计算机和装置,能够在计算机不下电的情况下进行内存数据的迁移。
    第一方面,本发明实施例提供了一种计算机,该计算机包括:
    处理器;
    主存储器,用于加载所述计算机的操作系统的指令,所述主存储器包括一个或多个内存卡;
    内存控制器,每个内存卡配置对应的内存控制器;
    所述操作系统用于获取第一触发指令,根据所述第一触发指令中止当前正在 执行的任务,确定待迁移内存数据的源内存卡,为所述源内存卡确定备份内存卡,指示所述源内存卡的内存控制器进行内存数据的迁移;
    所述源内存卡的内存控制器用于根据所述操作系统的指示,将所述源内存卡的内存数据迁移到所述备份内存卡。
    结合第一方面,在第一种可能的实现方式中,所述操作系统具体用于将所述源内存卡和所述备份内存卡设置为镜像模式,向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡;所述源内存卡的内存控制器具体用于根据所述操作系统的数据读指令读取所述源内存卡的内存数据,接收所述操作系统发送的所述数据写指令,根据所述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存数据发送给所述备份内存卡的内存控制器;所述备份内存卡的内存控制器用于将接收到的所述源内存卡的内存数据写入到所述备份内存卡。
    结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述操作系统具体用于获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移。
    结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述操作系统具体用于根据所述分次迁移策略循环执行如下操作a)-d),直至将所述源内存卡的内存数据全部迁移到所述备份内存卡,所述操作a)-d)包括:a)确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,中止执行内存数据的迁移;c)接收第二触发指令,所述第二触发指令用于指示所述操作系统继续进行内存数据的迁移;d)返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。
    结合第一方面或者第一方面的第一种可能的实现方式或者第二种可能的实现方式或者第三种可能的实现方式,在第四中可能的实现方式中,所述操作系统还 用于在确定所述源内存卡的内存数据全部迁移到所述备份内存卡之后,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。
    第二方面,本发明实施例提供了一种内存数据的迁移方法,用于迁移计算机中内存数据,该方法包括:
    所述计算机的操作系统获取第一触发指令,所述第一触发指令用于指示所述操作系统执行内存数据的迁移;
    所述操作系统中止当前正在执行的任务以启动内存数据的迁移;
    所述操作系统确定待迁移内存数据的源内存卡;
    所述操作系统为所述源内存卡确定备份内存卡;
    所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示将所述源内存卡的内存数据迁移到所述备份内存卡。
    结合第二方面,在第一种可能的实现方式中,该方法还包括:所述操作系统将所述源内存卡和所述备份内存卡设置为镜像模式;所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述处理器的指示读取所述源内存卡的内存数据,将所读取的所述源内存卡的内存数据写入到所述备份内存卡,包括:所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示读取所述源内存卡的内存数据,将所读取的所述源内存卡的内存数据写入到所述备份内存卡,包括:
    所述操作系统向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据;
    所述源内存卡的内存控制器根据所述操作系统的数据读指令读取所述源内存卡的内存数据;
    所述操作系统向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡;
    所述源内存卡的内存控制器接收所述操作系统发送的所述数据写指令,根据所述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内 存数据发送给所述备份内存卡的内存控制器,以使得所述备份内存卡的内存控制器将接收到的所述源内存卡的内存数据写入到所述备份内存卡。
    结合第二方面的第一种可能的实现方式,在第二可能的实现方式中,在所述操作系统指示所述源内存卡的内存控制器进行内存数据的迁移之前,还包括:所述操作系统获取分次迁移策略;则,所述操作系统根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移。
    结合第二方面的第二种可能的实现方式,在第三可能的实现方式中,所述操作系统根据所述分次迁移策略指示所述源内存卡的内存控制器分多次进行内存数据的迁移,包括:a)所述操作系统确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,所述操作系统确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,所述操作系统中止执行内存数据的迁移;c)所述操作系统接收第二触发指令,所述第二触发指令用于指示所述操作系统继续进行内存数据的迁移;d)所述操作系统返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。
    结合第二方面或者第二方面的第一种可能的实现方式或者第二种可能的实现方式或者第三种可能的实现方式,在第四种可能的实现方式中,在所述源内存卡的内存数据全部迁移到所述备份内存卡之后,还包括:所述操作系统将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。
    第三方面,本发明实施例提供了一种内存数据的迁移装置,用于迁移计算机中内存数据,所述装置包括:
    获取单元,用于获取第一触发指令,所述第一触发指令用于指示操作系统执行内存数据的迁移;
    确定单元,用于在所述获取单元获取所述第一触发指令之后,中止当前正在执行的任务以启动内存数据的迁移,确定待迁移内存数据的源内存卡,以及为所述源内存卡确定备份内存卡;
    迁移单元,用于指示所述源内存卡的内存控制器进行内存数据的迁移,以使 得所述源内存卡的内存控制器根据所述操作系统的指示将所述源内存卡的内存数据迁移到所述备份内存卡。
    结合第三方面,在第一种可能的实现方式中,该装置还包括:镜像单元,用于将所述源内存卡和所述备份内存卡设置为镜像模式;所述迁移单元具体用于向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,以及向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,以使得所述源内存卡的内存控制器根据所述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存数据写入到所述备份内存卡源内存卡的内存数据。
    结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述迁移单元具体用于获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移。
    结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述迁移单元具体用于循环执行如下操作a)-d),直至将所述源内存卡的内存数据全部迁移到所述备份内存卡,所述操作a)-d)包括:a)确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,中止执行内存数据的迁移;c)接收第二触发指令,所述第二触发指令用于指示所述操作系统继续进行内存数据的迁移;d)返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。
    结合第三方面或者第三方面的第一种可能的实现方式或者第二种可能的实现方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述迁移单元还用于确定所述源内存卡的内存控制器完成所述源内存卡的内存数据迁移之后,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。
    在本发明实施例中,操作系统能够在接收到第一触发指令后中止当前正在执行的任务以启动内存数据的迁移,确定待迁移内存数据的源内存卡,为所述源内 存卡确定备份内存卡,指示所述源内存卡的内存控制器读取所述源内存卡的内存数据并将所读取的所述源内存卡的内存数据写入到所述备份内存卡,从而在计算机不下电的情况下,能够对所述源内存卡的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。
    附图说明
    为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    图1为本发明实施例提供的计算机的系统框图;
    图2为本发明实施例提供的内存数据的迁移方法流程图;
    图3为本发明实施例提供的又一种内存数据的迁移方法流程图;
    图4为本发明实施例提供的又一种内存数据的迁移方法流程图;
    图5为本发明实施例提供的内存数据迁移装置的组成图;
    图6为本发明实施例提供的又一种内存数据迁移装置的组成图。
    具体实施方式
    本发明实施例提供了一种内存数据的迁移方法、计算机和系统,能够在计算机正常运行的情况下进行内存数据的迁移。
    一种实现内存数据迁移的计算机
    如图1所示,为实施本发明实施例的计算机的一个示例,该计算机包括主存储器101、内存控制器102、处理器105、基本输入输出系统(Basic Input Output System,BIOS)104和硬盘(图1未示出)。所述主存储器101包括至少一个内存卡,图1中以3个内存卡为例,内存卡101-A、101-B、101-C。所述内存控制器102用于控制所述主存储器101,可以为所述主存储器101的每个内存卡配置对应的内存控制器102,例如内存卡101-A的内存控制器102-A,内存卡101-B的内存控制器102-B,内存卡101-C的内存控制器102-C。本实施例中的内存卡具 体可以是内存板或者内存条等任何可以作为内存的存储介质,一个内存卡可以指一根内存条或一个内存板,也可以指多根内存条的集合或多个内存板的集合。每个内存卡都配置有对应的内存控制器,内存卡和内存控制器的对应关系可以是一对一,也可以是一对多或者多对一,图1只是本发明实施示例之一。
    在所述计算机系统开机后,所述主存储器101可以在计算机开机启动时,加载所述BIOS104中的指令以及存储在硬盘中的计算机的操作系统(Operating System,OS)103的指令,所述处理器105可以执行所述BIOS 104的指令或所述计算机的操作系统(Operating System,OS)103的指令,例如所述处理器105可以执行BIOS104的指令对所述计算机中的设备进行初始化,以及执行所述OS103的指令对所述内存卡进行读写操作,其中,所述处理器105主要指CPU内核部分,可以是一个CPU内核,也可以是多个CPU内核的集合,在本发明实施例中,所述处理器105是多个CPU内核的集合。所述BIOS104可以是一个处理芯片,在该处理芯片内注册了多个处理指令,所述处理器105可以执行这些处理指令。
    本实施例中为了实现内存数据的迁移,需要在计算机中配置备份内存卡,以作为源内存卡的内存数据的迁移的目标内存卡,另外,待进行内存数据迁移的内存卡在本实施例中被称为源内存卡。在图1所示的实施例中,内存卡101-A和101-B可以是源内存卡,内存卡101-C是本发明实施例配置的备份内存卡。本实施例中,以为计算机指定一个备份内存卡101-C为例,实际上,也可以为计算机指定多个备份内存卡。本发明实施例所说的内存数据的迁移的目的是使得备份内存卡能够获得源内存卡中的内存数据,为了实现上述迁移的目的,在具体实现中,可以采用内存数据的复制、拷贝或者搬迁等方式,只要实现了备份内存卡能够获得源内存卡中的内存数据的迁移目的,上述各种具体实现方式都在本发明实施例的“迁移”范畴之类。
    本发明实施例对OS 103进行功能改进来实现不下电计算机,进行内存数据的迁移,举例来说,可以使得改进后的OS 103可以获取第一触发指令,根据所述第一触发指令中止当前正在执行的任务,启动内存数据的迁移,例如确定待迁移内存数据的源内存卡,为所述源内存卡确定备份内存卡,指示所述源内存卡的内存控制器进行内存数据的迁移,使得该源内存卡的内存控制器能够根据所述OS 103 的指示,将所述源内存卡的内存数据迁移到所述备份内存卡。
    本发明实施例的计算机的各组成可以执行如下操作:
    所述OS 103用于获取第一触发指令,根据所述第一触发指令中止当前正在执行的任务以启动内存数据的迁移,确定待迁移数据的内存卡,例如所述源内存卡101-A,为所述源内存卡确定备份内存卡,例如所述源内存卡101-A确定备份内存卡101-C,以及指示所述源内存卡的内存控制器102-A进行内存数据的迁移。
    所述源内存卡的内存控制器102-A用于根据所述OS 103的指示,读取所述源内存卡101-A的内存数据,将所读取的所述源内存卡101-A的内存数据写入到所述备份内存卡101-C。
    在本发明实施例中,由于所述OS 103能够在获取到第一触发指令后中止当前正在执行的任务,执行内存数据的迁移,确定待迁移内存数据的源内存卡101-A,为所述源内存卡确定备份内存卡101-C,指示所述源内存卡的内存控制器102-A将所述源内存卡101-A的内存数据写入所述备份内存卡101-C,在计算机不下电的情况下,能够对所述源内存卡101-A的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。
    下面对本发明实施例各组成的功能进行展开进行详细地介绍。
    关于配置备份内存卡
    本实施例中,为了保证OS 103顺利的进行内存数据的迁移,需要要计算机中配置备份内存卡,所述备份内存卡作为待迁移的内存数据的目标设备,与计算机中的其他内存卡具有一定的不同之处,例如在内存数据迁移完成之前对OS 103不可见,即OS 103无法对其进行读写操作;所述处理器105可以执行BIOS 104的指令对所述备份内存卡101-C进行特殊初始化,使得所述备份内存卡101-C准备就绪并可以正常使用,但是所述初始化过程避免为所述备份内存卡101-C分配系统地址,从而使得所述OS 103无法对所述备份内存卡101-C进行任何读写操作,这样可以保证将源内存卡的内存数据完整迁移到备份卡,保证迁移过程中已经迁移的数据不会被覆盖上其他的数据,使得迁移的内存数据受到破坏。
    配置所述备份内存卡可以包括:
    1、指定并记录备份内存卡的标识??梢允怯捎没Ы阜菽诖婵ú迦胗布宀壑?,将该备份内存卡的标识发送给OS 103,OS103可以获取指定的备份内存卡的标识并记录在存储??橹?,此种情况下,即指定在计算机中已经硬件存在内存卡为备份内存卡;也可以是用户并不将备份内存卡插入硬件插槽,而是指定备份内存卡后续将要插入的硬件插槽的槽位号,将指定的槽位号作为备份内存卡的标识进行记录,此种情况下,即指定在计算机中还没有硬件存在内存卡为备份内存卡。
    指定并记录备份内存卡的标识之后,OS 103后续可以查询记录的所述内存内存卡的标识,以确定备份内存卡。
    2、对备份内存卡执行特殊的初始化。在指定了备份内存卡之后,可以对该备份内存卡进行特殊的初始化,以使得该备份内存卡准备就绪,计算机可以将源内存卡的内存数据写入所述备份内存卡。对备份内存卡初始化,需要该内存卡已经插入硬件插槽,而实际上,何时将备份内存卡插入硬件插槽可以非常灵活,可以是指定备份内存卡之前即插入,也可以是在指定备份内存卡之后,以及执行内存数据的迁移之前的任何时间。具体来说初始化的场景可以分为三种,一种是内存数据的迁移启动之前,由用户按下备份单元上的按钮,该按钮产生初始化中断,使得计算机执行BIOS104对该备份内存卡的特殊初始化,一种是在启动内存数据迁移之前,计算机开机启动时,用户通过所述BIOS 104的起始菜单,指定系统中的备份内存卡101-C,使得所述BIOS104重新启动所述计算机,对所述备份内存卡101-C进行特殊的初始化操作,一种是内存数据的迁移启动之后,如果BIOS检测到备份内存卡还没有完成初始化,可以临时启动对备份内存卡的初始化。
    其中,对所述备份内存卡进行特殊初始化是指对所述备份内存卡进行配置,使得所述备份内存卡准备就绪并可以正常使用,但是对OS103不可见;所述初始化的过程包含正常初始化的各种行为,除了在初始化过程中避免为该备份内存卡分配系统地址,例如,对所述备份内存卡进行初始化可以包括为所述备份内存卡供电,配置相关性能等参数,配置所述备份内存卡与计算机中的处理器之间的通信连接,检测所述备份内存卡是否能够进行正常的读写操作等。在对所述备份内存卡进行初始化时,避免为所述备份内存卡分配系统地址,从而所述OS103无法 获取所述备份内存卡的系统地址,不能对所述备份内存卡进行任何读写操作,即所述备份内存卡虽然已经准备就绪,但对所述OS不可见,此时所述OS不能使用所述备份内存卡。
    关于触发内存数据迁移的触发
    在本发明实施例中,内存数据的迁移的启动是根据源内存卡的故障情况或者用户的需求而触发并启动的,也就是说,计算机开机启动后,正常执行OS103的指令,根据接收或生成的内存数据迁移的触发指令中止正在执行的任务,启动内存数据的迁移。所述OS103在获取到所述内存数据迁移的触发指令之后,可以是立即中止当前正在执行的任务,执行内存数据的迁移,还可以是在计算机空闲时中止当前正在执行的任务,执行内存数据的迁移,例如,用户可以对OS103进行预先配置,将所述第一触发指令配置为优先级别最高的处理指令,使得所述OS103在获取到所述第一触发指令之后,立即终止当前正在执行的任务,执行内存数据的迁移,保障及时对故障内存卡的内存数据进行迁移。在本发明实施例中,所述OS 103在获取到所述内存数据迁移的触发指令时,才进行内存数据的迁移,即针对用户指定的源内存卡或者有明确故障的源内存卡进行内存数据的迁移,不需要预先指定固定的源内存卡,也不需要预先配置源内存卡和备份内存卡的镜像关系,因此,本发明实施例针对明确地源内存卡实现内存数据的迁移的触发,即保证了故障的及时处理,又节约了计算机的资源,保证了计算机的高效率。
    本发明实施例中内存数据迁移的触发指令用来指示OS 103中止正在执行的任务以启动内存数据的迁移。由于本发明实施例可以实现内存数据的一次迁移,也可以实现内存数据的多次迁移,因此,在本发明实施例中内存数据迁移的触发指令可以包括第一触发指令和第二触发指令,将启动内存数据的第一次迁移的内存数据迁移的触发指令称为第一触发指令,将触发内存数据的后续迁移的内存数据迁移的触发指令称为第二触发指令。
    在本发明实施例中,所述第一触发指令用于指示所述OS 103执行内存数据的迁移,该第一触发指令的触发可以比较灵活,所述第一触发指令的触发可以比较灵活,例如可以根据用户的指示生成所述第一触发指令,还可以由所述源内存卡的内存控制器102-A触发所述第一触发指令。具体地,例如,
    (1)所述源内存卡的内存控制器102-A还可以对所述源内存卡的错误数据进行监控,若所述错误数据超过阈值,触发所述第一触发指令;所述OS 103根据所述源内存卡的内存控制器102-A触发的所述第一触发指令,确定错误数据超过阈值的内存卡为所述源内存卡101-A,并根据预先获取的所述备份内存卡的标识,确定所述备份内存卡101-C。
    (2)所述第一触发指令还可以由OS根据用户发送的内存数据的迁移的启动指令来生成,也可以由OS根据用户在所述OS中预置的内存数据的迁移的启动策略来产生。例如用户直接向OS发送内存数据的迁移的启动指令,OS根据用户的启动指令产生所述第一触发指令,或者例如用户预先在OS中配置的按照时间或者处理器的运行状态来启动内存数据的迁移的启动策略,在该启动策略被满足时,OS产生所述第一触发指令。所述OS根据所述第一触发指令,中止正在执行的任务,启动内存数据的迁移指令。
    关于分多次实现内存数据的迁移
    本发明实施例的一个较优的实施例中,将分多次进行内存数据的迁移。由于在进行内存数据迁移的过程中,所述OS 103中止了当前正在执行的任务,当内存数据迁移完毕后,所述OS 103才能继续执行中止的任务或其它任务,如果待迁移的数据过多,则所述OS 103将长时间中止系统的业务,影响了计算机的正常运行,因此,可以分多次将所述源内存卡的内存数据迁移到所述备份内存卡,在完成一次内存数据迁移之后,所述OS 103可以中止执行内存数据的迁移,继续执行中止的任务或其它任务,直到进行下一次内存数据迁移时,所述OS 103再中止当前正在执行的任务,继续执行内存数据的迁移,避免了计算机业务的长时间中断,保证了计算机的正常运行。
    针对上述分多次进行内存数据迁移的方式,在本发明的又一实施例中,可以对所述OS 103进行进一步改进,所述OS 103还可以获取分次迁移策略,根据所述分次迁移策略指示所述源内存卡的内存控制器102-A分多次进行内存数据的迁移,所述分次迁移策略可以由用户配置,例如用户可以根据需求指定每次迁移的数据量或者每次迁移的时长,所述OS 103用于根据所述指定的每次迁移的数据量或者每次迁移的时长,执行如下操作a)-d),直到将所述源内存卡101-A的内存数 据全部迁移到所述备份内存卡101-C,所述操作a)-d)包括:
    a)根据所述每次迁移指定的数据量确定当次迁移的数据量,指示所述源内存卡的内存控制器102-A将所述当次迁移的数据量迁移到所述备份内存卡101-C,或者,根据每次迁移的时长确定所述当次迁移的时长确定当次迁移的时长,指示所述源内存卡的内存控制器102-A在所述当次迁移的时长内进行内存数据的迁移,或者根据处理器的运行状态,指示所述源内存卡的内存控制器102-A在处理器的运行状态为空闲的时间段内进行内存数据的迁移,其中所述处理器的运行状态为空闲状态可以是处理器的占用率小于设定阈值;
    b)在确定所述源内存卡的内存控制器102-A完成所述当次迁移之后,所述OS中止执行内存数据的迁移;
    c)接收第二触发指令,所述第二触发指令用于指示所述OS继续进行内存数据的迁移;
    d)返回执行步骤a)。
    所述OS 103通过上述操作a)-d),实现了分多次将所述源内存卡101-A的数据迁移到了所述备份内存卡101-C。
    其中,操作c)中的第二触发指令,不仅可以由用户手动触发,还可以是根据预先配置的第二触发指令的触发条件来触发,例如可以在所述迁移策略中配置所述第二触发指令的触发条件,所述第二触发指令的触发条件可以包括每次迁移的间隔时长或者处理器的运行状态,所述OS 103可以设置内存数据迁移定时器,所述内存数据迁移定时器根据每次迁移的间隔时长,触发所述第二触发指令,或者对所述处理器的运行状态进行实时监控,当所述中央处理的运行状态为空闲时触发所述第二触发指令。
    在本发明实施例中,所述OS 103可以根据所述分次迁移策略,指示所述源内存卡的内存控制器102-A分多次将所述源内存卡的内存数据迁移到所述备份内存卡,使得在进行内存数据迁移的过程中,所述OS 103能够根据需求中止和恢复执行的任务,使得所述OS能够及时处理计算机中的业务,避免在进行大量内存数据迁移时导致的系统业务的长时间中断,保障了该计算机的正常运行。
    关于将所述源内存卡和所述备份内存卡设置为镜像模式
    在进行内存数据的迁移之前,所述OS 103还可以将所述源内存卡和所述备份内存卡设置为镜像模式,使得所述源内存卡的内存控制102-A可以根据所述OS103的指示以及所述镜像???,将所述源内存卡的内存数据写入所述备份内存卡。
    具体地,在确定所述源内存卡101-A和所述备份内存卡101-C之后,所述OS103可以在所述源内存卡的内存控制器102-A中配置所述备份内存卡的标识,在所述备份内存卡的内存控制器102-C中配置所述源内存卡的标识,以使得所述源内存卡101-A与所述备份内存卡101-C之间设置为镜像模式。
    所述OS 103还可以向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器102-A读取所述源内存卡101A的数据,接收所述源内存卡的内存控制器102-A发送的所述数据读指令的响应消息,向所述源内存卡的内存控制器102-A发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,从而所述源内存卡的内存控制器102-A可以根据所述OS 103发送的数据读指令,读取所述源内存卡101-A的数据,根据所述OS 103发送的数据写指令将所述读取的数据写回所述源内存卡101-A,以及根据所述源内存卡的内存控制器102-A中配置的所述备份内存卡的标识,将所述读取的数据写入所述备份内存卡101-C,从而实现了所述源内存卡101-A的数据迁移到所述备份内存卡101-C。
    通过上述方式,所述OS 103可以将所述源内存卡101-A的所有数据迁移到所述备份内存卡101-C,而不是只迁移在启动内存数据迁移之后,对所述源内存卡101-A进行写操作的新数据,保证了内存数据的完整迁移。并且,由于源内存卡和备份内存卡设置成了镜像模式,在所述OS继续执行中止的任务或者其它任务时,所述OS对源内存卡的任何写操作都会同时写到备份内存卡上,保证了在备份内存卡上的已经迁移的内存数据的准确性。
    关于对非错误数据进行迁移
    当内存卡中的错误数据过多时,可能导致内存卡故障甚至引起计算机的重启,因此,在进行内存数据迁移的过程中,可以只对非错误数据进行迁移。
    所述OS 103还可以指示所述源内存卡的内存控制器102-A确定所述源内存卡101-A中的非错误数据,并根据所述源内存卡的内存控制器102-A确定的所述非 错误数据的标记,指示所述源内存卡的内存控制器102-A对所述非错误数据进行迁移,避免将所述源内存卡101-A中的错误数据迁移到所述备份内存卡101-C而可能导致的计算机重启或可能导致的所述备份内存卡101-C故障。
    所述源内存卡的内存控制器102-A可以根据所述OS 103的指示,确定所述源内存卡101-A中的非错误数据,并标记所述非错误数据,例如记录所述非错误数据或者错误数据的系统地址,使得所述OS103可以根据所述非错误数据或者错误数据的系统地址,指示所述源内存卡的内存控制器对所述非错误数据进行迁移,避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重启。
    关于迁移条件
    为了保证内存数据迁移的顺利进行,在进行内存数据迁移之前,所述OS 103可以检查所述备份内存卡101-C是否满足迁移条件,即是否可以作为所述源内存卡101-A数据迁移数据的目标设备,避免由于所述备份内存卡101-C由于未完成初始化或者内存容量不够等情况而导致的数据迁移失败。
    具体地,所述BIOS 104还可以在进行内存数据迁移之前,确定所述备份内存卡101-C是否完成特殊的初始化,若所述备份内存卡101-C完成特殊的初始化,则表明所述备份内存卡101-C可以正常使用,从而将所述源内存卡101-A和所述备份内存卡101-C设置为镜像模式,以便后续进行内存数据的迁移。
    所述OS 103还可以确定所述备份板的内存容量是否大于所述源内存卡101-A的内存容量,若所述备份板的内存容量是大于所述源内存卡101-A的内存容量,则确定满足所述迁移条件,可以后续将所述源内存卡的内存数据迁移到所述备份内存卡。
    所述OS 103还可以确定所述源内存卡101-A与所述备份内存卡101-C是否属于同一个处理器控制,如果不属于,表示可以将所述源内存卡101-A的数据迁移到所述备份内存卡,从而将所述源内存卡106和所述备份内存卡107设置为镜像模式,以便后续进行内存数据的迁移。
    所述OS 103可以从所述BIOS 104获取所述备份内存卡是否完成初始化,所述备份内存卡的内存容量等信息,从而判断所述备份内存卡是否满足迁移条件。
    关于内存数据迁移完成之后的备份内存卡与源内存卡的替换
    当所述源内存卡的内存控制器102-A将所述源内存卡101-A的数据全部迁移到所述备份内存卡101-C之后,所述OS 103还可以建立所述源内存卡101-A的系统地址与所述备份内存卡101-C的映射关系,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡,使得所述备份内存卡101-C可以替代所述源内存卡101-A,接管所述OS 103对所述源内存卡101-A的所有读写操作。
    在所述备份内存卡已经替换了所述源内存卡之后,所述OS 103还可以对所述源内存卡101-A执行下电操作,例如,对所述源内存卡的内存控制器102-A的寄存器进行配置,从而对所述源内存卡101-A下电,使得在所述计算机在不下电的情况下,可以移除或者更换所述源内存卡101-A,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。
    一种内存数据的迁移方法
    结合图1所示的计算机,本发明实施例提供了一种内存数据的迁移方法,如图2所示,用于迁移计算机中内存数据,所述方法包括:
    S201:所述计算机的OS获取第一触发指令,所述第一触发指令用于指示所述OS执行内存数据的迁移
    所述第一触发指令可以是由源内存卡的内存控制器触发的,例如,当源内存卡的内存控制器监控到某一个源内存卡出现多次错误,已经达到预设阈值,可以通过该第一触发指令指示OS对所述出现多次错误的源内存卡启动内存数据的迁移;该第一触发指令可以是由所述OS根据用户的指示生成的,例如,当用户发现某个内存卡性能不稳定或是其它需要更换的情况,可以向所述OS发送的内存数据的迁移的启动指令,以使得所述OS根据所述启动指令生成所述第一触发指令执行内存数据的迁移,又例如,用户可以在操作系统中预先配置内存数据的迁移的启动策略,当所述启动策略被满足时,所述OS生成所述第一触发指令。
    S202:所述OS中止当前正在执行的任务以启动内存数据的迁移。
    所述OS在接收到所述第一触发指令后,可以中止当前正在执行的任务,进行内存数据的迁移。
    S203:所述OS确定待迁移内存数据的源内存卡。
    在启动内存数据的迁移之后,所述OS需要确定待迁移内存数据的源内存卡,所述OS可以通过查询计算机的内存控制器,确定触发所述第一触发指令的内存控制器对应的内存卡为源内存卡,或者根据用户的指示确定需要进行迁移内存数据的内存卡为源内存卡。
    S204:所述OS为所述源内存卡确定备份内存卡。
    所述OS还需要为所述源内存卡确定备份内存卡,以将所述源内存卡的内存数据迁移到所述备份内存卡。所述备份内存卡可以是暂时没有分配系统地址的内存卡,对所述OS不可见,所述OS暂时不会对所述备份内存卡进行写操作。
    所述备份内存卡可以是预先配置的,也可以临时插入并指配的,具体实现后续实施例会进行详细的说明。
    S205:所述OS指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述操作系统的指示将所述源内存卡的内存数据迁移到所述备份内存卡。
    在确定了所述源内存卡和所述备份内存卡之后,所述OS可以指示所述源内存卡的内存控制器开始进行内存数据的迁移,例如,所述OS可以指示所述源内存卡的内存控制器读取该源内存卡的内存数据,然后指示所述源内存卡的内存控制器将读取的源内存卡的内存数据写入所述备份内存卡,从而实现了内存数据的迁移,所述OS通过上述读取和写入所述源内存卡的内存数据的方式,可以将所述源内存卡的所有内存数据迁移到所述备份内存卡,而不是仅仅只迁移启动内存数据迁移后,源内存卡中新写入的数据。
    在本发明实施例中,所述OS可以接收第一触发指令,确定待迁移内存数据的源内存卡,为所述源内存卡确定备份内存卡从而可以指示所述源内存卡的内存控制器将所述源内存卡的内存数据写入所述备份内存卡,在计算机不下电的情况下,能够对所述源内存卡的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。此外,在本发明实施例中,所述OS在有内存数据迁移的需要时,即接收到所述第一触发指令时,才进行内存数据的迁移,既保证了内存卡故障的及时处理, 又节约了系统资源。
    方法具体实施例一
    结合图1所示的计算机,本发明实施例提供了一种内存数据的迁移方法,如图3所示,用于迁移计算机中内存数据,例如,能够将源内存卡的内存数据迁移到备份内存卡,所述源内存卡为对OS 103可见的内存卡,即OS 103可以进行读写操作的内存卡,也就是可能产生故障需要迁移数据的内存卡,如本实施例中的内存卡101-A和102-B,所述备份内存卡为对OS 103不可见的内存卡,即OS 103暂时不可进行读写操作的内存卡,可能作为待迁移数据的目标设备,如本实施例中的内存卡101-C,当内存数据迁移完毕之后,可以更改所述备份内存卡的配置信息,例如为其分配系统地址,使得OS 103可以对所述备份内存卡进行读写操作。
    在本发明实施例中,所述备份内存卡101-C可以是计算机开机之前已经插入硬件插槽的内存卡,也可以是在计算机开机启动后临时新增的内存卡,在进行内存数据迁移之前,对所述备份内存卡进行特殊初始化(不分配系统地址,后续实施例详细描述)即可。
    本发明实施例的内存数据的迁移方法可以包括:
    S301:BIOS获取指定的备份内存卡的标识,并将其配置到ACPI列表中。
    用户可以在所述计算机开机启动时,通过BIOS的起始菜单配置指定的备份内存卡的标识,所述BIOS可以获得用户配置的备份内存卡的标识并写入高级配置和电故障管理接口(Advanced Configuration and Power Management Interface,ACPI)列表中,以使得后续OS可以通过查询所述ACPI列表,获取所述备份内存卡的信息。
    其中,所述ACPI列表为OS与BIOS交互的信息表的集合,OS和BIOS都可以进行访问,当然,在本发明实施例中,所述备份内存卡的标识不一定要配置在ACPI列表中,只需要配置在BIOS和OS都可以访问的一个存储空间或列表中即可,使得所述BIOS在配置所述备份内存卡的标识之后,所述OS可以获取到所述备份内存卡的标识,本发明实施例在此不作限定。
    所述备份单元的标识可以是所述备份内存卡所插入的槽位的槽位编号或者所述槽位相关的号码。在本发明实施例中,在指定备份内存卡的标识时,如果所述 备份内存卡已经插入槽位中,则所述备份内存卡的标识可以为当前插入的槽位的槽位编号,如果所述备份内存卡还未插入到槽位中,则所述备份内存卡的标识可以是用户指定的槽位的槽位编号,所述备份内存卡可以在后续需要使用时直接插入所述用户指定的槽位。
    步骤301为可选步骤,用户并不一定要在计算机开机启动时将所述备份内存卡的标识提供给BIOS,还可以在计算机开机启动后将所述备份内存卡的标识直接提供给OS,OS记录所述备份内存卡的标识,并在后续使用时获取自身记录的所述备份内存卡的标识,本发明实施例在此不做限定。
    S302:所述BIOS对所述备份内存卡进行初始化,所述初始化过程避免为所述备份内存卡分配系统地址。
    在所述BIOS获取用户指定的所述备份内存卡的标识之后,可以重新启动计算机,以对所述备份内存卡进行特殊的初始化,即初始化过程避免为所述备份内存卡分配系统地址。
    具体地,所述BIOS可以根据所述备份内存卡的标识确定所述备份内存卡是否已经插入槽位,如果已经插入槽位,即确定所述备份内存卡已经硬件存在,则可以在此时对所述备份内存卡进行初始化,使得所述备份内存卡已经准备就绪,但所述OS暂时不可以对所述备份内存卡进行读写操作。
    其中,对所述备份内存卡进行初始化是指对所述备份内存卡进行配置,使得所述备份内存卡准备就绪,可以正常使用,例如,对所述备份内存卡进行初始化可以包括为所述备份内存卡供电,配置相关性能等参数,配置所述备份内存卡与计算机中的处理器之间的通信连接,检测所述备份内存卡是否能够进行正常的读写操作等,需要注意的是,在对所述备份内存卡进行初始化时,避免为所述备份内存卡分配系统地址,从而所述OS无法获取所述备份内存卡的系统地址,不能对所述备份内存卡进行任何读写操作,即所述备份内存卡虽然已经准备就绪,但对所述OS不可见,此时所述OS不能使用所述备份内存卡。
    在本发明实施例中,对所述备份内存卡进行特殊初始化即指上述初始化过程。
    当然,本步骤为可选步骤,实际上,所述BIOS还可以在获取所述备份内存卡的标识之后不对所述备份内存卡进行特殊的初始化,在后续需要使用该备份内 存卡的时候再对所述备份内存卡进行特殊的初始化。
    S303:源内存卡的内存控制器对所述源内存卡的错误数据进行监控,判断所述错误数据是否超过阈值,若所述错误数据超过阈值,则所述源内存卡的内存控制器触发第一触发指令。
    由于当内存卡中的错误数据超过一定值时,可能导致该内存卡发生故障,甚至引起计算机重启,因此,可以对所述源内存卡进行监测,当所述源内存卡中错误数据过多时,OS执行内存数据的迁移,保证问题的解决。
    具体地,在计算机开机启动时,用户可以通过所述BIOS的起始菜单对所述源内存卡的内存控制器进行配置,使得所述源内存卡的内存控制器可以对所述源内存卡的错误数据进行监控,当所述源内存卡的错误数据超过阈值时,触发第一触发指令,所述第一触发指令用于指示所述OS启动内存数据的迁移,其中,所述阈值可以由用户指定,还可以是系统的默认值。
    如果计算机中的源内存卡有多个时,可以对每个源内存卡的错误数据进行监控,当监控到其中任何一个源内存卡的错误数据超过所述阈值时,触发所述第一触发指令第一触发指令,指示所述OS启动对该内存卡的内存数据迁移。
    进一步,所述源内存卡的内存控制器可以在自身的寄存器中记录所述源内存卡的错误数据的数量超过阈值,以便后续指示所述OS确定出问题的内存卡即源内存卡。
    在本发明实施例中,能够对计算机中的源内存卡进行监控,针对有问题的源内存卡触发所述第一触发指令,进行内存数据的迁移,能够保证故障及时解决,并且只在源内存卡出现故障时才进行内存数据迁移,节省了系统资源。
    S304:所述OS接收到所述第一触发指令,中止当前正在执行的任务以启动内存数据的迁移。
    在接收到所述第一触发指令之后,所述OS可以是立即中止当前正在执行的任务,执行内存数据的迁移,还可以是在计算机空闲时中止当前正在执行的任务,执行内存数据的迁移。
    进一步,可以对所述OS进行预先配置,将所述第一触发指令配置为优先级别最高的处理指令,使得所述OS在获取到所述第一触发指令之后,立即终止当前 正在执行的任务,执行内存数据的迁移,保障及时对故障内存卡的内存数据进行迁移,以及时处理和解决所述计算机中的内存卡故障的问题。
    S305:所述OS查询所述源内存卡的内存控制器,确定所述源内存卡。
    在所述OS中止当前正在执行的任务,启动内存数据的迁移之后,需要确定待迁移数据的内存卡,即源内存卡,所述OS可以确定触发所述第一触发指令的源内存控制器对应的内存卡为源内存卡,例如,查询所述计算机中的内存控制器的寄存器,通过所述源内存卡的内存控制器的寄存器中记录的信息,确定所述源内存卡。
    S306:所述OS查询所述ACPI列表,确定所述备份内存卡的标识。
    所述ACPI列表中预先记录了备份内存卡的标识,所述OS在确定执行内存数据迁移之后,可以从所述ACPI列表中获取备份内存卡的标识,所述备份内存卡的标识可能为一个,还可能为多个,如果为多个所述备份内存卡的标识,则所述OS可以从所述ACPI列表中获取多个所述备份内存卡的标识,并根据所述源内存卡的信息,从多个所述备份内存卡的标识中挑选一个作为所述备份内存卡的标识,例如根据所述源内存卡的内存容量,从所述多个备份内存卡中挑选一个内存容量大于所述源内存卡的内存容量的内存卡,确定该内存卡的标识作为所述备份内存卡的标识,又例如,可以根据所述源内存卡归属的处理器的信息,从所述多个备份内存卡中挑选一个与所述源内存卡不属于同一个处理器控制的内存卡,确定该内存卡的标识作为所述备份内存卡的标识。
    S307:所述OS确定所述备份内存卡是否满足迁移条件。
    在进行所述源内存卡的内存数据的迁移之前,所述BIOS需要确定所述备份内存卡是否满足迁移条件,如果满足迁移条件,才对所述源内存卡进行内存数据的迁移,保证了内存数据迁移的顺利进行,避免由于所述备份内存卡内存容量不够等问题而导致的数据迁移失败。
    确定所述备份内存卡是否满足迁移条件具体可以是:确定所述备份内存卡是否完成初始化,若所述备份内存卡完成初始化,则表明所述备份内存卡准备就绪,满足迁移条件;如果在执行本步骤之前,所述步骤S302并未执行,即如果所述备份内存卡没有完成特殊初始化,所述OS可以通过触发系统管理中断,指示所述 BIOS对所述备份内存卡进行特殊初始化,使得所述备份内存卡准备就绪,满足迁移条件。
    进一步,确定所述备份内存卡是否满足迁移条件还可以是:确定所述备份内存卡的内存容量是否大于所述源内存卡的内存容量,如果大于所述源内存卡的内存容量,则表明可以将所述源内存卡的内存数据迁移到所述备份内存卡,所述备份内存板满足迁移条件;或者,
    确定所述源内存卡与所述备份内存卡是否属于同一个处理器控制,如果确定不属于同一个处理器控制,则表明可以将所述源内存卡的内存数据迁移到所述备份内存卡,所述备份内存板满足迁移条件。
    所述OS可以从所述BIOS获取所述备份内存卡的信息,例如所述备份内存卡是否完成初始化,所述备份内存卡的内存容量,而且判断所述备份内存卡是否满足迁移条件。
    S308:若所述备份内存卡满足迁移条件,则所述OS指示所述源内存卡的内存控制器执行内存巡检操作,以确定所述源内存卡中的非错误数据。
    在进行内存数据迁移之前,所述OS可以指示所述源内存卡的内存控制器执行内存巡检操作,以确定所述源内存卡中的非错误数据,并根据检测结果打上检测标记,使得后续将所述源内存卡的内存数据迁移到所述备份内存卡时,可以根据检测标记只迁移所述源内存卡中的非错误数据,避免了将错误数据迁移到所述备份内存卡而导致的计算机重启等问题。
    所述源内存卡的内存控制器,能够根据所述OS的指示,启动内存巡检操作,所述内存巡检操作具体可以是,根据设定的检错机制,对所述源内存卡的内存数据进行检测,以判断所述源内存卡中哪些数据是错误数据,并记录所述错误数据的系统地址,即根据检测结果打上检测标记,使得后续进行内存数据迁移时,所述OS能够根据记录的所述错误数据的系统地址,迁移所述源内存卡中的非错误数据。
    所述源内存卡的内存控制器在执行完巡检操作之后,可以对自身的寄存器进行配置,所述OS可以通过查询该寄存器,确定所述巡检操作是否完成,当所述巡检操作完成之后,所述OS可以将所述源内存卡和所述备份内存卡设置为镜像 模式,以进行内存数据的迁移。
    此步骤为可选步骤,所述OS并不一定要指示所述源内存控制器进行内存巡检操作。
    S309:若所述备份内存卡满足迁移条件,则所述OS将所述源内存卡和所述备份内存卡设置为镜像模式。
    为了实现内存数据的迁移,所述OS可以将所述源内存卡和所述备份内存卡设置为镜像模式,在设置了所述镜像模式之后,所述源内存卡的内存控制能够根据所述OS的指示,将所述源内存卡的内存数据写入所述备份内存卡。
    具体地,所述OS可以在所述源内存卡的内存控制器中配置所述备份内存卡的标识,在所述备份内存卡的内存控制器中配置所述源内存卡的标识,以使得所述源内存卡与所述备份内存卡之间设置为镜像模式,从而所述源内存卡能够根据所述OS的指示,将所述源内存卡的内存数据发送到所述备份内存卡的内存控制器,使得所述备份内存卡的内存控制器将所述源内存卡的内存数据写入所述备份内存卡。
    此外,将所述源内存卡和所述备份内存卡设置为镜像模式还可以包括,所述OS将所述源内存卡的内存控制器的地址配置信息复制到所述备份内存卡的内存控制器,使得所述备份内存卡按照所述源内存卡的地址分配方式,为所述备份内存卡分配系统地址。
    S310:所述OS指示所述源内存卡的内存控制器进行内存数据的迁移。
    所述OS在配置所述源内存卡与所述备份内存卡之间的镜像模式之后,可以指示所述源内存卡的内存控制器对所述源内存卡进行内存数据的迁移。
    具体地,所述OS可以向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,在确定所述源内存卡的内存控制器完成所述数据读指令之后,所述OS可以向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,从而使得所述源内存卡的内存控制器可以根据所述数据读指令,读取所述源内存卡的内存数据,然后再根据所述数据写指令,将所述读取的数据写入所述源内存卡,以及根据所述镜像模 式,将所述读取的数据发送给所述备份内存卡的内存控制器,使得所述备份内存卡的内存控制器能够将所述读取的数据写入所述备份内存卡,实现了内存数据的迁移,能够将所述源内存卡的所有内存数据迁移到所述备份内存卡,而不仅仅只迁移启动内存数据迁移后,所述源内存卡中新写入的数据。
    由于在所述源内存卡的内存控制器在进行内存数据迁移前,所述操作系统中止了当前正在执行的任务,当内存数据迁移完毕后,所述OS才能继续执行中止的任务或其它任务,如果待迁移的数据过多,则所述OS将长时间中止系统的业务,影响了计算机的正常运行,因此,可以分多次将所述源内存卡的内存数据迁移到所述备份内存卡,在完成一次内存数据迁移之后,所述OS可以中止执行内存数据的迁移,继续执行中止的任务或其它任务,直到进行下一次内存数据迁移时,所述OS再中止当前正在执行的任务,继续执行内存数据的迁移,避免了计算机业务的长时间中断,保证了计算机的正常运行。
    在本发明实施例中,为了实现上述分多次进行内存数据的迁移方法,用户可以预先在所述OS中配置每次迁移的数据量或每次迁移的时长,即配置分次迁移策略,使得所述OS可以按照所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移,具体地,所述OS可以,通过以下步骤指示所述源内存卡的内存控制器分多次进行内存数据的迁移:
    a)所述OS根据所述每次迁移指定的数据量确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,所述OS根据每次迁移的时长确定所述当次迁移的时长确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;
    b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,所述OS中止执行内存数据的迁移;
    c)接收第二触发指令,所述第二触发指令用于指示所述OS继续进行内存数据的迁移;
    d)返回执行步骤a),直至所述源内存卡的内存数据全部迁移到所述备份内存卡。
    在步骤b)中,当所述计算机中止执行内存数据的迁移时,所述OS可能对所 述源内存板进行读写操作,即使所述OS对所述源内存卡中已经迁移的数据块A进行数据写操作,由于设置了镜像模式,所述源内存卡的内存控制器也能够将所述写操作的数据写入所述备份内存卡的数据块A,避免了数据的丢失,保证了所述备份内存卡与所述源内存卡数据的一致性。
    此外,用户还可以在所述分次迁移策略中配置所述第二触发指令的触发条件,所述第二触发指令的触发条件可以是每次迁移的间隔时长,则所述OS可以从所述迁移策略中获取所述每次迁移的间隔时长,并根据所述每次迁移的间隔时长配置内存数据迁移定时器,以使得所述内存数据迁移定时器根据所述每次迁移的间隔时长触发所述第二触发指令指示所述OS继续进行内存数据的迁移,所述内存数据迁移定时器可以设置在所述OS中,当所述内存数据迁移定时器定时时间到达时,进入中断处理函数,中止当前执行的任务,继续进行内存数据的迁移。
    所述第二触发指令还可以根据处理器的运行状态被触发,所述OS可以监控所述处理器的运行状态,并根据所述处理器的运行状态,确定是否触发所述第二触发指令,执行内存数据的迁移,例如,所述OS可以在CPU处于空闲状态,或者CPU的占用率小于特定阈值时触发自身中断,使得所述OS中止当前执行的任务,继续进行内存数据的迁移。
    进一步,所述OS在指示所述源内存卡的内存控制器进行内存数据的迁移时,可以根据所述源内存卡的内存控制器记录的所述错误数据的地址,指示所述源内存卡的内存控制器将所述源内存卡中的非错误数据迁移到所述备份内存卡,避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重启。
    S311:所述OS将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。
    在内存数据迁移完成之后,所述OS可以将源内存卡的系统地址映射到所述备份内存卡,使得所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡,所述备份内存卡可以替代所述源内存卡,接管所述OS对所述源内存卡的所有读写操作。
    在本发明实施例中,所述OS可以通过配置所述计算机的CPU,将所述源内存卡的系统地址映射到所述备份内存卡。
    S312:所述OS对所述源内存卡执行下电操作。
    在所述源内存卡的内存数据迁移完成之后,所述OS可以对所述源内存卡执行下电操作,例如,对所述源内存卡的内存控制器进行配置,以对所述源内存卡下电,使得在所述计算机不下电的情况下,可以移除或者更换所述源内存卡,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。
    在本发明实施例中,OS可以接收第一触发指令确定所述源内存卡和所述备份内存卡,并在确定所述备份内存卡满足迁移条件后,将所述源内存卡和所述备份内存卡设置为镜像模式,从而可以指示所述源内存卡的内存控制器根据所述镜像模式,将所述源内存卡的内存数据写入所述备份内存卡,在计算机不下电的情况下,能够对所述源内存卡的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。并且,在本发明实施例中,所述OS针对有问题的源内存卡的内存控制器触发的第一触发指令,进行内存数据的迁移,能够保证故障及时解决,并且只在源内存卡出现故障时才进行内存数据迁移,有效节约了系统资源。
    进一步,所述OS可以获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次将所述源内存卡的内存数据迁移到所述备份内存卡,使得在进行内存数据迁移的过程中,能够根据需求让所述OS中止和恢复执行的任务,使得所述OS能够及时处理计算机中的业务,避免在进行大量内存数据迁移时导致的系统业务的长时间中断,保障了该计算机的正常运行。
    此外,所述OS能够指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数据,并指示所述源内存卡的内存控制器将所述非错误数据迁移到所述备份内存卡,避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重启。
    在本发明实施例中,所述OS在进行内存数据迁移之前,可以确定所述备份内存卡是否满足迁移条件,如果满足迁移条件,才对所述源内存卡进行内存数据的迁移,保证了内存数据迁移的顺利进行,避免由于所述备份内存卡内存容量不够等问题而导致的数据迁移失败。
    具体实施例二
    结合图1所示的计算机,本发明实施例提供了一种内存数据的迁移方法,如图4所示,用于迁移计算机中内存数据,例如能够将计算机的源内存卡的内存数据迁移到备份内存卡,所述源内存卡可以是内存卡101-A,所述备份内存卡可以是内存卡101-C,所述内存卡101-C可以是计算机开机之前已经插入硬件插槽的内存卡,也可以是临时新增的内存卡,在进行内存数据迁移之前,所述内存卡101-C的标识被配置在ACPI列表中并在执行迁移之前执行完毕初始化过程即可,本发明实施例的内存数据的迁移方法可以包括:
    S401:OS获取并记录指定的备份内存卡的标识。
    在OS下,可以配置每一个内存卡所插入的槽位的槽位编号或者所述槽位相关的号码,则所述备份单元的标识可以是所述备份内存卡所插入的槽位的槽位编号或者所述槽位相关的号码,所述备份内存卡可以是在计算机开机启动前就已经插入槽位中,也可以是在计算机开机启动后再插入到槽位中的。
    在所述计算机开机启动后,用户可以向所述OS提供指定的备份内存卡的标识,所述OS可以获取并记录指定的备份内存卡的标识,以使得OS后续在确定执行内存数据的迁移时,可以获取所述备份内存卡的信息,所述备份内存卡的标识可以记录在OS中,也可以记录在ACPI列表或者其他存储单元中,本发明实施例在此不作限定。
    本步骤为可以步骤,用户还可以将所述备份内存卡的标识提供给所述BIOS,所述OS在进行内存数据迁移前获取所述BIOS记录的所述备份内存卡的标识,确定所示备份内存卡即可,本发明实施例在此不作限定。
    进一步,在本发明实施例中,所述备份内存卡作为待迁移数据的目标设备,是对所述OS不可见的内存卡,需要对所述备份内存卡进行特殊的初始化,来保证所述备份内存卡准备就绪,但避免分配系统地址,使得所述备份内存卡对所述OS不可见。当所述指定的备份内存卡是在计算机开机启动后再插入到槽位中的,则可以在所述备份内存卡插入槽位时,通过所述备份内存卡上的触发按钮,触发BIOS对所述备份内存卡进行特殊的初始化,当然,也可以在后续需要使用该备份 内存卡的时候再对所述备份内存卡进行初始化。当所述指定的备份内存卡是在计算机开机启动前就已经插入槽位中,则在计算机开机启动时,计算机运行BIOS,用户还需要通过BIOS的起始菜单,配置所述备份内存卡的标识,使得BIOS在确定所述备份内存卡已经硬件存在时,对所述备份内存卡进行特殊的初始化。
    其中,对所述备份内存卡进行特殊的初始化是指对所述备份内存卡进行配置,使得所述备份内存卡准备就绪,可以正常使用,例如,对所述备份内存卡进行初始化可以包括为所述备份内存卡供电,配置相关性能等参数,配置所述备份内存卡与计算机中的处理器之间的通信连接,检测所述备份内存卡是否能够进行正常的读写操作等,需要注意的是,在对所述备份内存卡进行初始化时,避免为所述备份内存卡分配系统地址,从而所述OS无法获取所述备份内存卡的系统地址,不能对所述备份内存卡进行任何读写操作,即所述备份内存卡虽然已经准备就绪,但对所述OS不可见,此时所述OS不能使用所述备份内存卡。
    在本发明实施例中,对所述备份内存卡进行特殊的初始化即指上述初始化过程。
    S402:所述OS获取并记录指定的源内存卡的标识。
    在所述计算机开机启动后,当用户发现某个内存卡性能不稳定或是工作时间太长时或者其他需要更换的情况,可以指定该内存卡为待迁移数据的内存卡,即源内存卡,并将所述源内存卡的标识提供给所述OS,所述OS可以记录所述源内存卡的标识,以使得后续所述OS可以获取所述源内存卡的信息,所述备份内存卡的标识可以记录在OS中,也可以记录在ACPI列表或者其他存储单元中,本发明实施例在此不作限定。
    S403:所述OS接收根据用户的指示生成第一触发指令,根据所述第一触发指令中止当前正在执行的任务,以启动内存数据的迁移。
    当用户需要进行内存数据迁移时,可以向OS发送内存数据的迁移的启动指令,所述OS根据所述启动指令生成所述第一触发指令,并根据所述第一触发指令中止当前正在执行的任务,进入中断处理函数,执行内存数据的迁移。
    在本发明实施例中,当用户需要对源内存卡进行内存数据迁移时,可以通过多条指令分别指定所述源内存卡和所述备份内存卡的标识,以及指示所述OS执 行内存数据的迁移;还可以是通过一条指令指示所述OS执行内存数据的迁移,所述指令携带所述源内存卡和所述备份内存卡的标识,本发明实施例在此不作限定。
    S404:所述OS获取记录的所述源内存卡和所述备份内存卡的标识。
    在所述OS获取到用户触发的所述第一触发指令之后,所述OS进入中断处理函数,启动内存数据的迁移,可以获取自身记录的所述源内存卡和所述备份内存卡的标识,即确定所述源内存卡和所述备份内存卡。
    当所述备份内存卡有多个时,则所述OS可以根据所述源内存卡的信息,从多个所述备份内存卡的标识中挑选一个作为所述备份内存卡的标识,例如根据所述源内存卡的内存容量,从所述多个备份内存卡中挑选一个内存容量大于所述源内存卡的内存容量的内存卡,确定该内存卡的标识作为所述备份内存卡的标识,又例如,可以根据所述源内存卡归属的处理器的信息,从所述多个备份内存卡中挑选一个与所述源内存卡不属于同一个处理器控制的内存卡,确定该内存卡的标识作为所述备份内存卡的标识。
    S405:所述OS确定所述备份内存卡是否满足迁移条件。
    S406:若所述备份内存卡满足迁移条件,则所述OS指示所述源内存卡的内存控制器执行内存巡检操作,以确定所述源内存卡中的非错误数据。
    S407:若所述备份内存卡满足迁移条件,则所述OS将所述源内存卡和所述备份内存卡设置为镜像模式。
    S408:所述OS指示所述源内存卡的内存控制器进行内存数据的迁移。
    S409:所述OS将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡。
    S410:所述OS对所述源内存卡执行下电操作。
    在本发明实施例中,步骤S405-S410的具体实施方式与步骤S307-S312类似,在此不再赘述。
    在本发明实施例中,OS可以接收用户第一触发指令确定所述源内存卡和所述备份内存卡,并在确定所述备份内存卡满足迁移条件后,将所述源内存卡和所述备份内存卡设置为镜像模式,从而可以指示所述源内存卡的内存控制器根据所述 镜像模式,将所述源内存卡的内存数据写入所述备份内存卡,在计算机不下电的情况下,能够对所述源内存卡的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维护的问题。并且,在本发明实施例中,在计算机运行过程中,所述OS可以根据用户触发的第一触发指令,进行内存数据的迁移,能够保证故障及时解决,并且只在源内存卡出现故障时才进行内存数据迁移,有效节约了系统资源。
    进一步,所述OS可以获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次将所述源内存卡的内存数据迁移到所述备份内存卡,使得在进行内存数据迁移的过程中,能够根据需求让所述OS中止和恢复执行的任务,使得所述OS能够及时处理计算机中的业务,避免在进行大量内存数据迁移时导致的系统业务的长时间中断,保障了该计算机的正常运行。
    此外,所述OS能够指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数据,并指示所述源内存卡的内存控制器将所述非错误数据迁移到所述备份内存卡,避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重启。
    在本发明实施例中,所述OS在进行内存数据迁移之前,可以确定所述备份内存卡是否满足迁移条件,如果满足迁移条件,才对所述源内存卡进行内存数据的迁移,保证了内存数据迁移的顺利进行,避免由于所述备份内存卡内存容量不够等问题而导致的数据迁移失败。
    一种内存数据迁移装置
    结合图1所示的计算机,本发明实施例提供了一种内存数据迁移装置,如图6所示,用于迁移计算机中内存数据,例如能够将计算机的源内存卡的内存数据迁移到备份内存卡,所述源内存卡可以是内存卡101-A,所述备份内存卡可以是内存卡101-C,所述内存卡101-C可以是计算机开机之前已经配置在计算机中的内存卡,也可以是临时新增的内存卡,在进行内存数据迁移之前,所述备份内存卡执行完毕初始化过程即可。本发明实施例的内存数据迁移装置可以是OS,所述装置可以包括接获取单元501、确定单元502、镜像单元503和迁移单元504。
    所述获取单元501,用于获取第一触发指令,所述第一触发指令用于指示操作 系统执行内存数据的迁移,在本发明实施例中,触发所述第一触发指令比较灵活,可以包括如下两种方式:方式一,所述源内存卡的内存控制器可以对所述源内存卡的错误数据进行监控,若所述错误数据超过阈值,触发所述第一触发指令,所述获取单元501具体用于接收所述源内存卡的内存控制器触发的所述第一触发指令;方式二,所述获取单元501根据用户发送的内存数据的迁移的启动指令或者用户预置的内存数据的迁移的启动策略生成所述第一触发指令。
    所述确定单元502,用于在所述获取单元获取所述第一触发指令之后,中止当前正在执行的任务以启动内存数据的迁移,确定待迁移内存数据的源内存卡,以及为所述源内存卡确定备份内存卡。所述确定单元502确定所述源内存卡的方式也比较灵活,例如,当所述第一触发指令由所所述源内存卡的内存控制器触发,所述确定单元502可以通过查询所述源内存卡的内存控制器的寄存器,确定触发了所述第一触发指令的内存控制器对应的内存卡为所述源内存卡,所述源内存卡的内存控制器监控到所述源内存卡的错误数据的数量超过阈值时,可以在自身的寄存器中记录所述源内存卡的错误数据的数量超过阈值;又例如,如果所述第一触发指令是根据用户的指示生成,则所述获取单元501还可以接收用户发送的所述源内存卡的标识,则所述装置还可以包括记录单元505,用于记录所述源内存卡的标识,以便后续可以随时获取所述源内存卡的标识,所述确定单元502可以根据所述记录单元505记录的所述源内存卡的标识,确定所述源内存卡。
    此外,确定备份内存卡也可以有两种方式,用户可以将所述备份内存卡的标识提供给OS,则所述获取单元501还可以获取用户指定的所述备份内存卡的标识,所述记录单元505还用于记录所述备份内存卡的标识,所述确定单元502可以根据所述记录单元记录的所述备份内存卡的标识,确定所述备份内存卡;或者,用户可以将所述备份内存卡的标识提供给BIOS,所述记录单元505还可以获取所述BIOS记录的备份内存卡的标识,并确定所述备份内存卡。
    所述镜像单元503,用于将所述源内存卡和所述备份内存卡设置为镜像模式,例如,所述镜像单元503可以在所述源内存卡的内存控制器中配置所述备份内存卡的标识,在所述备份内存卡的内存控制器中配置所述源内存卡的标识,实现将所述源内存单与所述备份内存卡设置为镜像模式,在设置了所述镜像模式之后, 所述源内存卡的内存控制能够根据所述备份内存卡的标识,将所述源内存卡的内存数据写入所述备份内存卡。
    所述迁移单元504,用于指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器利用所述镜像单元503设置的镜像模式,将所述源内存卡的内存数据写入到所述备份内存卡,具体地,所述迁移单元504可以向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据,以及向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,以使得所述源内存卡的内存控制器根据所述镜像模式,将所述读取的数据写入所述备份内存卡,实现将所述源内存卡的内存数据迁移到所述备份内存卡。
    进一步,所述迁移单元504还用于获取分次迁移策略,根据所述分次迁移策略指示所述源内存卡的内存控制器分多次进行内存数据的迁移,使得所述计算机在进行内存数据迁移的过程中,能够根据需求中止和恢复执行的任务,及时处理系统业务,避免在进行大量内存数据迁移时导致的系统业务长时间中断,保证了系统的正常运行。
    具体地,所述分次迁移策略可以包括每次迁移的数据量或每次迁移的时长,所述迁移单元504具体用于循环执行如下操作a)-d),直至将所述源内存卡的内存数据全部迁移到所述备份内存卡,所述操作a)-d)包括:
    a)根据所述每次迁移指定的数据量确定当次迁移的数据量,指示所述源内存卡的内存控制器102-A将所述当次迁移的数据量迁移到所述备份内存卡101-C,或者,根据每次迁移的时长确定所述当次迁移的时长确定当次迁移的时长,指示所述源内存卡的内存控制器102-A在所述当次迁移的时长内进行内存数据的迁移,或者根据处理器的运行状态,指示所述源内存卡的内存控制器102-A在处理器的运行状态为空闲的时间段内进行内存数据的迁移,其中所述处理器的运行状态为空闲状态可以是处理器的占用率小于设定阈值;;
    b)在确定所述源内存卡的内存控制器102-A完成所述当次迁移之后,中止执行内存数据的迁移;
    c)接收第二触发指令,所述第二触发指令用于指示所述OS继续进行内存数据的迁移;
    d)返回执行步骤a)。
    其中,所述第二触发指令可以通过预置的第二触发指令的触发条件触发,则所述分次迁移策略还可以包括所述第二触发指令的触发条件,所述第二触发指令的触发条件可以包括每次迁移的间隔时长或处理器的运行状态,所述迁移单元504还用于根据所述每次迁移的间隔时长,配置内存数据迁移定时器,以使得所述内存数据迁移定时器根据所述每次迁移的间隔时长触发所述第二触发指令;或者,根据所述处理器的运行状态,配置内存数据迁移触发???,以使得所述内存数据迁移触发??楦菟龃砥鞯脑诵凶刺?,触发所述第二触发指令。
    进一步,所述装置还可以包括:
    检错单元506,用于指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数据;则所述迁移单元504具体用于根据所述源内存卡的内存控制器确定的所述非错误数据的信息,指示所述源内存卡的内存控制器对所述非错误数据进行迁移。
    进一步,所述迁移单元504还用于在确定所述源内存卡的内存控制器完成所述源内存卡的内存数据迁移之后,建立所述源内存卡的系统地址与所述备份内存卡的映射关系,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存卡,使得所述备份内存卡可以替代所述源内存卡,接管所述OS对所述源内存卡的所有读写操作。
    在本发明实施例中,所述获取单元501可以接收第一触发指令,所述确定单元502可以在所述获取单元501接收所述第一触发指令之后,中止当前正在执行的任务以启动内存数据的迁移,确定所述源内存卡和所述备份内存卡,所述镜像单元506可以将所述源内存卡和所述备份内存卡设置为镜像模式,从而所述迁移单元504可以指示所述源内存卡的内存控制器根据所述镜像模式,将所述源内存卡的内存数据写入所述备份内存卡,实现了在计算机正常运行的情况下,将所述源内存卡的内存数据的迁移,解决了现有技术中无法进行内存数据迁移的问题,从而能够进行故障内存的在线维护,避免现有技术中对整个计算机下电来进行故 障内存的更换或维护。并且,在本发明实施例中,所述装置针对有问题的源内存卡的内存控制器触发的第一触发指令,进行内存数据的迁移,能够保证故障及时解决,并且只在源内存卡出现故障时才进行内存数据迁移,有效节约了系统资源。
    进一步,所述迁移单元504还可以获取分次迁移策略,根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次将所述源内存卡的内存数据迁移到所述备份内存卡,使得在进行内存数据迁移的过程中,能够根据需求中止和恢复执行的任务,避免在进行大量内存数据迁移时导致的计算机业务的长时间中断,保障了该计算机的正常运行。
    此外,所述检错单元506可以指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数据,使得所述迁移单元可以指示所述源内存卡的内存控制器将所述非错误数据迁移到所述备份内存卡,避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重启。
    如图6,为本发明实施例提供的内存数据迁移装置的结构组成示意图。本发明实施例提供的内存数据迁移装置可包括:
    处理器601、存储器602、系统总线604和通信接口605。处理器601、存储器602和通信接口605之间通过系统总线604连接并完成相互间的通信。
    处理器601可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。
    存储器602可以为高速RAM存储器,也可以为非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
    存储器602用于计算机执行指令603。具体的,计算机执行指令603中可以包括程序代码。
    当所述内存数据迁移装置运行时,处理器601运行计算机执行指令603,可以执行图2-图4任意之一所述的方法流程。
    本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为 “电路”、“??椤被蛘摺跋低场?。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
    计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
    计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
    计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
    本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
    以上所述,仅为本发明的具体实施方式,但本发明的?;し段Р⒉痪窒抻诖?,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的?;し段е?。因此,本发明的?;し段вλ鲆匀ɡ蟮谋;し段?。

    关于本文
    本文标题:一种内存数据的迁移方法、计算机和装置.pdf
    链接地址://www.4mum.com.cn/p-6147519.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 七星彩最新预测号码 手机投注网 北京时时冠军走势图 买什么彩稳赚不赔 时时彩平买稳赚方案 广东福彩快乐十分中奖规则 全网36码 北赛车pk10直播官方下载 苹果版时时彩计划软件 天津时时是随机开奖 有效投注是什么意思 pk10软件计划 彩票快3选号技巧 重庆时时彩的qq群 pk10最牛稳赚5码计划全天 大乐透篮球一共几个号