字号:    

IBM AIX V5.3 系统管理(Test 222)认证指南系列第 3 部分:文件系统(下)

本教程分为两部分向您详细的介绍了 AIX V5.3 的文件系统。内容主要是针对管理员需要了解的基础知识、技巧以及一些经验信息。文章是节选自 IBM 的红皮书《IBM Certification Study Guide eServer p5 and pSeries Administration and Support for AIX 5L Version 5.3 》。

关于本教程

文件系统提供了一种非常方便的方法,以存储和访问逻辑卷中的数据。文件系统由各种各样的文件、目录和其他数据结构组成。文件系统对相关的信息进行维护,并标识文件或者目录数据所处的具体位置。本教程向您十分详细地讲解了 AIX 文件系统管理的各个方面。包括基础知识,不同的文件系统类型,如何创建、删除文件系统,如何修改文件系统的属性等,这些都是成为一个合格管理员所需要了解的知识。

目标

在完成了本教程的两部分内容后,您应该对 AIX V5.3 的文件系统有一个比较详细的了解,了解各种不同的文件系统的作用,应该可以独立完成特性类型文件系统的创建、删除以及修改属性等基本操作。当然对于一些比较常见的错误信息,也应该了解如何进行解决。

先决条件开始学习本教程前,您需要有一定的 AIX 操作系统的操作经验,对基本的 AIX 的命令行操作或者是 SMIT 操作都要有一定的了解。

系统要求要完成本教程中的示例,您需要具有 AIX 操作系统的 root 权限或者是具有同等权限的用户。

创建一个文件系统

AIX 5L Version 5.3 中的每个文件系统都必须位于某个逻辑卷。

当您创建文件系统时,如果您没有指定一个以前创建的逻辑卷,那么系统将使用系统生成的名称创建一个逻辑卷,并使用缺省值作为该逻辑卷的特征。文件系统的大小非常接近逻辑分区大小的倍数。文件系统的大小不能超过逻辑卷的标准最大逻辑分区数。将向 /etc/filesystem 中添加一个包含该文件系统详细信息的节,并将新的数据写入到 ODM。

在示例 1 中,我们说明了如何使用 crfs 命令,如下所示:

    • lsvg -l testvg 说明 testvg 不包含任何 jfs、jfs2、jfslog 和 jfs2log 类型的逻辑卷。
    • crfs -v jfs -g testvg -a size=10M -m /fs1 将在卷组 testvg 创建一个大小为 10 MB 的 jfs 文件系统,并且装入点为 /fs1。目前没有任何 jfs 逻辑卷,所以系统将创建一个,并指定其名称为 lv00。目前没有任何 jfs 日志设备,所以系统将创建一个,并指定其名称为 loglv00。
    • crfs -v jfs2 -g testvg -a size=10M -p ro -m /fs2 将在卷组 testvg 中创建一个大小为 10 MB 的 jfs2 文件系统,其装入点为 /fs2,并且具有只读权限。目前没有任何 jfs2 逻辑卷,所以系统将创建一个,并指定其名称为 fslv00。目前没有任何 jfs2 日志设备,所以系统将创建一个,并指定其名称为 loglv01。
    • lslv lv00 和 lslv fslv00 说明所创建的逻辑卷使用了它们缺省的特征。
    • cat /etc/filesystems|grep -ip fs1 显示了 /etc/filesystems 中与 fs1 相对应的节。

示例 1 创建文件系统时不指定逻辑卷

# lsvg -l testvg

testvg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT

# crfs -v jfs -g testvg -a size=10M -m /fs1

Based on the parameters chosen, the new /fs1 JFS file system

is limited to a maximum size of 134217728 (512 byte blocks)

New File System size is 262144

# crfs -v jfs2 -g testvg -a size=10M -p ro -m /fs2

File system created successfully.

130864 kilobytes total disk space.

New File System size is 262144

# lsvg -l testvg

testvg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT

loglv00             jfslog     1     1     1    closed/syncd  N/A

lv00                jfs        1     1     1    closed/syncd  /fs1

loglv01             jfs2log    1     1     1    closed/syncd  N/A

fslv00              jfs2       1     1     1    closed/syncd  /fs2

# lslv lv00

LOGICAL VOLUME:     lv00                   VOLUME GROUP:   testvg

LV IDENTIFIER:      00c478de00004c0000000107d96de510.2 PERMISSION:     read/write

VG STATE:           active/complete        LV STATE:       closed/syncd

TYPE:               jfs                    WRITE VERIFY:   off

