本章介绍如何创建 UFS 文件系统、临时 (TMPFS) 文件系统和回送 (LOFS) 文件系统。对于 UFS 文件系统,本章介绍如何使用 newfs 命令创建文件系统。由于 TMPFS 和 LOFS 是虚拟的文件系统,因此您实际上是通过挂载这两种文件系统来对其进行“访问”的。
以下是本章中的逐步说明列表。
有关如何在可移除介质上创建 UFS 和 DOS 文件系统的说明,请参见第 1 章,管理可移除介质(概述)。
必须格式化磁盘并将其分片之后,才能在其中创建 UFS 文件系统。磁盘片是磁盘的物理子集,由单一范围的连续块组成。片可以用作提供交换空间等的原始设备,或者用于保存基于磁盘的文件系统。有关格式化磁盘和将磁盘分片的完整信息,请参见第 11 章,管理磁盘(概述)。
磁盘和存储管理产品(如 SolarisTM 卷管理器)用于创建更复杂的卷。卷的范围不局限于单个片或单个磁盘。有关使用卷的更多信息,请参见《Solaris Volume Manager 管理指南》。
Solaris 设备名称使用术语“片”(设备名称中使用字母 s)表示片编号。片也称为分区。
由于 Solaris OS 会在安装过程中自动创建 UFS 文件系统,因此只是偶尔需要创建这些文件系统。如果希望执行以下操作,则需要创建(或重新创建)UFS 文件系统:
添加或更换磁盘
更改磁盘的现有分区结构
完全恢复文件系统
使用 newfs 命令是创建 UFS 文件系统的标准方法。newfs 命令是 mkfs 命令的便利前端,前者实际上用于创建新文件系统。newfs 命令可从将包含新文件系统的磁盘的标号中读取参数缺省值,如每个柱面的磁道数和每个磁道的扇区数。所选的选项会传递给 mkfs 命令以生成文件系统。
有关 newfs 命令所用的缺省参数的信息,请参见 newfs(1M)。
请确保已满足以下先决条件:
磁盘必须已格式化并分片。
如果要重新创建现有的 UFS 文件系统,请取消挂载该文件系统。
需要知道将包含文件系统的片的设备名称。
有关查找磁盘和磁盘片编号的信息,请参见第 12 章,管理磁盘(任务)。
有关格式化磁盘和将磁盘分片的信息,请参见第 11 章,管理磁盘(概述)。
您必须是超级用户或承担等效角色。
创建 UFS 文件系统。
# newfs [-N] [-b size] [-i bytes] /dev/rdsk/device-name |
显示 newfs 命令会传递给 mkfs 命令的参数,而不实际创建文件系统。此选项是用于测试 newfs 命令的一种好方法。
指定文件系统的块大小,每块为 4096 或 8192 字节。缺省值为 8192。
指定每个 inode 的字节数。缺省值根据磁盘大小而异。有关更多信息,请参见 newfs(1M)。
指定在其中创建新文件系统的磁盘设备的名称。
系统会请求进行确认。
执行此步骤之前,请确保为片指定了正确的设备名称。如果指定错误的片,则在创建新文件系统时将删除其内容。此错误可能会导致系统出现紧急情况。
要验证是否创建了 UFS 文件系统,请检查新文件系统。
# fsck /dev/rdsk/device-name |
其中 device-name 参数指定包含新文件系统的磁盘设备的名称。
fsck 命令可检查新文件系统的一致性,报告出现的任何问题,并在修复问题之前进行提示。有关 fsck 命令的更多信息,请参见第 22 章,检查 UFS 文件系统一致性(任务)或 fsck(1M)。
以下示例说明如何在 /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 文件系统并使其可用,请转到第 19 章,挂载和取消挂载文件系统(任务)。
对多 TB UFS 文件系统的支持假定作为 Solaris 卷管理器、VxVM 卷或大于 1 TB 的物理磁盘提供的多 TB LUN 可用。
创建多 TB UFS 文件系统之前,请首先验证是否执行了以下任一操作:
使用 format 实用程序或 Solaris 安装实用程序创建了多 TB 磁盘分区
使用 Solaris 卷管理器设置了多 TB 卷
有关多 TB UFS 文件系统的更多信息,请参见64 位: 对多 TB UFS 文件系统的支持。
成为超级用户。
在逻辑卷上创建多 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, # |
验证新创建的文件系统的完整性。
例如:
# 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) # |
挂载新创建的文件系统并对其进行验证。
例如:
# 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 |
创建多 TB UFS 文件系统后,可以使用 growfs 命令扩展该文件系统。例如,使用在前面的过程中为卷创建的文件系统,可以将其他磁盘添加到此卷。然后,扩展文件系统。
成为超级用户。
将其他磁盘添加到卷。
例如:
# 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 |
扩展文件系统。
例如:
# 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, # |
挂载已扩展的文件系统并对其进行验证。
例如:
# 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 |
使用以下过程可将 UFS 文件系统的大小扩展为大于 1 TB。此过程假定最初使用 newfs -T 选项创建 UFS 文件系统。
成为超级用户。
确定当前磁盘或卷的大小。
例如,以下卷的大小为 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 |
将卷增至大于 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 |
将磁盘或卷的 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, |
挂载已扩展的文件系统并对其进行验证。
例如:
# 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 文件系统问题进行疑难解答。
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 TB 的文件系统的数据。
使用 newfs 命令重新创建文件系统,以创建多 TB 文件系统。
将备份数据恢复到新创建的文件系统中。
临时文件系统 (temporary file system, TMPFS) 使用本地内存进行文件系统的读取和写入,这通常比在 UFS 文件系统中读取和写入快得多。TMPFS 文件系统通过节省利用本地磁盘或网络读取和写入临时文件的成本,可以提高系统性能。重新引导或取消挂载后,TMPFS 文件系统中的文件即不存在。
如果创建多个 TMPFS 文件系统,请注意这些文件系统都使用相同的系统资源。除非使用 mount 命令的 -o size 选项限制 TMPFS 的大小,否则在 TMPFS 文件系统下创建的文件将用尽可用于其他任何 TMPFS 文件系统的空间。
有关更多信息,请参见 tmpfs(7FS)。
成为超级用户或承担等效角色。
如有必要,请创建要作为 TMPFS 文件系统挂载的目录。
# mkdir /mount-point |
其中 mount-point 是挂载 TMPFS 文件系统的目录。
挂载 TMPFS 文件系统。
# mount -F tmpfs [-o size=number] swap mount-point |
指定 TMPFS 文件系统的大小限制(以 MB 为单位)。
指定在其中挂载 TMPFS 文件系统的目录。
要将系统设置为在引导时自动挂载 TMPFS 文件系统,请参见示例 18–3。
验证是否已创建 TMPFS 文件系统。
# mount -v |
以下示例说明如何创建、挂载 TMPFS 文件系统 /export/reports 并将其大小限制为 50 MB。
# mkdir /export/reports # chmod 777 /export/reports # mount -F tmpfs -o size=50m swap /export/reports # mount -v |
通过添加 /etc/vfstab 项,可以将系统设置为在引导时自动挂载 TMPFS 文件系统。以下示例说明了 /etc/vfstab 文件中的某一项,该项在引导时将 /export/test 作为 TMPFS 文件系统挂载。由于未指定 size=number 选项,因此 /export/test 中 TMPFS 文件系统的大小仅受可用系统资源的限制。
swap - /export/test tmpfs - yes - |
有关 /etc/vfstab 文件的更多信息,请参见/etc/vfstab 文件的字段说明。
LOFS 文件系统是一种虚拟文件系统,可提供现有文件系统的替代路径。将其他文件系统挂载到 LOFS 文件系统上时,原始文件系统不会更改。
有关更多信息,请参见lofs(7FS)。
创建 LOFS 文件系统时请务必谨慎。由于 LOFS 文件系统是虚拟文件系统,因此极有可能会混淆用户和应用程序。
成为超级用户或承担等效角色。
如有必要,请创建要作为 LOFS 文件系统挂载的目录。
# mkdir loopback-directory |
授予新创建的目录适当的权限和拥有权。
如有必要,请创建要在其中挂载 LOFS 文件系统的挂载点。
# mkdir /mount-point |
挂载 LOFS 文件系统。
# mount -F lofs loopback-directory /mount-point |
指定要在回送挂载点上挂载的文件系统。
指定要在其中挂载 LOFS 文件系统的目录。
验证是否已挂载 LOFS 文件系统。
# mount -v |
以下示例说明如何创建、挂载作为回送文件系统的 /new/dist 目录并测试其中的新软件,而不必实际安装该软件。
# mkdir /tmp/newroot # mount -F lofs /new/dist /tmp/newroot # chroot /tmp/newroot newcommand |
通过向 /etc/vfstab 文件的结尾添加一项,可以将系统设置为在引导时自动挂载 LOFS 文件系统。以下示例说明了 /etc/vfstab 文件中的某一项,该项为 /tmp/newroot 中的根 (/) 文件系统挂载 LOFS 文件系统。
/ - /tmp/newroot lofs - yes - |
请确保回送项是 /etc/vfstab 文件中的最后几项。否则,如果回送文件系统的 /etc/vfstab 项位于要包括在该项中的文件系统的前面,则无法挂载回送文件系统。
有关 /etc/vfstab 文件的更多信息,请参见/etc/vfstab 文件的字段说明。