逻辑卷管理 - LVM
概述
1.1 特点
1.2 原理图名词解释
2.1 PV - 物理卷
2.2 VG - 卷组
2.3 LV - 逻辑卷
2.4 PE
2.5 关系图 - 原理图管理命令
实战
4.1 案例01 - 创建物理卷、卷组和逻辑卷,格式化,挂载至 /data 目录
4.2 案例02 - /data 目录空间不足,对其使用逻辑卷扩容
4.3 删除逻辑卷、卷组和物理卷
4.4 减少逻辑卷大小容易导致数据丢失概述
LVM (Logical Volume Manager) 即逻辑卷管理。它是Linux环境下对磁盘分区进行管理的一种机制。
它可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。
LVM的工作原理通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取。
而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。例如,增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
1.1 特点
可以对磁盘进行动态管理逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
1.2 原理图
2.名词解释
2.1PV-物理卷
PhysicalVolume
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是RAID,是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
2.2VG-卷组
VolumeGroup
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
2.3LV-逻辑卷
LogicalVolume
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
2.4PE
PhysicalExtendt
每一个物理卷被划分为多个称为PE的基本单元。PE的大小是在创建VG过程中配置的,默认为4MB。
2.5关系图-原理图
3.管理命令
- 实战
4.1 案例01 - 创建物理卷、卷组和逻辑卷,格式化,挂载至 /data 目录
准备两块磁盘,各 100MB
将其中一块磁盘,划分两个主分区,并建立物理卷
新建卷组,并将两个物理卷加入卷组
创建逻辑卷,将已建的卷组空间全部分给逻辑卷
格式化逻辑卷,并挂载到 /data 目录
实现 开机自动挂载
# 第一步: 添加两块100MB的磁盘,需要重启才能生效
# 第二步: 给某一磁盘进行分区
fdisk /dev/sdb
[root@machine-for-class ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Mar 22 14:40 /dev/sdb
brw-rw---- 1 root disk 8, 17 Mar 22 14:40 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Mar 22 14:40 /dev/sdb2
# 第三步: 对磁盘分区创建物理卷
[root@machine-for-class ~]# pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
# 第四步: 创建卷组 ,并将物理卷加入卷组
[root@machine-for-class ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
Volume group "vg01" successfully created
[root@machine-for-class ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.51g 0
vg01 2 0 0 wz--n- 96.00m 96.00m
[root@machine-for-class ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 96.00 MiB
PE Size 4.00 MiB
Total PE 24
Alloc PE / Size 0 / 0
Free PE / Size 24 / 96.00 MiB
VG UUID sEwqUc-wJvm-aWbt-KQpE-wkA1-mg6q-4GXJns
# 第五步: 创建逻辑卷,将卷组所有空间给逻辑卷
[root@machine-for-class ~]# lvcreate -n lv01 -L +96M vg01
Logical volume "lv01" created.
[root@machine-for-class ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
root centos -wi-ao---- <17.51g
swap centos -wi-ao---- 2.00g
lv01 vg01 -wi-a----- 96.00m
# 第六步: 格式化-创建文件系统,挂载至 /data 目录
[root@machine-for-class ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=6144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=24576, imaxpct=25
4.2 案例02 - /data 目录空间不足,对其使用逻辑卷扩容
将另一块磁盘创建为 物理卷
将 新的物理卷加入 卷组,即卷组扩容
给 逻辑卷 扩容
检测确认是否生效
= 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@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@machine-for-class ~]# mount /dev/vg01/lv01 /data
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg01-lv01 93M 5.1M 88M 6% /data
# 第七步: 配置 /etc/fstab 文件,实现自动挂载
案例02 - /data 目录空间不足,对其使用逻辑卷扩容
将另一块磁盘创建为 物理卷
将 新的物理卷加入 卷组,即卷组扩容
给 逻辑卷 扩容
检测确认是否生效
# 第一步: 将 另一块磁盘创建为物理卷
[root@machine-for-class ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@machine-for-class ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 0
/dev/sdb1 vg01 lvm2 a-- 48.00m 0
/dev/sdb2 vg01 lvm2 a-- 48.00m 0
/dev/sdc lvm2 --- 102.00m 102.00m
# 第二步: 扩容卷组
[root@machine-for-class ~]# vgextend vg01 /dev/sdc
Volume group "vg01" successfully extended
[root@machine-for-class ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.51g 0
vg01 3 1 0 wz--n- 196.00m 100.00m
[root@machine-for-class ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 196.00 MiB
PE Size 4.00 MiB
Total PE 49
Alloc PE / Size 24 / 96.00 MiB
Free PE / Size 25 / 100.00 MiB
VG UUID sEwqUc-wJvm-aWbt-KQpE-wkA1-mg6q-4GXJns
# 第三步: 给 逻辑卷扩容
[root@machine-for-class ~]# lvextend -r -L +100M /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 96.00 MiB (24 extents) to 196.00
MiB (49 extents).
Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=6144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=24576, 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 24576 to 50176
## lvextend -r -l +100%FREE lv_name
##
# 第四步: 检测确认
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg01-lv01 193M 5.3M 188M 3% /data
4.3 删除逻辑卷、卷组和物理卷
# 01: 取消挂载
[root@machine-for-class ~]# umount /data
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
# 02: 移除逻辑卷
[root@machine-for-class ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@machine-for-class ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
root centos -wi-ao---- <17.51g
swap centos -wi-ao---- 2.00g
[root@machine-for-class ~]#
# 03: 移除卷组
[root@machine-for-class ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@machine-for-class ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.51g 0
# 04: 移除物理卷
[root@machine-for-class ~]# pvremove /dev/sdc /dev/sdb1 /dev/sdb2
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdb2" successfully wiped.
[root@machine-for-class ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 0
4.4 减少逻辑卷大小容易导致数据丢失