LVM 逻辑卷管理
1.pv,vg,lv,pe
pv(physical volume) 物理卷:被处理过的物理分区(物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区)
vg(volume group) 物理卷组 (卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组)
lv(logical volume) 逻辑卷:建立后可以动态扩展和缩小空间
pe(physical extent) 物理扩展区域:man vgcreate 查看大小的参数-s(物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe的大小)
lv=pe*n倍,是pe的整数倍
2.LVM建立
2-1.划分物理分区并把分区id修改为8e,划分分区祥见设备分区
Command (m for help): t ##修改分区id为8e
保存分区,并再次进行手动同步分区表
(强制)格式化设备/dev/vdb
两个命令窗口:一个监控,一个操作
watch -n 1 'pvs;vgs;lvs;df -h /mnt' ##监控命令
2-2.创建物理卷、卷组、逻辑卷
pvcreate /dev/vdb1 ##创建物理卷
vgcreate vg0 /dev/vdb1 ##创建卷组:创建了一个名为vg0的卷组,该卷组包含/dev/vdb1一个物理卷
lvcreate -L 100M -n lv0 vg0 ##创建逻辑卷:在卷组vg0上创建一个名为lv0的逻辑卷,大小为100M,其设备接口为/dev/vg0/lv0
mkfs.xfs /dev/vg0/lv0 ##格式化该设备
mount /dev/vg0/lv0 /mnt/ ##挂载设备
步骤:
[root@localhost ~]# pvcreate /dev/vdb1 ##创建物理卷/dev/vdb1
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n] y
Wiping xfs signature on /dev/vdb1.
Physical volume "/dev/vdb1" successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1 ##创建了一个名为vg0的卷组,该卷组包含/dev/vdb1一个物理卷
Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0
Logical volume "lv0" created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/
2-3.说明:
/dev/vg0/lv0<=>/dev/mapper/vg0-lv0
[root@localhost ~]# ll /dev/vg0/lv0
lrwxrwxrwx. 1 root root 7 May 4 22:58 /dev/vg0/lv0 -> ../dm-0
[root@localhost ~]# ll /dev/mapper/vg0-lv0 lv
ls: cannot access lv: No such file or directory
lrwxrwxrwx. 1 root root 7 May 4 22:58 /dev/mapper/vg0-lv0 -> ../dm-0
[root@localhost ~]#
查看
pvs|pvdisplay ##查看物理卷情况
vgs|vgdisplay ##查看卷组情况
lvs|lvdisplay ##查看逻辑卷情况
3.LVM扩容
lvextend -L 200M /dev/vg0/lv0 ##将逻辑卷的空间增加到200M
xfs_growfs /dev/vg0/lv0 ##不覆盖原逻辑卷的内容,从而进行扩容
pvcreate /dev/vdb2 ##创建新的物理卷/dev/vdb2
vgextend vg0 /dev/vdb2 ##将新的物理卷/dev/vdb2加入到卷组vg0
lvextend -L 600M /dev/vg0/lv0 ##将逻辑卷的空间增加到600M
1.xfs类型扩容
步骤如下:
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0
Extending logical volume lv0 to 500.00 MiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
[root@localhost ~]# pvcreate /dev/vdb2
Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2
Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
Extending logical volume lv0 to 1.46 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
2.ext4类型扩容
首先卸载/mnt
[root@localhost ~]# umount /mnt/
然后将系统文件类型改为ext4
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0
更改成功
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0
Extending logical volume lv0 to 1.76 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv0 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/lv0 is now 460800 blocks long.
4.缩减(针对ext4文件系统)
umount /mnt/
e2fsck -f /dev/vg0/lv0 ##扫描
resize2fs /dev/vg0/lv0 550M ##缩减文件
lvreduce -L 550M /dev/vg0/lv0 ##缩减设备大小到550M
pvmove /dev/vdb1 /dev/vdb2
##/dev/vdb1有数据,/dev/vdb2闲置,可将/dev/vdb1上的数据移到/dev/vdb2上,以便于删减vg0中的物理卷/dev/vdb1。
##当/dev/vdb1中没有数据时,可直接缩减,不必做这一操作。
vgreduce vg0 /dev/vdb1 ##将vg0中的/dev/vdb1缩减
pvremove /dev/vdb1 ##缩减/dev/vdb1
步骤如下:
[root@localhost ~]# umount /mnt/
[root@localhost ~]# e2fsck -f /dev/vg0/lv0
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 256000 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 256000 blocks long.
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0
WARNING: Reducing active and open logical volume to 1000.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
Reducing logical volume lv0 to 1000.00 MiB
Logical volume lv0 successfully resized
删减物理卷/dev/vdb1
将/dev/vdb1上的数据移到/dev/vdb2上,以便于删减vg0中的物理卷/dev/vdb1
将/dev/vdb1从vg0中缩减
缩减/dev/vdb1
5.LVM快照
当一个LVM快照创建的时候,仅拷贝原始卷里数据的元数据。
创建的时候,不会有数据的物理拷贝,因此快照的创建几乎是实时的,当原始卷上有写操作执行时,快照跟踪原始卷块的改变,此时原始卷上将要改变的数据在改变之前被拷贝到快照预留的空间里。
创建快照的大小不需要和原始卷一样大,其大小只需要考虑两方面:从快照创建到释放这段时间内,估计块的改变量有多大;数据更新的频率。
注意:当快照的空间记录满了原始卷块变换的信息时,快照会立刻被释放,从而无法使用,导致这个快照无效。
前提:lvm快照所在的vg必须和备份源是同一个,因此我们需要确认备份源的剩余空间,若不足需扩展。
LVM快照的实验步骤及说明:
在挂载时建立文件file{1..9}
再删除/mnt下的所有文件及目录
卸载设备
结果如下图:
查看备份源的剩余空间,不足需扩展,将物理卷/dev/vdb1添加到卷组vg0
成功创建大小为50M快照/dev/vg0/lv0image,快照的大小是备份源的%10左右即可
将快照挂载在/mnt
查看/mnt下是否有文件存在
再删除/mnt下的所有东西
重新卸载/mnt
删除刚才建立的快照/dev/vg0/lv0image
结果如下图:
重新创建一个新的快照/dev/vg0/lv0image
再挂载
查看/mnt下是否有文件存在
结果如下图:
##做完该实验后的操作如下图所示
总结
通过使用lvm的快照我们可以轻松的备份数据,由于快照和源lvm的关系,快照只能够临时使用,不能脱离源lvm而存在;因此做到数据的万无一失,我们可以在快照的基础上进行dd备份或其他备份操作,这样既不会影响原始数据也能够达到备份的需求。