ubuntu 设置虚拟内存 解决内存不足

数据库服务器程序在运行起来之后,系统内存不足。

环境:RK3399
内核:Linux 4.4
系统:ubuntu 18.04

在系统监控中发现,当数据库服务程序启动后,占用了大量内存空间,导致系统的剩余的内存往往只有几十MB。
在ubuntu系统中,swap空间就是虚拟内存,所以考虑在磁盘空间富余的目录下设置虚拟内存swap文件,用来缓解内存不足的问题。

1、free -m 命令查看内存情况和swap分区大小

	           total        used        free      shared  buff/cache   available
Mem:           3846         254        3296           4         295        3557
Swap:             0           0           0

可以看到swap空间目前为0。

2、创建一个swap文件
在创建swap文件前要考虑到,磁盘空间的大小,因为要确保要有空闲的存储空间,才能创建对应大小的swap文件。比如剩余空间大小只有2G,是不可能创建3G的swap文件的。
df -h 查看磁盘空间大小。

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.4G  2.6G  4.4G  37% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  1.1M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mmcblk2p7   63M  109K   60M   1% /oem
/dev/nvme0n1p1  234G   61M  222G   1% /data
/dev/mmcblk2p9   22G  4.3M   22G   1% /userdata
tmpfs           385M   28K  385M   1% /run/user/121
tmpfs           385M     0  385M   0% /run/user/1000

通过上面的信息可以看到,/data目录下还剩余200多G,那么就可以把swap文件生成在/data目录下。

sudo dd if=/dev/zero of=/data/swap bs=1M count=4096
bs是单位表示1Mbyte,count表示大小,成功提示如下提示信息。
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 14.8678 s, 289 MB/s

在data目录下,ls -lh查看:
在这里插入图片描述
3、设置并激活swap文件
通过mkswap命令设置swap文件sudo mkswap swap

sudo mkswap swap
mkswap: swap: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) no label, UUID=e2d5d777-df5b-4851-9d14-334ed42dd136

激活swap文件

sudo swapon swapfile 
swapon: /data/swap: insecure permissions 0644, 0600 suggested.

free -m查看swap空间大小。
在这里插入图片描述
可以看到swap一栏的大小已经不是0了,已经设置成功了。

4、修改/etc/fstab
上面的设置是临时生效的,为了保证机器重启或开关机后任然有效,需要修改/etc/fstab文件
sudo -s 切换到root文件,增加如下的一行。
在这里插入图片描述
5、删除swap分区
执行swapoff命令后,重新free -m查看,就可以看到swap分区为0了。

sudo swapoff /data/swap

在这里插入图片描述
sudo rm swap
删除swap文件,释放磁盘占用的磁盘空间。

### 配置 Ubuntu 的交换分区或虚拟内存Linux 系统中,交换分区(Swap)是一种用于补充物理内存的技术。当系统中的可用 RAM 不足时,Linux 将部分不活跃的数据移动到 Swap 中,从而腾出更多 RAM 给活动进程使用[^1]。 以下是关于如何在 Ubuntu 上配置虚拟内存的具体方法: #### 方法一:通过命令行创建和启用新的 Swap 文件 可以按照以下步骤操作来手动增加或重新配置 Swap 文件大小: 1. **进入根目录并创建一个新的 Swap 文件** 使用 `dd` 命令生成指定大小的文件作为新 Swap 文件: ```bash sudo dd if=/dev/zero of=/mnt/swap bs=1M count=8192 ``` 这里 `/mnt/swap` 是目标路径名,而 `bs=1M count=8192` 则表示该文件总容量为 8GB (即每块大小为 1MB * 总数 8192)[^2]。 2. **更改权限以保护隐私安全** 修改新建文件访问控制属性使其仅限超级用户读写: ```bash sudo chmod 0600 /mnt/swap ``` 3. **初始化此文件成为合法的交换区** 执行下面指令完成格式化过程以便操作系统识别它是一个有效的 swap 设备: ```bash sudo mkswap /mnt/swap ``` 4. **激活刚刚建立好的交换区域** 启动刚才准备完毕的新 Swap 单元使之立即生效: ```bash sudo swapon /mnt/swap ``` 5. **持久保存修改后的状态至下次重启之后仍然有效** 编辑 fstab 文件加入如下一行内容实现开机自启加载功能: ```bash echo '/mnt/swap none swap sw 0 0' | sudo tee -a /etc/fstab > /dev/null ``` 6. **调整 Swappiness 参数提升效率** 调整内核行为倾向更频繁还是较少利用磁盘缓存机制存储临时数据项。较低数值意味着优先保留实际硬件资源而非依赖于硬盘模拟方案;反之亦然。 添加或者更新现有记录到 sysctl.conf 文本档当中去定义全局默认值: ```bash echo "vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf > /dev/null ``` 应用最新设定无需注销登录账户即可即时反映改变效果: ```bash sudo sysctl -p ``` 7. **验证设置成果** 查看当前已有的所有交换设备列表及其各自的状态详情信息: ```bash free -h && cat /proc/swaps ``` 以上就是整个流程概述说明文档^, ^[3]. #### 方法二:直接增大现有的 Swap 分区尺寸 如果已经存在一个固定大小的传统型 Swap Partition,则可以直接将其扩大而不是另外再单独构建额外独立文件形式替代品: ```bash sudo swapoff -a sudo lvextend -L +<size>G <volume_group>/<logical_volume> sudo resize2fs /dev/<device_name> sudo mkswap /dev/<device_name> sudo swapon -a ``` 注意替换 `<size>`, `<volume_group>` 和其他占位符为你实际情况下的具体参数取值范围[^4]. --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值