分类:
2008-04-09 18:31:08
如何了解是否需要更多交换空间?
第21 章• 配置其他交换空间(任务) 415
messages.1:Sep 21 20:52:11 mars genunix: [ID 470503 kern.warning]
WARNING: Sorry, no swap space to grow stack for pid 100295 (myprog)
与TMPFS 相关的错误消息
如果写入文件时无法分配页面,则会显示以下消息。如果TMPFS 尝试写入的量超出其允许
的量,或当前执行的程序使用了大量内存,则可能会出现此问题。
directory: File system full, swap space limit exceeded
以下消息表明,TMPFS 尝试创建新的文件或目录时物理内存不足:
directory: File system full, memory allocation failed
有关从与TMPFS 相关的错误消息恢复的信息,请参见tmpfs(7FS)。
如何分配交换空间
最初,交换空间是在Solaris 安装过程中分配的。如果使用安装程序的磁盘片自动布局,且
不手动更改交换片的大小,则Solaris 安装程序会分配512MB的缺省交换区域。
从Solaris 9 发行版开始,安装程序从第一个可用磁盘柱面(通常为柱面0)开始分配交换空
间。在缺省磁盘布局中,这种放置方法为根(/) 文件系统提供了最大的空间,并允许在升级
时扩展根(/) 文件系统。
有关分配交换空间的一般规则,请参见第417 页中的“规划交换空间”。
通过创建交换文件,可以将其他交换空间分配给系统。有关创建交换文件的信息,请参见
第418 页中的“添加更多交换空间”。
交换区域和/etc/vfstab 文件
安装系统后,交换片和交换文件将在/etc/vfstab 文件中列出。在引导系统时,它们将由
/sbin/swapadd 脚本激活。
/etc/vfstab 文件中交换设备的项包含以下内容:
交换片或交换文件的全路径名
交换片或交换文件的文件系统类型
激活交换文件之前,必须挂载包含交换文件的文件系统。因此,在/etc/vfstab 文件中,应
确保挂载文件系统的项位于激活交换文件的项之前。
如何分配交换空间
416 系统管理指南:设备和文件系统• 2006 年9 月
规划交换空间
确定交换空间大小的最重要因素是系统的软件应用程序的要求。例如,大型应用程序(例
如计算机辅助设计模拟器、数据库管理产品、事务监视器和地质分析系统)占用的交换空
间可高达200–1000MB。
请咨询应用程序供应商,以了解其应用程序的交换空间要求。
如果无法通过咨询应用程序供应商确定交换空间要求,请根据系统类型使用以下一般规则
来分配交换空间。
系统类型交换空间的大小专用转储设备的大小
物理内存约为4GB的工作站1GB 1GB
物理内存约为8GB的中型服务
器
2GB 2GB
物理内存约为16 到128 GB 的高
端服务器
4GB 4GB
除这些一般规则外,还应考虑为以下项分配交换空间或磁盘空间:
专用转储设备。
确定大型应用程序(例如编译器)是否将使用/tmp 目录。然后,分配TMPFS 要使用的
其他交换空间。有关TMPFS 的信息,请参见第414 页中的“交换空间与TMPFS 文件系
统”。
监视交换资源
/usr/sbin/swap 命令用于管理交换区域。-l 和-s 这两个选项显示有关交换资源的信息。
使用swap -l 命令可识别系统的交换区域。在swapfile 列下会列出已激活的交换设备或文
件。
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 136,1 16 1638608 1600528
使用swap -s 命令可监视交换资源。
# swap -s
total: 57416k bytes allocated + 10480k reserved = 67896k used,
监视交换资源
第21 章• 配置其他交换空间(任务) 417
833128k available
used 值与available 值的和等于系统上的总交换空间,其中包括部分物理内存和交换设备
(或文件)。
可以使用可用交换空间量和已用交换空间量(在swap -s 输出中显示)监视在一段时间内交
换空间使用情况的变化。如果系统性能良好,请使用swap -s 确定可用交换空间量。如果系
统性能下降,请检查可用交换空间量以确定其是否已下降。然后,可以确定对系统所做的
哪些更改导致交换空间使用量增加。
使用此命令时,请记住可用于交换的物理内存量会因内核和用户进程的锁定和物理内存的
释放而动态变化。
注– swap -l 命令以512 字节块为单位显示交换空间。swap -s 命令以1024 字节块为单位显示
交换空间。如果将swap -l 输出中的块累加,然后将其转换为KB,则结果小于used +
available(在swap -s 输出中显示)。原因是swap -l 在计算交换空间时不包括物理内存。
下表概述了swap -s 命令的输出。
表21–1 swap -s 命令的输出
关键字说明
bytes allocated 当前已分配作为备份存储(磁盘备份交换空间)的总交换空间量(以
1024 字节块为单位)。
reserved 当前未分配、但内存已请求供将来使用的总交换空间量(以1024 字
节块为单位)。
used 已分配或保留的总交换空间量(以1024 字节块为单位)。
available 当前可用于将来进行预留和分配的总交换空间量(以1024 字节块为
单位)。
添加更多交换空间
随着系统配置的更改和新软件包的安装,可能需要添加更多交换空间。添加更多交换空间
的最简单方法是,使用mkfile 和swap 命令将部分现有UFS 或NFS 文件系统指定为补充交换
区域。使用这些命令(在以下各节中介绍)可以添加更多交换空间而不必对磁盘重新分
区。
添加更多交换空间的其他方法是,对现有磁盘重新分区或添加其他磁盘。有关如何对磁盘
重新分区的信息,请参见第11 章。
添加更多交换空间
418 系统管理指南:设备和文件系统• 2006 年9 月
创建交换文件
创建交换文件涉及以下常规步骤:
使用mkfile 命令创建交换文件。
使用swap 命令激活交换文件。
在/etc/vfstab 文件中添加交换文件的项,以便在引导系统时自动激活交换文件。
mkfile 命令
mkfile 命令创建一个适合用作已挂载NFS 交换区域或本地交换区域的文件。设置粘滞位,
并用零填充文件。可以字节为单位(缺省设置)指定交换文件的大小,或者分别使用k、b
或m 后缀以KB、块或MB为单位指定交换文件的大小。
下表说明mkfile 命令选项。
表21–2 mkfile 命令的选项
选项说明
-n 创建空文件。标注大小。但是,在将数据写入磁盘块之前,不会分配磁盘
块。
-v 报告已创建文件的名称和大小。
注– 应仅在创建NFS 交换文件时使用-n 选项。
如何创建交换文件并使其可用
成为超级用户。
无需超级用户权限,即可创建交换文件。但是,为避免意外覆写,超级用户应该是交换文
件的属主。
如果需要,请为交换文件创建一个目录。
创建交换文件。
# mkfile nnn[k|b|m] filename
创建了具有指定filename 的交换文件,且其大小为nnn(以KB、字节或MB为单位)。
激活交换文件。
# /usr/sbin/swap -a /path/filename
1
2
3
4
添加更多交换空间
第21 章• 配置其他交换空间(任务) 419
必须使用绝对路径名指定交换文件。添加了交换文件,该交换文件在取消挂载文件系统、
重新引导系统或删除交换文件之前可用。请记住,将某个进程或程序交换至交换文件时,
不能取消挂载文件系统。
将交换文件的项添加到指定该文件全路径名的/etc/vfstab 文件,并将swap 指定为文件系
统类型。
/path/filename - - swap - no -
检验是否添加了交换文件。
$ /usr/sbin/swap -l
创建交换文件并使其可用
以下示例说明如何创建名为/files/swapfile 的100MB交换文件。
# mkdir /files
# mkfile 100m /files/swapfile
# swap -a /files/swapfile
# vi /etc/vfstab
(An entry is added for the swap file):
/files/swapfile - - swap - no -
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 136,1 16 1638608 1600528
/files/swapfile - 16 204784 204784
删除不用的交换文件
如果具有不需要的交换空间,则可以删除它。
5
6
示例21–1
删除不用的交换文件
420 系统管理指南:设备和文件系统• 2006 年9 月
如何删除不需要的交换空间
成为超级用户。
删除该交换空间。
# /usr/sbin/swap -d /path/filename
删除了交换文件名称,以便它不再可用于交换。文件本身并没有删除。
编辑/etc/vfstab 文件,并删除交换文件的项。
恢复磁盘空间以便可以将它用于其他目的。
# rm /path/filename
如果交换空间是一个文件,则删除它。或者,如果交换空间位于单独的片上,并确信不再
需要它,则建立新的文件系统并挂载该文件系统。
有关挂载文件系统的信息,请参见第19 章。
检验交换文件是否不再可用。
# swap -l
删除不需要的交换空间
以下示例说明如何删除/files/swapfile 交换文件。
# swap -d /files/swapfile
# (Remove the swap entry from the /etc/vfstab file)
# rm /files/swapfile
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 136,1 16 1638608 1600528
1
2
3
4
5
示例21–2
删除不用的交换文件
第21 章• 配置其他交换空间(任务) 421
422
检查UFS 文件系统一致性(任务)
本章提供有关检查UFS 文件系统一致性的概述信息和逐步说明。
以下是本章中的逐步说明列表。
第432 页中的“如何从备用引导设备检查根(/)、/usr 或/var 文件系统”
第434 页中的“如何检查其他文件系统(不是根(/)、/usr 或/var)”
第436 页中的“如何整理UFS 文件系统”
第442 页中的“如何恢复坏的超级块(Solaris 8、9 和10 发行版)”
第438 页中的“如何恢复坏的超级块(仅限Solaris 10 6/06 发行版)”
以下是本章中概述信息的列表。
第424 页中的“文件系统一致性”
第424 页中的“如何记录文件系统的状态”
第425 页中的“fsck 命令检查和尝试修复的内容”
第431 页中的“以交互方式检查和修复UFS 文件系统”
第437 页中的“恢复坏的超级块”
第444 页中的“fsck 命令的语法和选项”
有关Solaris 10 6/06 发行版中fsck 的新信息,请参见第324 页中的“UFS 文件系统实用程序
(fsck、mkfs 和newfs)的增强功能”。
有关fsck 错误消息的信息,请参见《System Administration Guide: Advanced
Administration》中的第28 章,“Resolving UFS File System Inconsistencies (Tasks)”。
有关本章中引用的UFS 文件系统结构的背景信息,请参见第23 章。
22 第2 2 章
423
文件系统一致性
UFS 文件系统依赖于一组内部表来跟踪已用的inode 和可用的块。当这些内部表与磁盘上的
数据未正确同步时,会导致不一致性问题,从而需要修复文件系统。
由于以下情况导致操作系统突然终止,文件系统可能会不一致:
电源故障
意外关闭系统电源
没有按正确的关闭过程关闭系统
内核中出现软件错误
文件系统不一致性问题尽管严重,但并不常见。引导系统时,会自动执行对文件系统一致
性的检查(使用fsck 命令)。通常,此文件系统检查会修复它遇到的问题。
fsck 命令将已分配但未引用的文件和目录放置在lost+found 目录中。将inode 编号指定为
未引用的文件和目录的名称。如果lost+found 目录不存在,则fsck 命令将创建它。如果
lost+found 目录中没有足够的空间,则fsck 命令会增加其大小。
有关inode 的说明,请参见第446 页中的“Inode”。
如何记录文件系统的状态
fsck 命令使用存储在超级块中的状态标志来记录文件系统的状态。fsck 命令使用此标志来
确定是否需要检查文件系统的一致性。/sbin/rcS 脚本在引导期间会使用此标志,此外fsck
-m 命令也会使用此标志。如果忽略fsck -m 命令的结果,则可以检查所有文件系统,无论状
态标志是何设置。
有关超级块的说明,请参见第446 页中的“超级块”。
下表给出了可能的状态标志值。
表22–1文件系统状态标志的值
状态标志值说明
FSACTIVE 指示已挂载的文件系统在内存中具有已修改的数据。如果已挂载文件系统具有
此状态标志,则表明当系统断电时,用户数据或元数据将会丢失。
FSBAD 指示文件系统包含不一致的文件系统数据。
FSCLEAN 指示未损坏的、干净取消挂载的文件系统。
FSLOG 指示文件系统已启用日志记录功能。设置了此标志的文件系统要么已挂载,要
么已取消挂载。如果文件系统已启用日志记录功能,则只能具有标志FSLOG 或
FSBAD。禁用日志记录功能的文件系统可以具有FSACTIVE、FSSTABLE 或FSCLEAN
标志。
文件系统一致性
424 系统管理指南:设备和文件系统• 2006 年9 月
表22–1 文件系统状态标志的值(续)
状态标志值说明
FSSTABLE 指示空闲的已挂载文件系统。如果已挂载文件系统具有此状态标志,则表明当
系统断电时,用户数据或元数据都不会丢失。
fsck 命令检查和尝试修复的内容
本节介绍文件系统正常运行时发生的情况、可能会出现的问题、fsck 命令(检查和修复实
用程序)可查找的问题,以及此命令如何更正它找到的不一致性问题。
为什么可能出现UFS 文件系统的不一致性问题
在每个工作日中,可能会创建、修改和删除数百个文件。每次修改文件时,操作系统都会
执行一系列文件系统更新。如果这些更新被可靠地写入磁盘,便会产生一致的文件系统。
用户程序执行更改文件系统的操作(例如写入操作)时,会先将要写入的数据复制到内核
中的核心缓冲区。通常,以异步方式处理磁盘更新。尽管在写入系统调用返回很长时间之
后才会写入数据,但是允许用户进程继续执行。这样,在任何给定时间,由于文件系统驻
留在磁盘上,因此它将滞后于核心信息所表示的文件系统状态。
当缓冲区需要用于其他用途时,或者内核自动运行fsflush 守护进程(时间间隔为30 秒)
时,将更新磁盘信息以反映核心信息。如果在未写出核心信息的情况下停止系统,则磁盘
上的文件系统可能会处于不一致状态。
文件系统可能由于以下几种原因出现不一致性问题。最常见的原因是操作错误和硬件故
障。
异常关机可能会导致此类问题,例如未正确关闭系统,或者未采用正确的方式使已挂载的
文件系统脱机。为防止异常关机,在关闭系统、从驱动器中物理移除磁盘组或使磁盘脱机
之前,必须将文件系统的当前状态写入磁盘(即“进行同步”)。
不一致性问题也可能是由硬件缺陷或者磁盘或控制器固件的问题导致的。在磁盘驱动器
上,块随时都可能会损坏。此外,磁盘控制器可能无法正常工作。
接受一致性检查的UFS 组件
本节介绍fsck 命令将针对以下UFS 文件系统组件执行的各种一致性检查:超级块、柱面组
块、inode、间接块和数据块。
有关UFS 文件系统结构的信息,请参见第445 页中的“UFS 文件系统的柱面组结构”。
超级块检查
超级块存储摘要信息,它是UFS 文件系统中最常损坏的组件。对文件系统inode 或数据块进
行的每个更改也会修改超级块。如果CPU 暂停工作且最后一个命令不是sync 命令,则几乎
可以肯定超级块会被损坏。
以上文章转自于 : http://developers.sun.com.cn/