一、何为swap分区?
简而言之:从磁盘上获取很长没被使用的程序的空间来当做虚拟内存使用。
二、swap分区的创建
1、查看内存使用情况
可以看到一共是1.8G的内存,因为是才使用所以才用了458M,为了防止以后满了宕机,所以提前加虚拟内存,可以看到虚拟内存swap暂时为0B,因为我还没创建。
2、查看磁盘使用情况
可以看到磁盘本身有40G,才用了5.1G,可用33G。因此可以从40G中拿出来4G出来当做虚拟内存。
3、添加swap分区
使用dd命令创建名为swapfile的swap交换文件,当然文件名和目录各自随意命名
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
这里解释一下:
dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。
bs=1024 :单位数据块(block)同时读入/输出的块字节大小为1024 个字节即1KB,bs(即block size)。
count = 4194304 表示的是4G,具体计算公式为:1KB * 4194304 =1KB * 1024(k) * 1024 * 4= 4194304 =4G。
我这里是看磁盘40G设置为4G,大家感觉小了可以自行设置。
4、对交换文件格式化并转换为swap分区
mkswap /var/swapfile
5、挂载并激活分区
swapon /var/swapfile
执行完以后可能会出现以上提示,是系统的建议,大家可以忽略也可以执行以下命令,都不影响激活
chmod -R 0600 /var/swapfile
6、再次查看内存使用情况
可以看到swap虚拟内存已经添加好了,4G。
7、修改 fstab 配置,设置开机自动挂载该分区
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
三、swap参数配置
Linux默认的好像是当物理内存使用了百分之60(有的是说百分之50)的时候就会开始使用虚拟内存,但是这样的话会造成物理内存浪费而且虚拟内存是从磁盘来的,磁盘会进行大量IO影响效率。所以为了提高效率,我们可以修改swap的swappiness的值。
swappiness的值可以设置0-100,值代表了当物理内存剩余多少的时候开始使用虚拟内存。一般我们都设置为10-50,我这里设置的是10,代表当物理内存使用了百分之90的时候开始使用虚拟内存。
大家可以根据自己的情况设置。
1、查看本机swappiness的值:
cat /proc/sys/vm/swappiness
2、修改swappiness的值:
sysctl vm.swappiness=10
3、设置永久有效,重启系统后生效
echo "vm.swappiness = 10" >> /etc/sysctl.conf
4、再次查看swappiness的值:
发现swappiness的值已经被修改成了10;
5、运行top命令查看内存使用情况:
可以看到由于物理内存的使用还没达到90%,所以虚拟内存还没被使用。
四、swap分区的删除
swap分区的删除仅用于以后删除分区的时候使用,这里记录一下万一以后需要呢
1、停止正在使用的swap分区
swapoff /var/swapfile
2、删除swap分区文件
rm -rf /var/swapfile
3、删除或者注释掉之前我们在fstab文件中追加的开机自动挂载内容配置
vim /etc/fstab
#把下面内容删除
/var/swapfile swap swap defaults 0 0