SWAP
什么是SWAP
SWAP分区在系统的物理内存不够时,将硬盘中的一部分空间供当前运行的程序使用
为什么需要SWAP
- 当物理内存不够时,会随机kill占用内存的进程,从而产生oom,临时使用swap可以解决
1.关闭swap
[root@localhost ~]# swapoff -a
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1819 130 1598 9 90 1548
Swap: 0 0 0
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1550M count=1000
已杀死
#故障日志
[root@localhost ~]# tail -f /var/log/messages
Dec 14 11:11:01 localhost kernel: Out of memory: Kill process 17123 (dd) score 828 or sacrifice child
=============================================================================================
为了避免物理内存不够用(使用swap硬盘空间来临时充当内存)
[root@localhost ~]# swapon -a
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1819 132 1595 9 92 1545
Swap: 2047 0 2047
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1000M count=1000
swap一但被使用,系统会越来越卡。 ( 分配内存,硬件空间模拟内存介质 所以就很卡)
SWAP基础应用
1.创建分区,并格式化为swap分区
[root@localhost ~]# fdisk /dev/sda
#格式化为swap
[root@localhost ~]# mkswap /dev/sda1
2.查看当前swap分区大小
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1819 131 1595 9 92 1545
Swap: 2047 0 2047
创建swap
如何将磁盘空间划分一部分给swap使用
1.先找一块硬盘,划分1Gb空间 fdisk
[root@localhost ~]# fdisk /dev/sdb
2.格式化为一个swap的设备 mkswap /dev/sdb1
[root@localhost ~]# mkswap /dev/sdb1
3.通过 swapon -a /dev/sdb1 将该设备加入swap
[root@localhost ~]# swapon -a /dev/sdb1
4.使用free -m 检查swap的大小 free -m
[root@localhost ~]# free -m
5.如果不想使用swap了 swapoff /dev/sdb1 移除
[root@localhost ~]# swapoff /dev/sdb1
如上操作都是临时的,如需永久生效,需要添加到/etc/fstab
扩张swap分区
- 扩张swap分区,使用swapon命令
swapon device:将某个磁盘大小添加到swap分区中
swapon -a:添加所有swap分区
[root@localhost ~]# swapon /dev/sdb1
[root@localhost ~]# free -m
缩小swap分区
- 缩小swap分区,使用swapoff命令
swapoff device:关闭某个磁盘的swap分区
swapoff -a:关闭所有swap分区
[root@localhost ~]# swapoff /devsdb1
[root@localhost ~]# free -m
文件系统恢复
- 在系统中,为了增加系统性能,通常系统会将一些数据先写 入内存中,然后在刷新到磁盘中
- 服务器突然断电或其他原因,导致重启,会造成文件系统错误
[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# mkfs.xfs /dev/sdb1
[root@localhost ~]# mount /dev/sdb1 /mnt
[root@localhost ~]# echo "Hello" > /mnt/new.txt
#模拟损坏
[root@localhost ~]# dd if=/dev/zero of=/dev/sdc bs=300M count=1
[root@localhost ~]# umount /mnt
[root@localhost ~]# mount /dev/sdb1 /mnt(无法挂载)
#尝试修复
[root@localhost ~]# xfs_repair /dev/sdb1
#强制修复
[root@localhost ~]# xfs_repair -L /dev/sdb1