MAX LPs:            512                    PP SIZE:        128 megabyte(s)

COPIES:             1                      SCHED POLICY:   parallel

LPs:                1                      PPs:            1

STALE PPs:          0                      BB POLICY:      relocatable

INTER-POLICY:       minimum                RELOCATABLE:    yes

INTRA-POLICY:       middle                 UPPER BOUND:    32

MOUNT POINT:        /fs1                   LABEL:          /fs1

MIRROR WRITE CONSISTENCY: on/ACTIVE

EACH LP COPY ON A SEPARATE PV ?: yes

Serialize IO ?:     NO

# lslv fslv00

LOGICAL VOLUME:     fslv00                 VOLUME GROUP:   testvg

LV IDENTIFIER:      00c478de00004c0000000107d96de510.4 PERMISSION:     read/write

VG STATE:           active/complete        LV STATE:       closed/syncd

TYPE:               jfs2                   WRITE VERIFY:   off

MAX LPs:            512                    PP SIZE:        128 megabyte(s)

COPIES:             1                      SCHED POLICY:   parallel

LPs:                1                      PPs:            1

STALE PPs:          0                      BB POLICY:      relocatable

INTER-POLICY:       minimum                RELOCATABLE:    yes

INTRA-POLICY:       middle                 UPPER BOUND:    32

MOUNT POINT:        /fs2                   LABEL:          /fs2

MIRROR WRITE CONSISTENCY: on/ACTIVE

EACH LP COPY ON A SEPARATE PV ?: yes

Serialize IO ?:     NO

# cat /etc/filesystems|grep -ip fs1

/fs1:

        dev             = /dev/lv00

        vfs             = jfs

        log             = /dev/loglv00

        mount           = false

        account         = false

您可以指定以前创建的逻辑卷的名称。逻辑卷类型必须与文件系统类型相匹配。文件系统的大小非常接近逻辑分区大小的倍数。将向 /etc/filesystem 中添加一个包含该文件系统详细信息的节,并对 ODM 进行更新。

在示例 2 中,我们说明了如何使用 crfs 命令,如下所示:

    • lsvg -l testvg 说明 jfs2 类型的 testlv 逻辑卷不与任何文件系统相关联,并且已经定义了一个 jfs2 日志设备。testlv 只有一个大小为 128 MB 的分区。
    • crfs -v jfs2 -d /dev/testlv -a logname=loglv01 -m /test -a size=130M 将在现有的、名为 testlv 的逻辑卷创建一个 jfs2 文件系统,该文件系统使用 jfs2 日志设备 loglv01,并将 /test 作为装入点。因为我们为该文件系统指定的大小要大于逻辑卷本身的大小,所以将忽略 size 参数,并且该文件系统最终的大小将接近于逻辑卷的大小。
    • cat /etc/filesystems|grep -ip test 显示了 /etc/filesystems 中与 test 相对应的节。

示例 2 在以前定义的逻辑卷中创建文件系统

# lsvg -l testvg

testvg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT

loglv00             jfslog     1     1     1    closed/syncd  N/A

lv00                jfs        1     1     1    closed/syncd  /fs1

loglv01             jfs2log    1     1     1    closed/syncd  N/A

fslv00              jfs2       1     1     1    closed/syncd  /fs2

testlv              jfs2       1     1     1    closed/syncd  N/A

# crfs -v jfs2 -d /dev/testlv -a logname=loglv01 -m /test -a size=130M

crfs: Warning: device name given, size parameter ignored.

File system created successfully.

130864 kilobytes total disk space.

New File System size is 262144

# cat /etc/filesystems|grep -ip test

/test:

        dev             = /dev/testlv

        vfs             = jfs2

        log             = /dev/loglv01

        mount           = false

        account         = false

装入和卸载文件系统

装入(mount)指的是使得位于某个位置的用户能够使用文件系统、文件、目录、设备和特殊文件。这是使得一个文件系统可以访问的唯一方法。

必须在装入文件系统之前创建装入点。在将文件系统装入到某个目录时,所装入文件系统的 root 目录的权限将优先于装入点的权限。

在示例 3 中,我们使用了 mount 命令,如下所示:

    • mount /dev/fslv02 /testfs 尝试将 /test 装入到一个不存在的目录,这将产生一个错误。
    • mount /dev/fslv02 /test 将文件系统装入到一个现有的目录。
    • umount /testfs 尝试卸载一个并不存在的文件系统,这将产生一个错误。
    • umount /test 将卸载 /test 文件系统。

示例 3 装入和卸载文件系统

# mount /dev/fslv02 /testfs

