如何在linux的环境中,创建swap内存?
背景说明
swap内存是系统中的临时内存,或者说,用磁盘的文件空间,当做物理内存来使用。主要是,为了解决一些系统,物理内存不够的情况,可以用swap内存作为一些补充。
但是要注意,swap内存的效率是非常的低的,如果应用对内存有足够的需求,可以考虑增加物理内存来提升性能。
通过下面的内容,你将会知道,如何在centos 7的环境中,创建、格式化、挂载swap内存。
创建swap内存的过程
- 查看当前的swap的挂载情况
swapon -s
- 也可以,通过free查看swap的内存情况
[root@nccztsjb-node-22 ~]# free -m total used free shared buff/cache available Mem: 7631 150 6896 16 584 7205 Swap: 0 0 0 [root@nccztsjb-node-22 ~]#
通过以上的输出结果,可以知道,目前机器的swap内存是0的。
- 查看主机的磁盘空间,找到一个合适的位置存放swap文件
[root@nccztsjb-node-22 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda2 49G 3.9G 43G 9% / devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 3.8G 17M 3.8G 1% /run tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup /dev/vda1 477M 136M 313M 31% /boot tmpfs 764M 0 764M 0% /run/user/0 [root@nccztsjb-node-22 ~]#
通过上面的输出结果,可以知道,根目录 / ,存在可用的空间,当然也可以选择挂载的磁盘。
- 创建swap文件
dd if=/dev/zero of=/swapfile count=20480 bs=1MiB
- 这里面的块大小参数bs=1MiB,也就是1M。
- count表示这样的块的个数,目前是20480,也就是:20480 * 1M = 20G
- 如果要调整swap文件的大小,修改count的参数值,就可以了。
注意:不要使用fallocate命令创建文件,这样的文件,是无法进行挂载的。
查看创建的文件
[root@nccztsjb-node-22 ~]# ls -l /swapfile -rw-r--r-- 1 root root 21474836480 Sep 15 10:17 /swapfile [root@nccztsjb-node-22 ~]#
- 修改文件的权限
chmod 600 /swapfile
确保,只有root用户能够读取这个文件。
[root@nccztsjb-node-22 ~]# ls -l /swapfile -rw------- 1 root root 21474836480 Sep 15 10:17 /swapfile [root@nccztsjb-node-22 ~]#
- 格式化swap文件
mkswap -f /swapfile
- 挂载swap文件
swapon /swapfile
- 检查swap的挂载情况
[root@nccztsjb-node-22 ~]# swapon -s Filename Type Size Used Priority /swapfile file 20971516 0 -1 [root@nccztsjb-node-22 ~]# free -m total used free shared buff/cache available Mem: 7631 166 137 16 7327 7131 Swap: 20479 0 20479 [root@nccztsjb-node-22 ~]#
通过上面的查询结果,知道,swap已经成功的挂载了。
- 设置swap文件开机自动挂载
这个配置是手动的进行挂载,当服务器重启之后,配置就丢失了,需要重新的挂载。
这里面,设置开机自动挂载。
echo "/swapfile swap swap sw 0 0" >> /etc/fstab
执行过程
[root@nccztsjb-node-22 ~]# echo "/swapfile swap swap sw 0 0" >> /etc/fstab [root@nccztsjb-node-22 ~]# cat !$ cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Jun 22 08:49:12 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=6475aff8-0ed4-4a56-bddd-fdc303b5b9c1 / ext4 defaults 1 1 UUID=fc99d9d7-58f0-4605-af4f-8127edf6fb9b /boot ext4 defaults 1 2 /swapfile swap swap sw 0 0 [root@nccztsjb-node-22 ~]#
- 卸载swap文件
如果要卸载swap文件,执行下面的命令:
通过上面的步骤,就实现了swap内存文件的创建、格式化、挂载和开机自动启动。
就通过物理文件的方式,间接的增加了系统的内存大小。