逻辑卷动态扩容与缩容-----

一、创建逻辑卷

需求:创建一个2.5G大小的==逻辑卷==

思路:


1. 物理的设备
2. 将物理设备做成物理卷  pv
3. 创建卷组并将物理卷加入其中 vg
4. 创建逻辑卷   lv
5. 格式化逻辑卷 mkfs.ext4
6. 挂载使用   mount

步骤:
1. 物理设备【如何来分区】
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    2G  0 part 
├─sdb2            8:18   0    2G  0 part 
├─sdb3            8:19   0    2G  0 part 
├─sdb4            8:20   0    2G  0 part 
├─sdb5            8:21   0    2G  0 part 
├─sdb6            8:22   0    2G  0 part 
├─sdb7            8:23   0    2G  0 part 
└─sdb8            8:24   0    2G  0 part 

2. 创建物理卷
[root@server ~]# pvcreate /dev/sdb1 /dev/sdb2
查看物理卷:
[root@server ~]# pvs        简单查看pvscan 
  PV         VG        Fmt  Attr PSize  PFree
  /dev/sdb1            lvm2 a--   2.01g 2.01g
  /dev/sdb2            lvm2 a--   2.01g 2.01g
[root@server ~]# pvdisplay /dev/sdb1        详细查看

3. 创建卷组并将物理卷加入其中
[root@server ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
  Volume group "vg01" successfully created
查看卷组信息:
[root@server ~]# vgs vg01        简单查看
  VG   #PV #LV #SN Attr   VSize VFree
  vg01   2   0   0 wz--n- 4.01g 4.01g
  
[root@server ~]# vgdisplay vg01    详细查看

4. 创建逻辑卷  【重点】
[root@server ~]# lvcreate -n lv01 -L 2.5G vg01
  Logical volume "lv01" created
在操作系统层面映射两个地方:  
[root@server ~]# ll /dev/mapper/vg01-lv01 
lrwxrwxrwx 1 root root 7 Jan  7 11:16 /dev/mapper/vg01-lv01 -> ../dm-2
[root@server ~]# ll /dev/vg01/lv01 
lrwxrwxrwx 1 root root 7 Jan  7 11:16 /dev/vg01/lv01 -> ../dm-2
结论:其实同时指向了:/dev/dm-2
注意逻辑卷的顺序:
[root@nfs-server dev]# ll /dev/mapper/centos-root
lrwxrwxrwx 1 root root 7 Aug 20 19:37 /dev/mapper/centos-root -> ../dm-0
[root@nfs-server dev]# ll /dev/mapper/centos-swap 
lrwxrwxrwx 1 root root 7 Aug 20 19:37 /dev/mapper/centos-swap -> ../dm-1
[root@nfs-server dev]# ll /dev/mapper/vg01-lv01 
lrwxrwxrwx 1 root root 7 Aug 20 19:47 /dev/mapper/vg01-lv01 -> ../dm-2


查看逻辑卷的信息:
[root@server ~]# lvdisplay /dev/vg01/lv01 
 
-n:指定逻辑卷的名字
-L:指定逻辑卷的大小  --size Size[m|UNIT] VG    【常用】
-l:指定逻辑卷的大小  --extents Number[PERCENT]
举例:
-l 100            100个PE,每个PE大小默认4M,故逻辑卷大小为400M   【相对小的lv】
-l 50%free        卷组剩余空间的50%
[root@server ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree  
  vg01   1   1   0 wz--n- 2.00g 516.00m
 
创建大小为200M的逻辑卷lv02;每个PE为4M,-l50指定50个PE,大小为200M
[root@server ~]# lvcreate -n lv02 -l50 vg01
  Logical volume "lv02" created
[root@server ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree  
  vg01   1   2   0 wz--n- 2.00g 316.00m
[root@server ~]# lvs /dev/vg01/lv02
  LV   VG   Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv02 vg01 -wi-a----- 200.00m  
  
创建大小为剩余卷组vg01空间的50%的逻辑卷lv03
[root@server ~]# lvcreate -n lv03 -l50%free vg01
  Logical volume "lv03" created
[root@server ~]# lvs /dev/vg01/lv03 
  LV   VG   Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv03 vg01 -wi-a----- 156.00m                                             
[root@server ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree  
  vg01   1   3   0 wz--n- 2.00g 160.00m

5. 格式化逻辑卷
[root@server ~]# mkfs.ext4 /dev/vg01/lv01
6. 挂载使用
1)创建一个空的挂载点
2)挂载使用
[root@server ~]# mount /dev/vg01/lv01 /mnt/u01

二、逻辑卷动态扩容

需求:将/mnt/u01目录动态扩容到3G

思路:
1. 查看/mnt/u01目录所对应的逻辑卷是哪一个  /dev/mapper/vg01-lv01
2. 查看当前逻辑卷所在的卷组vg01剩余空间是否足够
测试:# dd if=/dev/zero of=testfile count=5 bs=1G
3. 如果vg01空间不够,得先扩容卷组,再扩容逻辑卷
4. 如果vg01空间足够,直接扩容逻辑卷

步骤:
1. 查看/mnt/u01目录属于哪个卷组
[root@web ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv01    2.4G  2.4G     0 100% /mnt/u01

[root@web ~]# lvs
  LV      VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Conver                                 
  lv01    vg01 -wi-ao----  1.50g
2. 卷组的剩余空间
[root@web ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree  
  vg01   1   2   0 wz--n- 19.70g      0 
  vg02   1   1   0 wz--n-  2.00g 516.00m
结果:当前卷组空间不足我扩容

3. 扩容逻辑卷所在的卷组
1)首先得有物理设备 /dev/sdb3
2) 将物理设备做成物理卷
# pvcreate /dev/sdb3

3)将物理卷加入到卷组中(卷组扩容)
[root@web ~]# vgextend vg01 /dev/sdb3
  Volume group "vg01" successfully extended
[root@web ~]# pvs  
注意:
正常情况下,应该先将/dev/sdb3物理设备创建为物理卷再加入到卷组中;如果直接加入卷组,系统会自动帮你将其做成物理卷。

[root@web ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg01     3   3   0 wz--n-  <5.99g 2.64g

4. 扩容逻辑卷 【第二种方式用的多】
[root@web ~]# lvextend -L 3G /dev/vg01/lv01        -L 3G最终的大小
或者
[root@web ~]# lvextend -L +1.5G /dev/vg01/lv01      -L +1.5G 扩容1.5G

5. 查看结果
[root@web ~]# lvs
  LV      VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root vg01 -wi-ao---- 17.70g                                             
  lv_swap vg01 -wi-ao----  2.00g                                             
  lv01    vg02 -wi-ao----  3.00g    已经扩容到了3G
  
[root@web ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root   18G  5.9G   11G  36% /
tmpfs                     931M     0  931M   0% /dev/shm
/dev/sda1                 291M   33M  244M  12% /boot
/dev/sr0                  4.2G  4.2G     0 100% /mnt
/dev/mapper/vg02-lv01     1.5G   35M  1.4G   3% /u01        实际并没有改变

6. 同步文件系统
[root@web ~]# resize2fs /dev/vg01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /mnt/u01; on-line resizing required   【在线扩容成功】
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg01/lv01 is now 825344 blocks long.

7. 再次查看验证
[root@web ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root   18G  5.9G   11G  36% /
tmpfs                     931M     0  931M   0% /dev/shm
/dev/sda1                 291M   33M  244M  12% /boot
/dev/sr0                  4.2G  4.2G     0 100% /mnt
/dev/mapper/vg02-lv01     3.0G   35M  2.8G   2% /u01        扩容成功

三、离线裁剪逻辑卷(缩容)

[root@server ~]# umount /mnt/u01
如果发现文件被占用了,使用:lsof /mnt/u01 或者 lsof | grep /mnt/u01
[root@server ~]# e2fsck -f /dev/vg01/lv01        检验文件系统
[root@server ~]# resize2fs /dev/vg01/lv01 2G    裁剪文件系统到2G
[root@server ~]# lvreduce /dev/vg01/lv01 -L 2G    裁剪逻辑卷
[root@server ~]# mount /dev/vg01/lv01 /mnt/u01    挂载使用

四、实战

思路: [实战完整流程]
0. 准备好物理设备,并创建一个逻辑卷,大小根据mysql数据库的实际大小再大一些,挂载到系统中
1. 最好在系统维护时间操作(23:00-8:00)
2. 先停止前端应用 LAMP apache
3. 停止mysql数据库(建议备份mysql数据库)   [重点]
4. 迁移mysql数据文件

步骤:
1. 添加一块物理硬盘[是否需要重启开服务器是否支持热插拔]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    2G  0 part 
├─sdb2            8:18   0    2G  0 part 
├─sdb3            8:19   0    2G  0 part 
├─sdb4            8:20   0    2G  0 part 
├─sdb5            8:21   0    2G  0 part 
├─sdb6            8:22   0    2G  0 part 
├─sdb7            8:23   0    2G  0 part 
└─sdb8            8:24   0    2G  0 part 

2. 创建大小为8G的逻辑卷
1)创建物理卷
[root@server ~]# pvcreate /dev/sdb[12345]
2)创建卷组vg_mysql
[root@server ~]# vgcreate vg_mysql /dev/sdb[12345]
[root@server ~]# vgs vg_mysql
  VG       #PV #LV #SN Attr   VSize VFree
  vg_mysql   5   0   0 wz--n- 9.98g 9.98g
3)创建逻辑卷lv_mysql
[root@server ~]# lvcreate -n lv_mysql -L 8G vg_mysql
[root@server ~]# lvs /dev/vg_mysql/lv_mysql 
  lv_mysql vg_mysql -wi-a----- 8.00g     

4)格式化为ext4文件系统
[root@server ~]# mkfs.ext4 /dev/vg_mysql/lv_mysql 

