Linux-LVM

LVM:(logical volume manager )逻辑卷管理,功能:动态卷管理功能
老系统弊端:根目录固定化(容量是固定的,极有可能出现容量用完的情况)。
因为之前的老系统(centOS 7之前的版本)根“/”目录是一个标准的分区,那么当根目录空间用完以后,我们只能删除根目录上没有用的文件,来释放一定的空间,让我们的linux可以正常操作。
LVM的基本构成:
一个或多个PV(物理卷)---------->VG(卷组)--------------->一个或多个LV(逻辑卷)
组成 分出

物理卷:物理磁盘存储空间。
VG的总容量等于组成卷组的PV(磁盘)容量之和,VG可以使用自身的容量划分为多个LV来供操作系统使用。我们的Linux从CentOS 7之后才默认使用LVM。

PV:物理卷
PV是组成VG的一个最重要的结构模块,他提供VG存储空间供其使用,并让VG使用由PV 所提供的存储空间创建LV(逻辑卷)。所以PV是LVM的物理组成。

PV的基本信息查询

pvscan			--PV的基本信息查询
结果:
PV /dev/sda2(PV是从哪个磁盘或者分区来)	
VG centos(他所属的VG)	
lvm2 [79.53 GiB / 4.00 MiB free] (PV被使用LVM2的方式进行定义化 总空间 79.53G,还有 4MB可以使用)
Total: 1[79.53 GiB] /in use: 1 [79.53 GiB] /in no VG: 0 [0	](PV上所有的空间已经被使用了(VG:centos))

pvdisplay    --更详细的pv信息详解
--- Physical volume ---
PV Name			/dev/sda2	--PV名称
VG Name			centos		--PV所属的VG
PV Size     	79.53.GiB /not usable  3.00 MiB		--PV的大小 not usable 3.00 MiB (不可用空间3MB)
Allocatable		yes    --分配状态,yes代表可用-空间可分配
PE Size 		4.00 MiB	--PE是组成PV最基本的读写单元,相当于oracle数据块,或者文件系统块。
Total PE 		20360	--一共由20360块
Free PE			1		--现在还可以1块(现在还有一个PE块没有被使用)
Allocated PE 	20359	--已使用 20359块
PV UUID 		ik3n3r-uozJ-IySu-tVft-71I6-cheL-Aq7oGP	--PV的设备唯一编号

echo "20360*4" | bc -l
结果: 81440
echo "81440/1024" | bc -l
结果:79.53125000000000000000

pvdisplay 	-v   
Wiping internal VG cache 	--擦除内被VG缓存
Wiping  cache of LVM -capable devices  --参数支持LVM的设备的缓存
--- Physical volume ---
PV Name			/dev/sda2	--PV名称
VG Name			centos		--PV所属的VG
PV Size     	79.53.GiB /not usable  3.00 MiB		--PV的大小 not usable 3.00 MiB (不可用空间3MB)
Allocatable		yes    --分配状态,yes代表可用-空间可分配
PE Size 		4.00 MiB	--PE是组成PV最基本的读写单元,相当于oracle数据块,或者文件系统块。
Total PE 		20360	--一共由20360块
Free PE			1		--现在还可以1块(现在还有一个PE块没有被使用)
Allocated PE 	20359	--已使用 20359块
PV UUID 		ik3n3r-uozJ-IySu-tVft-71I6-cheL-Aq7oGP	--PV的设备唯一编号

pvdisplay  /dev/sda2		--查询指定的pv,当pv过多的时候,我们可以查询指定的pv

PV的创建和删除
PV既可以使用一块单独的硬盘,也可以使用某个磁盘的分区

fdisk /dev/sdc 创建一个主分区  /dev/sdc1
--创建PV
pvcreate  /dev/sdd
pvcreate /dev/sdc1

