目录



  • 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用
  • 16.1 LVM的工作原理
  • 16.1.1 LVM常用术语
  • 16.1.2 LVM优点
  • 16.2 创建LVM的基本步骤
  • 16.2.1 lvm常用的命令
  • 16.2.2 创建并使用LVM逻辑卷
  • 16.2.3 指定PE大小
  • 16.2.4 LV扩容
  • 16.2.5 VG扩容
  • 16.2.6 LVM缩小(实际工作中基本遇不到,尽量避免)
  • 16.2.7 LVM删除
  • 16.3 SSM工具介绍



学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用


本文用于记录学习体会、心得,兼做笔记使用,方便以后复习总结。内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK老师和学神教育的优质教学。希望各位因学习需求而要进行转载时,能申明出处为学神教育,谢谢各位!

16.1 LVM的工作原理

实战场景:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办?

解决方案:使用LVM在线动态扩容

LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘

它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作

16.1.1 LVM常用术语

物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用

物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;

卷组VG(Volume Group):一个LVM卷组由一个或多个物理卷组成

逻辑卷LV(logical volume):LV建立在VG之上,可以在LV之上建立文件系统

PE(physical extents):PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
LE(logical extent): LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

关于最小存储单元的总结

名称

最小存储单位

硬盘

扇区(512字节)

文件系统

block(1K或4K )# mkfs.ext4 -b 2048 /dev/sdb1 ,最大支持到4096

raid

chunk (512K) #mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x 1 /dev/sde{1,2,3,5}

LVM

PE (4M) # vgcreate -s 4M vg1 /dev/sdb{1,2}

LVM主要元素构成:

centos7删除逻辑卷在创建_centos7删除逻辑卷在创建

总结:多个磁盘/分区/raid-》多个物理卷PV-》合成卷组VG-》从VG划出逻辑卷LV-》格式化LV挂载使用

16.1.2 LVM优点

  • 使用卷组,使多个硬盘空间看起来像是一个大的硬盘
  • 使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
  • 在使用逻辑卷时,它可以在空间不足时动态调整它的大小
  • 在调整逻辑卷大小时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
  • 可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。
  • 允许创建快照,可以用来保存文件系统的备份。
  • RAID+LVM一起用:LVM是软件的卷管理方式,而RAID是磁盘管理的方法。对于重要的数据,使用RAID来保护物理的磁盘不会因为故障而中断业务,再用LVM用来实现对卷的良性的管理,更好的利用磁盘资源

16.2 创建LVM的基本步骤

  1. 物理磁盘被格式化为PV,(空间被划分为一个个的PE) #PV包含PE
  2. 不同的PV加入到同一个VG中,(不同PV的PE全部进入到了VG的PE池内) #VG包含PV
  3. 在VG中创建LV逻辑卷,基于PE创建,(组成LV的PE可能来自不同的物理磁盘) #LV基于PE创建
  4. LV直接可以格式化后挂载使用 #格式化挂载使用
  5. LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

16.2.1 lvm常用的命令

常用功能命令

功能

PV管理命令

VG管理命令

LV管理命令

scan扫描

pvscan

vgscan

lvscan

create创建

pvcreate

vgcreate

lvcreate

display显示

pvdisplay

vgdisplay

lvdisplay

remove移除

pvremove

vgremove

lvremove

extend扩展

vgextend

lvextend

reduce减少

vgreduce

lvreduce

常用查看命令

查看卷名

简单对应卷信息的查看

扫描相关的所有的对应卷

详细对应卷信息的查看

物理卷

pvs

pvscan

pvdisplay

卷组

vgs

vgscan

vgdisplay

逻辑卷

lvs

lvscan

lvdisplay

16.2.2 创建并使用LVM逻辑卷

