控制逻辑单元号被误格式化的方法及相关设备与流程
未命名
09-22
阅读:56
评论:0
1.本技术涉及存储
技术领域:
:,尤其涉及一种控制逻辑单元号被误格式化的方法及相关设备。
背景技术:
::2.存储设备为计算节点提供逻辑单元号(logicalunitnumber,lun),用于存储数据。但是,存储设备可能会存在误格式化lun,比如说使用某些命令写入全零数据,导致存储有数据的lun执行了格式化操作,将lun上的数据全部或部分清零。3.为了防止误格式化覆盖或者破坏lun中的数据,现有的方式一般采用配置周期性快照的方式进行保护。周期性快照是指每间隔一定的时间就自动生成一个快照,同时通过维护快照总个数的方式将老的快照删除。如果发现源lun数据损坏后,可以在所有的快照中找到一个数据损坏前的最新数据进行恢复。4.由于快照个数和周期有限,不能保证发现问题后一定存在被误格式化前的快照,所以不能在第一时间保护lun上的数据。技术实现要素:5.本技术实施例提供了一种控制逻辑单元号被误格式化的方法及相关设备,能够识别对逻辑单元号的写操作是对逻辑单元号的格式化操作,从而对逻辑单元号进行保护,避免因误格式化操作而导致逻辑单元号上的数据被破坏。6.第一方面,本技术实施例提供了一种控制逻辑单元号被误格式化的方法,包括:7.接收对逻辑单元号的写数据操作;8.识别所述写数据操作是对所述逻辑单元号的格式化操作;9.对所述逻辑单元号进行保护。10.上述方法可应用于存储节点,由存储节点或存储节点内部的部件(例如芯片、软件模块或集成电路)来执行。11.在本技术实施例中,存储节点可以提供逻辑单元号,用于存储数据。在存储单元接收到对逻辑单元号的写数据操作可,可以识别写数据操作是对逻辑单元号的格式化操作。为了避免是误格式化操作,存储节点可以对逻辑单元进行保护,防止逻辑单元号中存储的数据遭到破坏。12.在第一方面的一种可能的实施方式中,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。13.可以看出,对逻辑单元号进行写零操作意味着可能将逻辑单元号上的数据进行清零,因此需要识别写零操作是对逻辑单元号的格式化操作,避免因写零操作将逻辑单元号上的数据给误格式化。14.在第一方面的一种可能的实施方式中,述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。15.可以看出,非首次写数据操作说明逻辑单元号已经被写过一次了,当逻辑单元号再次被写入时说明可能会对逻辑单元号上的数据进行一些操作,因此需要识别非首次写数据操作是对逻辑单元号的格式化操作,避免因非首次写数据操作而破坏逻辑单元号上的数据。16.在第一方面的一种可能的实施方式中,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。17.可以理解的是,逻辑单元号预设的保护区域地址表明上述地址的数据是被保护起来的,在写数据操作携带的第一地址落入上述地址时,表明该写数据操作可能对逻辑单元号上被保护起来的数据进行误格式化。这样,可以及时发现对逻辑单元号的误格式化操作,从而采取相关保护措施保护逻辑单元号上的数据。18.在第一方面的一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。19.可以看出,通过不同方式可以设置保护区域地址,满足不同用户的需求。20.在第一方面的一种可能的实施方式中,所述对所述逻辑单元号进行保护,包括:触发对所述逻辑单元号的内部快照激活;或者,在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。21.可以看出,针对不同业务,本方案可以提供不同的保护措施,从而可以第一时间保护数据,保护数据被误格式化前的最新数据。22.第二方面,本技术实施例还提供了一种存储节点,包括:23.通信单元,用于接收对逻辑单元号的写数据操作;24.处理单元,用于识别所述写数据操作是对所述逻辑单元号的格式化操作;25.所述处理单元,还用于对所述逻辑单元号进行保护。26.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:27.确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。28.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:29.确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。30.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:31.确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。32.在第二方面的一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。33.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:34.触发对所述逻辑单元号的内部快照激活;或者,35.在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。36.第三方面,本技术实施例提供了一种存储节点,所述存储节点包括至少一个处理器和至少一个存储器;37.所述存储器中存储有计算机程序;38.所述处理器执行所述计算机程序时,所述存储节点执行前述第一方面所描述的方法。39.需要说明的是,上述第三方面所描述的存储节点所包含的处理器,可以是专门用于执行这些方法的处理器(便于区别称为专用处理器),也可以是通过调用计算机程序来执行这些方法的处理器,例如通用处理器。可选的,至少一个处理器还可以既包括专用处理器也包括通用处理器。40.可选的,上述计算机程序可以存在存储器中。示例性的,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(readonlymemory,rom),其可以与处理器集成在同一块器件上,也可以分别设置在不同的器件上,本技术实施例对存储器的类型以及存储器与处理器的设置方式不做限定。41.在一种可能的实施方式中,上述至少一个存储器位于上述存储节点之外。42.在又一种可能的实施方式中,上述至少一个存储器位于上述存储节点之内。43.在又一种可能的实施方式之中,上述至少一个存储器的部分存储器位于上述存储节点之内,另一部分存储器位于上述存储节点之外。44.本技术中,处理器和存储器还可能集成于一个器件中,即处理器和存储器还可以被集成在一起。45.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面所描述的方法。46.第五方面,本技术提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面所描述的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在存储节点上执行该计算机程序产品。47.本技术第二至第五方面所提供的技术方法,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。附图说明48.以下对本技术实施例用到的附图进行介绍。49.图1是本技术实施例提供的一种通过快照lun的方式保护数据被误格式化的场景示意图;50.图2a是本技术实施例提供的一种存储系统的架构示意图;51.图2b是本技术实施例提供的一种存储节点的内部结构示意图;52.图2c是本技术实施例提供的一种控制单元的结构示意图;53.图3a是本技术实施例提供的一种内存池的架构示意图;54.图3b是本技术实施例提供的一种内存池所包含各层级的存储器的示意图;55.图4a是本技术实施例提供的一种内存池包含部分类型的存储器的示意图;56.图4b是本技术实施例提供的另一种内存池的网络架构的示意图;57.图4c是本技术实施例提供的另一种存储池的网络架构的示意图;58.图5是本技术实施例提供的一种控制逻辑单元号被误格式化的方法的流程示意图;59.图6是本技术实施例提供的一种设置保护区域地址的流程示意图;60.图7是本技术实施例提供的一种对逻辑单元号执行保护策略的流程示意图;61.图8是本技术实施例提供的一种存储节点的结构示意图。具体实施方式62.下面结合本技术实施例中的附图对本技术实施例进行描述。63.为了便于理解,以下示例地给出了部分与本技术实施例相关概念的说明以供参考。如下所述:64.1.逻辑单元号(logicalunitnumber,lun)65.可以理解的是,小型计算机系统接口(smallcomputersysteminterface,scsi)总线上可挂接的设备数量是有限的,一般为8个或16个,可以用目标(target)身份标识号(identitydocument,id)来描述这些设备。在scsi程序中每个设备都分配了一个唯一的数据,其中8位(窄)带是0-7之间任意一个数,16位(宽)带是8-16位中任意一个数。而实际上需要用来描述的对象,是远远超过该数字的。于是引进了lun的概念,也就是说lun的作用是扩充了targetid。每个target下都可以有多个lun设备(device),通常简称lundevice为lun。66.其中,lunid不等于某个设备,只是号码而已,不代表任何实体属性。lun在很多时候不是什么可见的实体,而是一些虚拟的对象。比如说一个阵列柜,计算节点那边看作是一个targetdevice。当为了某些特殊需求时,需要将磁盘阵列柜的磁盘空间划分为若干个小的单元给计算节点来用。因此,将这些更小的磁盘资源称之为lun0、lun1、lun2,等等,操作系统识别的最小存储对象级别就是lundevice。67.也即,lun是一种对存储单元的划分,具体可以包含数字、符号、字符串等。68.2.误格式化69.对一个存储有数据的lun执行了格式化操作,格式化会将lun上的数据全部或部分清零。误格式化的来源可能有人蓄意或无意的命令操作、病毒软件的行为等。70.为了便于理解本技术实施例,下面先分析并提出本技术所具体要解决的技术问题。71.一般来说,为了防止误格式化将lun上存储的数据覆盖破坏,通常都会采用一定的保护措施来防范或杜绝数据被破坏。请参见图1,图1是本技术实施例提供的一种通过快照lun的方式保护数据被误格式化的场景示意图。针对lun被误格式化的问题,图1是采用配置周期性快照的方式进行保护。周期性快照是指每间隔一定的时间就自动生成一个快照,通过维持快照总个数的方式将老的快照删除。如果发现源lun中的数据损坏后,可以在所有的快照中找到一个数据损坏前的最新数据进行恢复。72.但是,由于快照个数和周期有限,不能保证发现问题后一定存在被误格式化前的快照。请参见图1,在t3时刻发生了误格式化,那么源lun上的数据被破坏,而周期块钱1上是t1时刻的数据,周期快照2上的是t3时刻的数据。也即,由于间隔的问题,并没有t2时刻的周期快照,所以无法找回被误格式化前的t2时刻的数据。73.另外,对于双写业务来说,比如说同步远程复制或者双活业务,误格式化lun可能会导致远端的数据也被破坏。比如说,双写业务的某一端被误格式化的情况下,另一端的数据也会被破坏。74.基于上述的描述,本技术所要解决的技术问题可以包括如下:75.1.解决现有技术不能在第一时间保护数据的情况。76.2.解决现有技术缺乏对双写业务的保护。77.为了解决上述技术问题,首先,本技术提供一种系统。请参见图2a,图2a是本技术实施例提供的一种存储系统的架构示意图。从图2a可以看出,存储系统包括计算节点集群、存储节点集群和用户设备300。78.计算节点集群包括一个或多个计算节点100(图2a中示出了两个个计算节点100,但不限于两个个计算节点100),各个计算节点100之间可以相互通信。计算节点100是用户侧的一种计算设备,如服务器、台式计算机等。79.在硬件层面,计算节点100中设置有处理器和内存(图2a中未示出)。在软件层面,计算节点100上运行有应用程序(application)(简称应用101)和客户端(client)程序(简称客户端102)。应用101是对用户呈现的各种应用程序的统称。客户端102用于接收由应用触发的输入输出(input/output,io)请求。并且与存储节点20交互,向存储节点20发送io请求。客户端102还用于接收来自存储节点20的数据,并向应用101转发该数据。客户端102还可以是由位于计算节点100内部的硬件组件来实现。可以理解的是,当客户端102是软件程序时,客户端102的功能由计算节点100所包含的处理器运行该程序来实现。80.示例性的,计算节点100可以通过启动器连接网络(比如说网络中的网络交换机),存储节点20也可以连接网络(比如说网络中的网络交换机)。常见的连接组网方式分为光纤通道(fibrechannel,fc)组网,基于互联网小型计算机系统接口(internetsmallcomputersysteminterface,iscsi),此处对协议不作限制。每种组网方式中,任意一个计算节点100上存在启动器的全球唯一标识(worldwidenumber,wwn)。81.因此,任意一个计算节点100可以通过网络访问存储节点集群中的任意一个存储节点20,存储节点集群包括多个存储节点20(图2a中示出了三个存储节点20,但不限于三个存储节点20),各个存储节点20之间可以互联。存储节点20如存储服务器、台式计算机或者存储阵列的控制器、硬件框等。在功能上,存储节点20主要用于对数据进行计算或处理等。另外,存储节点集群还包括管理节点(图2a未示出)。管理节点用于创建并管理内存池。各个存储节点20从存储节点中选举中一个节点让它承担管理节点的职能。管理节点可以与任意一个存储节点201通信。82.在硬件上,如图2a所示,存储节点20至少包括处理器、存储器和控制单元201。其中,处理器202是中央处理器(centralprocessingunit,cpu),用于处理来自存储节点20外部的数据,或者存储节点20内部生成的数据。存储器,是指用于存储数据的装置,它可以是内存,也可以是硬盘。内存是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(readonlymemory,rom)。举例来说,随机存取存储器可以是动态随机存取存储器(dynamicrandomaccessmemory,dram),也可以是存储级存储器(storageclassmemory,scm)。dram是一种半导体存储器,与大部分随机存取存储器(randomaccessmemory,ram)一样,属于一种易失性存储器(volatilememory)设备。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比dram慢,在成本上也比dram更为便宜。83.然而,dram和scm在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(staticrandomaccessmemory,sram)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmablereadonlymemory,prom)、可抹除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)等。另外,内存还可以是双列直插式存储器模块或双线存储器模块(dualin-linememorymodule,简称dimm),即由动态随机存取存储器(dram)组成的模块。在后面的描述中,均以dram和scm为例进行说明,但不代表存储节点20不包含其他类型的存储器。84.本实施例中的存储器还可以是硬盘。与内存203不同的是,硬盘读写数据的速度比内存慢,通常用于持久性地存储数据。以存储节点20a为例,其内部可以设置一个或多个硬盘;或者,在存储节点20a的外部还可以挂载一个硬盘框(如图2b所示),在硬盘框中设置多个硬盘。无论哪一种部署方式,这些硬盘都可以视作存储节点20a所包含的硬盘。硬盘类型为固态硬盘、机械硬盘,或者其他类型的硬盘。类似的,存储节点集群中的其他存储节点,如存储节点20b、存储节点20c也可以包含各种类型的硬盘。一个存储节点20中可以包含一个或多个同一种类型的存储器。85.本实施例中的内存池中所包括的硬盘,也可以具有内存接口,处理器可以直接对其进行访问。86.在一种可能的实施方式中,用户设备300是具有数据处理、数据收发能力的电子设备。例如可以包含手持终端、可穿戴设备、车辆机器人等独立设备,也可以是包含在独立设备中的部件(例如芯片或集成电路)。示例性的,当用户设备为手持终端时,可以是手机(mobilephone)、平板电脑(pad)、电脑(如笔记本电脑、掌上电脑等)等。可以理解的是,用户设备300可以是管理员操作的设备。可选地,管理员通过用户设备300可以向存储节点20发送地址范围,存储节点20可以将地址范围设置为逻辑单元号lun的保护区域地址。该地址范围为逻辑单元号的保护区域地址,该地址范围包含起始逻辑块地址和结束逻辑块地址。87.需要说明的是,在一种可能的实施方式中,计算节点100和用户设备300可以集成到一个设备中。88.在一种可能的实施方式中,计算节点100可以通过启动器下发输入输出(input/output,i/o)请求到存储节点20,存储节点20可以通过收到的i/o所携带的启动器wwn来识别i/o来自某个特定的计算节点100。89.在本实施例的存储系统中,计算节点100接收用户发送的写数据操作时,计算节点100可以将这些写数据操作中的数据向存储节点20发送。因此,存储节点20可以接收来自计算节点的对逻辑单元号的写数据操作。然后,在写数据操作为写零操作或者非首次写数据操作的情况下,存储节点20可以识别上述写数据操作是对逻辑单元号的格式化操作。进一步地,存储节点20可以通过确定写数据操作携带的第一地址落入对逻辑单元号预设的保护区域地址中来识别上述写数据操作是对逻辑单元号的格式化操作。因此,存储节点20对逻辑单元号执行保护策略。比如说,触发告警,同时激活内部数据保护(可以是快照或其他形式。)对于双写特征业务(比如说双活或者同步远程复制),主动断开通信链路。90.请参考图2b,图2b是存储节点20的内部结构示意图。在实际应用中,存储节点20可以是服务器也可以是存储阵列。如图2b所示,除了处理器和存储器之外,存储节点20还包括控制单元。由于内存的访问时延很低,操作系统调度以及软件本身的开销就可能成为数据处理的瓶颈。为了减少软件开销,本实施例引入硬件组件控制单元,用于将io的访问进行硬件化,降低cpu调度和软件栈的影响。首先,存储节点20有自己的控制单元22,用于与计算节点100通信,还用于与其他存储节点通信。具体的,存储节点20可通过控制单元22接收来自计算节点100的请求,或者通过控制单元22向计算节点100发送请求,存储节点20也可以通过控制单元22向存储节点20发送请求,或者通过控制单元22接收来自存储节点20的请求。其次,存储节点20内的各个内存之间可以通过控制单元22通信,也可以通过控制单元22与计算节点100通信。最后,如果存储节点20所包含的各个硬盘位于存储节点20内部,那么这些硬盘之间可以通过控制单元22通信,也可以通过控制单元22与计算节点100通信。如果所述各个硬盘位于存储节点20外接的硬盘框中,那么硬盘框中设置有控制单元24,控制单元24用于与控制单元22通信,硬盘可以通过控制单元24向控制单元22发送数据或指令,也可以通过控制单元24接收控制单元22发送的数据或指令。另外,存储节点20还可以包括总线(图2b中未示出)用于存储节点20内部各组件之间的通信。91.请参考图2c,图2c是控制单元的结构示意图,以控制单元22为例,它包括通信单元220和计算单元221,其中,通信单元提供高效的网络传输能力,用于外部或内部通信,这里以网络接口控制器(networkinterfacecontroller,nic)为例。计算单元221是一个可编程的电子部件,用于对数据进行计算处理等,本实施例以数据处理单元(dataprocessingunit,dpu)为例予以说明。dpu具有cpu的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。dpu通过较大程度的并行性(需要处理大量请求)与cpu区别开来。可选的,这里的dpu也可以替换成图形处理单元(graphicsprocessingunit,gpu)、嵌入式神经网络处理器(neural-networkprocessingunits,npu)等处理芯片。dpu用于提供针对内存池的数据卸载服务,例如地址索引或地址查询功能,分区功能以及对数据进行过滤、扫描等操作。当io请求通过nic进行存储节点20之后,直接在计算单元221上进行处理,绕过了存储节点20内部的cpu和操作系统,压薄了软件栈,减少了cpu调度的影响。以执行读io请求为例,当nic接收计算节点100发送的所述读io请求后,dpu可直接在索引表中查询所述读io请求所述对应的信息。另外控制单元22还包括dram222,dram222在物理上和图2b所描述的dram一致,只是这里的dram222是属于控制单元22自己的内存,用于临时存储经过控制单元22的数据或指令,它不构成内存池的一部分。另外,控制单元22还可以将dram222映射至计算节点100,使得dram222的空间对计算节点100可见,由此将io访问转化为基于内存语义的访问。控制单元24的结构与功能与控制单元22类似,这里不再一一展开描述。92.下面介绍本实施例提供的内存池,图3a是内存池的架构示意图。所述内存池中包含有多种不同类型的存储器,每一种类型的存储器可以看作一个层级。每个层级的存储器的性能与其他层级的存储器的性能不同。本技术中的存储器的性能主要从运算速度和/或访问时延等方面进行考量。图3b是本实施例提供的内存池所包含各层级的存储器的示意图。由图3b所示,内存池由各个存储节点20中的存储器组成,其中,各存储节点中的dram位于所述内存池的第一层级,因为dram在各种类型的存储器性能最高。scm的性能低于dram,因此各个存储节点中的scm位于所述内存池的第二层级。进一步地,硬盘的性能低于scm,所以各个存储节点中的硬盘位于所述内存池的第三层级。虽然图3a和图3b中只示出了三种类型的存储器,但是按照前面的描述,在产品实践中存储节点20内部可部署多种不同类型的存储器,即各种类型的内存或硬盘均可以成为内存池的一部分,并且位于不同存储节点上的相同类型的存储器在所述内存池中属于同一层级。本技术不对内存池所包含的存储器的类型,以及层级的数量做任何限定。内存池的层级只是内部的划分,对上层应用来说是不感知的。需要注意的是,虽然各个存储节点上的同一种存储器处于同一层级,但是对某一个存储节点来说,使用其本地的dram的性能高于使用其他存储节点的dram的性能,同理,使用本地的scm的性能高于使用其他存储节点的scm的性能,等等。因此,对该存储节点来说,当需要分配某一层级的内存空间时,会优先分配其本地属于该层级的空间给用户,当本地空间不足时再从其他存储节点的同一层级中分配。除此之外,也可以根据负载均衡或者容量均衡等策略分配内存空间。93.在图3a或图3b所示的内存池包含了存储节点中的所有类型的存储器,然而在其他实施方式中,如图4a或图4b所示,内存池可以只包含部分类型的存储器,例如只包含较高性能的存储器,例如dram和scm,而排除硬盘等性能相对较低的存储器。94.本实施例提供的另一种内存池的网络架构可参考图4b,如图4b所示,在这种网络架构中,存储节点和计算节点集成在同一个物理设备中,本实施例中将所述集成的设备统一称为存储节点。应用部署在存储节点20内部,所以应用可直接通过存储节点20中的客户端触发写数据操作或读数据请求,由该存储节点20处理,或者发送给其他存储节点20处理。此时,客户端向本地存储节点20发送的读写数据操作具体是指客户端向处理器发送数据访问请求。除此之外,存储节点20所包含的组件及其功能与图4a中的存储节点20类似,这里不再赘述。与图3a至图4a任一所示的内存池类似,这种网络架构下的内存池可以包含了存储节点中的所有类型的存储器,也可以只包含部分类型的存储器,例如只包含较高性能的存储器,例如dram和scm,而排除硬盘等性能相对较低的存储器(如图4b所示)。95.另外,在图3a至图4b所示的内存池中,并非存储节点集群中的每一个存储节点都必须为所述内存池贡献存储空间,所述内存池可以仅覆盖集群中的部分存储节点。在某些应用场景中,存储节点集群中还可以创建两个或两个以上的内存池,每个内存池覆盖多个存储节点,由这些存储节点为该内存池提供存储空间。不同内存池所述占用的存储节点可以重复也可以不重复。总而言之,本实施例中的内存池是在至少两个存储节点中建立的,其包含的存储空间来源于至少两种不同类型的存储器。96.当内存池仅包含存储集群中的较高性能的存储器(例如dram和scm)时,管理节点还可以将存储集群中的较低性能的存储器(例如硬盘)构建成一个存储池。图4c以图4a所示的网络架构为例对存储池进行了描述,与内存池类似,图4c所示的存储池也跨越了至少两个存储节点,其存储空间由所述至少两个存储节点中的一种或多种类型的硬盘构成。当存储集群中既包含内存池又包含存储池时,存储池用于持久化地存储数据,特别是访问频率较低的数据,而内存池则用于临时存储数据,特别是访问频率较高的数据。具体的,当内存池中存储的数据量到达设定的阈值时,所述内存池中的部分数据将会被写入存储池中存储。可以理解的是,存储池也可以建立在图4b所示的网络架构中,其实现原理与上面的描述类似。97.关于内存池的创建。各个存储节点20通过心跳通道定期向管理节点上报存储器的状态信息。管理节点可以有一个,也可以部署多个。它可以作为独立节点部署在存储节点集群中,也可以和存储节点20联合部署。换言之,由某一个或多个存储节点20承担管理节点的职能。存储器的状态信息包括但不限于:该存储节点所包含的各种存储器的类型、健康状态、每种存储器的总容量以及可用容量等等。管理节点根据采集的信息创建内存池,创建意味着将各个存储节点20所提供的存储空间集中起来作为内存池统一管理,因此内存池的物理空间来源于各个存储节点所包含的各种存储器。然而,在某些场景下,存储节点20可以根据自身情况,例如存储器的健康状态,选择性地提供存储器给内存池。换言之,有可能某些存储节点中的某些存储器并非内存池的一部分。98.采集完信息之后,管理节点需要对被纳入所述内存池的存储空间进行统一编址。经过统一编址,所述内存池的每段空间都有一个唯一的全局地址。所谓全局地址,它所指示的空间在内存池中是唯一的,并且每个存储节点20都知道该地址的含义。在给内存池的一段空间分配了物理空间之后,该空间的全局地址就拥有了其对应的物理地址,所述物理地址指示了该全局地址所代表的空间实际位于哪个存储节点的哪个存储器上,以及在该存储器中的偏移量,即物理空间的位置。这里的每段空间是指“页”,后面会详细介绍。在实际应用中,为了保证数据的可靠性,往往采用纠删码(erasurecoding,ec)校验机制或者多副本机制来实现数据冗余。ec校验机制是指将数据划分为至少两个数据分片,按照一定的校验算法计算所述至少两个数据分片的校验分片,当其中一个数据分片丢失时,可以利用另一个数据分片以及校验分片恢复数据。那么,对于所述数据而言,其全局地址是多个细粒度的全局地址的集合,每个细粒度的全局地址对应了一个数据分片/校验分片的物理地址。多副本机制是指存储至少两份相同的数据副本,并且,这至少两份数据副本存储在两个不同的物理地址中。当其中一份数据副本丢失时,可以使用其他数据副本恢复。因此,对于所述数据而言,其全局地址也是多个更细粒度的全局地址的集合,每个细粒度的全局地址对应了一个数据副本的物理地址。99.管理节点可以在创建内存池之后为各个全局地址分配物理空间,也可以在接收写数据操作时为所述写数据操作所对应的全局地址分配物理空间。各个全局地址与其物理地址之间的对应关系被记录在索引表中,管理节点将所述索引表同步给各个存储节点20。各个存储节点20存储所述索引表,以便后续读写数据时根据索引表查询全局地址对应的物理地址。100.在某些应用场景中,内存池并非直接将其存储空间暴露给计算节点100,而是将存储空间虚拟化为逻辑单元(logicalunit,lu)提供给计算节点100使用。每个逻辑单元具有唯一的逻辑单元号(logicalunitnumber,lun)。由于计算节点100能直接感知到逻辑单元号,本领域技术人员通常直接用lun代指逻辑单元。每个lun具有lunid,用于标识所述lun。此时,内存池以页为粒度为lun提供存储空间,换句话说,当存储节点20向内存池申请空间时,内存池以一个页或者页的整数倍为其分配空间。一个页的大小可以是4kb,也可以是8kb等等,本技术不对页的大小进行限定。数据位于一个lun内的具体位置可以由起始地址和该数据的长度(length)确定。对于起始地址,本领域技术人员通常称作逻辑块地址(logicalblockaddress,lba)。可以理解的是,lunid、lba和length这三个因素标识了一个确定的地址段,一个地址段可以索引到一个全局地址。为了保证数据均匀存储在各个存储节点20中,计算节点100通常采用分布式哈希表(distributedhashtable,dht)方式进行路由,按照分布式哈希表方式,将哈希环均匀地划分为若干部分,每个部分称为一个分区,一个分区对应一个上面描述的地址段。计算节点100向存储节点20发送的数据访问请求,都会被定位到一个地址段上,例如从所述地址段上读取数据,或者往所述地址段上写入数据。101.在上面描述的应用场景中,计算节点100与存储节点20之间利用lun语义进行通信。在另一种应用场景中,计算节点100与存储节点20之间利用内存语义进行通信。此时,控制单元22将其dram的空间映射给计算节点100,使得计算节点100可以感知到所述dram的空间(本实施例中将其称为虚拟空间),对所述虚拟空间进行访问。在这种场景中,计算节点100发送给存储节点20的读/写数据操作不再携带lunid、lba和length,而是其他逻辑地址,例如虚拟空间id、虚拟空间的起始地址以及长度。在另一种应用场景中,控制单元22可以将它管理的内存池中的空间映射给计算节点100,使得计算节点100可以感知到这部分空间,并且获得这部分空间所对应的全局地址。例如,存储节点20a中的控制单元22用于管理内存池中由存储节点20a提供的存储空间,存储节点20b中的控制单元22用于管理内存池中由存储节点20b提供的存储空间,存储节点20c中的控制单元22用于管理内存池中由存储节点20c提供的存储空间,等等。因此整个内存池对计算节点100来说是可见的,那么计算节点100在向存储节点发送待写入数据时,可以直接指定该数据的全局地址。102.下面以应用向内存池申请存储空间为例说明空间分配流程。一种情况下,应用是指存储节点的内部服务,例如,存储节点20a内部生成一个内存申请指令,所述内存申请指令包括申请的空间大小以及存储器的类型。为了便于理解,这里假设申请的空间为16kb,存储器的类型为scm。简而言之,申请的空间大小是由存储的数据的大小决定的,而申请的存储器的类型是由该数据的冷热信息决定的。存储节点20a从存储的索引表中获取一段空闲的全局地址,例如地址区间为[000001-000004],其中,地址为000001的空间为一个页。所谓空闲的全局地址,是指该全局地址尚未被任何数据占用。然后,存储节点20a查询本地的scm是否拥有16kb的空闲空间,若有,则从本地分配空间给所述全局地址,若否,则继续查询其他存储节点20的scm是否拥有16kb的空闲空间,该步骤可以通过向其他存储节点20发送查询指令来实现。由于其他存储节点20与存储节点20a在距离上有远近之分,为了降低时延,存储节点20a在本地不能支撑分配16kb的空闲空间的情况下,可以优先向距离近的存储节点20查询。待获得物理地址之后,存储节点20a将所述全局地址与所述物理地址的对应关系记录在索引表中,并将所述对应关系同步到其他存储节点。在确定物理地址之后,存储节点20a就可以使用所述物理地址对应的空间存储数据了。另一种情况下,应用是指计算节点100中的应用101,这种情况下,内存申请指令则是计算节点100生成之后发送给存储节点20a的。那么,用户可以通过计算节点100指定申请的空间大小以及存储器的类型。[0103]上述索引表的作用主要在于记录全局地址与分区id的对应关系、以及全局地址与物理地址的对应关系,除此之外,还可以用于记录数据的属性信息。例如,全局地址为000001的数据所具有的冷热信息或数据常驻策略等等。后续可以根据这些属性信息实现数据在各种存储器之间的迁移,或者进行属性设置等。应理解,数据的属性信息只是索引表的一个可选项,并非必须记录。[0104]有新的存储节点加入存储节点集群时,管理节点收集节点更新信息,将新的存储节点纳入内存池,对该存储节点所包含的存储空间进行编址,从而生成新的全局地址,再刷新分区与全局地址之间的对应关系(因为无论是扩容还是缩容,分区的总数是不变的)。扩容也同样适用于某些存储节点增加了内存或硬盘的情况,管理节点定期收集各个存储节点所包含的存储器的状态信息,如果的新的存储器加入,将其纳入内存池,并对新的存储空间进行编址,从而生成新的全局地址,再刷新分区与全局地址之间的对应关系。同理,本实施例提供的内存池也支持缩容,只要更新全局地址与分区的对应关系即可。[0105]进一步可选的,存储节点20还可以包括通信接口(图2a至图4c中未示意出)。更进一步可选的,还可以包含总线(图2a至图4c中未示意出)。其中,处理器、通信接口和存储器通过总线相连。[0106]存储节点20中的至少一个处理器用于执行控制逻辑单元号被误格式化的方法。[0107]在一种可能的实施方式中,该存储节点20中的至少一个处理器用于执行调用计算机指令,以执行以下操作:[0108]通过通信接口接收对逻辑单元号的写数据操作;[0109]识别写数据操作是对所述逻辑单元号的格式化操作;[0110]对所述逻辑单元号进行保护。[0111]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0112]确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。[0113]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0114]确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。[0115]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0116]确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。[0117]在又一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。[0118]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0119]触发对所述逻辑单元号的内部快照激活;或者,[0120]在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。[0121]本实施例提供的内存池中的各个存储器均提供内存接口给处理器,使得处理器看到的是一段连续的空间,可以直接对内存池中的存储器进行读写数据操作。[0122]在本实施例的存储系统中,基于多种性能的存储器创建内存池,并且这些多种性能的存储器位于不同的存储节点上,从而实现了跨节点的,融合了不同性能的存储器的内存池,使得各种类型的存储器(无论是内存还是硬盘)都能够作为存储资源为上层提供存储服务,从而更好地发挥其性能优势。由于所述内存池中包含了不同性能的存储器,所以可以控制数据基于其访问频率在不同性能的存储器之间迁移,既能够在数据的访问频率较高时迁移至高性能的存储器以提高读数据的效率,也可以在数据的访问频率较低时迁移至低性能的存储器以节省高性能的存储器的存储空间。另外本技术中的内存池为计算节点或lun提供存储空间,它改变内存资源以处理器为中心的架构。[0123]请参见图5,图5是本技术实施例提供的一种控制逻辑单元号被误格式化的方法的流程示意图,该方法可基于图2a至图4c所示的系统来实现,该方法至少包括如下步骤:[0124]步骤s501,接收对逻辑单元号的写数据操作。[0125]具体的,计算节点向存储节点发送对逻辑单元号的写数据操作。相应的,存储节点接收来自计算节点的对逻辑单元号的写数据操作。[0126]其中,写数据操作携带有数据的第一地址(也即逻辑地址),写数据操作用于将携带的数据写入存储节点的逻辑单元号lun的第一地址中。在lun语义的应用场景中,数据的逻辑地址包括lunid、lba和length。在内存语义的应用场景中,逻辑地址包括虚拟地址id、寻空间的起始地址和length。[0127]步骤s502,识别写数据操作是对逻辑单元号的格式化操作。[0128]在一种可能的实现方式中,写数据操作包括写零操作,也即写数据操作携带的数据为全零数据。存储节点在确定对逻辑单元号的写数据操作为写零操作的情况下,识别写数据操作是对逻辑单元号的格式化操作。[0129]在一种可能的实现方式中,若存储节点在预设时间段内接收来自计算节点对逻辑单元号的多次写数据操作,说明在存储节点第一次接收到对逻辑单元号的写数据操作后,在预设时间段内再次接收到写数据操作。而再次接收到写数据操作意味着之前的数据将会被覆盖,这种情况可能会造成lun上的数据被误格式化。因此,在上述情况中,存储节点可以通过只读的方式来防止lun上的数据被误格式化。也即存储节点在确定对逻辑单元号的写数据操作为非首次写数据操作的情况下,识别非首次写数据操作是对逻辑单元号的格式化操作。[0130]在另一种可能的实现方式中,存储节点确定对逻辑单元号的写数据操作携带的第一地址落入对逻辑单元号预设的保护区域地址中,说明存储节点识别写数据操作是对逻辑单元号的格式化操作。[0131]对于保护区域地址的设置,请参见图6,图6是本技术实施例提供的一种设置保护区域地址的流程示意图。从图6可以看出,本技术实施例提供三种设置保护区域地址的方式:[0132]方式一:系统默认的地址,也即存储节点中预先设置有保护区域地址。该保护区域地址包含逻辑单元号的逻辑区块地址,比如说0-100mb。在管理员不通过用户设备对存储节点的保护区域地址进行设置的情况下,存储节点采用系统默认的保护区域地址。[0133]方式二:用户设置(比如说管理员)的地址,用户可以手动设置保护区域地址。也即,在存储节点接收来自计算节点对逻辑单元号的写数据操作之前,管理员可以通过用户设备向存储节点发送管理员手动输入的保护区域地址。相应的,存储节点接收来自用户设备的地址范围,存储节点将该地址范围设置为逻辑单元号的保护区域地址。其中,该地址范围包含起始逻辑区块地址至结束逻辑区块地址。[0134]方式三,系统识别的地址,通过用户设备设置存储节点自动识别保护区域地址。也即,在存储节点的逻辑单元号被写入数据后,存储节点可以获取逻辑单元号lun上被写入的数据,由存储节点的后台识别逻辑单元号lun上写入的数据。然后,存储节点可以根据写入的数据来设置逻辑单元号lun的保护区域地址。进一步地,存储节点可以通过写入的数据来匹配常见的数据库、虚拟机的元数据分区信息,将匹配后得到的逻辑区块地址设置为逻辑单元号lun的保护区域地址。[0135]进一步地,存储节点可以保存保护区域地址到逻辑单元号lun对象中。[0136]可以理解的是,若管理员没有通过用户设备设置存储节点的保护区域地址,则存储节点采用系统默认的保护区域地址。若管理员通过用户设备设置存储节点的保护区域地址,则以最新设置的保护区域地址为主。比如说,t1时刻,管理员通过方式二设置存储节点的保护区域地址。但是,在t2时刻,管理员通过方式三设置存储节点的保护区域地址,则在t2时刻,方式三的保护区域地址将覆盖方式二的保护区域地址。其中,t2大于t1。[0137]在一种可能实现方式中,在存储节点确定上述写数据操作为写零操作的情况下,说明写零操作携带的是全零数据,可能会误格式化lun上的数据。因此,存储节点需要判断写零操作携带的全零数据的数据范围与lun上的保护区域地址是否存在重叠。若存储节点确定数据范围与保护区域地址存在重叠范围,说明lun上被保护的数据区域将会被格式化,则执行步骤s503,若存储节点确定数据范围与保护区域地址不存在重叠范围,则按照写零操作继续下发。[0138]步骤s503,对逻辑单元号进行保护。[0139]具体地,在存储节点确定写操作携带的第一地址落入对逻辑单元到预设的保护区域地址中的情况下,说明lun中的数据可能会被误格式化。因此,存储节点需要对逻辑单元号lun执行保护策略。[0140]在一种可能的实现方式中,存储节点需要触发逻辑单元号的内部保护快照激活,提前备份好可能会被误格式化的数据。或者,在逻辑单元号存在双写特性业务的情况下,端口与双写特性业务相关的远端设备。从而可以保护双写业务的某一端设备被误格式化化的情况下,另一端设备的数据不会被破坏。[0141]在存储节点确定数据范围与保护区域地址存在重叠范围之后,对逻辑单元号执行保护策略之前,存储节点还可以生成告警信息,该告警信息包含告警时间和计算节点的启动器端口标识。可以理解的是,告警标识用于指示用户(比如说管理员)进行告警处理。[0142]示例性的,告警处理包含预期告警处理和非预期告警处理。管理员可以根据告警信息所包含的计算节点的启动器端口标识确定对应的计算节点,确定计算节点的行为是可预期的还是不可预期的。其中,预期告警说明计算节点对存储节点的写数据操作是可预期的正常写零时数据,比如不保留源lun数据,需要格式化该lun。关于预期告警处理包含以下一种或多种操作:则管理员向存储节点发送删除告警信息的指令,存储节点将删除告警。管理员向存储节点发送删除内部快照的指令,存储节点将删除内部快照。管理员向存储节点发送恢复双写特性业务的指令,存储节点将恢复双写特性业务。[0143]非预期告警说明计算节点并没有对存储节点进行格式化操作,说明存在人为蓄意或无意的命令操作、病毒软件等行为。关于非预期告警包含以下一种或多种操作:管理员隔离异常计算节点,并通过内部快照回滚的方式恢复源lun数据;若存在双写特性业务,管理员可以通过远端设备的数据覆盖本地设备数据的方式恢复逻辑单元号上的数据。[0144]请参见图7,图7是本技术实施例提供的一种对逻辑单元号执行保护策略的流程示意图。从图7可以看出,计算节点向存储节点下发对逻辑单元号的写数据操作,存储节点接收到对逻辑单元号的写数据操作后,判断写数据操作所携带的数据是否为全零数据,若不是全零数据,则存储节点可以继续执行写数据操作的后续操作。若是全零数据,则存储节点判断写数据操作所携带的数据的第一地址与对逻辑单元号预设的保护区域地址是否有重叠。若不存在重叠,则存储节点可以继续执行写数据操作的后续操作。若存在重叠范围,则存储节点生成告警信息,告警信息包含告警时间和计算节点的启动器端口标识。管理员可以根据告警信息进行告警处理。[0145]存储节点生成告警信息说明可能会出现误格式化逻辑单元号lun,因此存储节点会触发内部保护快照激活;或者,在逻辑单元号lun存在双写特征业务(比如说双活业务、同步复制,等)的情况下,存储节点将断开与双写特征业务相关的远端设备,且设置为手动恢复模式。存储节点在进行上述处理操作后,可以继续执行写数据操作的后续操作。[0146]接下来介绍管理员发现告警后的处理,管理员可以根据告警信息所包含的计算节点的启动器端口标识找到对应的计算节点,判断计算节点的行为是可预期的还是不可预期的。如果是可预期的正常写零操作(比如说不保留源逻辑单元号lun中的数据,需要格式化该lun),则管理员向存储节点发送删除告警信息的指令,存储节点将删除告警。管理员向存储节点发送删除内部快照的指令,存储节点将删除内部快照。管理员向存储节点发送恢复双写特性业务的指令,存储节点将恢复双写特性业务。[0147]如果是不可预期的数据写入,则管理员可以隔离异常计算设备,存储节点可以通过内部快照回滚方式恢复逻辑单元号中的数据。如果存在双写特性业务,存储节点可以通远端设备覆盖本地设备数据的方式来恢复逻辑单元号中的数据。[0148]上述详细阐述了本技术实施例的方法,下面提供本技术实施例的装置。[0149]请参见图8,图8是本技术实施例提供的一种存储节点80的结构示意图,该存储节点80用于实现前述的控制逻辑单元号被误格式化的方法,例如图5所示实施例中的方法。[0150]一种可能的实施方式中,该存储节点80可以包括通信单元801和处理单元802。[0151]在一种可能的实施方式中,通信单元801用于接收对逻辑单元号的写数据操作;[0152]处理单元802,用于识别所述写数据操作是对所述逻辑单元号的格式化操作;[0153]处理单元802,还用于对所述逻辑单元号进行保护。[0154]在又一种可能的实施方式中,处理单元802,具体用于:[0155]确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。[0156]在又一种可能的实施方式中,处理单元802,具体用于:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。[0157]在又一种可能的实施方式中,处理单元802,具体用于:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。[0158]在又一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。[0159]在又一种可能的实施方式中,处理单元802,具体用于:触发对所述逻辑单元号的内部快照激活;或者,[0160]在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。[0161]本技术还提供了一种算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述的控制逻辑单元号被误格式化的方法,例如图5所示的控制逻辑单元号被误格式化的方法。[0162]本技术还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,在被计算设备执行时,实现前述的控制逻辑单元号被误格式化的方法,例如图5所示的控制逻辑单元号被误格式化的方法。[0163]本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。[0164]本技术中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a、同时存在a和b、单独存在b这三种情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。[0165]以及,除非有相反的说明,本技术实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一用户设备和第二用户设备,只是为了便于描述,而并不是表示这第一用户设备和第二用户设备的结构、重要程度等的不同,在某些实施例中,第一用户设备和第二用户设备还可以是同样的设备。[0166]上述实施例中所用,根据上下文,术语“当……时”可以被解释为意思是“如果……”或“在……后”或“响应于确定……”或“响应于检测到……”。以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。[0167]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。当前第1页12当前第1页12
技术特征:
1.一种控制逻辑单元号被误格式化的方法,其特征在于,包括:接收对逻辑单元号的写数据操作;识别所述写数据操作是对所述逻辑单元号的格式化操作;对所述逻辑单元号进行保护。2.根据权利要求1所述的方法,其特征在于,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。3.根据权利要求1所述的方法,其特征在于,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。4.根据权利要求1至3任一项所述的方法,其特征在于,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。5.根据权利要求4所述的方法,其特征在于,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。6.根据权利要求1至5任一项所述的方法,其特征在于,所述对所述逻辑单元号进行保护,包括:触发对所述逻辑单元号的内部快照激活;或者,在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。7.一种存储节点,其特征在于,包括:通信单元,用于接收对逻辑单元号的写数据操作;处理单元,用于识别所述写数据操作是对所述逻辑单元号的格式化操作;所述处理单元,还用于对所述逻辑单元号进行保护。8.根据权利要求7所述的存储节点,其特征在于,所述处理单元,具体用于:确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。9.根据权利要求7所述的存储节点,其特征在于,所述处理单元,具体用于:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。10.根据权利要求7至9任一项所述的存储节点,其特征在于,所述处理单元,具体用于:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。11.根据权利要求10所述的存储节点,其特征在于,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。12.根据权利要求7至11任一项所述的存储节点,其特征在于,所述处理单元,具体用于:触发对所述逻辑单元号的内部快照激活;或者,
在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。13.一种存储节点,其特征在于,所述存储节点包括处理器和存储器;所述存储器中存储有计算机程序;所述处理器执行所述计算机程序时,所述存储节点执行前述权利要求1至6中任一项所述的方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现如权利要求1至6中任一项所述的方法。
技术总结
本申请实施例提供一种控制逻辑单元号被误格式化的方法及相关设备,该方法包括:接收对逻辑单元号的写数据操作;识别控制逻辑单元号被误格式化的方法写数据操作是对控制逻辑单元号被误格式化的方法逻辑单元号的格式化操作;对控制逻辑单元号被误格式化的方法逻辑单元号进行保护。采用本申请实施例,能够识别对逻辑单元号的写操作是对逻辑单元号的格式化操作,从而对逻辑单元号进行保护,避免因误格式化操作而导致逻辑单元号上的数据被破坏。格式化操作而导致逻辑单元号上的数据被破坏。格式化操作而导致逻辑单元号上的数据被破坏。
技术研发人员:罗镇
受保护的技术使用者:成都华为技术有限公司
技术研发日:2022.03.08
技术公布日:2023/9/20
技术领域:
:,尤其涉及一种控制逻辑单元号被误格式化的方法及相关设备。
背景技术:
::2.存储设备为计算节点提供逻辑单元号(logicalunitnumber,lun),用于存储数据。但是,存储设备可能会存在误格式化lun,比如说使用某些命令写入全零数据,导致存储有数据的lun执行了格式化操作,将lun上的数据全部或部分清零。3.为了防止误格式化覆盖或者破坏lun中的数据,现有的方式一般采用配置周期性快照的方式进行保护。周期性快照是指每间隔一定的时间就自动生成一个快照,同时通过维护快照总个数的方式将老的快照删除。如果发现源lun数据损坏后,可以在所有的快照中找到一个数据损坏前的最新数据进行恢复。4.由于快照个数和周期有限,不能保证发现问题后一定存在被误格式化前的快照,所以不能在第一时间保护lun上的数据。技术实现要素:5.本技术实施例提供了一种控制逻辑单元号被误格式化的方法及相关设备,能够识别对逻辑单元号的写操作是对逻辑单元号的格式化操作,从而对逻辑单元号进行保护,避免因误格式化操作而导致逻辑单元号上的数据被破坏。6.第一方面,本技术实施例提供了一种控制逻辑单元号被误格式化的方法,包括:7.接收对逻辑单元号的写数据操作;8.识别所述写数据操作是对所述逻辑单元号的格式化操作;9.对所述逻辑单元号进行保护。10.上述方法可应用于存储节点,由存储节点或存储节点内部的部件(例如芯片、软件模块或集成电路)来执行。11.在本技术实施例中,存储节点可以提供逻辑单元号,用于存储数据。在存储单元接收到对逻辑单元号的写数据操作可,可以识别写数据操作是对逻辑单元号的格式化操作。为了避免是误格式化操作,存储节点可以对逻辑单元进行保护,防止逻辑单元号中存储的数据遭到破坏。12.在第一方面的一种可能的实施方式中,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。13.可以看出,对逻辑单元号进行写零操作意味着可能将逻辑单元号上的数据进行清零,因此需要识别写零操作是对逻辑单元号的格式化操作,避免因写零操作将逻辑单元号上的数据给误格式化。14.在第一方面的一种可能的实施方式中,述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。15.可以看出,非首次写数据操作说明逻辑单元号已经被写过一次了,当逻辑单元号再次被写入时说明可能会对逻辑单元号上的数据进行一些操作,因此需要识别非首次写数据操作是对逻辑单元号的格式化操作,避免因非首次写数据操作而破坏逻辑单元号上的数据。16.在第一方面的一种可能的实施方式中,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。17.可以理解的是,逻辑单元号预设的保护区域地址表明上述地址的数据是被保护起来的,在写数据操作携带的第一地址落入上述地址时,表明该写数据操作可能对逻辑单元号上被保护起来的数据进行误格式化。这样,可以及时发现对逻辑单元号的误格式化操作,从而采取相关保护措施保护逻辑单元号上的数据。18.在第一方面的一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。19.可以看出,通过不同方式可以设置保护区域地址,满足不同用户的需求。20.在第一方面的一种可能的实施方式中,所述对所述逻辑单元号进行保护,包括:触发对所述逻辑单元号的内部快照激活;或者,在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。21.可以看出,针对不同业务,本方案可以提供不同的保护措施,从而可以第一时间保护数据,保护数据被误格式化前的最新数据。22.第二方面,本技术实施例还提供了一种存储节点,包括:23.通信单元,用于接收对逻辑单元号的写数据操作;24.处理单元,用于识别所述写数据操作是对所述逻辑单元号的格式化操作;25.所述处理单元,还用于对所述逻辑单元号进行保护。26.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:27.确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。28.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:29.确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。30.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:31.确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。32.在第二方面的一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。33.在第二方面的一种可能的实施方式中,所述处理单元,具体用于:34.触发对所述逻辑单元号的内部快照激活;或者,35.在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。36.第三方面,本技术实施例提供了一种存储节点,所述存储节点包括至少一个处理器和至少一个存储器;37.所述存储器中存储有计算机程序;38.所述处理器执行所述计算机程序时,所述存储节点执行前述第一方面所描述的方法。39.需要说明的是,上述第三方面所描述的存储节点所包含的处理器,可以是专门用于执行这些方法的处理器(便于区别称为专用处理器),也可以是通过调用计算机程序来执行这些方法的处理器,例如通用处理器。可选的,至少一个处理器还可以既包括专用处理器也包括通用处理器。40.可选的,上述计算机程序可以存在存储器中。示例性的,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(readonlymemory,rom),其可以与处理器集成在同一块器件上,也可以分别设置在不同的器件上,本技术实施例对存储器的类型以及存储器与处理器的设置方式不做限定。41.在一种可能的实施方式中,上述至少一个存储器位于上述存储节点之外。42.在又一种可能的实施方式中,上述至少一个存储器位于上述存储节点之内。43.在又一种可能的实施方式之中,上述至少一个存储器的部分存储器位于上述存储节点之内,另一部分存储器位于上述存储节点之外。44.本技术中,处理器和存储器还可能集成于一个器件中,即处理器和存储器还可以被集成在一起。45.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面所描述的方法。46.第五方面,本技术提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面所描述的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在存储节点上执行该计算机程序产品。47.本技术第二至第五方面所提供的技术方法,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。附图说明48.以下对本技术实施例用到的附图进行介绍。49.图1是本技术实施例提供的一种通过快照lun的方式保护数据被误格式化的场景示意图;50.图2a是本技术实施例提供的一种存储系统的架构示意图;51.图2b是本技术实施例提供的一种存储节点的内部结构示意图;52.图2c是本技术实施例提供的一种控制单元的结构示意图;53.图3a是本技术实施例提供的一种内存池的架构示意图;54.图3b是本技术实施例提供的一种内存池所包含各层级的存储器的示意图;55.图4a是本技术实施例提供的一种内存池包含部分类型的存储器的示意图;56.图4b是本技术实施例提供的另一种内存池的网络架构的示意图;57.图4c是本技术实施例提供的另一种存储池的网络架构的示意图;58.图5是本技术实施例提供的一种控制逻辑单元号被误格式化的方法的流程示意图;59.图6是本技术实施例提供的一种设置保护区域地址的流程示意图;60.图7是本技术实施例提供的一种对逻辑单元号执行保护策略的流程示意图;61.图8是本技术实施例提供的一种存储节点的结构示意图。具体实施方式62.下面结合本技术实施例中的附图对本技术实施例进行描述。63.为了便于理解,以下示例地给出了部分与本技术实施例相关概念的说明以供参考。如下所述:64.1.逻辑单元号(logicalunitnumber,lun)65.可以理解的是,小型计算机系统接口(smallcomputersysteminterface,scsi)总线上可挂接的设备数量是有限的,一般为8个或16个,可以用目标(target)身份标识号(identitydocument,id)来描述这些设备。在scsi程序中每个设备都分配了一个唯一的数据,其中8位(窄)带是0-7之间任意一个数,16位(宽)带是8-16位中任意一个数。而实际上需要用来描述的对象,是远远超过该数字的。于是引进了lun的概念,也就是说lun的作用是扩充了targetid。每个target下都可以有多个lun设备(device),通常简称lundevice为lun。66.其中,lunid不等于某个设备,只是号码而已,不代表任何实体属性。lun在很多时候不是什么可见的实体,而是一些虚拟的对象。比如说一个阵列柜,计算节点那边看作是一个targetdevice。当为了某些特殊需求时,需要将磁盘阵列柜的磁盘空间划分为若干个小的单元给计算节点来用。因此,将这些更小的磁盘资源称之为lun0、lun1、lun2,等等,操作系统识别的最小存储对象级别就是lundevice。67.也即,lun是一种对存储单元的划分,具体可以包含数字、符号、字符串等。68.2.误格式化69.对一个存储有数据的lun执行了格式化操作,格式化会将lun上的数据全部或部分清零。误格式化的来源可能有人蓄意或无意的命令操作、病毒软件的行为等。70.为了便于理解本技术实施例,下面先分析并提出本技术所具体要解决的技术问题。71.一般来说,为了防止误格式化将lun上存储的数据覆盖破坏,通常都会采用一定的保护措施来防范或杜绝数据被破坏。请参见图1,图1是本技术实施例提供的一种通过快照lun的方式保护数据被误格式化的场景示意图。针对lun被误格式化的问题,图1是采用配置周期性快照的方式进行保护。周期性快照是指每间隔一定的时间就自动生成一个快照,通过维持快照总个数的方式将老的快照删除。如果发现源lun中的数据损坏后,可以在所有的快照中找到一个数据损坏前的最新数据进行恢复。72.但是,由于快照个数和周期有限,不能保证发现问题后一定存在被误格式化前的快照。请参见图1,在t3时刻发生了误格式化,那么源lun上的数据被破坏,而周期块钱1上是t1时刻的数据,周期快照2上的是t3时刻的数据。也即,由于间隔的问题,并没有t2时刻的周期快照,所以无法找回被误格式化前的t2时刻的数据。73.另外,对于双写业务来说,比如说同步远程复制或者双活业务,误格式化lun可能会导致远端的数据也被破坏。比如说,双写业务的某一端被误格式化的情况下,另一端的数据也会被破坏。74.基于上述的描述,本技术所要解决的技术问题可以包括如下:75.1.解决现有技术不能在第一时间保护数据的情况。76.2.解决现有技术缺乏对双写业务的保护。77.为了解决上述技术问题,首先,本技术提供一种系统。请参见图2a,图2a是本技术实施例提供的一种存储系统的架构示意图。从图2a可以看出,存储系统包括计算节点集群、存储节点集群和用户设备300。78.计算节点集群包括一个或多个计算节点100(图2a中示出了两个个计算节点100,但不限于两个个计算节点100),各个计算节点100之间可以相互通信。计算节点100是用户侧的一种计算设备,如服务器、台式计算机等。79.在硬件层面,计算节点100中设置有处理器和内存(图2a中未示出)。在软件层面,计算节点100上运行有应用程序(application)(简称应用101)和客户端(client)程序(简称客户端102)。应用101是对用户呈现的各种应用程序的统称。客户端102用于接收由应用触发的输入输出(input/output,io)请求。并且与存储节点20交互,向存储节点20发送io请求。客户端102还用于接收来自存储节点20的数据,并向应用101转发该数据。客户端102还可以是由位于计算节点100内部的硬件组件来实现。可以理解的是,当客户端102是软件程序时,客户端102的功能由计算节点100所包含的处理器运行该程序来实现。80.示例性的,计算节点100可以通过启动器连接网络(比如说网络中的网络交换机),存储节点20也可以连接网络(比如说网络中的网络交换机)。常见的连接组网方式分为光纤通道(fibrechannel,fc)组网,基于互联网小型计算机系统接口(internetsmallcomputersysteminterface,iscsi),此处对协议不作限制。每种组网方式中,任意一个计算节点100上存在启动器的全球唯一标识(worldwidenumber,wwn)。81.因此,任意一个计算节点100可以通过网络访问存储节点集群中的任意一个存储节点20,存储节点集群包括多个存储节点20(图2a中示出了三个存储节点20,但不限于三个存储节点20),各个存储节点20之间可以互联。存储节点20如存储服务器、台式计算机或者存储阵列的控制器、硬件框等。在功能上,存储节点20主要用于对数据进行计算或处理等。另外,存储节点集群还包括管理节点(图2a未示出)。管理节点用于创建并管理内存池。各个存储节点20从存储节点中选举中一个节点让它承担管理节点的职能。管理节点可以与任意一个存储节点201通信。82.在硬件上,如图2a所示,存储节点20至少包括处理器、存储器和控制单元201。其中,处理器202是中央处理器(centralprocessingunit,cpu),用于处理来自存储节点20外部的数据,或者存储节点20内部生成的数据。存储器,是指用于存储数据的装置,它可以是内存,也可以是硬盘。内存是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(readonlymemory,rom)。举例来说,随机存取存储器可以是动态随机存取存储器(dynamicrandomaccessmemory,dram),也可以是存储级存储器(storageclassmemory,scm)。dram是一种半导体存储器,与大部分随机存取存储器(randomaccessmemory,ram)一样,属于一种易失性存储器(volatilememory)设备。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比dram慢,在成本上也比dram更为便宜。83.然而,dram和scm在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(staticrandomaccessmemory,sram)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmablereadonlymemory,prom)、可抹除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)等。另外,内存还可以是双列直插式存储器模块或双线存储器模块(dualin-linememorymodule,简称dimm),即由动态随机存取存储器(dram)组成的模块。在后面的描述中,均以dram和scm为例进行说明,但不代表存储节点20不包含其他类型的存储器。84.本实施例中的存储器还可以是硬盘。与内存203不同的是,硬盘读写数据的速度比内存慢,通常用于持久性地存储数据。以存储节点20a为例,其内部可以设置一个或多个硬盘;或者,在存储节点20a的外部还可以挂载一个硬盘框(如图2b所示),在硬盘框中设置多个硬盘。无论哪一种部署方式,这些硬盘都可以视作存储节点20a所包含的硬盘。硬盘类型为固态硬盘、机械硬盘,或者其他类型的硬盘。类似的,存储节点集群中的其他存储节点,如存储节点20b、存储节点20c也可以包含各种类型的硬盘。一个存储节点20中可以包含一个或多个同一种类型的存储器。85.本实施例中的内存池中所包括的硬盘,也可以具有内存接口,处理器可以直接对其进行访问。86.在一种可能的实施方式中,用户设备300是具有数据处理、数据收发能力的电子设备。例如可以包含手持终端、可穿戴设备、车辆机器人等独立设备,也可以是包含在独立设备中的部件(例如芯片或集成电路)。示例性的,当用户设备为手持终端时,可以是手机(mobilephone)、平板电脑(pad)、电脑(如笔记本电脑、掌上电脑等)等。可以理解的是,用户设备300可以是管理员操作的设备。可选地,管理员通过用户设备300可以向存储节点20发送地址范围,存储节点20可以将地址范围设置为逻辑单元号lun的保护区域地址。该地址范围为逻辑单元号的保护区域地址,该地址范围包含起始逻辑块地址和结束逻辑块地址。87.需要说明的是,在一种可能的实施方式中,计算节点100和用户设备300可以集成到一个设备中。88.在一种可能的实施方式中,计算节点100可以通过启动器下发输入输出(input/output,i/o)请求到存储节点20,存储节点20可以通过收到的i/o所携带的启动器wwn来识别i/o来自某个特定的计算节点100。89.在本实施例的存储系统中,计算节点100接收用户发送的写数据操作时,计算节点100可以将这些写数据操作中的数据向存储节点20发送。因此,存储节点20可以接收来自计算节点的对逻辑单元号的写数据操作。然后,在写数据操作为写零操作或者非首次写数据操作的情况下,存储节点20可以识别上述写数据操作是对逻辑单元号的格式化操作。进一步地,存储节点20可以通过确定写数据操作携带的第一地址落入对逻辑单元号预设的保护区域地址中来识别上述写数据操作是对逻辑单元号的格式化操作。因此,存储节点20对逻辑单元号执行保护策略。比如说,触发告警,同时激活内部数据保护(可以是快照或其他形式。)对于双写特征业务(比如说双活或者同步远程复制),主动断开通信链路。90.请参考图2b,图2b是存储节点20的内部结构示意图。在实际应用中,存储节点20可以是服务器也可以是存储阵列。如图2b所示,除了处理器和存储器之外,存储节点20还包括控制单元。由于内存的访问时延很低,操作系统调度以及软件本身的开销就可能成为数据处理的瓶颈。为了减少软件开销,本实施例引入硬件组件控制单元,用于将io的访问进行硬件化,降低cpu调度和软件栈的影响。首先,存储节点20有自己的控制单元22,用于与计算节点100通信,还用于与其他存储节点通信。具体的,存储节点20可通过控制单元22接收来自计算节点100的请求,或者通过控制单元22向计算节点100发送请求,存储节点20也可以通过控制单元22向存储节点20发送请求,或者通过控制单元22接收来自存储节点20的请求。其次,存储节点20内的各个内存之间可以通过控制单元22通信,也可以通过控制单元22与计算节点100通信。最后,如果存储节点20所包含的各个硬盘位于存储节点20内部,那么这些硬盘之间可以通过控制单元22通信,也可以通过控制单元22与计算节点100通信。如果所述各个硬盘位于存储节点20外接的硬盘框中,那么硬盘框中设置有控制单元24,控制单元24用于与控制单元22通信,硬盘可以通过控制单元24向控制单元22发送数据或指令,也可以通过控制单元24接收控制单元22发送的数据或指令。另外,存储节点20还可以包括总线(图2b中未示出)用于存储节点20内部各组件之间的通信。91.请参考图2c,图2c是控制单元的结构示意图,以控制单元22为例,它包括通信单元220和计算单元221,其中,通信单元提供高效的网络传输能力,用于外部或内部通信,这里以网络接口控制器(networkinterfacecontroller,nic)为例。计算单元221是一个可编程的电子部件,用于对数据进行计算处理等,本实施例以数据处理单元(dataprocessingunit,dpu)为例予以说明。dpu具有cpu的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。dpu通过较大程度的并行性(需要处理大量请求)与cpu区别开来。可选的,这里的dpu也可以替换成图形处理单元(graphicsprocessingunit,gpu)、嵌入式神经网络处理器(neural-networkprocessingunits,npu)等处理芯片。dpu用于提供针对内存池的数据卸载服务,例如地址索引或地址查询功能,分区功能以及对数据进行过滤、扫描等操作。当io请求通过nic进行存储节点20之后,直接在计算单元221上进行处理,绕过了存储节点20内部的cpu和操作系统,压薄了软件栈,减少了cpu调度的影响。以执行读io请求为例,当nic接收计算节点100发送的所述读io请求后,dpu可直接在索引表中查询所述读io请求所述对应的信息。另外控制单元22还包括dram222,dram222在物理上和图2b所描述的dram一致,只是这里的dram222是属于控制单元22自己的内存,用于临时存储经过控制单元22的数据或指令,它不构成内存池的一部分。另外,控制单元22还可以将dram222映射至计算节点100,使得dram222的空间对计算节点100可见,由此将io访问转化为基于内存语义的访问。控制单元24的结构与功能与控制单元22类似,这里不再一一展开描述。92.下面介绍本实施例提供的内存池,图3a是内存池的架构示意图。所述内存池中包含有多种不同类型的存储器,每一种类型的存储器可以看作一个层级。每个层级的存储器的性能与其他层级的存储器的性能不同。本技术中的存储器的性能主要从运算速度和/或访问时延等方面进行考量。图3b是本实施例提供的内存池所包含各层级的存储器的示意图。由图3b所示,内存池由各个存储节点20中的存储器组成,其中,各存储节点中的dram位于所述内存池的第一层级,因为dram在各种类型的存储器性能最高。scm的性能低于dram,因此各个存储节点中的scm位于所述内存池的第二层级。进一步地,硬盘的性能低于scm,所以各个存储节点中的硬盘位于所述内存池的第三层级。虽然图3a和图3b中只示出了三种类型的存储器,但是按照前面的描述,在产品实践中存储节点20内部可部署多种不同类型的存储器,即各种类型的内存或硬盘均可以成为内存池的一部分,并且位于不同存储节点上的相同类型的存储器在所述内存池中属于同一层级。本技术不对内存池所包含的存储器的类型,以及层级的数量做任何限定。内存池的层级只是内部的划分,对上层应用来说是不感知的。需要注意的是,虽然各个存储节点上的同一种存储器处于同一层级,但是对某一个存储节点来说,使用其本地的dram的性能高于使用其他存储节点的dram的性能,同理,使用本地的scm的性能高于使用其他存储节点的scm的性能,等等。因此,对该存储节点来说,当需要分配某一层级的内存空间时,会优先分配其本地属于该层级的空间给用户,当本地空间不足时再从其他存储节点的同一层级中分配。除此之外,也可以根据负载均衡或者容量均衡等策略分配内存空间。93.在图3a或图3b所示的内存池包含了存储节点中的所有类型的存储器,然而在其他实施方式中,如图4a或图4b所示,内存池可以只包含部分类型的存储器,例如只包含较高性能的存储器,例如dram和scm,而排除硬盘等性能相对较低的存储器。94.本实施例提供的另一种内存池的网络架构可参考图4b,如图4b所示,在这种网络架构中,存储节点和计算节点集成在同一个物理设备中,本实施例中将所述集成的设备统一称为存储节点。应用部署在存储节点20内部,所以应用可直接通过存储节点20中的客户端触发写数据操作或读数据请求,由该存储节点20处理,或者发送给其他存储节点20处理。此时,客户端向本地存储节点20发送的读写数据操作具体是指客户端向处理器发送数据访问请求。除此之外,存储节点20所包含的组件及其功能与图4a中的存储节点20类似,这里不再赘述。与图3a至图4a任一所示的内存池类似,这种网络架构下的内存池可以包含了存储节点中的所有类型的存储器,也可以只包含部分类型的存储器,例如只包含较高性能的存储器,例如dram和scm,而排除硬盘等性能相对较低的存储器(如图4b所示)。95.另外,在图3a至图4b所示的内存池中,并非存储节点集群中的每一个存储节点都必须为所述内存池贡献存储空间,所述内存池可以仅覆盖集群中的部分存储节点。在某些应用场景中,存储节点集群中还可以创建两个或两个以上的内存池,每个内存池覆盖多个存储节点,由这些存储节点为该内存池提供存储空间。不同内存池所述占用的存储节点可以重复也可以不重复。总而言之,本实施例中的内存池是在至少两个存储节点中建立的,其包含的存储空间来源于至少两种不同类型的存储器。96.当内存池仅包含存储集群中的较高性能的存储器(例如dram和scm)时,管理节点还可以将存储集群中的较低性能的存储器(例如硬盘)构建成一个存储池。图4c以图4a所示的网络架构为例对存储池进行了描述,与内存池类似,图4c所示的存储池也跨越了至少两个存储节点,其存储空间由所述至少两个存储节点中的一种或多种类型的硬盘构成。当存储集群中既包含内存池又包含存储池时,存储池用于持久化地存储数据,特别是访问频率较低的数据,而内存池则用于临时存储数据,特别是访问频率较高的数据。具体的,当内存池中存储的数据量到达设定的阈值时,所述内存池中的部分数据将会被写入存储池中存储。可以理解的是,存储池也可以建立在图4b所示的网络架构中,其实现原理与上面的描述类似。97.关于内存池的创建。各个存储节点20通过心跳通道定期向管理节点上报存储器的状态信息。管理节点可以有一个,也可以部署多个。它可以作为独立节点部署在存储节点集群中,也可以和存储节点20联合部署。换言之,由某一个或多个存储节点20承担管理节点的职能。存储器的状态信息包括但不限于:该存储节点所包含的各种存储器的类型、健康状态、每种存储器的总容量以及可用容量等等。管理节点根据采集的信息创建内存池,创建意味着将各个存储节点20所提供的存储空间集中起来作为内存池统一管理,因此内存池的物理空间来源于各个存储节点所包含的各种存储器。然而,在某些场景下,存储节点20可以根据自身情况,例如存储器的健康状态,选择性地提供存储器给内存池。换言之,有可能某些存储节点中的某些存储器并非内存池的一部分。98.采集完信息之后,管理节点需要对被纳入所述内存池的存储空间进行统一编址。经过统一编址,所述内存池的每段空间都有一个唯一的全局地址。所谓全局地址,它所指示的空间在内存池中是唯一的,并且每个存储节点20都知道该地址的含义。在给内存池的一段空间分配了物理空间之后,该空间的全局地址就拥有了其对应的物理地址,所述物理地址指示了该全局地址所代表的空间实际位于哪个存储节点的哪个存储器上,以及在该存储器中的偏移量,即物理空间的位置。这里的每段空间是指“页”,后面会详细介绍。在实际应用中,为了保证数据的可靠性,往往采用纠删码(erasurecoding,ec)校验机制或者多副本机制来实现数据冗余。ec校验机制是指将数据划分为至少两个数据分片,按照一定的校验算法计算所述至少两个数据分片的校验分片,当其中一个数据分片丢失时,可以利用另一个数据分片以及校验分片恢复数据。那么,对于所述数据而言,其全局地址是多个细粒度的全局地址的集合,每个细粒度的全局地址对应了一个数据分片/校验分片的物理地址。多副本机制是指存储至少两份相同的数据副本,并且,这至少两份数据副本存储在两个不同的物理地址中。当其中一份数据副本丢失时,可以使用其他数据副本恢复。因此,对于所述数据而言,其全局地址也是多个更细粒度的全局地址的集合,每个细粒度的全局地址对应了一个数据副本的物理地址。99.管理节点可以在创建内存池之后为各个全局地址分配物理空间,也可以在接收写数据操作时为所述写数据操作所对应的全局地址分配物理空间。各个全局地址与其物理地址之间的对应关系被记录在索引表中,管理节点将所述索引表同步给各个存储节点20。各个存储节点20存储所述索引表,以便后续读写数据时根据索引表查询全局地址对应的物理地址。100.在某些应用场景中,内存池并非直接将其存储空间暴露给计算节点100,而是将存储空间虚拟化为逻辑单元(logicalunit,lu)提供给计算节点100使用。每个逻辑单元具有唯一的逻辑单元号(logicalunitnumber,lun)。由于计算节点100能直接感知到逻辑单元号,本领域技术人员通常直接用lun代指逻辑单元。每个lun具有lunid,用于标识所述lun。此时,内存池以页为粒度为lun提供存储空间,换句话说,当存储节点20向内存池申请空间时,内存池以一个页或者页的整数倍为其分配空间。一个页的大小可以是4kb,也可以是8kb等等,本技术不对页的大小进行限定。数据位于一个lun内的具体位置可以由起始地址和该数据的长度(length)确定。对于起始地址,本领域技术人员通常称作逻辑块地址(logicalblockaddress,lba)。可以理解的是,lunid、lba和length这三个因素标识了一个确定的地址段,一个地址段可以索引到一个全局地址。为了保证数据均匀存储在各个存储节点20中,计算节点100通常采用分布式哈希表(distributedhashtable,dht)方式进行路由,按照分布式哈希表方式,将哈希环均匀地划分为若干部分,每个部分称为一个分区,一个分区对应一个上面描述的地址段。计算节点100向存储节点20发送的数据访问请求,都会被定位到一个地址段上,例如从所述地址段上读取数据,或者往所述地址段上写入数据。101.在上面描述的应用场景中,计算节点100与存储节点20之间利用lun语义进行通信。在另一种应用场景中,计算节点100与存储节点20之间利用内存语义进行通信。此时,控制单元22将其dram的空间映射给计算节点100,使得计算节点100可以感知到所述dram的空间(本实施例中将其称为虚拟空间),对所述虚拟空间进行访问。在这种场景中,计算节点100发送给存储节点20的读/写数据操作不再携带lunid、lba和length,而是其他逻辑地址,例如虚拟空间id、虚拟空间的起始地址以及长度。在另一种应用场景中,控制单元22可以将它管理的内存池中的空间映射给计算节点100,使得计算节点100可以感知到这部分空间,并且获得这部分空间所对应的全局地址。例如,存储节点20a中的控制单元22用于管理内存池中由存储节点20a提供的存储空间,存储节点20b中的控制单元22用于管理内存池中由存储节点20b提供的存储空间,存储节点20c中的控制单元22用于管理内存池中由存储节点20c提供的存储空间,等等。因此整个内存池对计算节点100来说是可见的,那么计算节点100在向存储节点发送待写入数据时,可以直接指定该数据的全局地址。102.下面以应用向内存池申请存储空间为例说明空间分配流程。一种情况下,应用是指存储节点的内部服务,例如,存储节点20a内部生成一个内存申请指令,所述内存申请指令包括申请的空间大小以及存储器的类型。为了便于理解,这里假设申请的空间为16kb,存储器的类型为scm。简而言之,申请的空间大小是由存储的数据的大小决定的,而申请的存储器的类型是由该数据的冷热信息决定的。存储节点20a从存储的索引表中获取一段空闲的全局地址,例如地址区间为[000001-000004],其中,地址为000001的空间为一个页。所谓空闲的全局地址,是指该全局地址尚未被任何数据占用。然后,存储节点20a查询本地的scm是否拥有16kb的空闲空间,若有,则从本地分配空间给所述全局地址,若否,则继续查询其他存储节点20的scm是否拥有16kb的空闲空间,该步骤可以通过向其他存储节点20发送查询指令来实现。由于其他存储节点20与存储节点20a在距离上有远近之分,为了降低时延,存储节点20a在本地不能支撑分配16kb的空闲空间的情况下,可以优先向距离近的存储节点20查询。待获得物理地址之后,存储节点20a将所述全局地址与所述物理地址的对应关系记录在索引表中,并将所述对应关系同步到其他存储节点。在确定物理地址之后,存储节点20a就可以使用所述物理地址对应的空间存储数据了。另一种情况下,应用是指计算节点100中的应用101,这种情况下,内存申请指令则是计算节点100生成之后发送给存储节点20a的。那么,用户可以通过计算节点100指定申请的空间大小以及存储器的类型。[0103]上述索引表的作用主要在于记录全局地址与分区id的对应关系、以及全局地址与物理地址的对应关系,除此之外,还可以用于记录数据的属性信息。例如,全局地址为000001的数据所具有的冷热信息或数据常驻策略等等。后续可以根据这些属性信息实现数据在各种存储器之间的迁移,或者进行属性设置等。应理解,数据的属性信息只是索引表的一个可选项,并非必须记录。[0104]有新的存储节点加入存储节点集群时,管理节点收集节点更新信息,将新的存储节点纳入内存池,对该存储节点所包含的存储空间进行编址,从而生成新的全局地址,再刷新分区与全局地址之间的对应关系(因为无论是扩容还是缩容,分区的总数是不变的)。扩容也同样适用于某些存储节点增加了内存或硬盘的情况,管理节点定期收集各个存储节点所包含的存储器的状态信息,如果的新的存储器加入,将其纳入内存池,并对新的存储空间进行编址,从而生成新的全局地址,再刷新分区与全局地址之间的对应关系。同理,本实施例提供的内存池也支持缩容,只要更新全局地址与分区的对应关系即可。[0105]进一步可选的,存储节点20还可以包括通信接口(图2a至图4c中未示意出)。更进一步可选的,还可以包含总线(图2a至图4c中未示意出)。其中,处理器、通信接口和存储器通过总线相连。[0106]存储节点20中的至少一个处理器用于执行控制逻辑单元号被误格式化的方法。[0107]在一种可能的实施方式中,该存储节点20中的至少一个处理器用于执行调用计算机指令,以执行以下操作:[0108]通过通信接口接收对逻辑单元号的写数据操作;[0109]识别写数据操作是对所述逻辑单元号的格式化操作;[0110]对所述逻辑单元号进行保护。[0111]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0112]确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。[0113]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0114]确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。[0115]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0116]确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。[0117]在又一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。[0118]在又一种可能的实施方式中,存储节点20中的处理器,具体用于:[0119]触发对所述逻辑单元号的内部快照激活;或者,[0120]在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。[0121]本实施例提供的内存池中的各个存储器均提供内存接口给处理器,使得处理器看到的是一段连续的空间,可以直接对内存池中的存储器进行读写数据操作。[0122]在本实施例的存储系统中,基于多种性能的存储器创建内存池,并且这些多种性能的存储器位于不同的存储节点上,从而实现了跨节点的,融合了不同性能的存储器的内存池,使得各种类型的存储器(无论是内存还是硬盘)都能够作为存储资源为上层提供存储服务,从而更好地发挥其性能优势。由于所述内存池中包含了不同性能的存储器,所以可以控制数据基于其访问频率在不同性能的存储器之间迁移,既能够在数据的访问频率较高时迁移至高性能的存储器以提高读数据的效率,也可以在数据的访问频率较低时迁移至低性能的存储器以节省高性能的存储器的存储空间。另外本技术中的内存池为计算节点或lun提供存储空间,它改变内存资源以处理器为中心的架构。[0123]请参见图5,图5是本技术实施例提供的一种控制逻辑单元号被误格式化的方法的流程示意图,该方法可基于图2a至图4c所示的系统来实现,该方法至少包括如下步骤:[0124]步骤s501,接收对逻辑单元号的写数据操作。[0125]具体的,计算节点向存储节点发送对逻辑单元号的写数据操作。相应的,存储节点接收来自计算节点的对逻辑单元号的写数据操作。[0126]其中,写数据操作携带有数据的第一地址(也即逻辑地址),写数据操作用于将携带的数据写入存储节点的逻辑单元号lun的第一地址中。在lun语义的应用场景中,数据的逻辑地址包括lunid、lba和length。在内存语义的应用场景中,逻辑地址包括虚拟地址id、寻空间的起始地址和length。[0127]步骤s502,识别写数据操作是对逻辑单元号的格式化操作。[0128]在一种可能的实现方式中,写数据操作包括写零操作,也即写数据操作携带的数据为全零数据。存储节点在确定对逻辑单元号的写数据操作为写零操作的情况下,识别写数据操作是对逻辑单元号的格式化操作。[0129]在一种可能的实现方式中,若存储节点在预设时间段内接收来自计算节点对逻辑单元号的多次写数据操作,说明在存储节点第一次接收到对逻辑单元号的写数据操作后,在预设时间段内再次接收到写数据操作。而再次接收到写数据操作意味着之前的数据将会被覆盖,这种情况可能会造成lun上的数据被误格式化。因此,在上述情况中,存储节点可以通过只读的方式来防止lun上的数据被误格式化。也即存储节点在确定对逻辑单元号的写数据操作为非首次写数据操作的情况下,识别非首次写数据操作是对逻辑单元号的格式化操作。[0130]在另一种可能的实现方式中,存储节点确定对逻辑单元号的写数据操作携带的第一地址落入对逻辑单元号预设的保护区域地址中,说明存储节点识别写数据操作是对逻辑单元号的格式化操作。[0131]对于保护区域地址的设置,请参见图6,图6是本技术实施例提供的一种设置保护区域地址的流程示意图。从图6可以看出,本技术实施例提供三种设置保护区域地址的方式:[0132]方式一:系统默认的地址,也即存储节点中预先设置有保护区域地址。该保护区域地址包含逻辑单元号的逻辑区块地址,比如说0-100mb。在管理员不通过用户设备对存储节点的保护区域地址进行设置的情况下,存储节点采用系统默认的保护区域地址。[0133]方式二:用户设置(比如说管理员)的地址,用户可以手动设置保护区域地址。也即,在存储节点接收来自计算节点对逻辑单元号的写数据操作之前,管理员可以通过用户设备向存储节点发送管理员手动输入的保护区域地址。相应的,存储节点接收来自用户设备的地址范围,存储节点将该地址范围设置为逻辑单元号的保护区域地址。其中,该地址范围包含起始逻辑区块地址至结束逻辑区块地址。[0134]方式三,系统识别的地址,通过用户设备设置存储节点自动识别保护区域地址。也即,在存储节点的逻辑单元号被写入数据后,存储节点可以获取逻辑单元号lun上被写入的数据,由存储节点的后台识别逻辑单元号lun上写入的数据。然后,存储节点可以根据写入的数据来设置逻辑单元号lun的保护区域地址。进一步地,存储节点可以通过写入的数据来匹配常见的数据库、虚拟机的元数据分区信息,将匹配后得到的逻辑区块地址设置为逻辑单元号lun的保护区域地址。[0135]进一步地,存储节点可以保存保护区域地址到逻辑单元号lun对象中。[0136]可以理解的是,若管理员没有通过用户设备设置存储节点的保护区域地址,则存储节点采用系统默认的保护区域地址。若管理员通过用户设备设置存储节点的保护区域地址,则以最新设置的保护区域地址为主。比如说,t1时刻,管理员通过方式二设置存储节点的保护区域地址。但是,在t2时刻,管理员通过方式三设置存储节点的保护区域地址,则在t2时刻,方式三的保护区域地址将覆盖方式二的保护区域地址。其中,t2大于t1。[0137]在一种可能实现方式中,在存储节点确定上述写数据操作为写零操作的情况下,说明写零操作携带的是全零数据,可能会误格式化lun上的数据。因此,存储节点需要判断写零操作携带的全零数据的数据范围与lun上的保护区域地址是否存在重叠。若存储节点确定数据范围与保护区域地址存在重叠范围,说明lun上被保护的数据区域将会被格式化,则执行步骤s503,若存储节点确定数据范围与保护区域地址不存在重叠范围,则按照写零操作继续下发。[0138]步骤s503,对逻辑单元号进行保护。[0139]具体地,在存储节点确定写操作携带的第一地址落入对逻辑单元到预设的保护区域地址中的情况下,说明lun中的数据可能会被误格式化。因此,存储节点需要对逻辑单元号lun执行保护策略。[0140]在一种可能的实现方式中,存储节点需要触发逻辑单元号的内部保护快照激活,提前备份好可能会被误格式化的数据。或者,在逻辑单元号存在双写特性业务的情况下,端口与双写特性业务相关的远端设备。从而可以保护双写业务的某一端设备被误格式化化的情况下,另一端设备的数据不会被破坏。[0141]在存储节点确定数据范围与保护区域地址存在重叠范围之后,对逻辑单元号执行保护策略之前,存储节点还可以生成告警信息,该告警信息包含告警时间和计算节点的启动器端口标识。可以理解的是,告警标识用于指示用户(比如说管理员)进行告警处理。[0142]示例性的,告警处理包含预期告警处理和非预期告警处理。管理员可以根据告警信息所包含的计算节点的启动器端口标识确定对应的计算节点,确定计算节点的行为是可预期的还是不可预期的。其中,预期告警说明计算节点对存储节点的写数据操作是可预期的正常写零时数据,比如不保留源lun数据,需要格式化该lun。关于预期告警处理包含以下一种或多种操作:则管理员向存储节点发送删除告警信息的指令,存储节点将删除告警。管理员向存储节点发送删除内部快照的指令,存储节点将删除内部快照。管理员向存储节点发送恢复双写特性业务的指令,存储节点将恢复双写特性业务。[0143]非预期告警说明计算节点并没有对存储节点进行格式化操作,说明存在人为蓄意或无意的命令操作、病毒软件等行为。关于非预期告警包含以下一种或多种操作:管理员隔离异常计算节点,并通过内部快照回滚的方式恢复源lun数据;若存在双写特性业务,管理员可以通过远端设备的数据覆盖本地设备数据的方式恢复逻辑单元号上的数据。[0144]请参见图7,图7是本技术实施例提供的一种对逻辑单元号执行保护策略的流程示意图。从图7可以看出,计算节点向存储节点下发对逻辑单元号的写数据操作,存储节点接收到对逻辑单元号的写数据操作后,判断写数据操作所携带的数据是否为全零数据,若不是全零数据,则存储节点可以继续执行写数据操作的后续操作。若是全零数据,则存储节点判断写数据操作所携带的数据的第一地址与对逻辑单元号预设的保护区域地址是否有重叠。若不存在重叠,则存储节点可以继续执行写数据操作的后续操作。若存在重叠范围,则存储节点生成告警信息,告警信息包含告警时间和计算节点的启动器端口标识。管理员可以根据告警信息进行告警处理。[0145]存储节点生成告警信息说明可能会出现误格式化逻辑单元号lun,因此存储节点会触发内部保护快照激活;或者,在逻辑单元号lun存在双写特征业务(比如说双活业务、同步复制,等)的情况下,存储节点将断开与双写特征业务相关的远端设备,且设置为手动恢复模式。存储节点在进行上述处理操作后,可以继续执行写数据操作的后续操作。[0146]接下来介绍管理员发现告警后的处理,管理员可以根据告警信息所包含的计算节点的启动器端口标识找到对应的计算节点,判断计算节点的行为是可预期的还是不可预期的。如果是可预期的正常写零操作(比如说不保留源逻辑单元号lun中的数据,需要格式化该lun),则管理员向存储节点发送删除告警信息的指令,存储节点将删除告警。管理员向存储节点发送删除内部快照的指令,存储节点将删除内部快照。管理员向存储节点发送恢复双写特性业务的指令,存储节点将恢复双写特性业务。[0147]如果是不可预期的数据写入,则管理员可以隔离异常计算设备,存储节点可以通过内部快照回滚方式恢复逻辑单元号中的数据。如果存在双写特性业务,存储节点可以通远端设备覆盖本地设备数据的方式来恢复逻辑单元号中的数据。[0148]上述详细阐述了本技术实施例的方法,下面提供本技术实施例的装置。[0149]请参见图8,图8是本技术实施例提供的一种存储节点80的结构示意图,该存储节点80用于实现前述的控制逻辑单元号被误格式化的方法,例如图5所示实施例中的方法。[0150]一种可能的实施方式中,该存储节点80可以包括通信单元801和处理单元802。[0151]在一种可能的实施方式中,通信单元801用于接收对逻辑单元号的写数据操作;[0152]处理单元802,用于识别所述写数据操作是对所述逻辑单元号的格式化操作;[0153]处理单元802,还用于对所述逻辑单元号进行保护。[0154]在又一种可能的实施方式中,处理单元802,具体用于:[0155]确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。[0156]在又一种可能的实施方式中,处理单元802,具体用于:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。[0157]在又一种可能的实施方式中,处理单元802,具体用于:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。[0158]在又一种可能的实施方式中,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。[0159]在又一种可能的实施方式中,处理单元802,具体用于:触发对所述逻辑单元号的内部快照激活;或者,[0160]在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。[0161]本技术还提供了一种算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述的控制逻辑单元号被误格式化的方法,例如图5所示的控制逻辑单元号被误格式化的方法。[0162]本技术还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,在被计算设备执行时,实现前述的控制逻辑单元号被误格式化的方法,例如图5所示的控制逻辑单元号被误格式化的方法。[0163]本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。[0164]本技术中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a、同时存在a和b、单独存在b这三种情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。[0165]以及,除非有相反的说明,本技术实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一用户设备和第二用户设备,只是为了便于描述,而并不是表示这第一用户设备和第二用户设备的结构、重要程度等的不同,在某些实施例中,第一用户设备和第二用户设备还可以是同样的设备。[0166]上述实施例中所用,根据上下文,术语“当……时”可以被解释为意思是“如果……”或“在……后”或“响应于确定……”或“响应于检测到……”。以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。[0167]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。当前第1页12当前第1页12
技术特征:
1.一种控制逻辑单元号被误格式化的方法,其特征在于,包括:接收对逻辑单元号的写数据操作;识别所述写数据操作是对所述逻辑单元号的格式化操作;对所述逻辑单元号进行保护。2.根据权利要求1所述的方法,其特征在于,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。3.根据权利要求1所述的方法,其特征在于,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。4.根据权利要求1至3任一项所述的方法,其特征在于,所述识别所述写数据操作是对所述逻辑单元号的格式化操作,包括:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。5.根据权利要求4所述的方法,其特征在于,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。6.根据权利要求1至5任一项所述的方法,其特征在于,所述对所述逻辑单元号进行保护,包括:触发对所述逻辑单元号的内部快照激活;或者,在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。7.一种存储节点,其特征在于,包括:通信单元,用于接收对逻辑单元号的写数据操作;处理单元,用于识别所述写数据操作是对所述逻辑单元号的格式化操作;所述处理单元,还用于对所述逻辑单元号进行保护。8.根据权利要求7所述的存储节点,其特征在于,所述处理单元,具体用于:确定所述写数据操作为写零操作的情况下,识别所述写数据操作是对所述逻辑单元号的格式化操作。9.根据权利要求7所述的存储节点,其特征在于,所述处理单元,具体用于:确定所述写数据操作为非首次写数据操作的情况下,识别所述非首次写数据操作是对所述逻辑单元号的格式化操作。10.根据权利要求7至9任一项所述的存储节点,其特征在于,所述处理单元,具体用于:确定所述写数据操作携带的第一地址落入对所述逻辑单元号预设的保护区域地址中。11.根据权利要求10所述的存储节点,其特征在于,所述保护区域地址包含以下一种或多种:系统默认的地址,用户设置的地址和系统识别的地址。12.根据权利要求7至11任一项所述的存储节点,其特征在于,所述处理单元,具体用于:触发对所述逻辑单元号的内部快照激活;或者,
在所述逻辑单元号存在双写特性业务的情况下,断开与所述双写特性业务相关的远端设备。13.一种存储节点,其特征在于,所述存储节点包括处理器和存储器;所述存储器中存储有计算机程序;所述处理器执行所述计算机程序时,所述存储节点执行前述权利要求1至6中任一项所述的方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现如权利要求1至6中任一项所述的方法。
技术总结
本申请实施例提供一种控制逻辑单元号被误格式化的方法及相关设备,该方法包括:接收对逻辑单元号的写数据操作;识别控制逻辑单元号被误格式化的方法写数据操作是对控制逻辑单元号被误格式化的方法逻辑单元号的格式化操作;对控制逻辑单元号被误格式化的方法逻辑单元号进行保护。采用本申请实施例,能够识别对逻辑单元号的写操作是对逻辑单元号的格式化操作,从而对逻辑单元号进行保护,避免因误格式化操作而导致逻辑单元号上的数据被破坏。格式化操作而导致逻辑单元号上的数据被破坏。格式化操作而导致逻辑单元号上的数据被破坏。
技术研发人员:罗镇
受保护的技术使用者:成都华为技术有限公司
技术研发日:2022.03.08
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种外泌体来源的ecDNA的建库方法与流程 下一篇:氟轻松的制备方法与流程