--查看PV
pvdisplay -v /dev/sdc	--结果:
Wiping internal VG cache 	
Wiping  cache of LVM -capable devices  
--- Physical volume ---
PV Name			/dev/sdc	
VG Name					
PV Size  		20.00 GiB
Allocatable		NO --因为该PV还没有分配给某个VG
...				...

--删除PV
pvremove  /dev/sdc
pvremove  /dev/sdc1

VG:卷组,他是由PV组成基本的物理存储空间,在该存储空间上可以划分出逻辑空间给LV(逻辑卷使用),所以他是LVM的核心。

1.查看VG的基本信息

vgscan		
结果: Reading volume groups from cache. 	--从VG缓存中读取
      Found volume  group "centos" using metadata type lvm2	
      --找到一个叫centos的VG,该VG的元数据使用LVM2的协议类型。
vgdispaly      --查看VG的详细命令
------------Volume  group-------------
VG Name					centos			--VG名
System ID		
Format 					lvm2			--协议方式
Metadata Areas	 		  1				--元数据域
Metadata Sequeuence No 	  3				--元数据序列号
VG Access				 read/write  	--VG可读写
VG Status				 resizable		--该VG可调整大小
MAX LV					 0				--
Cur LV					 2				--该VG有2个LV
Open LV					 2				--这两个LV都在open状态(可用)
Max  PV					 0				--
Cur PV					 1				--该VG由一个PV组成
Act PV				 	 1				--该PV是活动状态(可用状态)
VG Size 				 79.53 GiB		--VG的大小为79.53G
PE Size 				  4.00 MiB		--PE的大小为4MB
Total PE				 20360			--总共包含20360个PE
Alloc PE/Size			 20359	/ <79.53 GiB  --已分配给VG 20359个PE
Free PE/Size			 1 / 4.00 MiB		  --还有一个PE并未分配(可用)
VG UUID					 gNnmND-uucY-5s5H-ssJJ-qHmc-LyMN-Z&%dkB 
--设备唯一编号

vgdisplay  -v		--查看vg的超详细信息
--Current LE  LE(逻辑单元),一个LE的大小是4MB,其实LE就是将PE进行了逻辑化,某整体程度上说LE就是PE	
      

2.VG的创建和删除

--创建VG
vgcreate  datavg  /dev/sdc         --vgcreate	 VG名称	PV名称
结果: Volume group "datavg" successfully created   --datavg创建成功

--删除VG	:	vgremove  vg名称
 vgremove datavg
 结果:Volume greoup "datavg" successfully removed .

vgdisplay datavg		--查看单独的一个VG
vgdisplay -v datavg		--查看单独的一个VG(带有pv的详细信息)
vgdisplay  -v 			--查看所有的VG

3.VG的扩容与缩容

---VG扩容:	vgextend VG名称	PV名称
vgextend	datavg	/dev/sdd1
 结果:Volume group "datavg" successfully extended  --datavg 扩容成功

--VG缩容:	vgreduce  VG名称		PV名称
vgreduce datavg /dev/sdd1
结果:Removed "/dev/sdd1" from volume group "datavg" --PV /data/sdd1 被从datavg下移除

LV-逻辑卷:逻辑卷指的是从VG上划分逻辑空间供用户使用,使用的前提是LV需要先按照所需的文件系统格式化,然后再去进行目录的挂载,那么上面我们已经提过了,LV的逻辑单元-LE实际上就是PV的物理单元-PE。

1.查看LV信息

lvscan
结果: ACTIVE     '/dev/centos/swap' [<7.63 GiB] inherit  
				  --LV状态是激活状态的,并且使用空间小于7.63G
      ACTIVE    '/dev/centos/root' [<71.90 GiB] inherit
      			 --LV状态是激活状态的,并且使用空间小于71.90G