16.2.2.1 添加一个sdb磁盘,并设置4个大小为2G的分区
[root@localhost ~]# ll /dev/sd* #查看新添加的硬盘
brw-rw----. 1 root disk 8,  0 6月  16 08:00 /dev/sda
brw-rw----. 1 root disk 8,  1 6月  16 08:00 /dev/sda1
brw-rw----. 1 root disk 8,  2 6月  16 08:00 /dev/sda2
brw-rw----. 1 root disk 8, 16 6月  16 08:00 /dev/sdb
[root@localhost ~]# fdisk /dev/sdb  #在硬盘/dev/sdb上面创建4个分区
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x7e20c0aa 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p #设置为主分区
分区号 (1-4,默认 1):1 #设置分区号为1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G #设置分区大小为2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):N
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): P
分区号 (3,4,默认 3):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+2G
分区 3 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):N
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): P
已选择分区 4
起始 扇区 (12584960-41943039,默认为 12584960):
将使用默认值 12584960
Last 扇区, +扇区 or +size{K,M,G} (12584960-41943039,默认为 41943039):+2G
分区 4 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):P  #查看分区信息

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7e20c0aa

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    12584959     2097152   83  Linux
/dev/sdb4        12584960    16779263     2097152   83  Linux

命令(输入 m 获取帮助):W #保存分区信息
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

设定分区类型代码:fdisk /dev/sdb ===> t ===> 选择分区号 ====> 8e ====> w ,详细如下所示:

[root@localhost ~]# fdisk /dev/sdb  #使用fdisk修改分区类型
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):t #修改分区类型
分区号 (1-4,默认 4):1 #输入分区号
Hex 代码(输入 L 列出所有代码):l #查看类型详细

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e #修改分区1类型为8e
已将分区“Empty”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):4
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
 
命令(输入 m 获取帮助):p #查看分区信息

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7e20c0aa

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   8e  Linux LVM  #分区类型已经修改为8e
/dev/sdb2         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb3         8390656    12584959     2097152   8e  Linux LVM
/dev/sdb4        12584960    16779263     2097152   8e  Linux LVM

命令(输入 m 获取帮助):w #保存配置
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 6月  16 08:06 /dev/sdb
brw-rw----. 1 root disk 8, 17 6月  16 08:06 /dev/sdb1
brw-rw----. 1 root disk 8, 18 6月  16 08:06 /dev/sdb2
brw-rw----. 1 root disk 8, 19 6月  16 08:06 /dev/sdb3
brw-rw----. 1 root disk 8, 20 6月  16 08:06 /dev/sdb4

注:现在系统已经很智能了, 直接使用默认的 83 Linux分区,也可以创建pv的。

16.2.2.2 创建PV
[root@localhost ~]# pvcreate /dev/sdb[1,2,3,4]
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.
16.2.2.3 产看PV的详细信息
[root@localhost ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name                           #VG name为空,说明还未加入VG
  PV Size               2.00 GiB
  Allocatable           NO  #是否使用:未使用
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               1NmJQX-wcA8-MBNM-p7rs-oLfb-iAH9-K9VhY8
16.2.2.4 创建VG卷组

语法: vgcreate vg名字 pv的名字 备注:可以跟多个PV

[root@localhost ~]# vgcreate vg01 /dev/sdb1 #使用/dev/sdb1创建vg01
  Volume group "vg01" successfully created
[root@localhost ~]# vgs #查看所有vg信息
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <39.00g  4.00m
  vg01     1   0   0 wz--n-  <2.00g <2.00g
[root@localhost ~]# vgdisplay /dev/vg01 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB #PE大小默认为4MB
  Total PE              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / <2.00 GiB
  VG UUID               DdXIqq-Sefk-IjRp-fq54-vYV3-XmFF-Vw8kcj
   
[root@localhost ~]# vgdisplay vg01  #显示vg01详细信息,可以如上使用绝对路径也可以直接使用vg名称
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / <2.00 GiB
  VG UUID               DdXIqq-Sefk-IjRp-fq54-vYV3-XmFF-Vw8kcj
16.2.2.5 创建LV

语法:lvcreate -n 指定新逻辑卷的名称 -L指定lv大小的SIZE(M,G) (-l:小l 指定LE的数量) vg名称

[root@localhost ~]# lvcreate -n lv01 -L 16M vg01 #在VG01上创建大小为16M的lv01
  Logical volume "lv01" created.
[root@localhost ~]# lvcreate -n lv02 -l 4 vg01  #在VG01上创建大小为4个PE的lv02
  Logical volume "lv02" created.
[root@localhost ~]# lvs #查看所有lv信息,因为PE大小为4mb,所以lv01和lv02大小一致
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <35.12g                                                    
  swap centos -wi-ao----  <3.88g                                                    
  lv01 vg01   -wi-a-----  16.00m                                                    
  lv02 vg01   -wi-a-----  16.00m   
[root@localhost ~]# lvdisplay /dev/vg01/lv01 #查看lv01的详细信息
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                2DDOOC-6SrA-T9xG-cqlq-4Ubl-8YtF-MDkR5T
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-06-16 08:39:52 +0800
  LV Status              available
  # open                 0
  LV Size                16.00 MiB
  Current LE             4
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost ~]# lvdisplay /dev/vg01/lv02
  --- Logical volume ---
  LV Path                /dev/vg01/lv02
  LV Name                lv02
  VG Name                vg01
  LV UUID                sBR4JF-4HSa-rdWj-WG2b-jkiz-JZa7-WltI5A
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-06-16 08:44:48 +0800
  LV Status              available
  # open                 0
  LV Size                16.00 MiB
  Current LE             4
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
16.2.2.6 文件系统格式与挂载
[root@localhost ~]# mkdir /lv01 #创建挂载点
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01 #将lv01格式化为XFS文件系统
meta-data=/dev/vg01/lv01         isize=512    agcount=1, agsize=4096 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4096, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/vg01/lv01 /lv01  #将lv01挂载到/lv01目录
[root@localhost ~]# echo "/dev/vg01/lv01 /lv01 xfs defaults 0 0" >> /etc/fstab  #将逻辑卷LV01加入开机自动挂载
[root@localhost ~]# unmount /dev/vg01/lv01
bash: unmount: 未找到命令...
[root@localhost ~]# umount /dev/vg01/lv01 #卸载逻辑卷lv01,测试开机自动挂载是否成功
[root@localhost ~]# mount -a
[root@localhost ~]# df -Th /lv01
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    13M  896K   12M    7% /lv01

