mkswap

设置Linux系统交换区


语法格式

mkswap [-c] [-f] [-p pagesize] [-L label] [-U uuid] device [size]

命令简介

mkswap用于设置Linux系统使用的交换区,其中,device通常是一个磁盘分区,如/dev/sda3,用作交换区,也可以是一个文件。Linux内核并不查询分区ID,但许多安装脚本假定只有类型为0x82(LINUX_SWAP)的分区才是交换分区。

size参数用于指定交换分区的容量(单位KB),如果省略,使用整个分区或文件作为交换区。size参数实际上是多余的,只是为了兼容才保留的。

在创建新的交换区之后,需要使用swapon命令启用新建的交换区。交换区的定义通常位于/etc/fstab文件,因此可以在引导过程的引导脚本中使用“swapon -a”命令予以启用。

交换区的容量限制取决于系统的硬件体系结构与Linux内核的版本。通常,在i386系列的计算机中,交换区的容量限制约为2GB。从Linux内核2.3.3开始,通常没有限制。

当前,Linux支持32个交换区(Linux 2.4.10之前仅支持8个交换区)。欲了解系统当前使用的交换区,可以查询/proc/swaps文件。

在创建交换区时,应注意交换区的分布,最好把交换区置于不同的设备,以提供交换访问的能力,提高I/O速度,从而提高系统的性能。

若想利用文件设置交换区,在使用mkswap命令初始化交换区文件之前,必须使用dd等命令首先创建一个文件。例如,可以利用dd命令创建一个2GB的文件,作为交换区文件。

# dd if=/dev/zero of=swapfile bs=1G count=2

注意,交换区文件不能包含任何间隙,因此不能使用cp命令创建交换区文件。

命令选项

-c  在创建交换区之前首先检测块设备是否存在坏块。如果发现坏块,显示坏块计数。

-f  即使提交的命令并不合理,也强制继续执行。这允许创建大于磁盘分区或文件实际容量的交换区。注意,这个选项具有潜在的风险,如危及磁盘设备的0号扇区等。

-p pagesize  指定系统使用的页面大小。页面大小的典型值是4096或8192。通常不需要指定这个选项与参数。

-L label  指定磁盘标签,允许swapon命令按标签使用磁盘或分区。这个选项仅适用于新型交换区。

-v 1  指定交换区空间格式的版本(从Linux 2.1.117开始,v0交换区空间格式已不再支持)。

-U uuid  指定使用的UUID。默认的处理动作是生成UUID。

应用实例

1. 利用现有的磁盘分区,增设一个交换区。

# mkswap /dev/sdb1
Setting up swapspace version 1, size = 19531244 KiB
no label, UUID=47b18fb8-5fac-4490-be0a-6b20f52824bd
#

2. 首先创建一个2GB的文件,然后利用新建的文件增加一个交换区。

# dd if=/dev/zero of=swapfile bs=1G count=2
2+0 records in
2+0 records out
2147483648 bytes (2.1 GB) copied, 103.358 s, 20.8 MB/s
# mkswap swapfile
mkswap: swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=5ec76a11-0e28-4391-acfd-1965a8ccba4e
#

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z