存储区域网络设备的写命令处理方法、 设备及系统 技术领域 本发明实施例涉及存储技术领域, 尤其涉及一种存储区域网络设备的写命令处理 方法、 存储区域网络设备及写命令处理系统。
背景技术 随着科学技术的飞速发展与计算机技术的普遍应用, 以及互联网信息的迅速膨胀 以及电子商务的发展, 企业信息系统占据了企业竞争优势的主体地位。 数据的海量增长, 使 企业比以往任何时候都更加依赖于数据。 为了更好、 更快的存储这些海量数据, 存储技术应 运而生。如何更快捷、 更安全的存储海量数据成为存储技术研究的重点。尤其地, 在金融行 业如银行或证券行业, 或政府情报部门, 以不可变或不可更改的方式存储数据 ( 如电子邮 件、 交易记录或财务文档等 ) 是很必要的。
在现有的存储技术中, 一写多读 (Write Once Read Many, 简称 : WORM) 技术实现了 以不可变或不可更改的方式存储数据, 其受到网络接入存储 (Network Attached Storage, 简称 : NAS) 设备或固定资讯内容存储 (ContentAddressed Storage, 简称 : CAS) 设备的支 持, 这两种设备的特点为以文件方式来控制 ; WORM 技术也可以利用具有 WORM 属性的介质来 实现, 如光盘或磁带等。
但是, 在现有的存储技术中, 存储区域网络 (Storage Area Network, 简称 : SAN) 设 备提供给应用服务器的存储空间相当于裸盘 ( 可以认为是一个没有被格式化过的硬盘 )。 在应用服务器需要使用 SAN 设备提供的存储空间之前, 必须首先进行格式化操作。当应用 服务器读写 SAN 设备提供的存储空间时, SAN 设备收到的读写命令只是读写请求的起始地 址及其需要读写的长度, 无所谓文件。所以, 对 SAN 设备而言, 没有文件的概念, 不能通过 NAS 设备或 CAS 设备相关的技术在 SAN 设备中实现 WORM 功能。因此现有的 SAN 设备还未能 实现 WORM 功能, 现有的 SAN 设备存储的数据是可重写或可更改的, 安全性较差, 易给用户造 成损失。
发明内容
本发明实施例提供了一种存储区域网络设备的写命令处理方法、 设备及系统, 用 以在 SAN 设备中实现 WORM 功能。
本发明实施例提供的一种存储区域网络设备的写命令处理方法, 包括 :
接收向数据单元写入数据的写命令 ;
当所述数据单元所属文件的属性为一写多读属性, 并且所述数据单元已经被写过 数据时, 发送写保护错误命令 ;
其中, 属性为一写多读属性的文件是将设置为一写多读属性的逻辑单元格式化为 文件系统而得到的。
本发明实施例提供的一种存储区域网络设备, 包括 :
写命令接收模块, 用于接收向数据单元写入数据的写命令 ;访问控制模块, 用于当所述数据单元所属文件的属性为一写多读属性, 并且所述 数据单元已经被写过数据时, 发送写保护错误命令 ;
其中, 属性为一写多读属性的文件是将设置为一写多读属性的逻辑单元格式化为 文件系统而得到的。
本发明实施例提供的一种写命令处理系统, 包括上述存储区域网络设备, 还包 括:
至少一个主机, 用于向所述存储区域网络设备的数据单元发送写入数据的写命 令, 以及接收所述存储区域网络设备发送的写保护错误命令。
本发明实施例中, 通过预先将设置为 WORM 属性的逻辑单元格式化为文件系统得 到文件 ; 在接收到写命令后, 当数据单元所属文件的属性为 WORM 属性, 并且该数据单元已 经被写过数据时, 发送写保护错误命令, 这样一旦数据单元已经被写过数据, 就不允许再写 数据, 从而在 SAN 设备中实现了 WORM 功能。 附图说明
图 1 为本发明实施例一 SAN 设备的写命令处理方法的流程图 ;
图 2 为本发明实施例二 SAN 设备的写命令处理方法中预先处理 LUN 的流程图 ; 图 3 为图 2 后续处理过程的流程图 ; 图 4 为本发明实施例三存储区域网络设备的结构示意图 ; 图 5 为本发明实施例四存储区域网络设备的结构示意图 ; 图 6 为本发明实施例五写命令处理系统的结构示意图。具体实施方式
下面通过附图和实施例, 对本发明实施例的技术方案做进一步的详细描述。
对具有 WORM 功能的设备来说, 其使用者需要保护的存储数据都是文件或目录的 形式。而 SAN 设备提供的存储空间相当于裸盘, 当使用者发出读写请求时, SAN 设备不知道 使用者要读写哪个文件或目录, 因此在 SAN 设备上实现 WORM 功能较为困难。本发明实施例 针对这种问题, 提供了如下各实施例。
图 1 为本发明实施例一 SAN 设备的写命令处理方法的流程图。如图 1 所示, 本实 施例具体包括如下步骤 :
步骤 101、 接收向数据单元写入数据的写命令。
本实施例中, SAN 设备包括若干个数据单元, SAN 设备接收至少一个主机发送的向 数据单元写入数据的写命令。具体地, SAN 设备和主机之间可以通过多种接口相连, 如 FC、 IP 或 SAS 等接口, 它们之间采用标准的 SCSI 命令进行通信。
步骤 102、 当数据单元所属文件的属性为 WORM 属性, 并且该数据单元已经被写过 数据时, 发送写保护错误命令。
SAN 设备首先判断该数据单元所属文件的属性是否为 WORM 属性, 若是, 则进一步 判断该数据单元是否已经被写过数据 ; 若是, 则 SAN 设备向主机发送写保护错误命令。
其中, 属性为 WORM 属性的文件是将设置为 WORM 属性的逻辑单元格式化为文件系 统而得到的。本实施例中, SAN 设备通过预先将设置为 WORM 属性的逻辑单元格式化为文件系统 得到文件 ; 在接收到写命令后, 当数据单元所属文件的属性为 WORM 属性, 并且该数据单元 已经被写过数据时, SAN 设备发送写保护错误命令, 这样一旦数据单元已经被写过数据, 就 不允许再写数据, 从而在 SAN 设备中实现了 WORM 功能。
在 SAN 设备中, 逻辑单元是存储数据的单位介质, SAN 设备包括至少一个逻辑单 元, 一个逻辑单元包括若干个数据单元, 在实际应用中通常用逻辑单元编号 (Logical Unit Number, 简称 : LUN) 来表示逻辑单元, 本文中 LUN 均指代逻辑单元。LUN 存储的数据量通常 较大, 若采用 LUN 进行 WORM 管理, 粒度太大, 而且 SAN 设备中没有文件的概念。为了克服这 些问题, 本发明实施例需要对 SAN 设备中的 LUN 进行预先处理。
图 2 为本发明实施例二 SAN 设备的写命令处理方法中预先处理 LUN 的流程图。如 图 2 所示, 具体包括如下步骤 :
步骤 201、 当用户设置 LUN 为 WORM 属性后, SAN 设备将该 LUN 格式化为光盘文件系 统。
当用户设置 SAN 设备中的某个 LUN 为 WORM 属性后, 需要预先将 LUN 格式化为光盘 文件系统, 该光盘文件系统可以为 ISO9660 或通用光盘格式 (Universal Disk Format, 简 称: UDF) 等国际标准格式。由于绝大多数操作系统都支持该光盘文件系统, 因此光盘文件 系统是一种 WORM 属性支持较好的文件系统。
步骤 202、 SAN 设备判断格式化操作是否成功, 若是, 则执行步骤 203 ; 否则执行步 骤 201。
在格式化操作成功后, LUN 中的数据被以文件格式保存在 SAN 设备内的硬盘上。
步骤 203、 SAN 设备将 LUN 中文件的属性设置为 WORM 属性。
设置为 WORM 属性的文件将禁止破坏或修改原有数据的操作, 如修改文件系统的 内容、 重命名或删除等操作, 而可以允许添加新数据或查询数据等操作。
步骤 204、 SAN 设备保存步骤 203 中设置属性的相关配置数据。
步骤 205、 SAN 设备向主机发送该 LUN 为光盘的通知命令。
当主机向 SAN 设备发送问询 (Inquiry) 命令查询属性时, SAN 设备向主机发送通 知命令, 用于通知主机该 LUN 为光盘, 其目的是在后续操作中, 使主机向 SAN 设备发送光盘 所需格式的读命令或写命令。
优选地, 通知命令的格式可以为 SCSI 的 SPC 标准中提供的响应命令格式, 具体地, 将 SCSI 的 SPC 标准中提供的响应命令中的 “peripheral devicetype” 字段填充 05h, 作为 该通知命令。
图 3 为本发明实施例二 SAN 设备的写命令处理方法的流程图。如图 3 所示, 本实 施例具体包括如下步骤 :
步骤 301、 SAN 设备接收主机发送的向数据单元写入数据的写命令。
在本步骤之前, SAN 设备通知主机该 LUN 为光盘, 主机发送的写命令为光盘所需格 式。优选地, 主机向 SAN 设备发送的读命令和写命令可以为 SCSI 的 MMC 标准中提供的读命 令和写命令。
步骤 302、 SAN 设备判断该数据单元所属文件的属性是否为 WORM 属性, 若是, 则执 行步骤 303 ; 否则执行步骤 306。若该数据单元所属文件的属性为 WORM 属性, 则表明包括该文件的 LUN 经过图 2 所 示的预处理过程, 执行步骤 303。 若该数据单元所属文件的属性不是 WORM 属性, 则表明包括 该文件的 LUN 没有经过图 2 所示的预处理过程, 执行步骤 306。
步骤 303、 SAN 设备判断该数据单元是否已经被写过数据, 若是, 则执行步骤 304 ; 否则执行步骤 305。
数据单元是否已经被写过数据是通过 SCSI 标准的 “Sense Key” 来描述的。
步骤 304、 SAN 设备向主机发送写保护错误命令, 结束。
优选地, SAN 设备向主机发送写保护错误命令可以采用如下表现形式 : 通过 “DATA PROTECT” 的方式告知主机该数据单元不能被写入数据。
步骤 305、 根据该写命令, 更新数据单元的位图信息, 执行步骤 306。
步骤 306、 继续处理该写命令, 结束。
本实施例中, SAN 设备通过预先将设置为 WORM 属性的 LUN 格式化为文件系统得到 文件, 并将文件的属性设置为 WORM 属性 ; 在 SAN 设备接收到写命令后, 当数据单元所属文件 的属性为 WORM 属性, 并且该数据单元已经被写过数据时, SAN 设备发送写保护错误命令, 这 样一旦数据单元已经被写过数据, 就不允许再写数据。本实施例根据数据单元是否写过数 据将 SAN 设备虚拟为具有 WORM 属性的硬盘, 在 SAN 设备中实现了 WORM 功能, 使得 SAN 设备 也可以以不可变或不可更改的方式存储数据, 提高了 SAN 设备的安全性, 能使 SAN 设备也可 广泛应用于金融行业或政府情报部门。 上述实施例具体说明了将 LUN 格式化光盘文件系统, 使 LUN 模拟成光盘实现具有 WORM 功能的 SAN 设备, 本发明实施例不仅限于此, 还可以将 LUN 模拟成软盘或磁带等介质, 只要体现本发明实施例的发明构思的技术方案均属于本发明所要保护的范围。
图 4 为本发明实施例三存储区域网络设备的结构示意图。如图 4 所示, 本实施例 具体包括 : 写命令接收模块 11 和访问控制模块 12。其中 :
写命令接收模块 11 用于接收向数据单元写入数据的写命令 ;
访问控制模块 12 用于当数据单元所属文件的属性为一写多读属性, 并且数据单 元已经被写过数据时, 发送写保护错误命令 ;
上述属性为一写多读属性的文件是将设置为一写多读属性的逻辑单元格式化为 文件系统而得到的。
本实施例提供的 SAN 设备包括若干个数据单元, 写命令接收模块 11 接收至少一个 主机发送的向数据单元写入数据的写命令 ; 当该数据单元所属文件的属性为 WORM 属性, 并 且数据单元已经被写过数据时, 访问控制模块 12 向主机发送写保护错误命令。
本实施例中, SAN 设备通过预先将设置为 WORM 属性的逻辑单元格式化为文件系统 得到文件 ; 在接收到写命令后, 当数据单元所属文件的属性为 WORM 属性, 并且该数据单元 已经被写过数据时, SAN 设备发送写保护错误命令, 这样一旦数据单元已经被写过数据, 就 不允许再写数据, 从而在 SAN 设备中实现了 WORM 功能。
图 5 为本发明实施例四存储区域网络设备的结构示意图。如图 5 所示, 本实施例 在上述实施例四的基础上, 进一步包括 : 格式化模块 13 和设置模块 14。其中 :
格式化模块 13 用于将设置为一写多读属性的逻辑单元格式化为文件系统 ;
设置模块 14 用于将文件系统中的文件的属性设置为一写多读属性。
再进一步, 上述文件系统可以为光盘文件系统, 本实施例还可以包括 :
通知模块 15, 用于在格式化模块 13 将设置为一写多读属性的逻辑单元格式化为 文件系统之后, 向主机发送所述逻辑单元为光盘的通知命令。
本实施例中, 当用户设置 SAN 设备中的某个 LUN 为 WORM 属性后, 格式化模块 13 需 要预先将 LUN 格式化为光盘文件系统, 该光盘文件系统可以为 ISO9660 或 UDF 等国际标准 格式。由于绝大多数操作系统都支持该光盘文件系统, 因此光盘文件系统是一种 WORM 属性 支持较好的文件系统。在格式化操作成功后, LUN 中的数据被以文件格式进行保存。设置 模块 14 将 LUN 中文件的属性设置为 WORM 属性, 设置为 WORM 属性的文件将禁止破坏或修改 原有数据的操作, 如修改文件系统的内容、 重命名或删除等操作, 而可以允许添加新数据或 查询数据等操作。当主机向 SAN 设备发送问询 (Inquiry) 命令查询属性时, 通知模块 15 向 主机发送通知命令, 用于通知主机该 LUN 为光盘, 其目的是在后续操作中, 使主机向 SAN 设 备发送光盘所需格式的读命令或写命令。
本实施例提供的存储区域网络设备各模块具体功能的实现过程可以参考上述方 法实施例的相关描述, 在此不再赘述。
本实施例中, SAN 设备通过预先将设置为 WORM 属性的 LUN 格式化为文件系统得到 文件, 并将文件的属性设置为 WORM 属性 ; 在 SAN 设备接收到写命令后, 当数据单元所属文件 的属性为 WORM 属性, 并且该数据单元已经被写过数据时, SAN 设备发送写保护错误命令, 这 样一旦数据单元已经被写过数据, 就不允许再写数据。本实施例根据数据单元是否写过数 据将 SAN 设备虚拟为具有 WORM 属性的硬盘, 在 SAN 设备中实现了 WORM 功能。 图 6 为本发明实施例五写命令处理系统的结构示意图。如图 6 所示, 本实施例具 体包括 : 至少一个 ( 图中示出 m 个, m 大于或等于 1) 主机 21 和 SAN 设备 22。其中, SAN 设 备 22 可以为上述实施例三或实施例四所述的 SAN 设备。
m 个主机 21 用于向 SAN 设备 22 中的数据单元发送写入数据的写命令, 以及接收 SAN 设备 22 发送的写保护错误命令。
进一步的, 本实施例还可以包括至少一个 ( 图中示出 n 个, n 大于或等于 1) 网络 传输设备 23, 主机 21 通过网络传输设备 23 与 SAN 设备 22 连接, 该 n 个网络传输设备 23 用 于将主机 21 发送的写命令传递给 SAN 设备 22, 以及将 SAN 设备 22 发送的写保护错误命令 传递给主机 21。
当应用于不同的网络中时, 网络传输设备 23 的具体表现形式有所不同, 如: 网络 传输设备 23 可以具体为交换机, 用于传递主机 21 和 SAN 设备 22 交换的信令。
本领域普通技术人员可以理解 : 实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读取存储介质中, 该程序 在执行时, 执行包括上述方法实施例的步骤, 而前述的存储介质包括 : ROM、 RAM、 磁碟或者光 盘等各种可以存储程序代码的介质。
最后应说明的是 : 以上实施例仅用以说明本发明实施例的技术方案, 而非对其限 制; 尽管参照前述实施例对本发明实施例进行了详细的说明, 本领域的普通技术人员应当 理解 : 其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征 进行等同替换 ; 而这些修改或者替换, 并不使相应技术方案的本质脱离本发明实施例各实 施例技术方案的精神和范围。