二、Logical Volume Manager,逻辑卷管理
1、LVM机制的基本概念:
PV(物理卷)
VG(卷组)
LV(逻辑卷)
(1)pv 物理卷:
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。
创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(Physical Extent,PE),从而构成物理卷
物理卷一般直接使用设备文件名称,如/dev/sdb1 , /dev/sdb1, /dev/sdd等
对于转换成物理卷的普通分区,建议先使用fdisk工具将分区类型的ID标记号改为“8e”(8e表示LVM逻辑卷),若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再做相对应调整
(2)VG(Volume Group,卷组)
卷组: 由一个或多个物理卷组成一个整体
在卷组中可以动态的添加或移除物理卷
许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自定义
(3)LV(Logical Volume,逻辑卷)
逻辑卷: 逻辑卷建立在卷组之上,与物理卷没有直接关系
对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷
使用mkfs等工具在逻辑卷上创建文件系统以后,就可以挂载到Linux系统中的目录下使用
2、LVM机制的管理:
(1)pvcreate命令——PV物理卷管理
pvcreate用于将分区或整个硬盘转换为物理卷,主要是添加LVM属性并划分PE存储单元
例:[root@localhost ~]# pvcreate /dev/sdd1
(2)pvscan命令——扫描系统中的所有物理卷,并输出相关信息
例:[root@localhost ~]# pvscan
(3)pvdisplay命令——用于显示物理卷的详细信息
例:[root@localhost ~]# pvdisplay /dev/sdd1
(4)pvremove命令——将物理卷还原成普通分区或磁盘,不再用于LVM体系
例:[root@localhost ~]# pvremove /dev/sd[b-c]1
(5)vgcreate命令——用于将一个或多个物理卷创建为一个卷组
例:[root@localhost ~]# vgcreate 123 /dev/sdb1 /dev/sdd1
(6)vgscan命令——用于扫描系统中已建立的LVM卷组及相关信息
(7)vgdisplay命令——用于显示系统中各卷组的详细信息
(8)vgremove命令——用于删除指定的卷组,指定卷组名称作为参数即可
例:vgremove 123
(8)vgextend命令——用于扩展卷组的磁盘空间
当建立了新的物理卷,并需要将其添加到已有的卷组中时,就可以使用vgextend命令
vgextend命令第一个参数为需要扩展容量的卷组名称,其后为需要添加到该卷组中的各物理卷
(9)vgreduce命令——从卷组中删除物理卷
vgreduce指令通过删除LVM卷组中的物理卷来减少卷组容量。
删除删除卷组中丢失的物理卷,使卷组恢复正常状态
(10)lvcreate命令——从指定的卷组中分割空间,以创建新的逻辑卷
需要指定逻辑卷大小,名称和所在的卷组名称作为参数
逻辑卷创建好以后,可以通过“/dev/卷组名/逻辑卷名”形式的设备文件进行访问(或/dev/mapper/卷组名-逻辑卷名)
例:lvcreate -L 10G -n 111 123
(11)lvscan命令——扫描系统中已建立的逻辑卷及相关信息
(12)lvdisplay命令——显示逻辑卷的详细信息
需要指定逻辑卷的设备文件作为参数,也可以使用卷组名作为参数(显示该卷组中的所有逻辑卷信息)
不指定参数则显示所有,同pvdisplay和vgdisplay
(13)lvextend命令——动态扩展逻辑卷的空间,当目前使用的逻辑卷空间不足时,可以从所在卷组中分割额外的空间进行扩展。
需要指定增加的容量大小和逻辑卷文件位置
前提是该卷组中还有尚未分配的磁盘空间,否则需要先扩展卷组容量
挂载文件系统后扩容,需要执行以下命令才能被系统识别
例:[root@localhost ~]# lvextend -L +10G /dev/123/111
(14)lvremove命令——删除指定的逻辑卷
直接使用逻辑卷的设备文件作为参数即可
例:[root@localhost ~]# lvremove /dev/123/111
(15)lvreduce命令——减少LVM逻辑卷占用的空间大小
例:[root@localhost ~]# lvreduce -L -5G /dev/123/111 xfs 只支持扩容,不支持减少
实验:
1、实验准备:
(1)先在虚拟机上添加3块大小为20G的硬盘。重启虚拟机,使得刚加的硬盘能够被识别。
(2)[root@localhost ~]# fdisk -l #########查看添加的硬盘是否被系统识别? 没有的话重新启动虚拟机
(3)将每个实体硬盘分区以及转换格式为后期建虚拟卷做准备。
1、 fdisk /dev/sdb
命令(输入m获取帮助):n
Select (default p) :p #########一路默认设置
命令(输入m获取帮助):t #########进入设置硬盘类型模式
Hex代码(输入L列出所有代码):8e ########将硬盘分区的类型设置为LVM
命令(输入m获取帮助):p ########查看上面的设置是否正确,有误立即回头修改
命令(输入m获取帮助):w #########将上面的设置保存
2、 fdisk /dev/sdc
命令(输入m获取帮助):n
Select (default p) :p #########一路默认设置
命令(输入m获取帮助):t #########进入设置硬盘类型模式
Hex代码(输入L列出所有代码):8e ########将硬盘分区的类型设置为LVM
命令(输入m获取帮助):p ########查看上面的设置是否正确,有误立即回头修改
命令(输入m获取帮助):w #########将上面的设置保存
3、 fdisk /dev/sdd
命令(输入m获取帮助):n
Select (default p) :p #########一路默认设置
命令(输入m获取帮助):t #########进入设置硬盘类型模式
Hex代码(输入L列出所有代码):8e ########将硬盘分区的类型设置为LVM
命令(输入m获取帮助):p ########查看上面的设置是否正确,有误立即回头修改
命令(输入m获取帮助):w #########将上面的设置保存
4、[root@localhost ~]# fdisk -l #########查看上面的设置是否正确,有误立即回头修改
2、实验过程:
(1) 建立物理卷:
1、[root@localhost ~]# pvcreate /dev/sd{b..d}1 ##########将sdb、sdc、sdd变成pv模式,后面有1可以回头看,在上面设置后sdb后面自动加上了
2、pvscan ###########查看上面设置情况
(2)建立卷组:
1、[root@localhost ~]#vgcreate mailbox /dev/sd{b..d}1 ##########建立卷组mailbox
2、vgscan ##############发现目前还没有任何状况 ***没有创建逻辑卷
3、vgdisplay #########查看卷组的详细信息 每个pe大小为4M
(3)建立逻辑卷:
1、[root@localhost ~]#lvcreate -L 25G -n mbox01 mailbox ##########建立第一个逻辑卷mbox01,大小为25G,***此时文件夹可以看到逻辑卷:/dev/mailbox/mbox01
2、[root@localhost ~]#lvcreate -L 15G -n mbox02 mailbox ##########建立第一个逻辑卷mbox02,大小为15G.
3、lvdisplay ##########查看上面设置两个逻辑卷的情况
(3·1)在未挂载的情况下拓展逻辑卷的大小:
1、[root@localhost ~]#lvextend -L +10G /dev/mailbox/mbox01 #########给mbox01的空间拓展10G
2、lvdisplay ##########查看拓展是否成功?(mbox01的空间是否增加10G)
(4)格式化逻辑卷:
1、[root@localhost ~]#mkfs -t xfs /dev/mailbox/mbox01 ##########将前面设置好的逻辑卷1号格式化,为后面的挂载做准备。(要挂载就必须先格式化)
2、[root@localhost ~]#mkfs -t xfs /dev/mailbox/mbox02 ##########将前面设置好的逻辑卷2号格式化,为后面的挂载做准备。
(5)逻辑卷挂载:
1、[root@localhost ~]#mkdir /opt/mbox{1..2} ##########在/opt目录下建立逻辑卷的挂载点 **mbox1** 逻辑卷文件是mbox01
2、[root@localhost ~]#ls /opt/ ##########查 看挂载点创建是否成功?
3、[root@localhost ~]#vim /etc/fstab ##########打开挂载文件系统的配置文件
4、/dev/mailbox/mbox01 /opt/mbox1 xfs defaults 0 0 ##########将逻辑卷文件mbox01*永久*挂载到mbox1下
/dev/mailbox/mbox02 /opt/mbox2 xfs defaults 0 0 ##########将逻辑卷文件mbox02*永久*挂载到mbox2下
4·1、df-Th ##########尚未发现挂载文件系统的出现
5、[root@localhost ~]#mount -a ##########刷新所有挂载文件系统
6、df -Th ##########即可发现前面的挂载文件系统已实现挂载
3、实验拓展:
(1)在已挂载的情况下,再次拓展逻辑卷:
1、[root@localhost ~]#lvextend -L +5G /dev/mailbox/mbox01 ##########和前面的一样照常增加空间
2、df -Th ##########发现目标逻辑卷并没有拓展空间
3、[root@localhost ~]#xfs_growfs /dev/mapper/mailbox-mbox01 ##########重新刷新逻辑卷的文件系统
(2)实现Swap分区拓展:
1、[root@localhost ~]# fdisk /dev/sdd ##########进入sdd的交互模式
2、设备 Boot Start End Blocks Id System ##########将sdd分成sdd1的主分区(83),sdd2的拓展分区(5),再在sdd2里面分出sdd5、sdd6的逻辑分区
/dev/sdd1 2048 20973567 10485760 83 Linux
/dev/sdd2 20973568 41943039 10484736 5 Extended
/dev/sdd5 20975616 31461375 5242880 83 Linux
/dev/sdd6 31463424 41943039 5239808 83 Linux
3、命令(输入 m 获取帮助):t ##########将sdd5的逻辑分区变为Swap分区
分区号 (1,2,5,6,默认 6):5
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
4、命令(输入 m 获取帮助):w ############保存后退出
The partition table has been altered!
5、查看swap分区是否得以拓展:
[root@localhost ~]# cat /proc/meminfo |grep Sw*