-----------------------------------重要说明------------------------------------
以下部分内容来网络,部分自华为存储官方教材
具体教材内容请移步华为存储官网进行教材下载
网络引用内容无法找到原创,如有侵权请通知
------------------------------------重要说明------------------------------------
a. 定义
InfoLocker即一写多读特性,购买InfoLocker特性的用户可对文件设置保护期,在文件被保护期间,只能读取,不能进行修改和删除;在文件保护期过期后,文件只能被删除,不能进行修改。因此, InfoLocker成为归档文件系统的必备特性。 InfoLocker分为企业级InfoLocker与遵从级InfoLocker,其中企业级InfoLocker的系统管理员可以在文件被保护期内删除InfoLocker文件,而遵从级InfoLocker在文件被保护期内任何人都无法删除文件。本版本仅支持企业级InfoLocker。
在描述一写多读特性时,简称WORM( Write Once Read Many)比较常见,下文统一使用WORM来简称一写多读。
b. 相关概念
l WORM时钟
为了防止由于集群时间的变更导致目录或文件保护时间的变化,当一个目录或文件被配置了WORM属性后,该目录或文件将使用WORM时钟来计时,用于WORM目录和文件的计时。设置了WORM时钟之后,系统会在该时钟基础上计时,避免由于用户修改本地时钟导致文件提前过保护期。WORM时钟只允许设置一次,设置成功后不再允许更改。
WORM时钟与集群时间的关系:
如果集群时间早于WORM时钟, WORM时钟将每过1小时,最多向前追赶138秒进行调整。
如果集群时间晚于WORM时钟, WORM时钟调整为集群时间。
l WORM属性
当一个目录配置为WORM根目录时,该目录的所有子目录、新建目录和新建文件自动继承父目录的WORM属性,这些属性参数只能在配置WORM根目录时被设置,之后用户只能查看不能修改。 WORM属性如表所示,系统通过文件的WORM属性,判断该文件何时过期,何时进入保护状态。
l WORM日志
用于记录WORM操作相关的日志,按照时间进行记录,每个月的日志记录为一个文件,该文件为WORM文件,只能进行追加写,不能进行修改和删除,避免用户误删除或篡改。
l 提交保护
可采用两种方式使WORM目录下的文件进入保护状态,即只可读,不可写。
自动提交保护: WORM目录下的文件,在设置的自动提交保护时间内没有进行写操作和修改WORM属性等操作,文件将自动进入保护状态。系统在后台自动运行一个扫描任务,对WORM目录下的文件进行分析,如果文件处于“未保护状态”或“追加状态”且距离上次的修改时间( mtime)已经超过该文件的自动锁定时间,系统会自动关闭文件的写权限,文件进入“保护状态”。
手工提交保护: WORM目录下的文件,用户手工去除文件写权限或设置为只读,将立即触发文件进入保护状态。
l 计算过期时间
每个文件都具有atime(读取文件或者执行文件的时间,在本特性中作为该文件的过期时间,一旦该文件进入保护状态,则atime不随文件访问或执行变化, atime为该文件的过期时间 )、 ctime(该文件的内容、权限,拥有者,所属的组,链接数等文件状态最后改变时间)和mtime(该文件的数据内容最后改变时间)属性。系统通过mtime来判断文件最后修改时间, WORM文件的过期时间记录在文件的atime中, atime的计算分为以下两种情况:
自动提交保护场景
1、如果用户未设置atime,则atime = mtime+自动锁定时长+默认保护期。
2、如果用户设置atime,且mtime+自动锁定时长+最小保护期< atime
3、如果用户设置atime,但atime
4、如果用户设置atime,但atime>mtime+自动锁定时长+最大保护期,则实际的atime = mtime+自动锁定时长+最大保护期。
手工提交保护场景
1、如果用户未设置atime,则atime = 当前WORM时钟时间+默认保护期。
2、如果用户设置atime,且当前WORM时钟时间+最小保护期< atime <当前WORM时钟时间+最大保护期,则实际的atime = 用户设置的atime。
3、如果用户设置atime,但atime<当前WORM时钟时间+最小保护期,则实际的atime = 当前WORM时钟时间+最小保护期。
4、如果用户设置atime,但atime>当前WORM时钟时间+最大保护期,则实际的atime = 当前WORM时钟时间+最大保护期。
l WORM文件状态
1.提交保护:可采用自动提交保护和手工提交保护两种方式使WORM目录下的文件进入保护状态,即只可读,不可写。
2.修改保护期:当文件处于“保护状态”时,可以通过修改atime,手动延长文件的保护期。
3.保护时间到期:文件进入“保护过期”状态,此时文件只能删除和读取,不能被修改。
4.延长保护期:当文件过期后,可以通过延长保护期使文件重新进入“保护状态”。
5.追加写:对于处于“保护状态”的空文件,在打开了写权限后,进入“追加状态”。“追加状态”可以对文件追加写。只要不进行提交保护操作,处于“追加状态”的已经追加写入内容的非空文件,可以持续进行追加写,追加写文件的保护分两种情况:
当追加状态的文件小于1MB时,既可以追加写也可以修改写文件的内容。
当追加状态的文件大于1MB时,可以追加写,文件大小减去1MB的内容不能修改写,文件的最后1MB内容可以修改写,即最后1MB数据,系统无法保护。
c. 实现原理
1:系统管理员将一个普通目录配置为WORM根目录,该目录获取WORM属性,使用WORM时钟计时, WORM相关操作系统将记录日志。
2:用户通过客户端访问文件系统,在WORM根目录下新建目录,并写入文件,新建目录下的新建文件自动获取父目录的WORM属性,该目录下的文件为未保护状态。
3:到达自动锁定时间, WORM目录A下的文件进入保护状态。 WORM目录A下的文件属性变为只读,用户修改WORM目录A下的文件请求被系统拒绝。
4:用户在WORM根目录下再次新建目录,并写入文件,该目录下的文件为未保护状态。
5:用户手工将WORM目录B下的文件提交保护, WORM目录B下的文件进入保护状态。
WORM目录中数据的读写状态B部分如图所示。
6:当用户发现WORM目录B下的文件被误提交成保护模式,请求系统管理员进行删除,系统管理员不具有删除权限,删除WROM目录B下的文件操作请求被拒绝。
7:系统超级管理员具有特权删除权限,删除WORM目录B下的文件,删除成功。
8:达到保护期, WORM目录A下的文件进入过期状态,用户对WORM目录A下的文件进行删除,删除成功。