Linux 扩展(增加) swap 交换分区
介绍
swap 就是 Linux 下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是 swap 交换分区,需要提前创建)虚拟成内存来使用。
具体步骤
查看当前的 swap 分区大小
[root@xxx /]# free -h
total used free shared buff/cache available
Mem: 991M 276M 620M 5.7M 93M 586M
Swap: 0B 0B 0B
swap 分区是可以当做内存使用的,所以用查看内存的指令就可以。在未配置的情况下,swap 一般为 0。
创建交换分区文件
[root@xxx /]# dd if=/dev/zero of=/home/swap bs=1024 count=2048000
2048000+0 records in
2048000+0 records out
4145152000 bytes (4.1 GB) copied, 36.7877 s, 113 MB/s
以上指令增加 2G 大小的交换分区,其中的 if 表示读取数据的来源是哪,而/dev/zero是一个特殊的设备它可以产生无限的数据;of 表示将数据写入到哪里去,可以是其他设备,也可以是指定路径下的一个文件名;bs 表示缓存大小,每次读取和写入数据的大小为 1K;count 为读取和写入的次数为 2048000 次。所以创建文件的大小等于 bs count,就是 1K 2048000 ≈ 2G。所以 bs=1M count=2048
同样可以创建 2G 大小的交换分区文件。
可以使用 df -h
指令查看创建 swap 交换文件前后的磁盘使用情况。
整个创建交换分区文件的过程可能会持续几秒,也可能几十秒,这要看你服务器本身的读写能力了。
设置交换文件
[root@xxx /]# mkswap /home/swap
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=ccbda6bf-4c42-4222-a209-f17b9254e90f
也可以给分区文件加一个名称
[root@xxx /]# mkswap /home/swap -L swaper
mkswap: /home/swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2047996 KiB
LABEL=swaper, UUID=e944c62f-16c3-4e9c-938b-e67c91e989dc
启用交换分区
[root@xxx /]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
我的服务器提示了一句权限安全问题,其他服务器或者文件位置也可能没有提示。
这步之后,swap 分区就创建好了,可以用 free -h
查看分区大小
[root@xxx /]# free -h
total used free shared buff/cache available
Mem: 991M 278M 76M 5.7M 636M 541M
Swap: 2.0G 0B 2.0G
关闭交换分区
[root@xxx /]# swapoff /home/swap
关闭之后,swap 分区文件还在,但是 由 /home/swap
创建的 swap 分区在可使用的内存列表中不存在了。
删除交换分区,恢复磁盘大小
在删除交换分区之前要先关闭交换分区,之后执行删除操作。
因为交换分区本身以文件形式存在,所以可以直接用 rm /home/swap
删除。
删除之后再通过 df -h
可以看到磁盘空间又恢复到原来的大小。
开机自启动
开机引导时自动启用,则需要编辑 # vim /etc/fstab ,添加如下代码,保存并退出:
/home/swap swap swap defaults 0 0
亲自测试了一下,是 OK 的。可以直接查看内存,或者通过 swapon -s
查看 swap 列表