交换空间是磁盘中的保留区域,可供 Oracle Solaris OS 软件和应用程序软件用于临时存储。当系统没有足够的物理内存来处理当前正在运行的进程时,将使用交换空间作为虚拟内存存储区域。在 Oracle Solaris 10 中,UFS 根环境为交换设备和转储设备都提供了一个磁盘分片。在 Oracle Solaris 11 中,会创建两个独立的卷分别作为交换设备和转储设备。在 ZFS 根文件系统中,为交换所保留的磁盘空间为 ZFS 卷。按如下所示使用 dumpadm 命令可显示此信息:
# dumpadm Dump content: kernel pages Dump device: /dev/zvol/dsk/rpool/dump (dedicated) Savecore directory: /var/crash Savecore enabled: yes Save compressed: on
# swap -l swapfile dev swaplo blocks free /dev/zvol/dsk/rpool/swap 182,2 8 4061176 4061176
显示有关交换和转储卷名称及大小的信息,如下所示:
# zfs list -t volume -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool/dump 4.13G 51.6G 4.00G - rpool/swap 4.13G 51.6G 4.00G -
可以采用方便用户阅读的格式显示交换空间大小,如以下示例所示:
# swap -sh total: 1.4G allocated + 227M reserved = 1.6G used, 432G available # swap -lh swapfile dev swaplo blocks free /dev/zvol/dsk/rpool/swap 285,2 8K 4.0G 4.0G
ZFS 交换和转储卷的管理与 UFS 交换和转储设备的单个分片的管理有所不同,这体现在以下几个方面:
在 ZFS 根环境中,无法为交换和转储设备使用单个卷。
在 ZFS 根环境中,无法将文件用作交换设备。
系统要求转储设备的大小大约是物理内存大小的 1/2 到 3/4。如果转储设备太小,则会出现类似于以下内容的错误消息:
# dumpadm -d /dev/zvol/dsk/rpool/dump dumpadm: dump device /dev/zvol/dsk/rpool/dump is too small to hold a system dump dump size 36255432704 bytes, device size 34359738368 bytes
您可以通过增大卷的 volsize 属性值轻松增加转储设备的大小,如以下示例所示,但是需要花一些时间来重新初始化卷。
# zfs get volsize rpool/dump NAME PROPERTY VALUE SOURCE rpool/dump volsize 1.94G local # zfs set volsize=3g rpool/dump # zfs get volsize rpool/dump NAME PROPERTY VALUE SOURCE rpool/dump volsize 3G local
如果交换设备正在使用中,则更改交换卷的大小比较困难。可考虑创建另一个交换卷并将其添加为交换设备,如下所示:
# zfs create -V 3G rpool/swap2 # swap -a /dev/zvol/dsk/rpool/swap2 # swap -l swapfile dev swaplo blocks free /dev/zvol/dsk/rpool/swap 182,2 8 4061176 4061176 /dev/zvol/dsk/rpool/swap2 182,4 8 6291448 6291448
然后,在 /etc/vfstab 文件中为新交换设备添加一个条目。例如:
/dev/zvol/dsk/rpool/swap2 - - swap - no -
有关交换空间和转储设备配置的更多信息,请参见在 Oracle Solaris 11.2 中管理文件系统 中的关于交换空间。