linux基础:swap交换分区

1. 什么是swap交换分区

在Linux系统中,swap交换分区是一种用于扩展系统内存的技术。当系统内存不足时,操作系统将不常用的内存页面临时存储到swap分区中,以释放内存空间供其他进程使用。

2. swap交换分区的重要性

Swap交换分区在以下情况下变得尤为重要:

2.1 内存不足

当系统中运行的进程使用的内存超过了物理内存的容量时,swap交换分区可以提供附加的虚拟内存来满足程序运行的需求。

2.2 增加系统稳定性

通过使用swap交换分区,可以减小物理内存压力,提高系统的稳定性。当系统内存不足时,操作系统可以将非活动的内存页面暂时转移到swap分区,以确保活动进程的正常运行。

2.3 支持休眠功能

swap交换分区还对系统的休眠功能至关重要。当系统进入休眠状态时,操作系统将当前内存中的数据保存到swap分区中,以便在唤醒系统时能够恢复先前的状态。

3. 创建与配置swap交换分区

要使用swap交换分区,首先需要创建一个专用的分区,然后将其配置为交换分区。

3.1 创建swap分区

可以使用fdisk或parted等工具创建磁盘分区。下面是一个使用fdisk创建swap分区的例子:

$ sudo fdisk /dev/sda

Command (m for help): n

Partition type

p primary (2 primary, 0 extended, 2 free)

e extended Select (default p): p

Partition number (3,4, default 3): 3

First sector (14647296-209715199, default 14647296):

Using default value 14647296闉?

Last sector, +/-sectors or +/-size{k,M,G,T,P} (14647296-209715199, default 209715199):

Command (m for help): t

Partition number (3, default 3): 3

Hex code (type L to list codes): 82

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

在上述示例中,我们创建了一个新的交换分区(/dev/sda3)。

3.2 格式化swap分区

一旦创建了swap分区,就需要使用mkswap命令对其进行格式化:

$ sudo mkswap /dev/sda3

Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)

no label, UUID=87654321-4321-4321-4321-1234567890ab

格式化后,系统将为swap分区分配一个UUID,用于在挂载过程中进行标识。

3.3 启用swap分区

要启用新创建的swap分区,需要将其添加到系统的/etc/fstab文件中:

$ sudo vi /etc/fstab

/dev/sda3 none swap sw 0 0

将上述行添加到fstab文件中,以使系统在启动时自动启用swap分区。

3.4 激活swap分区

可以使用swapon命令手动激活新创建的swap分区:

$ sudo swapon /dev/sda3

激活后,系统将立即开始使用swap分区。可以使用swapon命令检查swap分区的使用情况:

$ sudo swapon --show

NAME TYPE SIZE USED PRIO

/dev/sda3 swap 3.9G 0B -2

4. 调整swap分区的大小

如果系统中的swap分区不足以满足当前的需求,可以根据需要调整其大小。下面是一个调整swap分区大小的示例:

4.1 禁用swap分区

在调整swap分区大小之前,需要先禁用它:

$ sudo swapoff /dev/sda3

4.2 调整分区大小

可以使用resize2fs命令调整swap分区的大小。这里假设我们要将swap分区的大小从4GB调整到8GB:

$ sudo resize2fs /dev/sda3 8G

此命令将swap分区的大小调整为8GB。

4.3 重新启用swap分区

调整完分区大小后,需要重新启用swap分区:

$ sudo mkswap /dev/sda3

$ sudo swapon /dev/sda3

5. 删除swap分区

如果您不再需要swap分区,可以将其从系统中删除:

5.1 禁用swap分区

$ sudo swapoff /dev/sda3

5.2 删除分区

可以使用fdisk或parted等工具删除swap分区。下面是一个使用fdisk删除swap分区的例子:

$ sudo fdisk /dev/sda

Command (m for help): d

Partition number (1,2,3, default 3): 3

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

在上述示例中,我们删除了swap分区(/dev/sda3)。

5.3 更新/etc/fstab文件

$ sudo vi /etc/fstab

(删除相应的swap分区行)

删除fstab文件中对应的swap分区行,以确保系统在下次启动时不会再尝试启用已删除的swap分区。

5.4 清除分区上的UUID

$ sudo wipefs -a /dev/sda3

此命令将清除swap分区上的UUID,以便重新分区时不会使用到旧的UUID。

5.5 完全删除分区

如果打算彻底删除swap分区,可以使用dd命令覆盖分区的内容:

$ sudo dd if=/dev/zero of=/dev/sda3 bs=1M status=progress

此命令将使用0填充swap分区,以确保其中的数据无法恢复。

6. 总结

swap交换分区在Linux系统中起到了扩展内存的作用,为系统提供了额外的虚拟内存空间。本文详细介绍了swap分区的创建、配置、调整大小和删除。通过对swap分区的管理,可以优化系统的内存使用,提高系统的稳定性和性能。

操作系统标签