mount: 0506-324 Cannot mount /dev/fslv02 on /testfs: A file or directory in the 
path name does not exist.

# umount /dev/fslv02 /test

umount: 0506-347 Cannot find anything to unmount.

# mount /dev/fslv02 /test

# umount /testf

umount: 0506-347 Cannot find anything to unmount.

# umount /test

如果您希望装入所有的文件系统,那么您可以使用下面的命令,以便一次性装入所有的文件系统:

mount {-a|all}

显示已装入的文件系统

您可以使用不带任何标志的 mount 命令,以显示关于当前所有已装入的文件系统的信息,如示例 4 所示。

示例 4 使用 mount 命令显示已装入的文件系统

# mount

  node       mounted        mounted over    vfs       date        options

-------- ---------------  ---------------  ------ ------------ ---------------

         /dev/hd4         /                jfs2   Nov 27 12:36 rw,log=/dev/hd8

         /dev/hd2         /usr             jfs2   Nov 27 12:36 rw,log=/dev/hd8

         /dev/hd9var      /var             jfs2   Nov 27 12:36 rw,log=/dev/hd8

         /dev/hd3         /tmp             jfs2   Nov 27 12:36 rw,log=/dev/hd8

         /dev/hd1         /home            jfs2   Nov 27 12:36 rw,log=/dev/hd8

         /proc            /proc            procfs Nov 27 12:36 rw

         /dev/hd10opt     /opt             jfs2   Nov 27 12:36 rw,log=/dev/hd8

         /dev/testlv      /test            jfs2   Nov 28 19:54 rw,log=/dev/loglv01

您可以使用 lsfs 命令来显示文件系统的特征,如示例 5 所示。这个命令将显示所有类型的文件系统的数据。

示例 5 使用 lsfs 命令

# lsfs -a

Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting

/dev/hd4        --         /                      jfs2  262144  --         yes  no

/dev/hd1        --         /home                  jfs2  262144  --         yes  no

/dev/hd2        --         /usr                   jfs2  2359296 --         yes  no

/dev/hd9var     --         /var                   jfs2  262144  --         yes  no

/dev/hd3        --         /tmp                   jfs2  262144  --         yes  no

/proc           --         /proc                  procfs --      --         yes  no

/dev/hd10opt    --         /opt                   jfs2  262144  --         yes  no

/dev/lv00       --         /fs1                   jfs   262144  --         no   no

/dev/fslv00     --         /fs2                   jfs2  262144  ro         no   no

# lsfs -q

Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting

