如何在Linux上创建交换分区
当系统需要比物理可用的内存更多的内存时,需要交换内存。
内核递送较少使用的页面,并为当前进程提供立即需要内存的存储器。
因此,存储器页面将复制到硬盘上的预配置空间。
与内存速度相比,磁盘速度要慢得多。
交换页面为存储器(内存)中的当前应用程序提供更多空间,并使应用程序运行更快。
交换空间位于硬盘驱动器上,该驱动器具有比物理内存更慢的访问时间。
交换空间可以是专用交换分区或者交换文件,或者两者的组合。
在本教程中,我们了解如何在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