GPFS 3.4v 在 AIX 上实现的不变性和 appendOnly 特性

原封不动地保留业务数据,帮助满足法律遵从性和安全需求

使用 IBM® General Parallel File System (IBM GPFS™) V3.4 所支持的不变性和 appendOnly 特性保护您在 IBM AIX® 系统上的业务数据,确保遵守各种政府法规。GPFS 拥有丰富的命令行接口,允许您为业务审计文件、健康中心记录和日志文件设置合适的限制,以有效地防止它们被篡改或意外删除。本文介绍如何使用 IBM GPFS V3.4 所提供的不变性和 appendOnly 限制保护您的 AIX 数据。

Sandeep Ramesh Patil, 高级软件工程师, IBM

http://www.ibm.com/developerworks/aix/library/au-gpfs/sandeep.jpgSandeep Ramesh Patil 是 IBM India Software Lab 的高级软件工程师。他已在 IBM 工作了 12 年,主要研究 Scale Out Network Attached Storage (IBM SONAS)、分布式技术,包括 DCE、SARPC 以及安全产品,比如 IBM Network Authentication Services (IBM Kerberos)。目前,他是一名 IBM developerWorks Master Author 和 IBM Master Inventor。Sandeep 拥有印度普纳大学的计算机科学与工程学学士学位。



Ujwala P Tulshigiri, 软件开发人员, IBM

http://www.ibm.com/developerworks/aix/library/au-gpfs/Ujwala.jpgUjwala P Tulshigiri 是 IBM India Software Labs 的一名软件开发人员。她研究过 SONAS 的系统健康监视。她还参与了 Extreme Blue 实习生项目 Enabling ODF for Social Collaboration with Composite Application and Mashups 的一部分。Bhushan 获得了普纳工程学院 (COEP) 的计算机科学学士学位。



2012 年 6 月 04 日

简介

IBM General Parallel File System (GPFS) 是一种共享磁盘集群文件系统,通常用于高性能计算中。GPFS 支持在集群环境中执行高速的并发文件访问。GPFS 中一个有助于提升性能的主要特征是,它能够从一个集群内不同磁盘上的同一个文件擦除数据块,并行执行读写循环动作。此外,它提供了多种功能,比如记录元数据以便从节点故障恢复,快照工具用于保留单个时间点上的文件系统数据状态,数据复制可应对系统故障,以及数据的高可用性和可伸缩性。因此在传统上,GPFS 用于类似超级计算机的环境中,可以在全球许多顶级超级计算机上看到它。

最近,GPFS 的使用变得越来越流行,甚至在日常业务应用程序中也是如此。在最新的版本中,GPFS 得到了增强添加了多项功能,有助于部署信息生命周期管理功能,甚至有助于遵守各种法律规定。因为 GPFS 可用于 AIX 以及 Linux® 集群,所以它可帮助将这些功能用于在这些 UNIX® 版本上运行的应用程序和存储。为文件设置不变性和 appendOnly 标志的工具是 GPFS V3.4 for AIX 中支持的一项新的且有趣的功能。不变性通常意味着保护文件或数据不被篡改和恶意插入数据。换句话说,甚至超级用户或系统的 root 用户,也无法删除或更改不可变的文件。类似地,为文件设置 appendOnly 标志会限制用户修改该文件的内容,但同时允许向同一个文件附加数据。这些工具通常是遵守各种法规所必需的,比如医疗行业的 Health Insurance Portability and Accountability Act (HIPAA) 和金融业或国防类应用中的 Federal Financial Institutions Examination Council (FFIEC)。(有关规章制度的更多信息,请参阅 参考资料。)

在本文中,我们将探讨 GPFS V3.4 中提供的针对 AIX 的不可变和 appendOnly 文件特性。本文将解释使用这些功能可执行的不同文件操作,以及它们如何对业务带来利益以确保受规章制度委托的环境既安全又不可被篡改。


不变性需求

许多时候,存储在一个文件系统上的文件包含机密数据,这些数据始终需要防止数据破坏和删除,以及未授权用户或者有时甚至是 root 用户插入错误数据。一些业务也需要在文件上使用类似 Write Once Read Many times (WORM) 的工具,而一些行业的规章制度(比如 HIPAA)需要为各种类型的文件(比如业务审计文件、日志文件、健康记录等)使用防篡改工具。不变性技术可确保数据免遭损害和篡改。此技术也称为内容完整性验证。

