最近在做rac,在环境检查的时候发现swap空间检查不通过,所以我们第一想到的是对swap进行扩容,那么swap扩容有哪些方法呢?这里主要介绍两种方法,一通过添加额外磁盘,扩展swap分区,二是通过本地多余空间的方式扩展swap分区。

一、现象描述

Check: Swap space
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac02 10GB (1.0485756E7KB) 15.7037GB (1.6466544E7KB) failed
rac01 10GB (1.0485756E7KB) 15.7032GB (1.6466E7KB) failed

查看内容使用情况:

[root@rac01 ~]# free -g
total used free shared buffers cached
Mem: 15 8 7 0 0 8
-/+ buffers/cache: 0 15
Swap: 9 0 9

查看磁盘分区挂在情况:

[root@rac01 ~]# cat /etc/fstab
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=ea4095fa-f040-1234-b0b5-abcd1532d332 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/shm /tmp tmpfs defaults 0 0
[root@rac01 ~]# fdisk -l /dev/mapper/VolGroup-lv_swap

Disk /dev/mapper/VolGroup-lv_swap: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

这里看到swap空间为10.7GB,而我们系统内存时16GB,所以至少要扩展6GB才能达到rac检查的要求

二、swap扩容

1、通过添加磁盘扩容

本系统看到是通过逻辑卷做的swap分区,那么我们可以考虑通过逻辑卷扩展的方式扩容swap分区,如果逻辑卷组空间有富余最好,如果没有富余而我们磁盘添加允许的情况下可以通过添加额外的磁盘来扩展逻辑卷组,进而扩展逻辑卷,再到swap分区。本系统是虚拟机,所以扩展磁盘还是比较方便的,具体操作步骤如下:

查看逻辑卷——>查看逻辑卷组——>逻辑卷组扩展(空间不足的情况下)——>卸载逻辑卷——>逻辑卷扩展——>格式化逻辑卷——>重新挂载

1)查看逻辑卷和逻辑卷组

[root@rac01 ~]# lvdisplay    /dev/VolGroup/lv_swap
--- Logical volume ---
LV Path /dev/VolGroup/lv_swap
LV Name lv_swap
VG Name VolGroup
LV UUID 4K2GGg-An39-9Vim-RdQW-U0es-BU9R-gwKoBb
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-10-11 14:42:02 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
[root@rac01 ~]# vgdisplay  VolGroup
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 49.51 GiB
PE Size 4.00 MiB
Total PE 12674
Alloc PE / Size 7680 / 30.00 GiB
Free PE / Size 4994 / 19.51 GiB
VG UUID HYL3bE-tccs-SUil-i75E-qUqG-d6dD-6jzj2u

这里看到swap对应的逻辑卷组还有多余的19G空间,所以我们可以直接扩容swap分区

2)卸载swap分区

[root@rac01 ~]# swapoff  /dev/mapper/VolGroup-lv_swap

3)扩展swap逻辑卷

[root@rac01 ~]# lvextend  -L +6GB  /dev/mapper/VolGroup-lv_swap
Size of logical volume VolGroup/lv_swap changed from 10.00 GiB (2560 extents) to 16.00 GiB (4096 extents).
Logical volume lv_swap successfully resized.
[root@rac01 ~]# fdisk -l  /dev/mapper/VolGroup-lv_swap

Disk /dev/mapper/VolGroup-lv_swap: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

4)格式化新swap分区

[root@rac01 ~]# mkswap  /dev/mapper/VolGroup-lv_swap
mkswap: /dev/mapper/VolGroup-lv_swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 16777212 KiB
no label, UUID=5cef886d-5537-4aa0-88d8-f4ce92e01698

5)重新挂在swap分区

[root@rac01 ~]# swapon /dev/mapper/VolGroup-lv_swap
[root@rac01 ~]# free -g
total used free shared buffers cached
Mem: 15 8 7 0 0 8
-/+ buffers/cache: 0 15
Swap: 15 0 15

至此swap分区扩容完毕,但如果我们卷组容量不够的情况下如何扩展呢?首先肯定是扩展卷组,然后再重复上面的步骤。下面将扩展卷组的方法在下面补充

磁盘添加

[root@rac02 ~]# fdisk -l |grep sd
Disk /dev/sda: 53.7 GB, 53687091200 bytes
/dev/sda1 * 1 64 512000 83 Linux
/dev/sda2 64 6528 51915776 8e Linux LVM
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
Disk /dev/sdc: 8589 MB, 8589934592 bytes
Disk /dev/sdd: 5368 MB, 5368709120 bytes
/dev/sdd1 1 652 5237158+ 83 Linux
Disk /dev/sdf: 107.4 GB, 107374182400 bytes
/dev/sdf1 1 13054 104856223+ 83 Linux
Disk /dev/sde: 5368 MB, 5368709120 bytes
/dev/sde1 1 652 5237158+ 83 Linux
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
/dev/sdg1 1 1305 10482381 83 Linux

6)创建新的物理卷

[root@rac02 ~]# pvcreate  /dev/sdc
Physical volume "/dev/sdc" successfully created

7)扩展逻辑卷组

[root@rac02 ~]# vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 49.51 GiB
PE Size 4.00 MiB
Total PE 12674
Alloc PE / Size 7680 / 30.00 GiB
Free PE / Size 4994 / 19.51 GiB
VG UUID HYL3bE-tccs-SUil-i75E-qUqG-d6dD-6jzj2u
[root@rac02 ~]# vgextend VolGroup /dev/sdc
Volume group "VolGroup" successfully extended
[root@rac02 ~]# vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 57.50 GiB
PE Size 4.00 MiB
Total PE 14721
Alloc PE / Size 7680 / 30.00 GiB
Free PE / Size 7041 / 27.50 GiB
VG UUID HYL3bE-tccs-SUil-i75E-qUqG-d6dD-6jzj2u

