「swapon(8)」-

  LINUX MANUAL PAGES

启用/禁用用于分页和交换的设备和文件

命令语法格式

swapon [options] [specialfile…]

swapoff [-va] [specialfile…]

命令描述

命令swapon用于指定要进行分页和交换的设备。

由参数specialfile给出使用的设备或文件。它可以是-L label-U uuid形式,来用于通过label或uuid来指示设备。

对swapon的调用通常发生在系统启动脚本中,使所有交换设备可用,因此分页和交换活动在多个设备和文件之间交错。

命令swapoff禁用指定的设备和文件的交换。当给出-a标志时,禁用所有已知的交换设备和文件上的交换(如/proc/swaps或/etc/fstab中所示)。

命令支持的选项及含义

启用交换分区

-a, –all
将所有在/etc/fstab中标记为“swap”设备设为可用,除了那些带有“noauto”选项的。 静默跳过已用作交换的设备。

-e, –ifexists
默默地跳过不存在的设备。 /etc/fstab挂载选项nofail也可用于跳过不存在的设备。

-L label
使用具有指定标签label的分区来作为交换分区。(为此,需要访问/proc/partitions。)

-U uuid
通过uuid指定要使用的分区。

-d, –discard[=policy]
如果交换后备设备支持丢弃或修整操作,则启用交换丢弃。 这可能会提高某些固态设备的性能,但通常不会。 该选项允许用户在两个可用的交换丢弃策略之间进行选择:

  • –dispard=once,在swapon时,对整个交换区域执行单次丢弃操作;
  • –discard=pages,在可以重用之前,异步丢弃释放的交换页面。

如果未选择任何策略,则默认行为是启用两种丢弃类型。 /etc/fstab挂载选项discard,discard=once,discard=pages也可用于启用discard标志。

-f, –fixpgsz
如果交换空间的页面大小与当前运行的内核的大小不匹配,则重新初始化(exec mkswap)。调用mkswap(2)初始化整个设备,不检查坏块。

-o, –options opts
通过fstab兼容的逗号分隔字符串指定交换选项。 例如:swapon -o pri=1,discard=pages,nofail /dev/sda2,评估最后的opts字符串,并覆盖所有其他命令行选项。

-p, –priority priority
指定交换设备的优先级。 priority是介于-1和32767之间的值。数字越大表示优先级越高。 如果未定义优先级,则默认为-1。

有关交换优先级的完整描述,请参阅swapon(2)。 将pri=value添加到/etc/fstab的选项字段以与swapon -a一起使用。

显示交换分区的信息

-s, –summary
按设备来显示交换使用情况摘要。 相当于“cat /proc/swaps”。 不赞成此输出格式,支持–show,可以更好地控制输出数据。

–show[=column…]
显示可定义的交换区域表。 请参阅–help输出以获取可用列的列表。

  • NAME:设备文件或者分区路径。
  • TYPE:设备的类型。
  • SIZE:交换分区的大小。
  • USED:使用的字节数。
  • PRIO:交换分区的权重。
  • UUID:交换分区的UUID。
  • LABEL:交换分区的LABEL。

–noheadings
显示–show输出时不要打印标题。

–raw
显示–show输出时不对齐表格列。

–bytes
在–show输出中,以字节为单位显示交换大小,而不是以用户友好的单位显示。

-v, –verbose
显示更多的详细信息。

其他选项

-V, –version
显示版本信息并退出。

-h, –help
显示帮助信息并退出。

注意事项

你不应该在有“洞”(hole)的文件上使用swapon命令。这可以在系统日志中看到

swapon: swapfile has holes.

内核中的交换文件实现期望能够直接写入文件,而无需文件系统的帮助。这对于像XFS或ext4这样的文件系统上的预分配文件(例如fallocate(1))以及像btrfs这样的写时复制文件系统是一个问题。

建议使用dd(1)和/dev/zero来避免XFS和ext4上的“洞”。

使用带有某些版本的btrfs的交换文件时,swapon可能无法正常工作。这是因为btrfs是一个写时复制文件系统:文件位置可能不是静态的,可能导致损坏。 Btrfs通过拒绝映射文件来主动禁止在其文件系统上使用交换文件。

一种可能的解决方法是将交换文件映射到环回设备。这将允许文件系统正确地确定映射,但可能会对性能产生影响。

在NFS之上的交换可能无法正常工作。

swapon自动检测并使用旧的软件暂停数据重写交换空间签名(例如S1SUSPEND,S2SUSPEND,…)。问题是,如果我们不这样做,那么下次尝试取消停顿时,我们就会出现数据损坏。

相关文件

/dev/sd??
标准分页设备

/etc/fstab
文本的文件系统描述表

相关环境变量

LIBMOUNT_DEBUG=all
启动libmount的调试选项。

LIBBLKID_DEBUG=all
启用libblkid debug output.

相关手册

swapoff(2), swapon(2), fstab(5), init(8), mkswap(8), mount(8), rc(8)

参考文献

  • man 8 swapon, Version swapon from util-linux 2.32

更新日志

  • 07/11/2018 创建文章