16.2.3 指定PE大小

指定PE大小用的参数: -s ,如果存储的数据都是大文件,那么PE尽量调大,读取速度快

[root@localhost ~]# vgcreate -s 16M vg02 /dev/sdb2
  Volume group "vg02" successfully created

PE的大小只有为2的幂数,且最大为512M

[root@localhost ~]# vgdisplay vg02
  --- Volume group ---
  VG Name               vg02
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.98 GiB
  PE Size               16.00 MiB
  Total PE              127
  Alloc PE / Size       0 / 0   
  Free  PE / Size       127 / 1.98 GiB
  VG UUID               NTiQEe-EV0y-AusA-PDxW-omf8-VP7M-qztDNl

16.2.4 LV扩容

首先,确定一下是否有可用的扩容空间,因为空间是从VG里面创建的,并且LV不能跨VG扩容

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  vg01     1   2   0 wz--n-  <2.00g 1.96g
  vg02     1   0   0 wz--n-   1.98g 1.98g

扩容使用命令如下:

扩容逻辑卷

lvextend命令举例:

  1. lvextend -L 30m /dev/vg01/lv01 #将逻辑卷lv01扩容到30M
  2. lvextend L 30m /dev/vg01/lv01 #将逻辑卷lv01扩容30M
  3. lvextend -l 30%free /dev/vg01/lv01 #将vg01卷组剩余空间的30%扩容给lv01
[root@localhost ~]# lvextend -L +30m /dev/vg01/lv01 #为lv01扩容30M
  Rounding size to boundary between physical extents: 32.00 MiB.
  Size of logical volume vg01/lv01 changed from 16.00 MiB (4 extents) to 48.00 MiB (12 extents).
  Logical volume vg01/lv01 successfully resized.
[root@localhost ~]# lvs #产看lv信息,发现逻辑卷lv01已经扩展成功
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <35.12g                                                    
  swap centos -wi-ao----  <3.88g                                                    
  lv01 vg01   -wi-ao----  48.00m                                                    
  lv02 vg01   -wi-a----- 204.00m                                                    