5)挂载使用
a. 创建一个空的挂载点/u01
[root@server ~]# mkdir /u01
b. 挂载逻辑卷lv_mysql到/u01目录
[root@server ~]# mount /dev/vg_mysql/lv_mysql /u01


3. 停止前端web服务 【如果没有mysql服务,请安装】
# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# yum -y install mysql-community-server
[root@server ~]# systemctl restart mysqld
# netstat -ntlp

4. 停止mysql数据库 
# systemctl stop mysqld
[root@server ~]# systemctl status mysqld

5. 备份mysql数据库到另外一台备份机 (实验环境不是必须)
备份机:10.1.1.2   备份目录:/backup
[root@server ~]# rsync -av /var/lib/mysql 10.1.1.2:/backup/

6. 将/usr/local/mysql/目录里的所有数据文件同步到逻辑卷上,即/u01目录
[root@server ~]# rsync -av /var/lib/mysql/ /u01
查看是否同步完成:
[root@server ~]# ls /u01
[root@server ~]# du -sh /u01        查看大小是否和原来mysql数据库大小一致

7. 卸载逻辑卷
[root@server ~]# umount /u01

8. 删除/usr/local/mysql/目录里原来的数据文件
注意:删之前一定要确定成功备份了!!!
[root@server ~]# rm -rf /var/lib/mysql/*