一个文件被标记为不可变后,它就无法被修改。但是,用于记录日志的文件其大小会不断增加。在这样的情况下,要维护数据的完整性,需要允许用户附加数据,而拒绝其他特权,比如更改访问控制列表 (ACL) 或所有者,编辑或删除文件。

UNIX 中的不变性

在传统的 UNIX 文件系统中,文件由最初的所有者或系统中的任何集中归档进程使用 chmod 命令设置为不可变,这会从文件的 ACL 删除用户写入权限,使文件变得不可访问和无法修改。IBM GPFS 还为不变性和 appendOnly 特性提供了其他更多的选项,允许用户依据他们的需求进行选择。


GPFS 中的不变性和 AppendOnly 特性

为了防止文件被意外更改或删除,GPFS 提供了两个名为 immutable 和 appendOnly 的标志。在本文中,我们将介绍这两个标志在文件系统中的文件上的作用。

如下图所示,AIX 上的系统 c103rp03.gpfs.net 是集群 karmic.gpfs.net 上的一个节点,该集群已安装 GPFS 3.4v。(有关在 AIX 节点上安装 GPFS 的更多信息,请参阅 参考资料。)

代码 1:使用的 AIX 服务器
(08:17:37) c103rp03 / $ hostname
c103rp03.gpfs.net

(08:17:40) c103rp03 / $ uname -a
AIX c103rp03 3 5 002405FB4C00

(08:17:45) c103rp03 / $ oslevel
5.3.0.0

要检查 AIX 机器上的 GPFS 版本介绍,请运行命令 ‘lslpp -l gpfs*’

代码 2:使用的 GPFS 版本
(08:17:58) c103rp03 /gpfs/fs1 $ lslpp -l gpfs*
  Fileset                      Level  State      Description
  --------------------------------------------------------------------------------------
  Path: /usr/lib/objrepos
    gpfs.base                3.4.0.0  COMMITTED  GPFS File Manager
  Path: /usr/share/lib/objrepos
    gpfs.docs.data           3.4.0.0  COMMITTED  GPFS Server Manpages and  Documentation

GPFS 自己拥有一组丰富的命令行接口 (CLI),允许 AIX 用户与系统交互。其中一个命令是 mmlscluster,该命令显示 GPFS 集群配置。

代码 3:列出集群配置
(08:18:34) c103rp03 / $ mmlscluster
GPFS cluster information
========================
  GPFS cluster name:         karmic.gpfs.net
  GPFS cluster id:           13882456366448342595
  GPFS UID domain:           karmic.gpfs.net
  Remote shell command:      /usr/bin/rsh
  Remote file copy command:  /usr/bin/rcp

GPFS cluster configuration servers:
-----------------------------------
  Primary server:    c103rp04.gpfs.net
  Secondary server:  c103rp07.gpfs.net
  
 Node  Daemon node name          IP address       Admin node name        Designation
-----------------------------------------------------------------------------------------
   1   c103rp04.gpfs.net         192.168.100.132  c103rp04.gpfs.net
   2   c103rp05.gpfs.net         192.168.100.133  c103rp05.gpfs.net      quorum-manager
   3   c103rp06.gpfs.net         192.168.100.134  c103rp06.gpfs.net      quorum-manager
   4   c103rp07.gpfs.net         192.168.100.135  c103rp07.gpfs.net      manager
   5   c103rp08.gpfs.net         192.168.100.136  c103rp08.gpfs.net      manager
   6   c103rp09.gpfs.net         192.168.100.137  c103rp09.gpfs.net      quorum-manager
   8   c103rp10.gpfs.net         192.168.100.138  c103rp10.gpfs.net      quorum-manager
   9   c103rp03.gpfs.net        192.168.100.131  c103rp03.gpfs.net

集群 karmic.gpfs.net 将 GPFS 文件系统 ‘fs1’ 挂载在点 /gpfs/fs1 上,这是一个可从所有集群节点访问的共享目录。GPFS 命令 mmcrfs 用于在 GPFS 集群上创建一个文件系统。文件系统的挂载点可使用 mmlsfs 命令进行验证。

代码 4:GPFS 挂载点
(08:19:06) c103rp03 / $ mmlsfs fs1 -T
flag                value                    description
------------------- ------------------------ -----------------------------------
 -T                 /gpfs/fs1                Default mount point

让我们从挂载的目录 /gpfs/fs1 中的 AIX 节点 ‘c103rp03.gpfs.net’ 创建一个文件 Test_File_1。GPFS 命令 mmlsattar 显示指定文件的所有属性。

代码 5:列出文件属性
(08:19:20) c103rp03 / $ cd /gpfs/fs1

