LVM 逻辑卷管理(实战篇)

前言

环境:centos7.9
本篇来实际操作lvm逻辑卷管理,从新加硬盘开始讲解。

添加2块磁盘

在这里插入图片描述

[root@localhost ~]# lsblk						#发现系统没有识别我们的2块硬盘
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   12G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   11G  0 part 
  ├─cl-root 253:0    0  9.8G  0 lvm  /
  └─cl-swap 253:1    0  1.2G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom 
[root@localhost ~]# init 6						#重启吧
[root@localhost ~]# lsblk						#重启系统后发现系统已经识别到新加的2块硬盘了
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   12G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   11G  0 part 
  ├─cl-root 253:0    0  9.8G  0 lvm  /
  └─cl-swap 253:1    0  1.2G  0 lvm  [SWAP]
sdb           8:16   0    8G  0 disk 			#新加的8G的硬盘
sdc           8:32   0    6G  0 disk 			#新加的6G的硬盘
sr0          11:0    1 1024M  0 rom  

创建PV(pvcreate 命令、pvs命令、pvdisplay命令、pvscan命令)

pvcreate:将一个或多个磁盘或分区转化为pv物理卷,其内部就是将磁盘或分区转化为一个个PE,所以磁盘或分区最好是没有数据的,不然数据就会丢失
pvs:查看pv的信息,信息简单明了
pvdisplay:查看pv的信息,信息内容更加详细
pvscan:查看pv的信息

创建PV

创建PV有两种方式:基于磁盘创建、 基于分区创建。

1、基于磁盘的 ,就不需要划分分区 ,直接通过 pvcreate 来创建物理卷即可;
2、基于分区的 ,需要事先通过fdisk划分分区 ,并将分区格式转化为8e(8e表示的就是Linux lvm),分区不要mkfs格式化 ,然后再进行 pvcreate 来创建物理卷即可 。
[root@localhost ~]# pvcreate  /dev/sdb /dev/sdc      	#直接将两块磁盘转化为物理卷pv
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# pvs						#查看系统中有哪些pv,使用pvdisplay、pvscan可以看的更加详细
  PV         VG Fmt  Attr PSize  PFree
  /dev/sda2  cl lvm2 a--  11.00g 4.00m		#这个PV是安装centos时默认的lvm分区时创建的,可以看出它已经加入到了名为cl的VG中了,而且它的可用空间只有4.00m了
  /dev/sdb      lvm2 ---   8.00g 8.00g		#成功将sdb创建为PV了,这时它还没加入到任何的vg中去
  /dev/sdc      lvm2 ---   6.00g 6.00g		#成功将sdb创建为PV了,这时它还没加入到任何的vg中去
[root@localhost ~]# 

vgcreate创建卷组vg

[root@localhost ~]# vgcreate my_data /dev/sdb /dev/sdc	#创建一个名称为my_data的卷组,并把/dev/sdb /dev/sdc加入到卷组
  Volume group "my_data" successfully created
[root@localhost ~]# 
[root@localhost ~]# pvs									#查看pv就发现2块磁盘的已经属于my_data的卷组了
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  cl      lvm2 a--  11.00g 4.00m
  /dev/sdb   my_data lvm2 a--   8.00g 8.00g
  /dev/sdc   my_data lvm2 a--   6.00g 6.00g
[root@localhost ~]# 

lvcreate创建逻辑卷lv

[root@localhost ~]# vgs my_data							#先查看my_data的卷组还有多少空间
  VG      #PV #LV #SN Attr   VSize  VFree
  my_data   2   1   0 wz--n- 13.99g 13.99g
[root@localhost ~]# 
[root@localhost ~]# lvcreate -n lv_data -L 6G  my_data	#在名为my_data的卷组上创建一个叫lv_data的逻辑卷,大小为6G
  Logical volume "lv_data" created.
[root@localhost ~]# 
[root@localhost ~]# lvs									#查看刚才创建的lv,即lv_data
  LV      VG      Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    cl      -wi-ao---- 9.79g                                                    
  swap    cl      -wi-ao---- 1.20g                                                    
  lv_data my_data -wi-a----- 6.00g                                                    
[root@localhost ~]# 

mkfs格式化逻辑卷并创建文件系统

[root@localhost ~]# mkfs.xfs  /dev/my_data/lv_data 
meta-data=/dev/my_data/lv_data   isize=512    agcount=4, agsize=393216 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1572864, 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

mount挂载

