安装系统时,咱们每每会在磁盘分区时,为交换分区单独分出一起位置,但当系统安装完成后,咱们经过固定的文件位置在配置交换分区。git
在配置交换分区前,请肯定你放置交换分区的磁盘有足够的空间。shell
本篇文章将交换分区文件放在 /var
下,/var
在 /
挂载点下,因此咱们检查 /
挂载磁盘的空间:app
[dingdayu@gitlab-repo var]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 17G 21G 46% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 556K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
必定要确保 /
挂载点下有足够的空间(剩余的空间远大于你要设置的交换空间大小)才能够配置交换空间。gitlab
free –h 或 swapon –s
会获得下面的输出:性能
[dingdayu@gitlab-repo var]$ free -h total used free shared buff/cache available Mem: 7.6G 4.4G 132M 17M 3.1G 2.9G Swap: 8.0G 0B 8.0G
dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
会获得下面的输出:spa
[dingdayu@gitlab-repo var]$ sudo dd if=/dev/zero of=/var/swapfile bs=1024 count=8192k 8388608+0 records in 8388608+0 records out 8589934592 bytes (8.6 GB) copied, 71.1132 s, 121 MB/s
if(即输入文件,input file),of(即输出文件,output file)。dev/zero是Linux的一种特殊字符设备(输入设备),能够用来建立一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,能够提供任何你须要的数目。 bs=1024 :单位数据块(block)同时读入/输出的块字节大小为1024 个字节即1KB,bs(即block size)。count=2048000 :数据块(block)数量为2048000 ,即2048000个1KB。能够计算swap分区的容量为:1KB 2097152=1KB 1024(k)10242=2097152=2G。(dd命令里的单位M表示1024*1024,k表示1024)。code
也能够经过 fallocate
命令建立分区文件:内存
sudo fallocate -l 8G /var/swapfile
最后检查分区文件大小:input
[dingdayu@gitlab-repo var]$ ls -lh /var/swapfile -rw------- 1 root root 8.0G Oct 10 19:59 /var/swapfile
mkswap /var/swapfile
会获得如下输出:it
sudo mkswap /var/swapfile Setting up swapspace version 1, size = 8388604 KiB no label, UUID=abfe4e6c-4474-4a6b-bd96-80292e0e676c
sudo chmod -R 0600 /var/swapfile
swapon /var/swapfile
上面的挂载会在系统重启后失效,可经过编辑 /etc/fstab
避免。
将下面的内容,添加到 /etc/fstab
文件中;
/var/swapfile swap swap defaults 0 0
或:
sudo sh -c "echo '/var/swapfile swap swap defaults 0 0' >> /etc/fstab"
经过下面的命令,查看 swappiness
值:
cat /proc/sys/vm/swappiness
swappiness值(0-100),系统对swap分区的依赖程度,越高则越倾向于使用swap分区。 固然,高度依赖swap会形成物理内存远未使用完,就使用swap分区,咱们知道swap分区性能远不如物理内存,这反而下降了系统性能,违背了咱们建立swap分区的初衷。 咱们但愿在物理内存即将满荷时再使用swap,这就决定了swappiness值通常为10-60为宜,固态硬盘能够偏高些。
swappiness
能够经过 sysctl
命令直接修改 vm.swappiness
的值:
sysctl vm.swappiness=50
可是在系统重启后,依然会丢失设置,因此能够经过编辑 /etc/sysctl.conf
文件实现:
sudo sh -c "echo 'vm.swappiness = 50' >> /etc/sysctl.conf"
扩大或缩小分区大小,采用建立新的分区文件,后挂载到新的分区位置的方式设置,参考
设置交换分区
章节便可。
# 生成新的分区文件 dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152 # 格式化分区文件 mkswap /var/swapfile1 # 挂载新的分区文件 swapon /var/swapfile1
须要先解除分区挂载:
swapoff /var/swapfile
而后删除分区文件便可
rm -rf /var/swapfile
最后记得将
/etc/fstab
文件里的交换分区挂载移除掉