系统管理指南:设备和文件系统

第 18 章 创建 UFS、TMPFS 和 LOFS 文件系统(任务)

本章介绍如何创建 UFS 文件系统、临时 (TMPFS) 文件系统和回送 (LOFS) 文件系统。对于 UFS 文件系统,本章介绍如何使用 newfs 命令创建文件系统。由于 TMPFS 和 LOFS 是虚拟的文件系统,因此您实际上是通过挂载这两种文件系统来对其进行“访问”的。

以下是本章中的逐步说明列表。


注 –

有关如何在可移除介质上创建 UFS 和 DOS 文件系统的说明,请参见第 1 章,管理可移除介质(概述)


创建 UFS 文件系统

必须格式化磁盘并将其分片之后,才能在其中创建 UFS 文件系统。磁盘片是磁盘的物理子集,由单一范围的连续块组成。片可以用作提供交换空间等的原始设备,或者用于保存基于磁盘的文件系统。有关格式化磁盘和将磁盘分片的完整信息,请参见第 11 章,管理磁盘(概述)

磁盘和存储管理产品(如 SolarisTM 卷管理器)用于创建更复杂的。卷的范围不局限于单个片或单个磁盘。有关使用卷的更多信息,请参见《Solaris Volume Manager 管理指南》。


注 –

Solaris 设备名称使用术语“片”(设备名称中使用字母 s)表示片编号。片也称为分区


由于 Solaris OS 会在安装过程中自动创建 UFS 文件系统,因此只是偶尔需要创建这些文件系统。如果希望执行以下操作,则需要创建(或重新创建)UFS 文件系统:

使用 newfs 命令是创建 UFS 文件系统的标准方法。newfs 命令是 mkfs 命令的便利前端,前者实际上用于创建新文件系统。newfs 命令可从将包含新文件系统的磁盘的标号中读取参数缺省值,如每个柱面的磁道数和每个磁道的扇区数。所选的选项会传递给 mkfs 命令以生成文件系统。

有关 newfs 命令所用的缺省参数的信息,请参见 newfs(1M)

Procedure如何创建 UFS 文件系统

开始之前

请确保已满足以下先决条件:

有关查找磁盘和磁盘片编号的信息,请参见第 12 章,管理磁盘(任务)

有关格式化磁盘和将磁盘分片的信息,请参见第 11 章,管理磁盘(概述)

  1. 您必须是超级用户或承担等效角色。

  2. 创建 UFS 文件系统。


    # newfs [-N] [-b size] [-i bytes] /dev/rdsk/device-name
    
    -N

    显示 newfs 命令会传递给 mkfs 命令的参数,而不实际创建文件系统。此选项是用于测试 newfs 命令的一种好方法。

    -b size

    指定文件系统的块大小,每块为 4096 或 8192 字节。缺省值为 8192。

    -i bytes

    指定每个 inode 的字节数。缺省值根据磁盘大小而异。有关更多信息,请参见 newfs(1M)

    device-name

    指定在其中创建新文件系统的磁盘设备的名称。

    系统会请求进行确认。


    注意 – 注意 –

    执行此步骤之前,请确保为片指定了正确的设备名称。如果指定错误的片,则在创建新文件系统时将删除其内容。此错误可能会导致系统出现紧急情况。


  3. 要验证是否创建了 UFS 文件系统,请检查新文件系统。


    # fsck /dev/rdsk/device-name
    

    其中 device-name 参数指定包含新文件系统的磁盘设备的名称。

    fsck 命令可检查新文件系统的一致性,报告出现的任何问题,并在修复问题之前进行提示。有关 fsck 命令的更多信息,请参见第 22 章,检查 UFS 文件系统一致性(任务)fsck(1M)


示例 18–1 创建 UFS 文件系统

以下示例说明如何在 /dev/rdsk/c0t1d0s7 中创建 UFS 文件系统。


# newfs /dev/rdsk/c0t1d0s7