lvdisplay
结果:
 ------------ logical volume  ----------------
 LV Path 				/dev/centos/swap
 LV Name 				/swap
 VG Name				centos
 LV UUID				eq0jES-nQHg-T7MX-n3W9-n3W9-elan-BdQaAt
 LV Write Access		read/write
 LV Creation host,time oracle,2022-03-06 21:42:07 +0800
 LV Status 				available
 #open					2
 LV Size				<7.63 GiB
 Current LE  			1953
 Segments				1
 Allocation				inherit
 Read ahead sector		auto8192
 - currently set to     8192
 Block device			253:1
  ------------ logical volume  ----------------
 LV Path 				/dev/centos/root
 LV Name 				/root
 VG Name				centos
 LV UUID				G2vqzd-33S2-T7MX-n3W9-n3W9-elan-BdQaAt
 LV Write Access		read/write
 LV Creation host,time oracle,2022-03-06 21:42:07 +0800
 LV Status 				available	
 ...    			 	...

lvdisplay	-v		--查看lv的详细信息

lvdisplay  -v 	/dev/centos/swap 	--查看单独的一个lv
lvdisplay -v 	/dev/centos/root	--查看单独的一个lv
    

2.LV的创建与删除
–LV 空间的分配规则:由于LV是由PV上的PE通过VG经过逻辑化所转化的,所以LE也要遵循PE的大小进行分配,不能将一个完整的PE分隔开。也就是说要遵循PE的整数倍进行空间的划拨与分配。本例中我们的PE大小为4MB,所以我们的LE也得是4MB。如果你不够一个PE分配的话,他也会给你一个完整的PE进行LE的逻辑转化。我们从上面可以看出,我要建立的LV大小为97M,所以他大于96MB(24个PE的大小),但是他小于100M(25个PE大小),所以直接按照25个PE的大小进行PE的分配,最终转换成25个LE也就是100M的空间。

第一种创建LV
定义:lvcreate 	-L		 lv的大小(M|G)		-n		LV的名字		VG名称
lvcreate 	-L 	97M		-n	lv01	datavg
结果显示:Rounding up size to full physical extend 100.00 MiB		
Logical volume "lv01" create.

第二种创建LV:给出他具体LE的数量
定义:lvcreate -l	LE的数量		-n	LV的名字		VG的名称		(这种方式是错误的)

lvcreate -L 25 -n lv01 datavg		--大写的L,是按照空间分配的
Rounding up size to full physical  extend 28.00 MiB
--28M是7个PE,那么这里的25他是按照25M进行计算的,24MB是6个PE)
Logical volume "lv01" create.

lvcreate -l 25 -n lv02 datavg		--小写的l,是按照块来分配的
Logical volume "lv02" create  --直接创建好了,压根没说什么空间的事
--使用lvscan命令查看
lvscan
ACTIVE			'/dev/datavg/lv01' [28.00 MiB] inherit
ACTIVE			'/dev/datavg/lv02' [100.00 MiB] inherit
--这里显示100M,25个LE(PE),说明成功了,说明是小写的l才是有效的

第三种创建LV:lvcreate -l 数字比例(剩余空间)free -n lv名字 vg名称
--根据你所提供的百分比自动分配剩余空间,那么这里代表创建lv后,剩余空间=100%-90%=10%,
也就是说剩余的空闲空间只有原来总空间的10%,而其余90%的空间被拿去建立了lv
lvcreate -l 90%free -n lv02 datavg  --90%是已经利用的空间,10%是空闲空间


--LV删除: 
lvremove 	LV名称	 VG名称  --最常见的错误 vg找不到,然后胡搞
lvremove lv01 datavg
lvremove    vg名称   lv名称  -- 最常见的错误,虽然找到了vg,但是也瞎搞
lvremove  datavg  lv01
--最棒的方式:优先找到各个lv的路径:  lvremove		lv的名称(lv的绝对路径) 进行删除 
lvscan
ACTIVE 		'/dev/datavg/lv02' [96.00 MiB] inherit
ACTIVE 		'/dev/datavg/lv03' [92.00 MiB] inherit
ACTIVE 		'/dev/centos/swap' [7.63 GiB] inherit
ACTIVE 		'/dev/centos/root' [71.90 GiB] inherit
lvremove  /dev/datavg/lv03
结果:DO you rellay want to remove active logical volume datavg/lv03?[y/n]:y
     Logical volume "lv03" successfully remove

