一种实现一写多读的方法

文档序号:6585542阅读:251来源:国知局
专利名称:一种实现一写多读的方法
技术领域
本发明涉及计算机信息存储技术领域,特别涉及一种基于Linux系统实现一写多 读的方法。
背景技术
一写多读(Write Once Read Many, WORM),是指在介质上保留的文件内容在一段时间内或永久只能读不能修改和删除,可用于保存重要数据、法规遵从或内部审计数据。比如2002年颁布的《萨班斯_奥克斯利法案(SOA)》,对于信息安全性的防护变得 越来越重要,规定要求企业将电子邮件、文档、患者记录、设计文件、审计信息以及其他数据 存档数年,这就带来了对注重法规符合性的内容不可篡改的存储系统的需求。光盘从存储原理上说是最合适WORM的,但是因为容量、速率较差的原因,存储介 质厂商都推出了支持WORM的磁带产品。磁带是传统的可多次读写的备份和归档介质,从物 理上讲是不支持WORM的,随着近年来WORM技术使用的深入,磁带的WORM功能实现方式有 主要是是通过磁带机管理软件将磁带介质设置为WORM带或非WORM带,WORM带只能追加写 入数据,不能删除或修改数据。随着信息技术的不断发展,信息容量越来越庞大,无论信息检索还是数据读写,都 需要严格的响应时间。但当前基于光盘和磁带的WORM技术无法充分满足访问快速访问的 要求。随着磁盘容量的提高和成本的下降,具备高响应速度的磁盘成为实现WORM功能 的首选介质。现有技术中基于磁盘的WORM功能的实现,是通过磁盘阵列柜管理软件创建 WORM存储卷,数据一旦存入WORM存储卷,在磁盘柜管理软件的控制之下,即使是文件的创 建者或者系统管理员都不可以更改、删除甚至改名存档数据。只有蓄意破坏行为(例如 将磁盘从磁盘柜中取出),才能导致数据的删除或是更改。可以使用独立冗余磁盘阵列 (Redundant Array of Independent Disks, RAID)实现基于磁盘的 WORM 技术,NetApp 公司 的磁盘式数据保持方案SnapLock可以在联机存档解决方案NetApp NearStore和光纤接入 存储(Fabric-Attached Storage, FAS)存储系统上创建不可擦除、不可重写的WORM卷。现有技术中的基于磁盘实现的WORM技术,都必须通过在指定产品中运行专用操 作系统才能实现,不能在通用的操作系统实现,并且不能实现同时支持多种文件系统。

发明内容
有鉴于此,本发明的目的在于,提出一种实现一写多读的方法,可以在通用的 Linux操作系统中实现一写多读。本发明实施例提出的实现一写多读的方法,包括如下步骤A、在创建文件系统时,在文件系统超级块中创建一写多读标识;B、虚拟文件系统层收到对文件系统中文件的读写操作请求,虚拟文件系统层检查 所述文件系统超级块信息中是否有一写多读标识,若是,则执行步骤C ;
C、判断该读写操作的属性,如果为创建新文件或读取文件,则执行相应操作;若该 读写操作为修改文件内容、修改文件属性或删除文件,则拒绝该读写操作。所述文件系统为第三代扩展文件系统ext3,高级日志文件系统XFS,ReiserFS文 件系统或JFS文件系统。所述WORM标识为文件系统超级块中的一个特定字段。步骤C所述判断该读写操作的属性,如果为创建新文件,则执行相应操作中的相 应操作包括虚拟文件系统层创建所述新文件,在关闭所述新文件时,虚拟文件系统层检测文 件系统中有一写多读标识,则将该新文件的权限设置为只读权限。步骤C所述拒绝该读写操作之后,进一步包括发出用户没有相应操作权限的提 /J^fn 息。从以上技术方案可以看出,通过在文件系统超级块中设置一写多读WORM标识,在 执行读写操作前,虚拟文件系统层检查是否存在WORM标识,若是,则只允许在对应的文件 系统中创建新文件以及读操作,禁止其他操作,从而实现WORM功能。本发明方案可以在通 用的Linux操作系统中完全由软件实现WORM功能,而且可以很方便支持多种不同文件系统 实现WORM功能。


