「mkswap(8)」-

  LINUX MANUAL PAGES

设置Linux交换区域

命令语法格式

mkswap [options] device [size]

命令描述

命令mkswap在设备或文件中设置Linux交换区域。

参数device通常是磁盘分区(类似于/dev/sdb7),但也可以是文件。Linux内核不会查看分区ID(分区类型),但许多安装脚本会假设十六进制类型“82”(LINUX_SWAP)的分区是交换分区。 (警告:Solaris也使用此类型。请注意不要杀掉Solaris分区。)

参数size是多余的,但保留了向后兼容性。(它指定1024字节块中所需的交换区大小。如果省略,mkswap将使用整个分区或文件。指定它是不明智的 – 错字可能会破坏你的磁盘。)

创建交换区域后,需要使用swapon(8)命令开始使用它。 交换区域通常列在/etc/fstab中,以便在引导时通过某些引导脚本中的swapon -a命令使用它们。

命令支持的选项及含义

-c, –check
在创建交换区域之前,检查设备(如果是块设备)是否存在坏块。 如果找到任何坏块,则打印计数。

-f, –force
即使命令是愚蠢的,也要继续。 这允许创建大于它所驻留的文件或分区的交换区域。

此外,如果没有此选项,mkswap将拒绝擦除使用分区表的设备上的第一个块。

-L, –label label
为设备指定标签(LABEL),以允许在执行swapon(8)时使用标签(LABEL)。

不必要使用的选项

-p, –pagesize size
指定要使用的页面大小(以字节为单位)。 这个选项通常是不必要的,因为mkswap从内核中读取大小。

-U, –uuid UUID
指定要使用的UUID。 默认UUID是自动生成的。

-v, –swapversion 1
指定交换空间版本。 (这个选项目前没有意义,因为旧的-v 0选项已经过时,现在只支持-v 1。内核自2.5.22(2002年6月)起不支持-v 0交换空间格式。新版本-v 1是自内核2.1.117(1998年8月)起支持。

其他选项

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

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

注意事项

交换区域的最大有用大小取决于体系结构和内核版本。

交换区域标头可以寻址的最大页数为4294967295(UINT_MAX)。交换设备上的剩余空间将被忽略。

目前,Linux允许32个交换区域。可以在/proc/swaps文件中看到正在使用的交换区域。

命令mkswap拒绝小于10页的交换区域。

如果您不知道机器使用的页面大小,您可以使用“cat /proc/cpuinfo”查找它(或者您可能没有此文件 – 此文件的内容取决于体系结构和内核版本)。

要设置交换文件,必须先创建该文件,然后再使用mkswap进行初始化,例如,使用像这样的命令:

	# fallocate --length 8GiB swapfile

请注意,交换文件不得包含任何“洞”(hole)。使用cp(1)创建的文件是不可接受的。也不是在支持预分配文件(如XFS或ext4)的文件系统上使用fallocate(1),或者在btrfs等COW(写时复制)文件系统上使用fallocate(1)。在这些情况下,建议使用dd(1)和/dev/zero。在将交换文件添加到COW(写时复制)文件系统之前,请阅读swapon(8)中的注释。

交换分区标头不会触及第一个块。 引导加载程序或磁盘标签肯能使用这里,但不建议设置。 建议的设置是为Linux交换区使用单独分区。

像许多其他mkfs-like程序一样,mkswap会擦除第一个分区块,使任何以前的文件系统都不可见。但是,mkswap拒绝擦除具有磁盘标签(SUN,BSD,…)的设备上的第一个块。

相关环境变量

LIBBLKID_DEBUG=all
启用libblkid的调试输出。

相关手册

fdisk(8), swapon(8)

参考文献

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

更新日志

  • 07/11/2018 创建文章