9. 挂载逻辑卷lv_mysql到mysql的安装目录/usr/local/mysql
[root@server ~]# mount /dev/vg_mysql/lv_mysql /var/lib/mysql/
开机自动挂载:
vim /etc/rc.local
...
/usr/bin/mount /dev/vg_mysql/lv_mysql /var/lib/mysql/

10. 启动数据库
[root@server ~]# systemctl restart mysqld

11. 启动web服务
[root@server ~]# systemctl status mysqld

12.测试验证
访问之前的网站看是否可以正常访问
ps -ef|grep mysql
lsof -i:3306
systemctl status mysql
netstat -tnlpnetstat -tnlp| grep mysql
ss -tnlp |grep mysql
telnet localhost 3306
systemctl stop mysqld
systemctl status mysqld

五、拓展

扩容swap空间【掌握】

增加一个硬盘或者分区来扩容swap空间

作用: ‘提升' 内存的容量,防止OOM(Out Of Memory) 虚拟内存

设置交换分区大小为内存的2倍

  • 生产(约定)

    • 大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;

    • 大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;

    • 大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。

查看swap空间大小:
[root@web ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1861        646       1215          0          9         60
-/+ buffers/cache:        576       1285
Swap:         2047          0       2047
[root@web ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition    2097144    0    -1

[root@web ~]# mkswap /dev/sdb8
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=485ff8ad-a636-4556-a2e7-4ee9efc78afb
[root@web ~]# blkid /dev/sdb8
/dev/sdb7: UUID="485ff8ad-a636-4556-a2e7-4ee9efc78afb" TYPE="swap"  

//激活swap分区。swap空间不能手动挂载
[root@server ~]# swapon /dev/sdb8

[root@server ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition    2031608    0    -1
/dev/sdb7                               partition    2064312    0    -2

GTP分区:

==gdisk工具分区==

parted工具分区

# yum install -y gdisk
GPT  128个主分区
1.创建分区
# gdisk -l /dev/sdc
# gdisk /dev/sdc
# partprobe /dev/sdc
# ll /dev/sdc*

2.创建文件系统(格式化)redhat7默认使用xfs
# mkfs.xfs /dev/sdc1

3.挂载(手动、开机自动、autofs自动)
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t xfs -o ro /dev/sdb1 /mnt/disk1        //手动挂载
# umount /mnt/disk1

六、总结

创建物理卷:pvcreate
pvcreate /dev/sdb1
创建卷组:vgcreate
vgcreate vg01 /dev/sdb1
创建逻辑卷:lvcreate      【三种方式】
lvcreate -n lv01 -L 1G vg01          1G
lvcreate -n lv01 -l 100 vg01         400M
lvcreate -n lv01 -l 100%free vg01    
删除逻辑卷:lvremove
lvremove /dev/vg01/lv01
删除卷组:vgremove
vgremove vg01
说明:卷组里的物理卷没有被使用才可以直接删除卷组
删除物理卷:pvremove 
pvremove /dev/sdb1
扩容卷组:vgextend
vgextend vg01 /dev/sdb2
扩容逻辑卷:lvextend
lvextend /dev/vg01/lv01 -L +2G
同步文件系统:
resize2fs /dev/vg01/lv01
裁剪卷组:vgreduce
vgreduce vg01 /dev/sdb2
裁剪逻辑卷:lvreduce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值