[root@localhost ~]# df -Th /dev/vg01/lv01 #查看文件系统lv01发现大小未变
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    13M  896K   12M    7% /lv01
[root@localhost ~]# xfs
xfs_admin      xfs_estimate   xfsinvutil     xfs_mkfile     xfs_rtcp
xfs_bmap       xfs_freeze     xfs_io         xfs_ncheck     
xfs_copy       xfs_fsr        xfs_logprint   xfs_quota      
xfs_db         xfs_growfs     xfs_mdrestore  xfs_repair     
xfsdump        xfs_info       xfs_metadump   xfsrestore     
[root@localhost ~]# xfs
xfs_admin      xfs_estimate   xfsinvutil     xfs_mkfile     xfs_rtcp
xfs_bmap       xfs_freeze     xfs_io         xfs_ncheck     
xfs_copy       xfs_fsr        xfs_logprint   xfs_quota      
xfs_db         xfs_growfs     xfs_mdrestore  xfs_repair     
xfsdump        xfs_info       xfs_metadump   xfsrestore


注:可以看到LV虽然扩展了,但是文件系统大小还是原来的,下面开始扩容文件系统:

ext4文件系统扩容使用命令语法: resize2fs 逻辑卷名称

xfs文件系统扩容使用命令语法: xfs_growfs 挂载点

resize2fs和xfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用

[root@localhost ~]# xfs_growfs lv01 #扩容文件系统
xfs_growfs: lv01 is not a mounted XFS filesystem
[root@localhost ~]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=1, agsize=4096 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4096, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4096 to 12288
[root@localhost ~]# df -Th /dev/vg01/lv01 #查看发现文件系统扩容成功
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    45M  992K   44M    3% /lv01

如下所示可以通过增加-r参数,直接扩容逻辑卷后完成文件系统扩容,一步到位

[root@localhost ~]# lvextend -L 80M -r /dev/vg01/lv01 #同时扩容逻辑卷和文件系统
  Size of logical volume vg01/lv01 changed from 48.00 MiB (12 extents) to 80.00 MiB (20 extents).
  Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=3, agsize=4096 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=12288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 12288 to 20480
[root@localhost ~]# df -Th /dev/vg01/lv01 #查看发现文件系统也扩容成功
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    77M  1.1M   76M    2% /lv01

16.2.5 VG扩容

查看VG剩余空间

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <39.00g  4.00m
  vg01     1   2   0 wz--n-  <2.00g <1.72g
  vg02     1   0   0 wz--n-   1.98g  1.98g

发现VG剩余空间不够后,开始扩容

[root@localhost ~]# pvcreate /dev/sdb3  #使用sdb3创建新的pv
  Physical volume "/dev/sdb3" successfully created.
[root@localhost ~]# vgextend vg01 /dev/sdb3 #将新的pv添加到vg01中
  Volume group "vg01" successfully extended
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  vg01     2   2   0 wz--n-   3.99g 3.71g   #vg01扩容成功
  vg02     1   0   0 wz--n-   1.98g 1.98g

16.2.6 LVM缩小(实际工作中基本遇不到,尽量避免)

LVM可以动态增加,也可以动态缩小,但是XFS不支持动态缩小,所以我们无法实现基于xfs的动态缩小。btrfs文件系统支持在线缩小

[root@localhost ~]# lvreduce -L -20M /dev/vg01/lv01 #将lv01缩小20M
  WARNING: Reducing active and open logical volume to 60.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/lv01? [y/n]: y    #是否确认缩小
  Size of logical volume vg01/lv01 changed from 80.00 MiB (20 extents) to 60.00 MiB (15 extents).
  Logical volume vg01/lv01 successfully resized. #提示逻辑卷lv01已经缩小成功
[root@localhost ~]# df -h /dev/vg01/lv01 #查看文件系统
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01   77M  1.1M   76M    2% /lv01 #发现文件系统并未缩小
[root@localhost ~]#  lvextend -L 10M -r /dev/vg01/lv01
  Rounding size to boundary between physical extents: 12.00 MiB.
  New size given (3 extents) not larger than existing size (15 extents)

VG的缩减,要保证你的物理卷是否被使用,是因为它无法缩减一个正在使用的PV

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  vg01     2   2   0 wz--n-   3.99g 3.73g
  vg02     1   0   0 wz--n-   1.98g 1.98g
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <39.00g  4.00m
  /dev/sdb1  vg01   lvm2 a--   <2.00g <1.74g
  /dev/sdb2  vg02   lvm2 a--    1.98g  1.98g
  /dev/sdb3  vg01   lvm2 a--   <2.00g <2.00g
  /dev/sdb4         lvm2 ---    2.00g  2.00g