LV的使用(XFS文件系统)

绝对路径:/dev/你创建VG的名字/LV的名字

1.先创建一个lv01
lvcreate -L 10G -n lv01 datavg
  Logical volume "lv01" created
2.将创建出来的lv01进行格式化
mkfs.xfs  /dev/datavg/lv01
         lv的名称(绝对路径)
 meta-data=/dev/datavg/lv01		isize=512	agcount=4,agsize=655360 blks
 		  =						secrsz=512	attr=2,projid32bit=1
 		  =						crc=1		finobt=0,sparse=0
 data	  =						bsize=4096  blocks=2621440,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
3.挂载你的LV
在根目录下创建	mkdir /ordata
df -h
Filesystem
/dev/mapper/centos-root		72G			11G		62G		15%		/
devtmpfs					3.9G		0		3.9G	0%      /dev
tmpfs						3.9G		0		3.9G	0%		/dev/shm
tmpfs						3.9G		8.9M	3.9G	1%		/run
tmpfs						3.9G		0		3.9G	0%	/sys/fs/cgroup
/dev/sdb1					100G		33M		100G	1%	/data
/dev/sda1					473M		152M	321M	33%  /boot
tmpfs						799M		12k		799M	1%	 /run/user/42
tmpfs						799M		0		799M	0%	/run/user/0

mount /dev/datavg/lv01		/ordata		--挂载lv
df  -h
Filesystem
/dev/mapper/centos-root		72G			11G		62G		15%		/
devtmpfs					3.9G		0		3.9G	0%      /dev
tmpfs						3.9G		0		3.9G	0%		/dev/shm
tmpfs						3.9G		8.9M	3.9G	1%		/run
tmpfs						3.9G		0		3.9G	0%	/sys/fs/cgroup
/dev/sdb1					100G		33M		100G	1%	/data
/dev/sda1					473M		152M	321M	33%  /boot
tmpfs						799M		12k		799M	1%	 /run/user/42
tmpfs						799M		0		799M	0%	/run/user/0
/dev/mapper/datavg-lv01		10G			33M		10G		1%	/ordata

umount  /ordata		--手动摘除LV
df	-h
Filesystem
/dev/mapper/centos-root		72G			11G		62G		15%		/
devtmpfs					3.9G		0		3.9G	0%      /dev
tmpfs						3.9G		0		3.9G	0%		/dev/shm
tmpfs						3.9G		8.9M	3.9G	1%		/run
tmpfs						3.9G		0		3.9G	0%	/sys/fs/cgroup
/dev/sdb1					100G		33M		100G	1%	/data
/dev/sda1					473M		152M	321M	33%  /boot
tmpfs						799M		12k		799M	1%	 /run/user/42
tmpfs						799M		0		799M	0%	/run/user/0
  
 mount /dev/datavg/lv01		/ordata		--挂载lv
df  -h
Filesystem
/dev/mapper/centos-root		72G			11G		62G		15%		/
devtmpfs					3.9G		0		3.9G	0%      /dev
tmpfs						3.9G		0		3.9G	0%		/dev/shm
tmpfs						3.9G		8.9M	3.9G	1%		/run
tmpfs						3.9G		0		3.9G	0%	/sys/fs/cgroup
/dev/sdb1					100G		33M		100G	1%	/data
/dev/sda1					473M		152M	321M	33%  /boot
tmpfs						799M		12k		799M	1%	 /run/user/42
tmpfs						799M		0		799M	0%	/run/user/0
/dev/mapper/datavg-lv01		10G			33M		10G		1%	/ordata

