[ubuntu][cmake]vmware ubuntu 下创建交换空间(swap space)
文章目录
1. 问题背景
因为工作需要在 vmware-ubuntu 下编译 代码,但是由于公司电脑本身内存容量不大,只能分配 6GB 内存给虚拟机,这会导致在编译时出现 virtual memory exhausted: Cannot allocate memory
问题,与此同时,当前虚拟机没有分配交换空间(swap space),在网络上搜索了两个教程,可以通过添加虚拟空间解决内存耗尽的问题。
vmware 版本:15
ubuntu 版本:16.04
2. 交换空间理解
Linux 的交换分区(swap),或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。
交换分区的作用是,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,也就是常说的 swap out 和 swap in。
3. 操作步骤
1. 创建交换空间
- 查看系统是否配置了交换空间
$ swapon --show
- 使用
fallocate
程序创建一个交换文件
根据教程的建议,交换空间的大小是内存大小的两倍,因此分配 10GB 容量给交换空间$ sudo fallocate -l 10G /swapfile
- 查看交换空间文件是否创建
$ ls -lh /swapfile
- 步骤1记录
2. 配置交换文件(swap file)
-
让交换文件只能被 root 访问
$ sudo chmod 600 /swapfile
-
使交换文件生效,输出结果见步骤2记录
$ sudo mkswap /swapfile
-
让系统开始使用创建交换文件
$ sudo swapon /swapfile
-
查看系统是否配置了交换空间
$ sudo swapon --show
或
$ free -h
- 步骤2记录
注: 要执行
swapon /swapfile
命令
3. 使交换文件永久存在
上面创建的交换文件在重启系统(reboot)之后就会失效,如果需要此交换文件永久有效,需要将它写入 /etc/fstab
文件中
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
添加前的 fstab
添加后的 fstab
4. 查看结果
创建交换空间后结果
重启后查看结果
&&. 参考
链接:How To Create or Resize Swap Space on Ubuntu 20.04 – 20.10 & 18.04 – 19.10
链接:Linux虚拟机增加内存后增加swap空间
链接:Linux上创建SWAP文件/分区
链接:Linux 创建交换(swap)分区