如何在Linux上创建交换分区

时间:2020-03-05 15:27:15  来源:igfitidea点击:

当系统需要比物理可用的内存更多的内存时,需要交换内存。
内核递送较少使用的页面,并为当前进程提供立即需要内存的存储器。
因此,存储器页面将复制到硬盘上的预配置空间。
与内存速度相比,磁盘速度要慢得多。
交换页面为存储器(内存)中的当前应用程序提供更多空间,并使应用程序运行更快。

交换空间位于硬盘驱动器上,该驱动器具有比物理内存更慢的访问时间。
交换空间可以是专用交换分区或者交换文件,或者两者的组合。

在本教程中,我们了解如何在Linux系统上创建交换分区。

创建交换分区

允许首先检查磁盘空间,然后创建分区,然后启用交换。

1)检查磁盘空间

检查磁盘上是否有足够的空间来使用FDISK或者分组命令创建交换的新分区。

# fdisk -l
Disk /dev/sda: 10.7 GB, 10720641024 bytes, 20938752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk /dev/sdb: 536 MB, 536870912 bytes, 1048576 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk label type: dos
Disk identifier: 0x66fe37bd

我们将使用/dev/sdb磁盘进行交换。
用免费的-m命令检查交换;我们有:

# free -m
 total used free shared buff/cache available
Mem: 988 88 645 50 254 813
Swap: 0 0 0

我们可以看到我们没有交换分区。
我们还可以使用以下命令进行验证

# swapon -s

你看到我们没有回报。
这意味着没有交换

2)为交换创建分区

正如我们所看到的,我们在磁盘上有足够的未分配空间,我们可以使用像分割或者fdisk等工具创建新分区。

其中我将使用fdisk命令来创建分区:

# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the
Command (m for help):

我们可以为键入m命令,以列出不同的可能性。
我们将为Swap创建一个新分区,并使用n命令

Command (m for help): n
Partition type:
 p primary (0 primary, 0 extended, 4 free)
 e extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-1048575, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1048575, default 1048575): 
Using default value 1048575
Partition 1 of type Linux and of size 511 MiB is set

要将我们的分区定义为交换类型,我们将使用T命令

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap/Solaris'

Linux上交换分区的十六进制代码是82
现在我们将使用w命令保存更改

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

将新分区作为交换交换。
将切换ID更改为82(用于交换)。
让我们用fdisk -l命令检查:

# fdisk -l
Disk /dev/sda: 10.7 GB, 10720641024 bytes, 20938752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk /dev/sdb: 536 MB, 536870912 bytes, 1048576 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk label type: dos
Disk identifier: 0x66fe37bd
 Device Boot Start End Blocks Id System
/dev/sdb1 2048 1048575 523264 82 Linux swap/Solaris

我们可以在上一行中看到提到'Linux交换'。

注意:在最新版本的Ubuntu和CentOS上,它使用创建交换文件而不是交换分区。
让我们看看如何创建交换文件。

只需使用DD命令或者FALLOCATE来创建文件(例如1 GB或者2GB)。

# dd if=/dev/zero of=/mnt/swapfile bs=1024 count=2097152
or
# fallocate -l 2G /mnt/swapfile
# chmod 600 /mnt/swapfile

然后按照以下步骤操作。

3)格式转换模式

在定义我们的分区后,我们需要将其格式化为"交换模式",因此在新创建的交换分区上运行mkswap命令:

# mkswap -f /dev/sdb
mkswap: /dev/sdb: warning: wiping old swap signature.
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=c4696894-0b09-4fbe-87bb-a34d6d307a4e

或者

# mkswap /mnt/swapfile

4)启用交换空间

既然我们的交换分区是格式化的,我们需要启用交换空间,因此运行swapon命令以启用它:

# swapon /dev/sdb

5)验证交换空间

使用以下命令验证新添加的交换空间:

# free -m
 total used free shared buff/cache available
Mem: 988 88 646 50 254 814
Swap: 511 0 511

6)添加到fstab文件

然后将新创建的Swap分区添加到"/etc/fstab"文件"。
它应该如下所示:

/dev/sdb swap swap defaults 0 0

如何为LVM创建交换分区

我们可以在服务器上使用LVM安装,并且需要创建交换分区。
由于"LVM模式",程序不完全相同

我们必须首先创建LVM2逻辑卷大小8 GB:

# lvcreate rootvg -n swapvol -L 8G

创建逻辑卷后,我们需要格式化新的交换空间:

# mkswap /dev/rootvg/swapvol

为了确保我们的交换分区将自动安装,即使我们重新启动服务器,我们需要将以下条目添加到/etc/fstab文件:

/dev/rootvg/swapvol swap swap defaults 0 0

现在我们需要启用扩展的逻辑卷:

# swapon -v /dev/rootvg/swapvol

要测试逻辑卷是否已成功创建,请使用swapon -ss或者free -m命令检查交换空间。

扩展LVM的交换分区

我们需要扩展交换分区,因为实际的交换大小不满足工作。
使用LVM,可以直接增加现有分区的大小如下。

我们必须首先标识在我们的情况下为"/dev/rootvg/swapvol"的交换卷组。
我们需要先禁用当前交换

# swapoff -v /dev/rootvg/swapvol

现在,我们必须调整卷组的大小以指示增加的空间

# lvm lvresize /dev/rootvg/swapvol -L +8G

我们希望从8 GB增加到16 GB

现在我们需要格式化空间

# mkswap /dev/rootvg/swapvol

现在我们需要激活标记为SWAP的设备的交换,如"/etc/fstab""

# swapon -va

删除交换分区

出于某种原因,我们需要在LVM模式下删除交换分区。

要删除交换分区,首先需要禁用相关逻辑卷的交换,无论是LVM还是其他内容

# swapoff -v /dev/rootvg/swapvol

第二个原则是删除卷,以便完全删除交换分区。

# lvremove /dev/rootvg/swapvol

现在我们需要从/etc/fstab文件中删除以下条目

/dev/rootvg/swapvol swap swap defaults 0 0

如何调整swappiness属性

SWAPPINITE值定义系统将数据递送内存的频率转换为交换空间。
当前的swappiness值存储在"/proc/sys/vm/swappiness'文件中。
这是0到100之间的值。
低值表示接近零将使内核尝试避免交换。
服务器可以有一个靠近0和桌面60的值应该是可以的。

# cat /proc/sys/vm/swappiness
60