[root@localhost ~]# mkdir /lv_data								#创建挂载点
[root@localhost ~]# mount /dev/my_data/lv_data  /lv_data		#挂载
[root@localhost ~]# df -Th										#查看磁盘信息
Filesystem                  Type      Size  Used Avail Use% Mounted on
/dev/~/my_data-lv_data xfs       6.0G   33M  6.0G   1% /lv_data
[root@localhost ~]# echo '/dev/my_data/lv_data     /lv_data     xfs    defaults        0 0' >> /etc/fstab   #永久挂载
[root@localhost ~]# mount -a			#测试/etc/fstab文件挂载是否有问题

阶段小结

1、添加新硬盘(不需要分区)或者创建一个是8e的Linux lvm分区(不需要格式化);
2、pvcreate  /dev/sdb							#创建物理卷,即将sdb转化为物理卷,参数可以是多个
3、pvs 、pvscan、pvdisplay						#查看有哪些物理卷
4、vgcreate -n vg_my_data  /dev/sdb				#创建一个名称为vg_my_data的卷组,并把/dev/sdb加入
5、vgs、vgscan、vgdisplay 						#查看有哪些卷组
6、lvcreate -n lv_data -L 6G vg_my_data			#在名为vg_my_data的卷组上创建一个叫lv_data的逻辑卷,大小为6G
7、lvs、lvdisplay、lvscan						#查看有哪些逻辑卷
8、mkfs.xfs  /dev/vg_my_data/lv_data			#格式化并此案文件系统
9、mkdir /data  && mount /dev/vg_my_data/lv_data /data								#挂载就可以使用了
10、echo '/dev/my_data/lv_data  /lv_data   xfs   defaults   0 0' >> /etc/fsta		#设置永久挂载
10、df -Th 										#检查

lvextend 逻辑卷扩容

lvextend可以在线扩容逻辑卷,不需要关闭,也不需要停服务。

[root@localhost ~]# lvextend -L +1G /dev/my_data/lv_data				#命令三、-L参数直接指定扩容大小,最常用
[root@localhost ~]# lvextend -l +100%FREE /dev/my_data/lv_data			#命令一、直接将vg中全部可用空间给lv扩容,比较常用
[root@localhost ~]# lvextend  -l +25 /dev/my_data/lv_data				#命令二、指定LE的个数来扩容,如果1个LE的大小是4MB,那么这个就是增加100MB
[root@localhost ~]# lvs && df -Th						#查看逻辑卷发现其实增大了空间,但是df查看文件系统发现,文件系统没有增大空间,这说明文件系统感知不到逻辑卷的增大。
[root@localhost ~]# xfs_growfs  /dev/my_data/lv_data 	#使用xfs_growfs 命令扩展xfs文件系统
[root@localhost ~]# resize2fs  /dev/my_data/lv_data 	#使用resize2fs 命令扩展ext4文件系统
[root@localhost ~]# df -Th								#查看文件系统发现真的增大了,扩容完成

vgextend 卷组扩容

卷组扩容其实就是新加一个磁盘或分区,转换为pv,然后把磁盘或分区加入卷组中即可。

[root@localhost ~]# lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdd                 8:48   0    2G  0 disk 				#这是我们新增加的磁盘sdd
sr0                11:0    1  4.1G  0 rom  
[root@localhost ~]# fdisk /dev/sdd 						#对磁盘进行分区(实际可以不用分区也行)
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.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf521342a.
Command (m for help): n									#输入n表示创建一个分配
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p									#分区类型为主分区
Partition number (1-4, default 1): 						#分区编号默认1
First sector (2048-4194303, default 2048): 				#其实块保持默认
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 	#最大块保持默认,默认会全部划为
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): t									#输入t表示改变分区格式
Hex code (type L to list all codes): 8e					#输入8e表示为分区格式Linux LVM
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w									#输入w表示保存所有更改,更改将被写入磁盘
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# df -h								#查看文件系统,这里肯定看不到,因为我们的磁盘分区还没格式化成文件系统
Filesystem                   Size  Used Avail Use% Mounted on
/dev/~/cl-root          9.8G 1021M  8.8G  11% /
devtmpfs                     1.9G     0  1.9G   0% /dev
tmpfs                        1.9G     0  1.9G   0% /dev/shm
tmpfs                        1.9G  8.6M  1.9G   1% /run
tmpfs                        1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                   1014M  139M  876M  14% /boot
/dev/~/my_data-lv_data   14G   33M   14G   1% /lv_data
tmpfs                        378M     0  378M   0% /run/user/0
[root@localhost ~]# lsblk								#查看系统中的磁盘
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdd                 8:48   0    2G  0 disk 
└─sdd1              8:49   0    2G  0 part 				#已经成功创建了sdd1分区
sr0                11:0    1  4.1G  0 rom  
[root@localhost ~]# pvcreate  /dev/sdd1 				#将/dev/sdd1标准分区转化为物理卷
  Physical volume "/dev/sdd1" successfully created.