/dev/rdsk/c0t1d0s7:  725760 sectors in 720 cylinders of 14 tracks, 72 sectors

        354.4MB in 45 cyl groups (16 c/g, 7.88MB/g, 3776 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

 32, 16240, 32448, 48656, 64864, 81072, 97280, 113488, 129696, 145904, 162112,

 178320, 194528, 210736, 226944, 243152, 258080, 274288, 290496, 306704,

 322912, 339120, 355328, 371536, 387744, 403952, 420160, 436368, 452576,

 468784, 484992, 501200, 516128, 532336, 548544, 564752, 580960, 597168,

 613376, 629584, 645792, 662000, 678208, 694416, 710624,

 fsck /dev/rdsk/c0t1d0s7

#

创建 UFS 文件系统后...

要挂载 UFS 文件系统并使其可用,请转到第 19 章,挂载和取消挂载文件系统(任务)

Procedure如何创建多 TB UFS 文件系统

对多 TB UFS 文件系统的支持假定作为 Solaris 卷管理器、VxVM 卷或大于 1 TB 的物理磁盘提供的多 TB LUN 可用。

创建多 TB UFS 文件系统之前,请首先验证是否执行了以下任一操作:

有关多 TB UFS 文件系统的更多信息,请参见64 位: 对多 TB UFS 文件系统的支持

  1. 成为超级用户。

  2. 在逻辑卷上创建多 TB UFS 文件系统。

    例如,此命令可为 1.8 TB 的卷创建 UFS 文件系统:


    # newfs /dev/md/rdsk/d99
    
    newfs: construct a new file system /dev/md/rdsk/d99: (y/n)? y
    
    /dev/md/rdsk/d99:    3859402752 sectors in 628158 cylinders of 48 tracks, 
    
    128 sectors
    
            1884474.0MB in 4393 cyl groups (143 c/g, 429.00MB/g, 448 i/g)
    
    super-block backups (for fsck -F ufs -o b=#) at:
    
    32, 878752, 1757472, 2636192, 3514912, 4393632, 5272352, 6151072, 702...
    
    Initializing cylinder groups:
    
    ........................................................................
    
    super-block backups for last 10 cylinder groups at:
    
     3850872736, 3851751456, 3852630176, 3853508896, 3854387616, 3855266336,
    
     3856145056, 3857023776, 3857902496, 3858781216,
    
    # 
  3. 验证新创建的文件系统的完整性。

    例如:


    # fsck /dev/md/rdsk/d99
    
    ** /dev/md/rdsk/d99
    
    ** Last Mounted on 
    
    ** Phase 1 - Check Blocks and Sizes
    
    ** Phase 2 - Check Pathnames
    
    ** Phase 3 - Check Connectivity
    
    ** Phase 4 - Check Reference Counts
    
    ** Phase 5 - Check Cyl groups
    
    2 files, 2 used, 241173122 free (0 frags, 241173122 blocks, 0.0% 
    
    fragmentation)
    
    # 
  4. 挂载新创建的文件系统并对其进行验证。

    例如:


    # mount /dev/md/dsk/d99 /bigdir
    
    # df -h /bigdir
    
    Filesystem             size   used  avail capacity  Mounted on
    
    /dev/md/dsk/d99        1.8T    64M   1.8T     1%    /bigdir

Procedure如何扩展多 TB UFS 文件系统

创建多 TB UFS 文件系统后,可以使用 growfs 命令扩展该文件系统。例如,使用在前面的过程中为卷创建的文件系统,可以将其他磁盘添加到此卷。然后,扩展文件系统。

  1. 成为超级用户。

  2. 将其他磁盘添加到卷。

    例如:


    # metattach d99 c4t5d0s4
    
    d99: component is attached
    
    # metastat
    
    d99: Concat/Stripe
    
        Size: 5145882624 blocks (2.4 TB)
    
        Stripe 0:
    
            Device     Start Block  Dbase   Reloc
    
            c0t1d0s4      36864     Yes     Yes
    
        Stripe 1:
    
            Device     Start Block  Dbase   Reloc
    
            c3t7d0s4          0     No      Yes
    
        Stripe 2:
    
            Device     Start Block  Dbase   Reloc
    
            c1t1d0s4          0     No      Yes
    
        Stripe 3:
    
            Device     Start Block  Dbase   Reloc
    
            c4t5d0s4          0     No      Yes
  3. 扩展文件系统。

    例如:


    # growfs -v /dev/md/rdsk/d99
    
    /usr/lib/fs/ufs/mkfs -G /dev/md/rdsk/d99 5145882624
    
    /dev/md/rdsk/d99:    5145882624 sectors in 837546 cylinders of 48 tracks, 
    
    128 sectors
    
            2512638.0MB in 5857 cyl groups (143 c/g, 429.00MB/g, 448 i/g)
    
    super-block backups (for fsck -F ufs -o b=#) at:
    
     32, 878752, 1757472, 2636192, 3514912, 4393632, 5272352, 6151072, 702...
    
    Initializing cylinder groups:
    
    .........................................................................
    
    super-block backups for last 10 cylinder groups at:
    
     5137130400, 5138009120, 5138887840, 5139766560, 5140645280, 5141524000,
    
     5142402720, 5143281440, 5144160160, 5145038880,
    
    # 
  4. 挂载已扩展的文件系统并对其进行验证。

    例如:


    # mount /dev/md/dsk/d99 /bigdir
    
    # df -h /bigdir 
    
    Filesystem             size   used  avail capacity  Mounted on 
    
    /dev/md/dsk/d99        2.4T    64M   2.4T     1%    /bigdir

Procedure如何将 UFS 文件系统扩展为多 TB UFS 文件系统

使用以下过程可将 UFS 文件系统的大小扩展为大于 1 TB。此过程假定最初使用 newfs -T 选项创建 UFS 文件系统。

  1. 成为超级用户。

  2. 确定当前磁盘或卷的大小。

    例如,以下卷的大小为 800 GB:


    # metastat d98
    
    d98: Concat/Stripe
    
        Size: 1677754368 blocks (800 GB)
    
        Stripe 0:
    
            Device     Start Block  Dbase   Reloc
    
            c0t1d0s4          0     No      Yes
    
        Stripe 1:
    
            Device     Start Block  Dbase   Reloc
    
            c3t7d0s4          0     No      Yes
  3. 将卷增至大于 1 TB。

    例如:


    # metattach d98 c1t1d0s4
    
    d98: component is attached
    
    # metastat d98
    
    d98: Concat/Stripe
    
        Size: 2516631552 blocks (1.2 TB)
    
        Stripe 0:
    
            Device     Start Block  Dbase   Reloc
    
            c0t1d0s4          0     No      Yes
    
        Stripe 1:
    
            Device     Start Block  Dbase   Reloc
    
            c3t7d0s4          0     No      Yes
    
        Stripe 2:
    
            Device     Start Block  Dbase   Reloc
    
            c1t1d0s4          0     No      Yes
  4. 将磁盘或卷的 UFS 文件系统扩展为大于 1 TB。

    例如:


    growfs -v /dev/md/rdsk/d98
    
    /usr/lib/fs/ufs/mkfs -G /dev/md/rdsk/d98 2516631552
    
    /dev/md/rdsk/d98:    2516631552 sectors in 68268 cylinders of 144 tracks, 
    
    256 sectors
    
            1228824.0MB in 2731 cyl groups (25 c/g, 450.00MB/g, 448 i/g)
    
    super-block backups (for fsck -F ufs -o b=#) at:
    
     32, 921888, 1843744, 2765600, 3687456, 4609312, 5531168, 6453024, 737...
    
     8296736,
    
    Initializing cylinder groups:
    
    ......................................................
    
    super-block backups for last 10 cylinder groups at:
    
     2507714848, 2508636704, 2509558560, 2510480416, 2511402272, 2512324128,
    
     2513245984, 2514167840, 2515089696, 2516011552,
  5. 挂载已扩展的文件系统并对其进行验证。

    例如:


    # mount /dev/md/dsk/d98 /datadir
    
    # df -h /datadir 
    
    Filesystem             size   used  avail capacity  Mounted on 
    
    /dev/md/dsk/d98        1.2T    64M   1.2T     1%    /datadir

对多 TB UFS 文件系统问题进行疑难解答

使用以下错误消息和解决方案可以对多 TB UFS 文件系统问题进行疑难解答。

错误消息(与以下内容类似):

mount: /dev/rdsk/c0t0d0s0 is not this fstype.
原因

尝试在运行早于 Solaris 10 发行版的 Solaris 发行版的系统上挂载大于 1 TB 的 UFS 文件系统。

解决方案

在运行 Solaris 10 或更高发行版的系统上挂载大于 1 TB 的 UFS 文件系统。

错误消息

"File system was not set up with the multi-terabyte format."  "Its size 

cannot be increased to a terabyte or more."
原因

尝试扩展不是使用 newfs -T 命令创建的文件系统。

解决方案
  1. 备份要扩展为大于 1 TB 的文件系统的数据。

  2. 使用 newfs 命令重新创建文件系统,以创建多 TB 文件系统。

  3. 将备份数据恢复到新创建的文件系统中。

创建临时文件系统 (Temporary File System, TMPFS)

临时文件系统 (temporary file system, TMPFS) 使用本地内存进行文件系统的读取和写入,这通常比在 UFS 文件系统中读取和写入快得多。TMPFS 文件系统通过节省利用本地磁盘或网络读取和写入临时文件的成本,可以提高系统性能。重新引导或取消挂载后,TMPFS 文件系统中的文件即不存在。

如果创建多个 TMPFS 文件系统,请注意这些文件系统都使用相同的系统资源。除非使用 mount 命令的 -o size 选项限制 TMPFS 的大小,否则在 TMPFS 文件系统下创建的文件将用尽可用于其他任何 TMPFS 文件系统的空间。

有关更多信息,请参见 tmpfs(7FS)

Procedure如何创建和挂载 TMPFS 文件系统

  1. 成为超级用户或承担等效角色。

  2. 如有必要,请创建要作为 TMPFS 文件系统挂载的目录。


    # mkdir /mount-point
    

    其中 mount-point 是挂载 TMPFS 文件系统的目录。

  3. 挂载 TMPFS 文件系统。


    # mount -F tmpfs [-o size=number]  swap mount-point
    
    -o size=number

    指定 TMPFS 文件系统的大小限制(以 MB 为单位)。

    mount-point

    指定在其中挂载 TMPFS 文件系统的目录。

    要将系统设置为在引导时自动挂载 TMPFS 文件系统,请参见示例 18–3

  4. 验证是否已创建 TMPFS 文件系统。


    # mount -v
    

示例 18–2 创建和挂载 TMPFS 文件系统

以下示例说明如何创建、挂载 TMPFS 文件系统 /export/reports 并将其大小限制为 50 MB。


# mkdir /export/reports

# chmod 777 /export/reports

# mount -F tmpfs -o size=50m swap /export/reports

# mount -v


示例 18–3 在引导时挂载 TMPFS 文件系统

通过添加 /etc/vfstab 项,可以将系统设置为在引导时自动挂载 TMPFS 文件系统。以下示例说明了 /etc/vfstab 文件中的某一项,该项在引导时将 /export/test 作为 TMPFS 文件系统挂载。由于未指定 size=number 选项,因此 /export/test 中 TMPFS 文件系统的大小仅受可用系统资源的限制。


swap - /export/test  tmpfs   -  yes  -

有关 /etc/vfstab 文件的更多信息,请参见/etc/vfstab 文件的字段说明


创建和挂载回送文件系统 (Loopback File System, LOFS)

LOFS 文件系统是一种虚拟文件系统,可提供现有文件系统的替代路径。将其他文件系统挂载到 LOFS 文件系统上时,原始文件系统不会更改。

有关更多信息,请参见lofs(7FS)


注 –

创建 LOFS 文件系统时请务必谨慎。由于 LOFS 文件系统是虚拟文件系统,因此极有可能会混淆用户和应用程序。


Procedure如何创建和挂载 LOFS 文件系统

  1. 成为超级用户或承担等效角色。

  2. 如有必要,请创建要作为 LOFS 文件系统挂载的目录。


    # mkdir loopback-directory
    
  3. 授予新创建的目录适当的权限和拥有权。

  4. 如有必要,请创建要在其中挂载 LOFS 文件系统的挂载点。


    # mkdir /mount-point
    
  5. 挂载 LOFS 文件系统。


    # mount -F lofs loopback-directory /mount-point
    
    loopback-directory

    指定要在回送挂载点上挂载的文件系统。

    /mount-point

    指定要在其中挂载 LOFS 文件系统的目录。

  6. 验证是否已挂载 LOFS 文件系统。


    # mount -v
    

示例 18–4 创建和挂载 LOFS 文件系统

以下示例说明如何创建、挂载作为回送文件系统的 /new/dist 目录并测试其中的新软件,而不必实际安装该软件。


# mkdir /tmp/newroot

# mount -F lofs /new/dist /tmp/newroot

# chroot /tmp/newroot newcommand


示例 18–5 在引导时挂载 LOFS 文件系统

通过向 /etc/vfstab 文件的结尾添加一项,可以将系统设置为在引导时自动挂载 LOFS 文件系统。以下示例说明了 /etc/vfstab 文件中的某一项,该项为 /tmp/newroot 中的根 (/) 文件系统挂载 LOFS 文件系统。


/ - /tmp/newroot  lofs   -  yes  -

请确保回送项是 /etc/vfstab 文件中的最后几项。否则,如果回送文件系统的 /etc/vfstab 项位于要包括在该项中的文件系统的前面,则无法挂载回送文件系统。


另请参见

有关 /etc/vfstab 文件的更多信息,请参见/etc/vfstab 文件的字段说明