/dev/hd4        --         /                      jfs2  262144  --         yes  no

  (lv size: 262144, fs size: 262144, block size: 4096, sparse files: yes, inline log: no,
   inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

/dev/hd1        --         /home                  jfs2  262144  --         yes  no

  (lv size: 262144, fs size: 262144, block size: 4096, sparse files: yes, inline log: no, 
  inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

/dev/hd2        --         /usr                   jfs2  2359296 --         yes  no

 (lv size: 2359296, fs size: 2359296, block size: 4096, sparse files: yes, inline log: 
 no,inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

/dev/hd9var     --         /var                   jfs2  262144  --         yes  no

  (lv size: 262144, fs size: 262144, block size: 4096, sparse files: yes, inline log: no, 
  inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

/dev/hd3        --         /tmp                   jfs2  262144  --         yes  no

  (lv size: 262144, fs size: 262144, block size: 4096, sparse files: yes, inline log: no, 
  inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

/proc           --         /proc                  procfs --      --         yes  no

/dev/hd10opt    --         /opt                   jfs2  262144  --         yes  no

  (lv size: 262144, fs size: 262144, block size: 4096, sparse files: yes, inline log: no, 
  inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

/dev/lv00       --         /fs1                   jfs   262144  --         no   no

 (lv size: 262144, fs size: 262144, frag size: 4096, nbpi: 4096, compress: no, 
  bf: false, ag: 8)

/dev/fslv00     --         /fs2                   jfs2  262144  ro         no   no

  (lv size: 262144, fs size: 262144, block size: 4096, sparse files: yes, inline log: no, 
  inline log size: 0, EAformat: v1, Quota: no, DMAPI: no, VIX: no)

删除文件系统

您可以使用 rmfs 命令来删除文件系统。该命令将从 /etc/filesystems 中删除相应的节,以及该文件系统所处的逻辑卷。

示例 6 使用 rmfs 命令

# lsvg -l testvg

testvg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT

loglv00             jfslog     1     1     1    closed/syncd  N/A

lv00                jfs        1     1     1    closed/syncd  /fs1

loglv01             jfs2log    1     1     1    open/syncd    N/A

fslv00              jfs2       1     1     1    closed/syncd  /fs2

testlv              jfs2       1     1     1    open/syncd    /test

# rmfs /test

rmfs: 0506-921 /test is currently mounted.

# umount /test

# rmfs /test

rmlv: Logical volume testlv is removed.

# lsvg -l testvg

testvg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT

loglv00             jfslog     1     1     1    closed/syncd  N/A

lv00                jfs        1     1     1    closed/syncd  /fs1

loglv01             jfs2log    1     1     1    closed/syncd  N/A

fslv00              jfs2       1     1     1    closed/syncd  /fs2

# cat /etc/filesystems|grep test

# 

更改文件系统的属性

您可以使用 chfs 命令来更改文件系统的某些属性,如装入点权限、日志设备,或者大小,如示例 7 所示。如果文件系统新的大小要大于逻辑卷的大小,那么将对逻辑卷进行扩展以容纳该文件系统,假设它没有超过最大逻辑分区数。

示例 7 更改文件系统的属性

# lsfs -a

Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting

/dev/hd4        --         /                      jfs2  262144  --         yes  no

/dev/hd1        --         /home                  jfs2  262144  --         yes  no

/dev/hd2        --         /usr                   jfs2  2359296 --         yes  no

/dev/hd9var     --         /var                   jfs2  262144  --         yes  no

/dev/hd3        --         /tmp                   jfs2  262144  --         yes  no

/proc           --         /proc                  procfs --      --         yes  no

/dev/hd10opt    --         /opt                   jfs2  262144  --         yes  no

/dev/lv00       --         /fs1                   jfs   262144  --         no   no

/dev/fslv00     --         /fs2                   jfs2  262144  ro         no   no

# chfs -a size=250M -p rw /fs2

Filesystem size changed to 524288

# lsfs -a

Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting

/dev/hd4        --         /                      jfs2  262144  --         yes  no

/dev/hd1        --         /home                  jfs2  262144  --         yes  no

/dev/hd2        --         /usr                   jfs2  2359296 --         yes  no

/dev/hd9var     --         /var                   jfs2  262144  --         yes  no

/dev/hd3        --         /tmp                   jfs2  262144  --         yes  no

/proc           --         /proc                  procfs --      --         yes  no

/dev/hd10opt    --         /opt                   jfs2  262144  --         yes  no

/dev/lv00       --         /fs1                   jfs   262144  --         no   no

/dev/fslv00     --         /fs2                   jfs2  524288  rw         no   no

检查文件系统的一致性

fsck 命令可以检查文件系统的一致性,并以交互的方式修复文件系统。您不应该对一个已装入的文件系统运行 fsck 命令。您必须能够读取该文件系统所处的设备文件。fsck 命令尝试修复文件系统元数据结构,显示关于所找到的不一致内容的信息,并提示您使用相应的权限对其进行修复。它并不恢复数据块中的数据。如果您丢失了数据,那么您必须从备份进行还原。

fsck 命令将所检测到的孤立的文件和目录放到文件系统 root 目录中的 lost+found 目录中。

在系统启动时,将调用 fsck 命令对 /、/usr、/var 和 /tmp 文件系统进行验证。如果验证不成功,则将使得系统无法正常启动。

 


日志设备

下面的部分描述了关于文件系统日志的基本信息。

创建日志设备

在安装系统时,将在 hd8 中为 rootvg 创建专门的日志设备。当您的文件系统的大小不断增加时,您应该考虑增加缺省日志的大小,或者创建新的日志设备。

要创建日志设备,您应该使用 mklv 命令,并将逻辑卷类型指定为 jfslog 或者 jfs2log。

初始化日志设备

可以使用 logform 命令对日志设备进行初始化,以清除所有的日志记录。相同的命令也可以用于 jfslog 设备、jfs2log2 设备或者内联日志。logform 命令不会影响数据本身。

要对名为 loglv01 的 jf2log 设备进行初始化,可以使用下面的命令:

logform /dev/loglv01

总结

经过了本教程两部分的学习,相信您一定能够对 AIX V5.3 的文件系统有一个更深入的了解。同时也掌握了不少管理 AIX 文件系统的能知识。当然,文件系统管理的很多细节还需要您对于一些命令和一些概念的进一步深入研究才能够掌握。希望本教程能够让您在成为一个合格的管理员的学习道路上有一定的帮助。

 




 

?次阅读
 2008-05-08 21:56