Ubuntu Linux 设置虚拟内存

增加Linux Swap空间
本文介绍如何在Linux系统中增加Swap空间大小,包括创建Swap文件、激活Swap文件的过程,并提供了检查Swap空间大小的方法。

swap空间就是虚拟内存,在物理内存不足时,有较大的用处。

查看内存空间大小:free -m // m表示显示的字节单位是m(megabytes)

下面我们就来增加系统的 Swap 大小。

1.首先用命令free查看系统内 Swap 分区大小。
free -m

total used free shared buffers cached
Mem: 1002 964 38 0 21 410
-/+ buffers/cache: 532 470
Swap: 951 32 929

可以看到 Swap 只有951M,不符合 Oracle-xe-client 的安装要求。

2.创建一个 Swap 文件。
mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=100000

出现下列提示,上面命令中的 count 即代表swap文件大小。

记录了 100000+0 的读入
记录了 100000+0 的写出
102400000 字节 (102 MB) 已复制,0.74704 秒,137 MB/秒

把生成的文件转换成 Swap 文件
sudo mkswap swapfile

Setting up swapspace version 1, size = 102395 kB
no label, UUID=09fde987-5567-498a-a60b-477e302a988b

3.激活 Swap 文件。
sudo swapon swapfile

再次查看 free -m 的结果。

total used free shared buffers cached
Mem: 1002 967 34 0 22 410
-/+ buffers/cache: 534 467
Swap: 1053 32 1021

添加成功。

扩展:
如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
sudo swapoff swapfile

如果需要一直保持这个 swap ,可以sudo -s换到root
然后把它写入 /etc/fstab 文件。

swapfilepath swap swap defaults 0 0

<think>我们正在讨论的是Ubuntu系统中设置虚拟内存映射(virtualmemorymapping)的问题。根据之前的上下文,特别是Elasticsearch启动失败(退出代码78)的解决方法中,我们提到过需要调整`vm.max_map_count`参数。这是因为Elasticsearch等应用需要大量的虚拟内存映射。在Linux系统中,虚拟内存映射参数`vm.max_map_count`控制了一个进程可以拥有的内存映射区域的最大数量。对于运行Elasticsearch、数据库或其他内存密集型应用,通常需要增加这个值。在Ubuntu系统中,设置虚拟内存映射的命令是通过`sysctl`工具来完成的。具体步骤如下:###1.**临时设置(重启后失效)**```bashsudosysctl-wvm.max_map_count=262144```此命令立即生效,但重启后恢复默认值。###2.**永久设置(重启后仍有效)**```bash#编辑sysctl配置文件sudonano/etc/sysctl.conf#在文件末尾添加(或修改)以下行:vm.max_map_count=262144#保存文件后,执行以下命令使配置生效sudosysctl-p```###3.**验证设置**```bash#检查当前值sysctlvm.max_map_count#或cat/proc/sys/vm/max_map_count```输出应为`262144`。###参数值说明-**默认值**:通常为`65530`-**推荐值**:对于Elasticsearch,官方建议至少设置为`262144`[^1]>**注意**:如果使用Docker容器运行Elasticsearch,需要在宿主机上设置此参数(容器内无法修改此内核参数)。如果使用DockerCompose,可以在`docker-compose.yml`中添加`sysctls`选项(需要Docker19.03+)[^3]:>```yaml>services:>elasticsearch:>image:elasticsearch:8.5.0>sysctls:>-vm.max_map_count=262144>```§§相关问题§§1.如何查看Linux系统中所有可调优的内核参数?2.除了`vm.max_map_count`,运行Elasticsearch还需要调整哪些系统参数?3.在Docker容器中如何绕过内核参数限制?4.虚拟内存映射数量不足会导致哪些具体错误?[^1]:[Elasticsearch官方文档-系统配置](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)[^3]:[DockerComposesysctls配置参考](https://docs.docker.com/compose/compose-file/compose-file-v3/#sysctls)</think>### Ubuntu 系统配置虚拟内存映射的命令 在 Ubuntu 系统中配置虚拟内存映射(特别是 `vm.max_map_count` 参数)主要使用 `sysctl` 命令,这是管理 Linux 内核参数的标准工具。以下是详细步骤: #### 1. **临时修改(立即生效,重启失效)** ```bash # 将值设置为推荐的最小值 262144 sudo sysctl -w vm.max_map_count=262144 # 验证当前值 sudo sysctl vm.max_map_count ``` > 适用于临时测试或快速修复,系统重启后恢复默认值[^1]。 #### 2. **永久修改(需重启生效)** ```bash # 编辑系统配置文件 sudo nano /etc/sysctl.conf # 在文件末尾添加(或修改)以下行: vm.max_map_count=262144 # 保存文件后加载配置 sudo sysctl -p ``` > 修改后需重启系统:`sudo reboot`[^2]。 #### 3. **Docker 环境特殊配置** 如果通过 Docker 运行应用(如 Elasticsearch),需在容器启动时传递参数: ```yaml # docker-compose.yml 示例 (参考引用[3]) services: elasticsearch: image: elasticsearch:8.5.0 sysctls: - vm.max_map_count=262144 # 关键配置 privileged: true # 需开启特权模式 ``` #### 4. **验证配置** ```bash # 检查当前生效值 cat /proc/sys/vm/max_map_count # 预期输出(根据设定值变化): 262144 ``` ### 参数说明 | 参数 | 推荐值 | 作用 | |------|--------|------| | `vm.max_map_count` | ≥262144 | 控制进程可用的虚拟内存映射区域数量 | | 默认值 | 65530 | 对内存密集型应用(如 ES/DB)通常不足 | > **重要提示**: > - 低于 262144 可能导致 Elasticsearch 启动失败(错误代码 78)[^1] > - 生产环境建议设置为 `262144` 或更高 > - 修改后应用需重启才能生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值