因近期博主使用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