Linux-Debian-Ubuntu如何设置或删除swap虚拟内存
虚拟内存 swap 简单的说就是将硬盘当内存用,用于解决内存容量不足的情况。
swap交换空间其实就是硬盘上一个特定的文件,只不过这个文件只有内存在读写。
查看当前系统是否设置了 swap
root@mbapp1a:~# free -m total used free shared buff/cache available Mem: 1982 755 66 2 1160 1040 Swap: 2047 22 2025
如果 swap 栏都是 0 0 0 表示没有设置过。
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:
$ free -h -s 3
主要命令如下:
sudo dd if=/dev/zero of=swapfile bs=1M count=2048
sudo mkswap swapfile
sudo chmod 600 swapfile
sudo swapon swapfile
cat /proc/swaps
swapon -s
sudo swapon --show
sudo free -h
如何设置swap?
一般物理内存小于2GB就设置为内存的两倍,小于8GB设置为等于内存,大于8GB的设置小于4GB
1、创建swap文件
格式: sudo dd if=/dev/zero of=swapfile count=4096 bs=1M
ls -al swapfile
# 创建一个 swap 目录,方便管理
mkdir swap
cd swap
# 创建swap文件
sudo dd if=/dev/zero of=swapfile bs=1M count=2048
sudo dd if=/dev/zero of=swapfile bs=1M count=4096
# 查看swap文件是否创建好了
ls -al swapfile
count=4096 bs=1M 表示创建 4GB 的虚拟内存,单位是 M
该命令中 count 即代表swap文件大小,我这里设置的是2Gb,你可以换成自己想设置的大小
$ sudo dd if=/dev/zero of=swapfile bs=1M count=2048 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 18.5132 s, 116 MB/s
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数注释:
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > bs=bytes:同时设置读入/输出的块大小为bytes个字节。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
3、激活 Swap 文件
mkswap 命令,用于在一个文件或者设备上建立交换分区。
sudo mkswap swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=1fd2cb84-ae10-4ef0-9ec3-13059528f395
使用 swapon 命令激活交换文件:
sudo swapon swapfile swapon: /root/swap/swapfile: insecure permissions 0644, 0600 suggested. swapon: /root/swap/swapfile: read swap header failed
$ ls -al total 2097164 drwxr-xr-x 2 root root 4096 Jun 22 20:31 . drwx------ 7 root root 4096 Jun 22 20:30 .. -rw-r--r-- 1 root root 2147483648 Jun 22 20:31 swapfile
$ sudo chmod 600 swapfile
$ sudo mkswap swapfile mkswap: /swapfile: warning: wiping old swap signature. Setting up swapspace version 1, size = 947.2 MiB (993243136 bytes) no label, UUID=383a444c-3a78-45b6-91a2-4f8df078689d
- 查看现有的swap
root@mbapp1a:~# cat /proc/swaps
Filename Type Size Used Priority
/root/swapfile file 2097148 22784 -2
root@mbapp1a:~# swapon -s
Filename Type Size Used Priority
/root/swapfile file 2097148 22784 -2
sudo swapon --show
root@mbapp1a:~# sudo swapon --show
NAME TYPE SIZE USED PRIO
/root/swapfile file 2G 22.3M -2
使用 free -h 命令查看:
root@mbapp1a:~# free -h
total used free shared buff/cache available
Mem: 1.9Gi 753Mi 82Mi 2.0Mi 1.1Gi 1.0Gi
Swap: 2.0Gi 22Mi 2.0Gi
设置系统启动时自动开启 Swap
修改 /etc/fstab 文件:
# 编辑fsta文件
$ sudo vim /etc/fstab
# 在最后添加
/swapfile none swap sw 0 0
# 保存文件(:wq)
如何删除swap?
首先输入以下命令停用 SWAP 空间:
sudo swapoff -v swapfile
在 /etc/fstab 文件中删除有效 swap 的行
最后执行以下命令删除 swapfile 文件:
sudo rm swapfile
可以使用 top 命令查看运行情况
root@mbapp1a:~# top
top - 23:31:13 up 7 days, 23:53, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 110 total, 1 running, 109 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1982.1 total, 81.6 free, 753.4 used, 1147.1 buff/cache
MiB Swap: 2048.0 total, 2025.7 free, 22.2 used. 1043.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5533 root 20 0 1033224 66000 11520 S 0.7 3.3 119:34.35 YDService
9 root 20 0 1305080 17772 4404 S 0.3 0.9 2:30.60 YDLive