(08:19:25) c103rp03 /gpfs/fs1 $ touch Test_File_1

(08:19:33) c103rp03 /gpfs/fs1 $ mmlsattr -L Test_File_1
file name:            Test_File_1
metadata replication: 1 max 2
data replication:     1 max 2
immutable:	      no
appendOnly:    	      no
flags:
storage pool name:    system
fileset name:         root
snapshot name:

这里,正如我们看到的,有两个名为 immutable 和 appendOnly 的标志与 Test_File_1 关联。目前,两个标志的值都为 ‘no’,因为还未对它们进行设置。


GPFS 中的不变性限制

GPFS 拥有一个名为 mmchattr 的专用命令,它用于设置或取消设置文件的 immutable 标志。将文件设置为 immutable 后,该文件或其任何父目录均无法重命名。为这些文件提供了一个单路径,这意味着不允许为不可变的文件使用硬链接和文件集断开链接 (unlink)。

mmchattr -i yes|no 命令设置或取消设置文件的 immutable 状态。

-i yes 将文件的 immutable 属性设置为 yes,而 -i no 则将文件的 immutable 属性设置为 no。

要检查是否在文件上设置了该标志,可以运行 mmlsattr GPFS 命令。

代码 6:设置和验证文件的 immutable 标志
(08:19:52) c103rp03 /gpfs/fs1 $ mmchattr -i yes Test_File_1

(08:20:03) c103rp03 /gpfs/fs1 $ mmlsattr -L Test_File_1
file name:            Test_File_1
metadata replication: 1 max 2
data replication:     1 max 2
immutable:            yes
appendOnly:           no
flags:
storage pool name:    system
fileset name:         root
snapshot name:

不可变文件上的文件操作

当一个文件标记为不可变时,文件操作的行为也会相应地更改。

  1. 删除:不可变文件无法删除。
    代码 7:不可变文件上的删除操作
    (08:20:13) c103rp03 /gpfs/fs1 $ rm -rf Test_File_1
    rm: Test_File_1 not removed.
    Read-only file system
  2. 修改/附加:这些文件无法编辑或附加。任何对不可变文件的编辑或附加尝试都会返回一个错误。
    代码 8:不可变文件上的修改/附加操作
    (08:20:24) c103rp03 /gpfs/fs1 $ echo "abc" > Test_File_1
    bash: Test_File_1: Read-only file system
    
    (08:20:51) c103rp03 /gpfs/fs1 $ echo "abc" >>  Test_File_1
    bash: Test_File_1: Read-only file system

    请注意,在一个文件上应用的 Immutable 标志只有在关闭该文件后才会生效。所以,如果在设置该标志时文件是打开的,您仍可修改或附加它。

  3. 更改 ACL:不可变文件的 ACL(所有者/组/用户的读取/写入/执行权限)无法更改或删除。

    GPFS mmgetacl 命令显示一个文件当前的权限列表,而mmdelacl 用于删除文件的现有权限。为文件设置 immutable 标志后,就无法删除或修改访问权限。

    代码 9:更改不可变文件的 ACL
    (09:30:32) c103rp03 /gpfs/fs1 $ mmgetacl Test_File_1	
    #owner:root
    #group:system
    user::rw-c
    group::r---
    other::r---
    
    (09:31:09) c103rp03 /gpfs/fs1 $ mmdelacl Test_File_1
    mmdelacl: Authorization failure
  4. 更改模式:无法更改不可变文件的模式。
    代码 10:更改不可变文件的模式
    (08:21:04) c103rp03 /gpfs/fs1 $ chmod u+x Test_File_1
    chmod: Test_File_1: Not owner
  5. 不可变目录:将一个目录标记为不可变后,将无法在该目录内创建、删除或重命名任何文件。但是,子目录仍然保持可变,除非且直到您显式将它们标记为不可变。

    例如,在下面的代码段中,在一个名为 Test_Dir 的目录中创建了 4 个文件(m1、m2、m3 和 m4)以及一个子目录 sub_dir1。然后,使用 mmchattr 命令为目录 Test_Dir 设置了 immutable 标志,并使用 mmlsattr 命令列出了它的文件属性。

    代码 11:设置目录的 immutable 标志
    (09:34:22) c103rp03 /gpfs/fs1 $ mkdir Test_Dir
    
    (09:34:29) c103rp03 /gpfs/fs1 $ cd Test_Dir
    
    (09:34:34) c103rp03 /gpfs/fs1/Test_Dir $ touch m1 m2 m3 m4
    
    (09:36:08) c103rp03 /gpfs/fs1/Test_Dir $ mkdir sub_dir1
    
    (09:36:10) c103rp03 /gpfs/fs1/Test_Dir $ ls
    m1        m2        m3        m4        sub_dir1
    
    (09:36:39) c103rp03 /gpfs/fs1/Test_Dir $ cd ..
    
    (09:36:43) c103rp03 /gpfs/fs1 $ mmchattr -i yes Test_Dir
    
    (09:36:56) c103rp03 /gpfs/fs1 $ mmlsattr -L  Test_Dir
    file name:            Test_Dir
    metadata replication: 1 max 2
    data replication:     1 max 2
    immutable:            yes
    appendOnly:           no
    flags:
    storage pool name:    system
    fileset name:         root
    snapshot name:

    现在,删除、创建和重命名该目录内某个文件的任何尝试都会失败并返回一个错误提示。

    代码 12:不可变目录上的删除/创建/重命名操作
    (09:37:30) c103rp03 /gpfs/fs1 $ cd Test_Dir/
    
    (09:37:41) c103rp03 /gpfs/fs1/Test_Dir $ rm -rf m1
    rm: m1 not removed.
    Read-only file system
    
    (09:38:18) c103rp03 /gpfs/fs1/Test_Dir $ touch m5
    touch: m5 cannot create
    
    (09:38:29) c103rp03 /gpfs/fs1/Test_Dir $ mv m2 m5
    mv: cannot rename m2 to m5:
    Read-only file system

    但是,子目录 sub_dir1 仍然可变,并允许在它之内创建新文件和重命名现有文件等操作。

    不可变目录的子目录上的文件操作
    (09:41:16) c103rp03 /gpfs/fs1/Test_Dir $ cd sub_dir1
    
    (09:41:18) c103rp03 /gpfs/fs1/Test_Dir/sub_dir1 $ touch s1 s2
    
    (09:41:27) c103rp03 /gpfs/fs1/Test_Dir/sub_dir1 $ ls
    s1  s2
    
    (09:41:29) c103rp03 /gpfs/fs1/Test_Dir/sub_dir1 $ mv s1 s3
    
    (09:41:51) c103rp03 /gpfs/fs1/Test_Dir/sub_dir1 $ ls
    s2  s3
  6. 时间戳:不可变文件的时间戳可以更改。
    代码 14:更改不可变文件的时间戳
    (09:32:47) c103rp03 /gpfs/fs1 $ ls -ltr Test_File_1
    -rw-r--r--    1 root     system            0 Nov  9 08:19 Test_File_1
    
    (09:33:43) c103rp03 /gpfs/fs1 $ touch Test_File_1
    
    (09:33:46) c103rp03 /gpfs/fs1 $ ls -ltr Test_File_1
    -rw-r--r--    1 root     system            0 Nov  9 09:33 Test_File_1