[root@localhost ~]# cp /etc/passwd /lv01
[root@localhost ~]# vgreduce vg01 /dev/sdb1 #测试复制一些测试数据
  Physical volume "/dev/sdb1" still in use  #将sdb1移出失败,因sdb1正在被使用

测试将sdb1上的数据移动到sdb3后再从vg01中删除sdb1

[root@localhost ~]# pvmove /dev/sdb1 /dev/sdb3  #将sdb1上的数据移动到sdb3上
  /dev/sdb1: Moved: 6.06%
  /dev/sdb1: Moved: 22.73%
  /dev/sdb1: Moved: 100.00% #数据移动完毕
[root@localhost ~]# vgreduce vg01 /dev/sdb1 #从vg01中移除sdb1
  Removed "/dev/sdb1" from volume group "vg01"
[root@localhost ~]# pvs #查看pv信息,发现sdb1现在不属于vg01,vg01已经缩减成功
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <39.00g  4.00m
  /dev/sdb1         lvm2 ---    2.00g  2.00g
  /dev/sdb2  vg02   lvm2 a--    1.98g  1.98g
  /dev/sdb3  vg01   lvm2 a--   <2.00g <1.74g
  /dev/sdb4         lvm2 ---    2.00g  2.00g

16.2.7 LVM删除

创建LVM流程:

pvcreate创建pv -> vgcreate创建卷组 -> lvcreate创建逻辑卷 -> mkfs.xfs lv 格式化-> mount挂载

删除LVM流程:

umount卸载 -> lvremove lv移出卷组中所有逻辑卷-> vgremove vg移出卷组-> pvremove 移出pv

[root@localhost ~]# umount /lv01 #卸载/dev/vg01/lv01逻辑卷
[root@localhost ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
  Logical volume "lv01" successfully removed
[root@localhost ~]# vgremove vg01 #删除vg01
Do you really want to remove volume group "vg01" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg01/lv02? [y/n]: y
  Logical volume "lv02" successfully removed
  Volume group "vg01" successfully removed
[root@localhost ~]# vgs 查看vg信息,发现vg01已经删除
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  vg02     1   0   0 wz--n-   1.98g 1.98g
[root@localhost ~]# vgremove vg02
  Volume group "vg02" successfully removed
[root@localhost ~]# pvs #查看pv信息发现所有pv都已经释放
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <39.00g 4.00m
  /dev/sdb1         lvm2 ---    2.00g 2.00g
  /dev/sdb2         lvm2 ---    2.00g 2.00g
  /dev/sdb3         lvm2 ---    2.00g 2.00g
  /dev/sdb4         lvm2 ---    2.00g 2.00g
[root@localhost ~]# pvremove /dev/sdb1 #删除pv
  Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# pvremove /dev/sdb[2,3,4]
  Labels on physical volume "/dev/sdb2" successfully wiped.
  Labels on physical volume "/dev/sdb3" successfully wiped.
  Labels on physical volume "/dev/sdb4" successfully wiped.

16.3 SSM工具介绍

需要安装SSM(system-storage-manager)工具, yum -y install system-storage-manager

语法:

ssm create -s lv大小 -n lv名称 --fstype lv文件系统类型 -p 卷组名 设备 挂载点

自动把设备变成pv,创建vg , lv ,格式化文件系统, 自动挂载

举例:ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb[1-4] /mail-lv

说明:使用sdb1、2、3、4创建pv,然后使用这些PV创建名为名为mail的vg,然后创建名为mail-lv的lv,大小为1G,文件类型为xfs

具体如下所示(因为断网直接使用学神的例子):

[root@xuegod63 ~]#  ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb[1-4] /mail-lv
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.
  Volume group "mail" successfully created
WARNING: ext4 signature detected on /dev/mail/mail-lv at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/mail/mail-lv.
  Logical volume "mail-lv" created.
meta-data=/dev/mail/mail-lv      isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@xuegod63 ~]# df -h  /mail-lv/
文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/mail-mail--lv 1014M   33M  982M    4% /mail-lv

END 2019-6-16 2:35:03