[root@localhost ~]# pvs									#查看系统中有哪些物理卷
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  cl      lvm2 a--  11.00g 4.00m
  /dev/sdb   my_data lvm2 a--   8.00g    0 
  /dev/sdc   my_data lvm2 a--   6.00g    0 
  /dev/sdd1          lvm2 ---   2.00g 2.00g				#这就是我们新加的物理卷
[root@localhost ~]# vgextend my_data /dev/sdd1			#扩容my_data卷组,即把/dev/sdd1加入my_data卷组
  Volume group "my_data" successfully extended
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  cl      lvm2 a--  11.00g 4.00m
  /dev/sdb   my_data lvm2 a--   8.00g    0 
  /dev/sdc   my_data lvm2 a--   6.00g    0 
  /dev/sdd1  my_data lvm2 a--   2.00g 2.00g				#/dev/sdd1已成功加入my_data卷组,my_data卷组扩容成功
[root@localhost ~]# 

lvremove删除逻辑卷

[root@localhost ~]# umount  /dev/~/my_data-lv_data			#删除一个lv之前必须先卸载文件系统
[root@localhost ~]# lvremove /dev/my_data/lv_data				#删除逻辑卷
Do you really want to remove active logical volume my_data/lv_data? [y/n]: y
  Logical volume "lv_data" successfully removed
[root@localhost ~]# lvs											#检查发现,lv_data逻辑卷已经被删除了
  LV   VG Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root cl -wi-ao---- 9.79g                                                    
  swap cl -wi-ao---- 1.20g                                                    
[root@localhost ~]# 

vgreduce 删除卷组中的某个pv

[root@localhost ~]# vgreduce my_data /dev/sdd1					#删除my_data卷组中的sdd1物理卷
  Removed "/dev/sdd1" from volume group "my_data"
[root@localhost ~]# pvs											#查看物理卷
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  cl      lvm2 a--  11.00g 4.00m
  /dev/sdb   my_data lvm2 a--   8.00g    0 
  /dev/sdc   my_data lvm2 a--   6.00g    0 
  /dev/sdd1          lvm2 ---   2.00g 2.00g						#sdd1不属于任何卷组
[root@localhost ~]# 

vgremove 删除卷组

[root@localhost ~]# vgremove  my_data							#删除整个卷组
Do you really want to remove volume group "my_data" containing 1 logical volumes? [y/n]: n
  Volume group "my_data" not removed
[root@localhost ~]# 

pvremove 删除物理卷

[root@localhost ~]# pvremove /dev/sdd1							#删除物理卷
  Labels on physical volume "/dev/sdd1" successfully wiped.
[root@localhost ~]#

小结

1、 lvextend 命令逻辑卷扩容
[root@localhost ~]#  lvextend -L +1G /dev/my_data/lv_data			#命令三、-L参数直接指定扩容大小,最常用
[root@localhost ~]# lvextend -l +100%FREE /dev/my_data/lv_data		#命令一、直接将vg中全部可用空间给lv扩容,比较常用
[root@localhost ~]# lvextend  -l +25 /dev/my_data/lv_data			#命令二、指定LE的个数来扩容,如果1个LE的大小是4MB,那么这个就是增加100MB
[root@localhost ~]# xfs_growfs  /dev/my_data/lv_data 		#使用xfs_growfs 命令扩展xfs文件系统
[root@localhost ~]# resize2fs  /dev/my_data/lv_data 		#使用resize2fs 命令扩展ext4文件系统
	
2、vgextend 卷组扩容
[root@localhost ~]# fdisk /dev/sdd					#将sdd分区,分区格式为Linux LVM,即8e
[root@localhost ~]# pvcreate  /dev/sdd1 			#将/dev/sdd1标准分区转化为物理卷
[root@localhost ~]# vgextend my_data /dev/sdd1		#扩容my_data卷组,即把/dev/sdd1加入my_data卷组
	
3、vgreduce 删除卷组中的某个pv
[root@localhost ~]# vgreduce my_data /dev/sdd1		#删除my_data卷组中的sdd1物理卷
	
4、vgremove 删除卷组
[root@localhost ~]# vgremove  my_data				#删除整个卷组
	
5、pvremove 删除物理卷
[root@localhost ~]# pvremove /dev/sdd1				#删除物理卷
  • 15
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值