GPFS 中的 appendOnly 限制

在 GPFS 中,可以使用同样的 mmchattr 命令和 -a yes|no 选项设置文件的 appendOnly 标志。另外,您可以使用同样的 GPFS 命令 mmlsattr 验证 appendOnly 标志。

mmchattr -a yes|no 命令设置或取消设置文件的 appendOnly 状态。-a yes 将文件的 immutable 属性设置为 yes,而 -a no 则将文件的 appendOnly 属性设置为 no。

代码 15:文件的 appendOnly 标志
(09:42:25) c103rp03 /gpfs/fs1 $ pwd
/gpfs/fs1

(09:42:28) c103rp03 /gpfs/fs1 $ touch Test_File_2

(09:42:47) c103rp03 /gpfs/fs1 $ mmchattr -a yes Test_File_2

(09:42:56) c103rp03 /gpfs/fs1 $ mmlsattr -L Test_File_2
file name:            Test_File_2
metadata replication: 1 max 2
data replication:     1 max 2
immutable:            no
appendOnly:           yes
flags:
storage pool name:    system
fileset name:         root
snapshot name:

appendOnly 文件上的文件操作

  1. 删除:appendOnly 文件无法删除。
    代码 16:appendOnly 文件上的删除操作
    (09:42:59) c103rp03 /gpfs/fs1 $ rm -rf Test_File_2
    rm: Test_File_2 not removed.
    Read-only file system
  2. 修改/附加:这些文件无法编辑,但可以附加。
    代码 17:appendOnly 文件上的修改/附加操作
    (09:43:01) c103rp03 /gpfs/fs1 $ echo "abc" > Test_File_2
    bash: Test_File_2: Read-only file system
    
    (09:43:41) c103rp03 /gpfs/fs1 $ echo "abc" >> Test_File_2
    
    (09:43:42) c103rp03 /gpfs/fs1 $ cat Test_File_2
    abc
  3. 更改 ACL:appendOnly 文件的 ACL(所有者/组/用户的读取/写入/执行权限)无法更改或删除。
    代码 18:更改 AppendOnly 文件的 ACL
    (09:44:04) c103rp03 /gpfs/fs1 $ mmgetacl Test_File_2
    #owner:root
    #group:system
    user::rw-c
    group::r---
    other::r---
    
    (09:44:15) c103rp03 /gpfs/fs1 $ mmdelacl Test_File_2
    mmdelacl: Authorization failure
  4. 更改模式:不可以更改设置了 appendOnly 模式的文件的模式。
    代码 19:更改 appendOnly 文件的模式
    (09:43:47) c103rp03 /gpfs/fs1 $ chmod u+x Test_File_2
    chmod: Test_File_2: Not owner
  5. appendOnly 目录:将一个目录标记为 appendOnly 后,将无法删除或重命名该目录中的任何文件。

    但是,可创建 0 字节的文件。在下面的示例中,Test_AppendOnly 是一个包含文件 a1、a2、a3 和子目录 sub_dir1 的目录。接着,使用 mmchattr 命令为目录 Test_AppendOnly 设置了 appendOnly 标志。

    代码 20:设置目录的 appendOnly 标志
    (09:44:24) c103rp03 /gpfs/fs1 $ mkdir Test_AppendOnly
    
    (09:44:30) c103rp03 /gpfs/fs1 $ cd Test_AppendOnly
    
    (09:44:35) c103rp03 /gpfs/fs1/Test_AppendOnly $ touch a1 a2 a3
    
    (09:44:43) c103rp03 /gpfs/fs1/Test_AppendOnly $ mkdir sub_dir1
    
    (09:44:51) c103rp03 /gpfs/fs1/Test_AppendOnly $ ls
    a1        a2        a3        sub_dir1
    
    (09:44:58) c103rp03 /gpfs/fs1/Test_AppendOnly $ cd ..
    
    (09:45:09) c103rp03 /gpfs/fs1 $ mmchattr -a yes Test_AppendOnly
    
    (09:45:15) c103rp03 /gpfs/fs1 $ mmlsattr -L Test_AppendOnly
    file name:            Test_AppendOnly
    metadata replication: 1 max 2
    data replication:     1 max 2
    immutable:            no
    appendOnly:           yes
    flags:
    storage pool name:    system
    fileset name:         root
    snapshot name:

    现在,正如您在下面所看到的,目录 Test_AppendOnly 中的文件无法删除或重命名。但是,仍然可以在同一个目录中创建新文件。

    请注意,如果在一个文件或目录上同时设置了 immutable 和 appendOnly 标志,immutable 设置将会生效。