shutdown -r now
df -h
Filesystem
/dev/mapper/centos-root		72G			11G		62G		15%		/
devtmpfs					3.9G		0		3.9G	0%      /dev
tmpfs						3.9G		0		3.9G	0%		/dev/shm
tmpfs						3.9G		8.9M	3.9G	1%		/run
tmpfs						3.9G		0		3.9G	0%	/sys/fs/cgroup
/dev/sdb1					100G		33M		100G	1%	/data
/dev/sda1					473M		152M	321M	33%  /boot
tmpfs						799M		12k		799M	1%	 /run/user/42
tmpfs						799M		0		799M	0%	/run/user/0

--开机自动挂载LV
vi /etc/fstab
在这个文件中添加:/dev/datavg/lv01		/ordata		xfs		defaults	0 0
			   LV的名称(绝对路径) 	挂载目录		文件格式		默认		默认
保存
shutdown -r now
df -h
Filesystem
/dev/mapper/centos-root		72G			11G		62G		15%		/
devtmpfs					3.9G		0		3.9G	0%      /dev
tmpfs						3.9G		0		3.9G	0%		/dev/shm
tmpfs						3.9G		8.9M	3.9G	1%		/run
tmpfs						3.9G		0		3.9G	0%	/sys/fs/cgroup
/dev/sdb1					100G		33M		100G	1%	/data
/dev/sda1					473M		152M	321M	33%  /boot
tmpfs						799M		12k		799M	1%	 /run/user/42
tmpfs						799M		0		799M	0%	/run/user/0
/dev/mapper/datavg-lv01		10G			33M		10G		1%	/ordata
    

/dev/mapper/datavg-lv01 这个软连接其实就是这个目录/dev/datavg/lv01,然后映射到/dev/dm-2,我们不要去管他。

Linux两大常见的文件系统:

EXT4(CENTOS 6/RHEL 6):EXT4是第四代扩展文件系统(FOURTH EXTENDED FILESYSTEM)是LINUVX下的日志文件系统。是EXT3(CENTOS5 /RHEL5)的升级版本。EXT4比EXT3更加先进,它是一个日志文件系统,意味着他会对文件在磁盘的位置以及任何其他对磁盘记录的更改做到更完善的记录。

ext4系统容量到1EB(1024PB),而单文件容量支持到(16TB)。对一般的工作站,服务器以及个人台式电脑来说是非常重要的,而且他很好的支持了RAID(磁盘阵列)。

ext3只支持32000个子目录,extt4已经测底的取消了限制,理论是实现了无限个子目录。
XFS(CENTOS 7/RHEL 7 以及以后的版本):XFS是一种非常优秀的日志文件系统,他是SGI公司设计的,XFS被业界称为更新进的最具可升级性的文件系统。

XFS很多方面做的比ext4更好,ext4受限于磁盘结构和兼容性问题。某些可扩展性确实不如XFS。另外XFS各种文件锁或者文件内事务锁的细化做的也很到位。

每个XFS文件系统最大支持8EB,单个文件最大16TB。
那么当然了XFS也有缺陷(现阶段),比如说他不能压缩,当大量删除文件的时候性能会很差,目前RHEL 7/CENTOS 7默认的文件系统就是XFS。

LV的使用(EXT4文件系统)

1.创建一个vg
vgcreate data2vg /dev/sdd1
Volume group "data2vg" successfully created

2.创建一个lv
lvcreate -L 10G -n lvext401 data2vg
vgdisplay -v data2vg 
结果发现创建成功了。

3.格式化lv
mkfs.ext4   /dev/data2vg/lvext401
mkdir /ordata2

4.挂载lv
mount 	/dev/data2vg/lvext401 	/ordata2
df -h
结果发现挂载成功

