Linux中的swap分区类似Windows的虚拟内存,在硬盘空间不足的情况下,或者当遇到pip安装过程中被killed的情况,可通过创建swap分区来解决.
1. swap概述
Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
2. 检查是否有swap分区
命令如下:
sudo swapon --show
如果没有任何输出,表示没有swap分区,也可以通过free命令验证一下
free -h
#Output
total used free shared buff/cache available
Mem: 486 316 81 5 88 132
Swap: 0 0 0
可以看到Swap的大小是零,也就是没有swap分区。
3. 创建swap
3.1 创建swap分区
在进行pip安装运行库的时候,发现总会被莫名`killed`掉。这时才发现,没有创建swap分区。所以需要创建一个swap分区,操作如下:
首先,用拥有ROOT权限的用户通过SSH远程登入或者本地终端登入到系统,进行创建swap分区
dd if=/dev/zero of=/swapfile bs=1024 count=1024000
# 或
dd if=/dev/sda3 of=/swapfile bs=1M count=2048 【指定单位】
参数详解
if # 输入
of # 输出
bs # 块儿大小
count # 总大小
3.2 创建Linux交换文件
mkswap /swapfile # 或【mkswap -f /swapfile】
3.3 立即激活/swapfile 交换文件
swapon /swapfile
3.4 查看是否生效
[root@webserver ~]# sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -1
通过以上输出信息可以看出,已经成功创建swap分区
4. 设置永久生效
虽然现在已经生效,但是等下次服务器重启之后。该swap虚拟磁盘会失效,为保证永久生效,需要在/etc/fstab
文件添加如下指令集:
echo “/swapfile swap swap defaults 0 0” >> /etc/fstab
现在为止,swap分区已经完成创建。
5. 删除swap分区
有时可能会需要删除swap分区,该如何正确进行删除分区哪?
5.1 首先停止swap分区
swapoff /swapfile
5.2 删除swap分区文件
rm -rf /swapfile
删除/etc/swap
指定文件
这样就可以手工添加和删除swap分区。
代码如下:
sed -i “/‘\/swapfile swap swap defaults 0 0’//” /etc/fstab
6. 优化swap设置
6.1 调整Swappiness值
sudo sysctl vm.swappiness=10
#Output
vm.swappiness = 10
6.2 调整Cache Pressure值
sudo sysctl vm.vfs_cache_pressure=50
#Output
vm.vfs_cache_pressure = 50
6.3 设置开机时自动调整这两项设置值
在/etc/sysctl.conf
文件最后添加下面两行内容
vm.swappiness=10
vm.vfs_cache_pressure=50
OK,搞定,测试一下看pip是否能安装这个包了,哈哈,不再是Killed,变成了Successfully installed,没有问题,成功安装。
#Output
Installing collected packages: pypinyin
Successfully installed pypinyin-0.33.0