Linux 修改swap虚拟内存大小

本文详细介绍如何在Linux系统中手动增加Swap分区的大小,并确保更改能够持久生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[root@gamedb ~]# free m

[root@gamedb tmp]# dd if=/dev/zero of=/tmp/big_swap bs=1024 count=2000000

[root@gamedb tmp]# du -sh /tmp/big_swap

[root@gamedb tmp]# mkswap /tmp/big_swap

[root@gamedb tmp]# swapon /tmp/big_swap

[root@gamedb tmp]# free m

[root@gamedb tmp]# vi /etc/fstab

# LABEL=SWAP-hda2         swap                    swap   defaults        0 0

  /tmp/big_swap           swap                    swap   defaults        0 0

 

=========================================================================================== 

一、查看内存和swap大小,发现swap是内存大小的一半

 [root@gamedb ~]# free -m

             total       used       free     shared   buffers     cached

Mem:          1001        338        662         0          8        307

-/+ buffers/cache:         22        978

Swap:          509          0        509

=========================================================================================== 

二、决定修改swap大小,首先在空间合适处创建用于分区的swap文件

[root@gamedb tmp]# dd if=/dev/zero of=/tmp/big_swap bs=1024 count=2000000

读入了 2000000+0 个块

输出了 2000000+0 个块

(注意:if 表示 infile,of 表示outfile,bs=1024 表示写入的每个块的大小为1024B=1KB(1024B字节=1024*8bit位)

 ===========================================================================================

三、查看创建的文件大小是否符合要求:

[root@gamedb tmp]# du -sh big_swap

2.0G    big_swap

[root@gamedb tmp]# ls -al big_swap

-rw-r--r--  1 root root 2048000000  6 18 11:55 big_swap

 ===========================================================================================

四、将目的文件设置为swap分区文件

[root@gamedb tmp]# mkswap big_swap

Setting up swapspace version 1, size = 2047995 kB

 ===========================================================================================

五、激活swap,立即启用交换分区文件:

[root@gamedb tmp]# swapon big_swap

 ===========================================================================================

六、再次查看内存和虚拟内存,发现已经被正常修改:

[root@gamedb tmp]# free -m

             total       used       free     shared   buffers     cached

Mem:          1001        984         16         0          2        931

-/+ buffers/cache:         50        950

Swap:         2462          0       2462

 ===========================================================================================

七、若要想使开机时自启用则需修改文件/etc/fstab中的swap

[root@gamedb tmp]# vi /etc/fstab

# LABEL=SWAP-hda2         swap                    swap   defaults        0 0

  /tmp/big_swap           swap                    swap   defaults        0 0

 ===========================================================================================

 

 

附:fstab文件详解:

fstab中存放了与分区有关的重要信息,其中每一行为一个分区记录,每一行又可分为六个部份,下面以 /dev/hda7 / ext2 defaults 1 1 为例逐个说明:

  1. 第一项是您想要mount的储存装置的实体位置,如hdb/dev/hda6

  2. 第二项就是您想要将其加入至哪个目录位置,如/home/,这其实就是在安装时提示的挂入点。

  3. 第三项就是所谓的local filesystem,其包含了以下格式:如extext2msdosiso9660nfsswap等,或如ext2,可以参见/prco/filesystems说明。

  4. 第四项就是您mount时,所要设定的状态,如ro(只读)或defaults(包括了其它参数如rwsuidexecautonouserasync),可以参见「mount nfs」。

  5. 第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0。该选项被dump命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

  6. 第六项是设定此filesystem是否要在开机时做check的动作,除了rootfilesystem其必要的check1之外,其它皆可视需要设定,内定值是0。该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0


第四个选项参数:
ro 
以只读模式加载该文件系统 
sync 
不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度 
user 
允许普通用户加载该文件系统 
quota 
强制在该文件系统上进行磁盘定额限制 
noauto 
不再使用mount a命令(例如系统启动时)加载该文件系统 
noexec
(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了!
nodev
(不允许挂载设备文件)
nosuid,nosgid
(不允许有suidsgid属性)
nouser
(不允许普通用户挂载)
 

如果想开机就自动挂载(mount)上,可以在/etc/fstab上添加如下几行,同样也可以用mount/etc/rc.d/rc.local里启动:
/dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda6 /mnt/e vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda7 /mnt/f vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0
/dev/hda8 /mnt/g vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

<think>好的,用户想了解如何在Linux系统中调整虚拟内存大小以便顺利安装Sonar。首先,我需要回忆一下Linux系统中虚拟内存的相关知识。虚拟内存通常由物理内存(RAM)和交换空间(swap)组成,当物理内存不足时,系统会使用交换空间作为扩展。调整虚拟内存大小可能涉及到增加交换空间的大小。 接下来,我应该考虑用户的具体需求。安装Sonar可能需要较大的内存,如果物理内存不足,系统可能因为内存不足而无法完成安装或运行。这时候增加交换空间是一个常见的解决方法。 步骤方面,首先需要检查当前的交换空间使用情况,可以使用`free -h`或者`swapon --show`命令。然后,用户可能需要创建或扩展交换文件。例如,使用`fallocate`或`dd`命令创建一个指定大小的文件,将其设置为交换文件格式,并激活它。此外,还需要在/etc/fstab中添加条目以确保交换文件在重启后仍然有效。 同时,需要注意权限问题,交换文件应该只有root用户有读写权限,以避免安全风险。调整swappiness参数可能也是一个优化点,但用户可能主要需要增加交换空间的大小。 可能还需要提醒用户,虽然交换空间可以缓解内存不足的问题,但使用过多交换空间可能会导致性能下降,因为磁盘速度远低于RAM。因此,长期解决方案应该是增加物理内存,但临时调整交换空间是可行的。 另外,参考之前提供的引用中提到了安装特定软件时使用命令行操作,例如通过wget获取镜像或者验证Java安装,因此调整虚拟内存的步骤也可能需要类似的命令行操作,用户可能对此有一定的熟悉度。 需要确保步骤正确,例如创建交换文件时使用正确的命令,避免数据丢失。同时,检查是否有现有的交换空间,如果有的话,可能需要关闭旧的交换文件再创建新的,或者直接扩展。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何调整参数优化性能,或者如何永久设置交换空间等。</think>### 如何调整 Linux 虚拟内存大小以安装 Sonar #### 1. 检查当前虚拟内存状态 通过以下命令查看当前交换空间(swap)使用情况: ```bash free -h swapon --show ``` 输出示例: ``` total used free Swap: 2.0G 512M 1.5G ``` #### 2. 创建交换文件(以新增4GB为例) ```bash # 创建交换文件(路径可自定义) sudo fallocate -l 4G /swapfile # 设置权限 sudo chmod 600 /swapfile # 格式化为交换文件 sudo mkswap /swapfile # 启用交换文件 sudo swapon /swapfile ``` #### 3. 永久生效配置 在`/etc/fstab`文件末尾添加: ``` /swapfile none swap sw 0 0 ``` #### 4. 验证调整结果 ```bash free -h ``` 输出应显示扩容后的交换空间,例如: ``` Swap: 6.0G 0B 6.0G ``` #### 5. 调整 swappiness 参数(可选) 修改`/etc/sysctl.conf`文件,添加: ``` vm.swappiness=10 ``` 运行`sudo sysctl -p`使配置生效,此操作可减少交换空间使用频率,提升性能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值