这里逻辑卷组扩容完毕,后面可以重复1——5步骤完成swap扩容。

正常数据库扩容后需要执行以下命令才能看到扩容后的磁盘容量:

e2fsck -f /dev/vgtest/vgtest-lv

resize2fs  /dev/vgtest/vgtest-lv

2、通过本身磁盘剩余空间扩容

1)创建大的swap文件

dd if=/dev/zero of=/home/swap bs=1024 count=20971520
2)格式化swap空间

/sbin/mkswap /home/swap

3)关闭旧swap

swapoff /dev/mapper/vg_swap

4)开启新swap

/sbin/swapon /home/swap

5)开机挂载

/home/swap swap                    swap    defaults        0 0

###备注:在线添加硬盘并扩展逻辑分区

以root身份运行echo "scsi add-single-device a b c d" > /proc/scsi/scsi

a是硬盘所在SCSI控制器号(一般机器就一个SCSI控制器,所以就是0);
b是硬盘所在SCSI通道的编号(一般单通道的就是0,多通道的要看是哪个通道了);
c是硬盘的SCSI ID号(可以通过具体插入的硬盘插槽来判断);
d是硬盘的lun号(默认情况都是0) root@ubuntu:~# cat /proc/scsi/scsi
root@ubuntu:~# echo "scsi add-single-device 2 0 11 0" > /proc/scsi/scsi
root@ubuntu:~# pvcreate /dev/sdk
root@ubuntu:~# vgextend lhvg /dev/sdk
root@ubuntu:~# lvextend -l + /dev/mapper/vg-lv_data
root@ubuntu:~# resize2fs -p /dev/vg/lv_data
##查看磁盘和卷对应关系
pvscan
lvscan
vgscam

Linux Swap扩容的更多相关文章

  1. Linux 分区扩容(根分区扩容,SWAP 分区扩容,挂载新分区为目录)

    请访问原文链接:https://sysin.org/blog/linux-partition-expansion/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页: ...

  2. linux 系统扩容 VMware Centos---VMware ESXi

    用到的命令 df  fdisk  pvcreate   pvdisplay    vgdisplay    vgextend    lvdisplay    lvextend  resize2fs 0 ...

  3. Linux Swap交换分区介绍总结

    Swap交换分区概念   什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...

  4. 我就是认真:Linux SWAP 深度解读(必须收藏)

    我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...

  5. linux swap 分区调控(swap分区 lvm管理)

    注:linux swap分区 采用lvm管理,调控可以采用下面的方法 一.查看 swap    lv [root@testdb ~]# vgdisplay -v Finding all volume ...

  6. Linux Swap交换分区探讨

    Swap交换分区概念 Linux divides its physical RAM (random access memory) into chucks of memory called pages. ...

  7. Linux系统盘扩容-物理机非虚拟机

    # Linux系统盘扩容 ## 了解磁盘分区情况 - `blkid` 查看分区情况- `fdisk -l` 分区表 ## 系统挂载分区 - `/etc/fstab` 启动挂载分区情况 ## 双系统下分 ...

  8. (转)vmware下给linux虚拟机扩容

    “Well, here’s another fine mess you’ve gotten me into” Let us pretend that you have an Ubuntu Server ...

  9. 怎么设置Linux swap分区?方法教程

    如何设置Linux swap分区 看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下. 什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其 ...

随机推荐

  1. feign中的hytrix和turbin配置

    这里我用了两个生产者和两个消费者进行演示,如下图(画的不好看,凑活看看): 这里我就只讲下怎么注册到dashbord和相关的配置,提供者和消费者等代码可以去下载查看: https://github.c ...

  2. Spring Boot的filter简单使用

    过滤器(Filter)的注册方法和 Servlet 一样,有两种方式:代码注册或者注解注册 1.代码注册方式 通过代码方式注入过滤器 @Bean     public FilterRegistrati ...

  3. "Visual Studio Code is unable to watch for file changes in this large workspace"

    https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-chang ...

  4. JDK源码--ArrayList浅析

    先上别人的源码分析http://www.cnblogs.com/roucheng/p/jdkfenxi.html 这个链接也不错:http://www.jianshu.com/p/8d14b55fa1 ...

  5. nginx 反向代理https

    nginx 反向代理https   原来我用vertx创建了一个https apiserver,想着用nginx反向代理一下.证书是阿里云上免费一年的. 后来发现nginx要反向代理https自己也必 ...

  6. JS实现二叉树的创建和遍历

    1.先说二叉树的遍历,遍历方式: 前序遍历:先遍历根结点,然后左子树,再右子树 中序遍历:先遍历左子树,然后根结点,再右子树 后续遍历:先遍历左子树,然后右子树,再根结点   上代码:主要还是利用递归 ...

  7. 三、synchronized同步锁

    一.简介 在Java多线程中,我们要实现同步串行最早接触的就是synchronized关键字. 基本语法如下: synchronized(锁) { // 代码块 } sychronized关键字的锁主 ...

  8. Java自学-初识

    1.Java介绍 Java是一种开发语言,人和人说话用嘴说,人和计算机说话就靠开发语言.Java编写的程序可以让计算机执行一些列命令,达到人们想要的目的.比如说想要统计一年消费情况,如果人工统计,就要 ...

  9. SpringBoot 整合swagger

    springBoot 整合swagger 1.pom.xml 配置 <dependency> <groupId>io.springfox</groupId> < ...

  10. PHP-redis英文文档

    作为程序员,看英文文档是必备技能,所以尽量还是多看英文版的^^ PhpRedis The phpredis extension provides an API for communicating wi ...