理论知识图片盗用其他博主的,我只做实操
转载地址:一张图让你学会LVM
随着科技的进步,人们不知不觉的就进入了大数据的时代,数据的不断增加我们发现我们的磁盘越来越不够用了,接下来就是令人头疼的事情--加硬盘,数据的备份与还原。LVM就是Linux下专门针对我们数据的不断的扩大,在原有动态磁盘的基础上动态的调整磁盘的大小,LVM动态卷管理,一张图片让你深入了解lvm的使用。 |
LVM——Logical Volume Manager
LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。
四个概念:
①PE(Physical Extend) 物理拓展
②PV(Physical Volume) 物理卷
③VG(Volume Group) 卷组
④LV(Logical Volume) 逻辑卷
特点:
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!
工作原理:
(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
操作:
1、查看:
pes、pedisplay 查看pe的大小(pes==pescan) pvs、pvdisplay 查看物理卷 vgs、vgdisplay、 查看卷组 lvs、lvdisplay、 查看逻辑卷 fdisk -L 查看磁盘分区
2、创建:
pvcreate 设备路径 创建物理卷 vgcreate 名字 pv路径 创建卷组 lvcreate -n 名字 -L 大小 vg名 创建逻辑卷 格式化:mkfs.ext4 lv完整路径 格式化逻辑卷(mkfs.文件系统格式或-t 文件系统格式) 挂载:mount lv完整路径 挂载点 挂载使用(可以使用/etc/fstab或autofs)
3、逻辑卷删除:
1.卸载:umount 2.删lv:lvremove lv完整路径 3.删vg:vgremove vg名 4.删PV:pvremove 设备完整路径 去硬盘
4、逻辑卷扩展:
1.扩展pv:相当于创建pv 2.扩展vg: vgextend vg名 新增pv路径 3.扩展lv: lvextend -L +扩展量 lv完整名 4.刷新文件系统:resize2fs lv完整路径 注意:灵活运用,看实际情况,注意顺序 (支持在线操作)
5、逻辑卷的缩小:
1.首先进行卸载 umount 检查文件系统:e2fsck -f lv完整路径 2.减少文件系统:resize2fs lv完整路径 减少到的大小 3.减少lv卷大小:lvreduce -L -减少量的大小 lv的完整路径 4.挂载使用 减小需谨慎,文件系统的减小后大小一定要和lv卷最终大小相等
-----------------------------------
环境准备:9G扩展区,分成1G,2G,512M,3个磁盘分区/dev/sda5,/dev/sda6,/dev/sda7,同时准备一个另外的单独磁盘5G
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a27a9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 131 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 131 769 5120000 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3 769 1406 5120000 83 Linux
/dev/sda4 1406 2611 9681920 5 Extended
/dev/sda5 1406 1537 1056321 8e Linux LVM
/dev/sda6 1538 1799 2104483+ 8e Linux LVM
/dev/sda7 1800 1865 530113+ 8e Linux LVM
#创建物理卷
[root@markcoven ~]# pvcreate /dev/sd{5,6,7}
Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created
Physical volume "/dev/sda7" successfully created
#查看
[root@markcoven ~]# pvscan
PV /dev/sda5 lvm2 [1.01 GiB]
PV /dev/sda6 lvm2 [2.01 GiB]
PV /dev/sda7 lvm2 [517.69 MiB]
Total: 3 [3.52 GiB] / in use: 0 [0 ] / in no VG: 3 [3.52 GiB]
#创建物理卷组:先创建要给物理卷组名:vg_mark_test0315_1,用PV:/dev/sda5,和一个vg_mark_test0315_2 ,用PV /dev/sda6
[root@markcoven ~]# vgcreate vg_mark_test0315_1 /dev/sda5
Volume group "vg_mark_test0315_1" successfully created
[root@markcoven ~]# vgcreate vg_mark_test0315_2 /dev/sda6
Volume group "vg_mark_test0315_2" successfully created
#查看
[root@markcoven ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_mark_test0315_2" using metadata type lvm2
Found volume group "vg_mark_test0315_1" using metadata type lvm2
[root@markcoven ~]# vgdisplay
--- Volume group ---
VG Name vg_mark_test0315_2
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 513
Alloc PE / Size 0 / 0
Free PE / Size 513 / 2.00 GiB
VG UUID 4p3plK-F3It-61W5-5P5I-R7O1-TPem-3w6Vbq
--- Volume group ---
VG Name vg_mark_test0315_1
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.00 GiB
PE Size 4.00 MiB
Total PE 257
Alloc PE / Size 0 / 0
Free PE / Size 257 / 1.00 GiB
VG UUID Z39dAA-DnNk-yC06-fxhb-Bj5u-zTHK-PojZI5
##创建3个逻辑卷,lv_mark_test1,lv_mark_test2,lv_mark_test3, lv1逻辑卷挂载到物理卷组vg1上,lv2,lv3挂载到物理卷vg2上,分别分配空间 lv1 100M lv2 1.5G,lv3 200M
[root@markcoven ~]# lvcreate -L 100M -n lv_mark_test1 vg_mark_test0315_1
Logical volume "lv_mark_test1" created.
[root@markcoven ~]# lvcreate -L 1.5G -n lv_mark_test2 vg_mark_test0315_2
Logical volume "lv_mark_test2" created.
[root@markcoven ~]# lvcreate -L 200M -n lv_mark_test3 vg_mark_test0315_2
Logical volume "lv_mark_test3" created.
[root@markcoven ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_mark_test0315_2/lv_mark_test2
LV Name lv_mark_test2
VG Name vg_mark_test0315_2
LV UUID CtnpMx-aLp8-92eb-wbnH-h65V-i3bh-xk6YB3
LV Write Access read/write
LV Creation host, time markcoven, 2019-03-15 15:08:03 +0800
LV Status available
# open 0
LV Size 1.50 GiB
Current LE 384
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/vg_mark_test0315_2/lv_mark_test3
LV Name lv_mark_test3
VG Name vg_mark_test0315_2
LV UUID 10fUXr-1dY2-jIOk-9XKe-8Md1-c51g-Mb7A8x
LV Write Access read/write
LV Creation host, time markcoven, 2019-03-15 15:09:34 +0800
LV Status available
# open 0
LV Size 200.00 MiB
Current LE 50
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
--- Logical volume ---
LV Path /dev/vg_mark_test0315_1/lv_mark_test1
LV Name lv_mark_test1
VG Name vg_mark_test0315_1
LV UUID dh01p2-0u5C-XsDe-pWXp-4dQ1-0EGE-cn5dDu
LV Write Access read/write
LV Creation host, time markcoven, 2019-03-15 15:05:58 +0800
LV Status available
# open 0
LV Size 100.00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test2' [1.50 GiB] inherit
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [200.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [100.00 MiB] inherit
对如果想使用则需要先格式化,mk.ext4或(mount -t ext4 )格式化后就可以挂载使用了,如果是扩展则需要先备份数据,后卸载,再扩展和缩减,我就不挂载和格式化了,就坐下扩展和缩减逻辑卷和物理卷组
######
####1),将vg2剩余部分给lv3
######
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test2' [1.50 GiB] inherit
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [200.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [100.00 MiB] inherit
[root@markcoven ~]# lvextend -l +100%FREE /dev/vg_mark_test0315_2/lv_mark_test3
Size of logical volume vg_mark_test0315_2/lv_mark_test3 changed from 200.00 MiB (50 extents) to 516.00 MiB (129 extents).
Logical volume lv_mark_test3 successfully resized.
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test2' [1.50 GiB] inherit
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [100.00 MiB] inherit
##已经扩容成功,现将物理卷p3加入到vg2中
[root@markcoven ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_mark_test0315_2" using metadata type lvm2
Found volume group "vg_mark_test0315_1" using metadata type lvm2
[root@markcoven ~]# vgextend vg_mark_test0315_2 /dev/sda7
Volume group "vg_mark_test0315_2" successfully extended
[root@markcoven ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_mark_test0315_2" using metadata type lvm2
Found volume group "vg_mark_test0315_1" using metadata type lvm2
[root@markcoven ~]# pvscan
PV /dev/sda6 VG vg_mark_test0315_2 lvm2 [2.00 GiB / 0 free]
PV /dev/sda7 VG vg_mark_test0315_2 lvm2 [516.00 MiB / 516.00 MiB free]
PV /dev/sda5 VG vg_mark_test0315_1 lvm2 [1.00 GiB / 928.00 MiB free]
Total: 3 [3.51 GiB] / in use: 3 [3.51 GiB] / in no VG: 0 [0 ]
###现在vg2中挂载了2块pv,vg1挂一块pv,要求现在将lv2从vg2中卸载下来挂载到vg1中大小为50M,lv1从vg1中扩展得到剩余的vg1的大小,将lv3缩小至100M
[root@markcoven ~]# lvremove /dev/vg_mark_test0315_2/lv_mark_test2
Do you really want to remove active logical volume lv_mark_test2? [y/n]: y
Logical volume "lv_mark_test2" successfully removed
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [100.00 MiB] inherit
##这里的vg_mark_test0315_1 也可以写成绝对路径/dev/vg_mark_test0315_1
[root@markcoven ~]# lvcreate -L 50M -n lv_mark_test2_2 vg_mark_test0315_1
Rounding up size to full physical extent 52.00 MiB
Logical volume "lv_mark_test2_2" created.
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [100.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test2_2' [52.00 MiB] inherit
##这里是52M因为pe的最小单元是4M所以必须是整数倍
[root@markcoven ~]# lvextend -l +100%FREE /dev/lv_mark_test1
Path required for Logical Volume "lv_mark_test1".
Please provide a volume group name
Run `lvextend --help' for more information.
[root@markcoven ~]# lvextend -l +100%FREE /dev/vg_mark_test0315_1/lv_mark_test1
Size of logical volume vg_mark_test0315_1/lv_mark_test1 changed from 100.00 MiB (25 extents) to 976.00 MiB (244 extents).
Logical volume lv_mark_test1 successfully resized.
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [976.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test2_2' [52.00 MiB] inherit
##lvextend后面最好是跟绝对路径的逻辑卷路径,单个路径不生效
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [144.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test2_2' [52.00 MiB] inherit
[root@markcoven ~]# lvreduce -L -800M /dev/vg_mark_test0315_1/lv_mark_test1
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_mark_test0315_1/lv_mark_test1? [y/n]: y
Size of logical volume vg_mark_test0315_1/lv_mark_test1 changed from 976.00 MiB (244 extents) to 100.00 MiB (25 extents).
Logical volume lv_mark_test1 successfully resized.
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test1' [100.00 MiB] inherit
ACTIVE '/dev/vg_mark_test0315_1/lv_mark_test2_2' [52.00 MiB] inherit
####现在删除掉,因为lv 1,2 都在物理卷组1上,先删除lv1,lv2,再卸载vg1
[root@markcoven ~]# lvremove -y /dev/vg_mark_test0315_1/lv_mark_test1
Logical volume "lv_mark_test1" successfully removed
[root@markcoven ~]# lvremove -y /dev/vg_mark_test0315_1/lv_mark_test2_2
Logical volume "lv_mark_test2_2" successfully removed
[root@markcoven ~]# lvscan
ACTIVE '/dev/vg_mark_test0315_2/lv_mark_test3' [516.00 MiB] inherit
[root@markcoven ~]# vgremove vg_mark_test0315_1
Volume group "vg_mark_test0315_1" successfully removed
[root@markcoven ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_mark_test0315_2" using metadata type lvm2
[root@markcoven ~]# pvscan
PV /dev/sda6 VG vg_mark_test0315_2 lvm2 [2.00 GiB / 1.50 GiB free]
PV /dev/sda7 VG vg_mark_test0315_2 lvm2 [516.00 MiB / 516.00 MiB free]
PV /dev/sda5 lvm2 [1.01 GiB]
Total: 3 [3.52 GiB] / in use: 2 [2.51 GiB] / in no VG: 1 [1.01 GiB]
[root@markcoven ~]# pvremove /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped
[root@markcoven ~]# pvscan
PV /dev/sda6 VG vg_mark_test0315_2 lvm2 [2.00 GiB / 1.50 GiB free]
PV /dev/sda7 VG vg_mark_test0315_2 lvm2 [516.00 MiB / 516.00 MiB free]
Total: 2 [2.51 GiB] / in use: 2 [2.51 GiB] / in no VG: 0 [0 ]
###