行业应用

取决于您的业务需求和要保护的数据性质,您可为文件选择合适的标志。另外,由于一些输入的错误,文件可能被所有者错误地删除。这些 GPFS 标志提供的限制有助于避免这类常见错误。

组织需要保护文件系统中的业务审计文件、患者的健康中心记录、日志文件等免遭任何损害和恶意数据输入。在这些情况下,使用不变性和 appendOnly 特性是有效保护数据的最佳实践。


结束语

在本文中,我们探讨了如何使用 GPFS 3.4v 中的不变性和 appendOnly 特性来保护 AIX 系统上的机密文件免遭篡改。有关 GPFS 上这些功能的更多信息,请参阅 GPFS V3.4 高级管理指南(参阅 参考资料)。

致谢

作者衷心感谢来自 IBM 公司的 Bhushan Jain (bhujain1@in.ibm.com) 对本文的审核,以及所提供的宝贵建议。

参考资料

学习

  • 深入了解 IBM General Parallel File System。通过 IBM GPFS 的维基、论坛和社区了解、发现和共享相关信息。
  • GPFS V3.4 高级管理指南
  • mmutability on ext2/ext3 filesystems 展示了不变性特性在 ext2/ext3 文件系统上的应用。
  • Long term Preservation of Digital Information,来自 SNIA 的一个培训演示。
  • 了解有关 HIPAA 法规 的更多信息。
  • GPFS Installation on AIX nodes 是一篇完整的安装流程指南。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
  • developerWorksLive! 技术讲座:随时关注 developerWorks 技术活动和网络广播。

获得产品和技术

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=819396
ArticleTitle=GPFS 3.4v 在 AIX 上实现的不变性和 appendOnly 特性
publish-date=06042012