5.开机自动挂载lv
vi /etc/rc.d/rc.local
在这个文件中添加: mount /dev/data2vg/lvext401 /ordata2 保存
shutdown -r now
df -h
结果发现:
...        ...      ...
/dev/mapper/data2vg-lvext401  9.8G 37M  9.2G  1%  /ordata2

6.开机自动挂载lv(第5步的另一种方式)
vi  /etc/fstab
在这个文件中添加:
/dev/mapper/data2vg-lvext401  /ordata2		ext4 	defaults 0 0
保存
shutdown -r now 
df -h
结果发现:
...        ...      ...
/dev/mapper/data2vg-lvext401  9.8G 37M  9.2G  1%  /ordata2


LV的扩容(XFS文件系统)

1.增加LV的容量(动态增加)

第一种lv扩容的方式: lvextend -L 容量(M|G) lv的名称

cd /orafdata
vi 3.txt	--在文件中添加内容(很多内容)

第一种lv扩容的方式: lvextend -L	 容量(M|G)	lv的名称
lvextend -L +2G /dev/datavg/lv01
结果:Size of logical volume datavg/lv01 changed from 10.00 GiB(2560 extents) to 12.00 GiB(3072 extents).
--lv的容量从10G变成了12G
Logical volume datavg/lv01	successfuly resized.

df -h
...					...				...
/dev/mapper/datavg-lv01		10G		33M		10G		1%	/oradata
结果发现lv的容量没有改变

--只执行上一步的话,LV的容量是不会马上改变的,我们还需要让我们的xfs文件系统重新适应一下新的容量,也就是说进行xfs文件系统的数据更新。
--进行xfs文件系统的元数据更新
xfs_growfs   /dev/datavg/lv01
df -h
...   		....			...
/dev/mapper/datavg-lv01 	12G  33M  12G	1% 	/oradata

第二种扩容方式:lvextend -l +指定的LE(PE)个数 lv的名称

lvextend -l		+512	/dev/datavg/lv01	--2G=2048M/4=512
xfs_growfs   	/dev/datavg/lv01			--进行xfs文件系统的元数据更新
df -h
...   		....			...
/dev/mapper/datavg-lv01 	12G  33M  12G	1% 	/oradata

cd /oradata
vi 3.txt --发现文件不受影响

第三种扩容方式:

vgdisplay 	-v 	datavg
结果:
... 		...			...
Total PE/Free PE	5119 / 1535
--扩容
lvextend	-l 5119		/dev/datavg/lv01	
--重新定义你的lv的大小,切记重新定义的值不可以小于当前值。
xfs_growfs		/dev/datavg/lv01

LV的扩容(EXT4文件系统)

--扩容
lvextend	-L	+2G		/dev/data2vg/lvext401	
--给ext4扩容,元数据更新
resize2fs 	/dev/data2vg/lvext401
df -h
...		...		...
/dev/mapper/data2vg-lvext401	12G		41M		12G		1%		/oradata2

LV的缩容(XFS文件系统)
lvreduce -容量(M|G) lv的名称
如果你的LV被格式化成XFS文件系统的话,千万不要执行缩容操作,最好只做扩容操作。LV缩容操作极度危险!!!!!!!

lvreduce -L	-4G		/dev/datavg/lv01  	

LV的缩容(EXT4 文件系统)

cd /oradata2/
vi 1.txt 	--在文件中添加很多内容

EXT4文件系统的缩容:
1.从目录下将 LV卸载
umount  /oradata2
2.检查磁盘的完整性
e2fsck -f /dev/data2vg/lvext401    --检查磁盘的完整性
3.
resize2fs	/dev/data2vg/lvext401  8G
4.操作一下lv
lvreduce -L -4G  /dev/data2vg/lvext401
5.验证
vgdisplay -v  data2vg
df -h
结果显示缩容成功,但是具体缩减的值要根据你的实际情况而定。

缩容很危险,所以我们一般都不要去操作缩容!!!!!!!!

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值