因近期博主使用VULTR的VPS编译OpenWRT,因机器选的1G内存的,但是在编译时发现出现了内存不足的报错,所以本次实践给linux增加SWAP虚拟内存。

环境:Debian 9.4 X64(Ubuntu一样)

首先,我们使用free -h命令查看当前系统是否有swap分区,在shell中输入命令后:

root@RU-SSR:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           492M         47M        369M        2.5M         74M        429M
Swap:           63M          0B         63M

可以看出,这台vps有个63M的swap分区(第一行是物理内存大小),但是太小了,我们需要加大下,下面我们开始吧。

1、检查下磁盘还有多少(如果你自己有把握可以跳过):

df -hal

返回信息如下:

root@RU-SSR:/var# df -hal
Filesystem      Size  Used Avail Use% Mounted on
sysfs              0     0     0    - /sys
proc               0     0     0    - /proc
udev            236M     0  236M   0% /dev
devpts             0     0     0    - /dev/pts
tmpfs            50M  2.6M   47M   6% /run
/dev/vda1       9.7G  1.6G  8.1G  17% /
securityfs         0     0     0    - /sys/kernel/security
tmpfs           247M     0  247M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           247M     0  247M   0% /sys/fs/cgroup
cgroup             0     0     0    - /sys/fs/cgroup/systemd
pstore             0     0     0    - /sys/fs/pstore
cgroup             0     0     0    - /sys/fs/cgroup/perf_event
cgroup             0     0     0    - /sys/fs/cgroup/blkio
cgroup             0     0     0    - /sys/fs/cgroup/net_cls,net_prio
cgroup             0     0     0    - /sys/fs/cgroup/cpu,cpuacct
cgroup             0     0     0    - /sys/fs/cgroup/pids
cgroup             0     0     0    - /sys/fs/cgroup/freezer
cgroup             0     0     0    - /sys/fs/cgroup/cpuset
cgroup             0     0     0    - /sys/fs/cgroup/devices
cgroup             0     0     0    - /sys/fs/cgroup/memory
systemd-1          0     0     0    - /proc/sys/fs/binfmt_misc
hugetlbfs          0     0     0    - /dev/hugepages
debugfs            0     0     0    - /sys/kernel/debug
mqueue             0     0     0    - /dev/mqueue
tmpfs            50M     0   50M   0% /run/user/0

用了1.6G左右,我准备加个1G的Swap,看来空间够了。Swap的大小根据你的需求,如果磁盘性能差,Swap也会慢。

2、使用 dd 命令来创建 SWAP 文件(创建时shell不会有任何提示,速度取决于你的磁盘性能)

dd if=/dev/zero of=/var/swapfile bs=1024 count=1024k

** 注:
bs=bytes:同时设置读入/输出的块大小为 bytes 个字节,即bs=1024=1kb
count=blocks:仅拷贝 blocks 个块,块大小等于 bs 指定的字节数,即1024000个1kb,那大小就约为1024M **

返回信息:

root@RU-SSR:/var# dd if=/dev/zero of=/var/swapfile bs=1024 count=1024k
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 20.7215 s, 51.8 MB/s
root@RU-SSR:/var#

好了,Swap创建完毕。

3、格式化并激活 SWAP
格式化:

mkswap /var/swapfile

返回信息如下:

root@RU-SSR:/var# mkswap /var/swapfile
mkswap: /var/swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=3a230579-2ea9-460a-9a67-7c699d03149c
root@RU-SSR:/var#

激活Swap

swapon /var/swapfile

返回信息如下:

root@RU-SSR:/var# swapon /var/swapfile
swapon: /var/swapfile: insecure permissions 0644, 0600 suggested.

到此,Swap已经创建完毕,我们使用free -h查看下:

root@RU-SSR:/var# free -h
              total        used        free      shared  buff/cache   available
Mem:           492M         47M         11M        2.5M        433M        429M
Swap:          1.1G          4K        1.1G

搞定。接下来就是设置开机自动挂载了

4、开机自动挂载
使用winscp(https://winscp.net/eng/docs/lang:chs)或其他Sftp软件进入vps中编辑etc/fstab文件,在他的最后加上这段代码后保存

/var/swapfile swap swap defaults 0 0

加完后类似于这样:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
/dev/vda1 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda2 during installation
/dev/vda2 none            swap    sw              0       0
/var/swapfile swap swap defaults 0 0  #这行是加的

最后,赋予 SWAP 文件适当的权限:

chown root:root /var/swapfile && chmod 600 /var/swapfile

重启服务器就可以了

参考文献:
https://cyhour.com/662/
https://vultr.idcspy.com/464.html
https://blog.csdn.net/u011445756/article/details/87799019

最后修改:2021 年 07 月 24 日
如果觉得我的文章对你有用,请随意赞赏