图1为Linux系统实现数据写入过程的示意图;图2为本发明实施例的实现流程图。
具体实施例方式本发明技术方案基于Linux系统实现,为使本发明方案表述地更加清楚,有必要 先对Linux系统实现数据写入的过程进行介绍。图1为Linux系统实现数据写入过程的示意图。其中,虚拟文件系统(Virtual File System,VFS) 101是一个异构文件系统之上的软件粘合层(有时也把VFS称为可堆叠 的文件系统(Stackable Filesystem)),使系统调用函数(例如 open ()、read()、write () 等)不用关心底层的存储介质和文件系统类型就可以工作。在Linux系统中,虚拟文件系 统101的作用是通过一个抽象的通用访问接口屏蔽底层文件系统和物理介质的差异性。文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘 上组织文件的方法。Linux操作系统下可以使用多种文件系统,比如第三代扩展文件系统 (Third extended file system, ext3),SGI 开发的高级日志文件系统(XFS),ReiserFS 文
件系统以及JFS文件系统等。在图1中将其笼统地称为文件系统A、文件系统B......文件
系统η。数据存储层106是存储设备,通常为磁盘。设备驱动层105是存储设备的驱动程 序。超级块是用于存储文件系统的控制 信息的数据结构。描述文件系统的状态、文件 系统类型、大小、区块数、索引节点数等,存放于磁盘的特定扇区中。一般一个文件系统都 是对应一个超级块。存储设备(硬盘、软盘、Flash盘、磁带、网络存储设备等)建立文件系 统的过程,一般也被称为格式化或初始化,一般情况下,在Linux操作系统下可以用相应的格式化系列工具创建各种文件系统(比如XFS文件系统有mkfs. xfs, ext3系统有相应的 mkfs. ext3) 0进行写操作时,写操作请求首先由虚拟文件系统层101进行处理,虚拟文件系统 层101再根据文件所在设备所使用的文件系统类型(比如XFS,EXT3等),把操作任务和数 据传送给对应文件系统(例如文件系统A 102)处理,文件系统再把任务请求和数据做适当 处理后,通过设备驱动层105把数据写到数据存储层106中。本发明技术方案如图2所示,主要包括如下步骤步骤201 在创建文件系统时,在文件系统超级块中创建一个WORM标识,表示该文件系统需要实现WORM功能。创建文件系统时,在超级块中设置WORM标识,可以利用超级块中不需要使用到的 字段做标识,也可以在文件系统超级块结构中新增一个用作给WORM做标识的字段,表示该 文件系统中需要具有WORM功能。步骤202 虚拟文件系统收到对文件系统中文件的读写操作请求,虚拟文件系统 层检查所述文件系统超级块信息中是否有WORM标识,如果有WORM标识,则执行步骤203,否 则执行步骤204 ;步骤203 判断该读写操作的属性,如果为写入新文件或读取文件,则执行相应操 作,若该读写操作为修改文件内容、修改文件属性或删除文件,则拒绝该读写操作,并返回 步骤202。这样就实现了该文件系统中文件只能写一次,以后再也不能修改文件内容,文件 属性,也无法删除该文件,但依然可以做任意读操作。步骤204 执行该读写操作,并返回步骤202。以下对本发明实施例方案进行具体描述。设一个运行Linux操作系统的存储系统创建了两个文件系统文件系统A和文件 系统B。在创建文件系统A时,在文件系统A的超级块中设置一个字段sb_W0RM作为WORM 标识,在创建文件系统B时,未设置字段sb_W0RM。当用户要求在文件系统A中创建(create操作)一个新文件al时,虚拟文件系统 层按照正常的流程执行创建处理。当文件al写完,关闭文件时(close操作),虚拟文件系 统层会在做close处理过程中检测文件al所在的文件系统A是否带有WORM标识,检测结 果是发现了 sb_W0RM字段,则虚拟文件系统层会相应的把文件al的权限设置为只读权限。
以后查看文件系统A中的文件属性时会发现,所有文件(al、a2、a3......)的属性都为只读属性。当用户以写或者读写方式打开(open操作)已创建的文件al时,虚拟文件系统层 在做open操作时如果检测到该文件所在的文件系统A的超级块中具有字段sb_W0RM,则直 接在打开的时候就关闭用户对该文件的写权限。当用户对文件进行写操作时,Linux操作 系统发出用户没有写操作权限的提示信息。当用户修改文件al的属性(比如修改只读文件为可读写文件等)时,虚拟文件系 统层在对应操作中如果检测到该文件所在的文件系统A带有WORM标志,则限制用户修改该 文件的任何属性,Linux操作系统发出用户没有修改操作权限的提示信息。当用户做删除文件al操作时,虚拟文件系统层如果检测到该文件所在的文件系统A带有WORM标志,则限制删除文件操作,Linux操作系统发出用户没有删除操作权限的
提示信息。当用户要求在文件系统B中创建(create) —个新文件bl时,虚拟文件系统层按 照正常的流程执行创建处理。当文件bl写完,关闭文件时(close操作),虚拟文件系统层 会在做close处理过程中检测文件bl所在的文件系统B是否带有WORM标识,检测结果是 未发现sb_W0RM字段,则虚拟文件系统层不做任何处理,则文件bl的权限是默认的正常权 限。按照同样的方式创建文件系统B上的文件b2、b3等。用户对文件系统B上的任何文件
(bl、b2、b3......)进行修改、删除操作时,虚拟文件系统检查这些文件的权限都是正常权
限,则正常执行相应地操作。用户可以将文件系统B上的任一文件(例如文件bl)的权限修改为只读权限。修 改后,用户直接对文件bl进行修改、删除操作时,Linux操作系统也会提示拒绝该操作,但 用户仍然可以将文件bl的权限再修改为正常权限,这样就可以对其进行修改、删除了。但 是,由于用户无法修改文件系统A中文件的权限,因此始终无法对文件系统A中的文件进行 修改、删除等操作。也就是说,文件系统A中的文件具有WORM功能。本发明方案在很大程度减少了需要实现WORM功能的条件,可以在通用的Linux操 作系统中完全由软件实现WORM功能,而且可以很方便支持多种不同文件系统实现WORM功 能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种实现一写多读的方法,其特征在于,包括如下步骤A、在创建文件系统时,在文件系统超级块中创建一写多读标识;B、虚拟文件系统层收到对文件系统中文件的读写操作请求,虚拟文件系统层检查所述文件系统超级块信息中是否有一写多读标识,若是,则执行步骤C;C、判断该读写操作的属性,如果为创建新文件或读取文件,则执行相应操作;若该读写操作为修改文件内容、修改文件属性或删除文件,则拒绝该读写操作。
2.根据权利要求1所述的方法,其特征在于,所述文件系统为第三代扩展文件系统 ext3,高级日志文件系统XFS,ReiserFS文件系统或JFS文件系统。
3.根据权利要求1所述的方法,其特征在于,所述WORM标识为文件系统超级块中的一 个特定字段。
4.根据权利要求1所述的方法,其特征在于,步骤C所述判断该读写操作的属性,如果 为创建新文件,则执行相应操作中的相应操作包括虚拟文件系统层创建所述新文件,在关闭所述新文件时,虚拟文件系统层检测文件系 统中有一写多读标识,则将该新文件的权限设置为只读权限。
5.根据权利要求1所述的方法,其特征在于,步骤C所述拒绝该读写操作之后,进一步 包括发出用户没有相应操作权限的提示信息。
全文摘要
本发明公开了一种实现一写多读的方法,包括如下步骤A、在创建文件系统时,在文件系统超级块中创建一写多读(WORM)标识;B、虚拟文件系统层收到对文件系统中文件的读写操作请求,虚拟文件系统层检查所述文件系统超级块信息中是否有WORM标识,若是,则执行步骤C;C、判断该读写操作的属性,如果为创建新文件或读取文件,则执行相应操作;若该读写操作为修改文件内容、修改文件属性或删除文件,则拒绝该读写操作。本发明方案可以在通用的Linux操作系统中完全由软件实现WORM功能,而且可以很方便支持多种不同文件系统实现WORM功能。
文档编号G06F17/30GK101840408SQ200910244569
公开日2010年9月22日 申请日期2009年12月31日 优先权日2009年12月31日
发明者金振成 申请人:创新科存储技术有限公司;创新科软件技术(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1