swap交换分区

swap分区是一块特殊的硬盘空间,当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换内存中,从而使当前的程序腾出更多的内存量。

使用swap交换分区作用是,通过操作系统的调取,程序可以用到的内存远超过实际物理内存。磁盘价格要比内存便宜的多,因此使用swap交换空间是很实惠的,但是由于频繁的读写硬盘,这种方式会降低系统运行效率。

swap分区大小,根据物理内存大小和硬盘容量计算

swap交换空间只是用来应急的,容量分配要适量
  • 内存小于1G,必须用swap提升内存使用量,否则运行不了几个应用
  • 内存使用过多的应用,如视频制作等,使用swap防止内存不足,导致的软件崩溃
  • 电脑休眠、内存数据断电丢失,因此将内存数据暂时存入swap交换空间,电脑休眠回复后,数据从swap读入内存,继续工作

centos建议分配swap

  • 内存小于2G,swap分配等同内存大小空间
  • 内存大于2G,分配2G交换空间

创建swap分区

第一步:先分区  fdisk

[root@junwu_server ~]# fdisk /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

#只有一个分区,默认就是1

Command (m for help): t
Selected partition 1

Partition type (type L to list all types): 19  #修改分区类型
Changed type of partition 'Plan 9 partition' to 'Linux swap'

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 2FF10D5B-F3CF-438A-AC06-805A3B5630CB


# Start End Size Type Name
1 2048 1026047 500M Linux swap

第二步:格式化(swap命令不同,是mkswap)

[root@junwu_server ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=3c8f01e2-43a0-4b13-ab1a-03f8f7ca3b23
[root@junwu_server ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 4ff42a0c-a9c5-41c6-b5c2-ef28a4a5540b /boot
├─sda2 swap 6a392a74-cd56-4d74-b186-e838a29ff17a [SWAP]
└─sda3 xfs 9d5d7859-2a23-4b89-b177-74ddb3cd50b1 /
sdb
└─sdb1 swap 3c8f01e2-43a0-4b13-ab1a-03f8f7ca3b23
sdc
└─sdc1 xfs bccba882-a066-4fc3-8980-9dc28046ad74
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00

第三步:使用swap分区  swapon开启交换分区、swapoff关闭交换分区

#使用free查看内存和 swap 分区的使用情况

[root@junwu_server ~]# free -h
total used free shared buff/cache available
Mem: 972M 154M 702M 7.7M 115M 686M
Swap: 799M 0B 799M

#开启交换分区
[root@junwu_server ~]# swapon /dev/sdb1
[root@junwu_server ~]# free -h
total used free shared buff/cache available
Mem: 972M 154M 702M 7.7M 115M 686M
Swap: 1.3G 0B 1.3G

buff和cache

  • buffers,缓冲,buffers是给写入数据加速的,指写入数据时,把分散的写入操作保存到内存,达到一定程度集中写入硬盘,减少磁盘碎片,以及反复的寻道时间,加速数据写入。
  • Cached,缓存,Cached是给读取数据时加速的,指把读取出来的数据保存在内存中,再次读取,不用读取硬盘而直接从内存中读取,加速数据读取过程。

我的内存被吃了

1、物理内存不足:

[root@junwu_server ~]# du -h --max-depth=1
4.0K ./junwu
0 ./data
20M ./nginx-1.23.3
0 ./.pki
4.0K ./.config
3.7M ./.cache
16K ./.ssh
50M ./Discuz
76M .

2、运行内存不足。电脑无故提示内存不足,监控报警,新程序无法运行,都是运行内存不足,可能要释放cache缓存

释放缓存区的内存
1)清理pagecache(页面缓存)
[root@backup ~]# echo 1 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=1

2)清理dentries(目录缓存)和inodes
[root@backup ~]# echo 2 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=2

3)清理pagecache、dentries和inodes
[root@backup ~]# echo 3 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=3

上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!

另外,可以使用sync命令来清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存
sync:将内存缓冲区内的数据写入磁盘。
[root@backup ~]# sync
df -T  列出的是文件系统的可用空间
du -h 
统计文件、目录磁盘使用情况
posted @ 2023-03-17 16:52  Junwu’sblog  阅读(270)  评论(0编辑  收藏  举报