逻辑卷管理
LVM 逻辑卷管理 Logical Volume Management
一、LVM介绍
管理磁盘、使用磁盘的一种方式的称呼
优势:
1、在不影响数据的情况下, 扩容、缩容
2、支持快照功能, 方便数据备份
LVM工作流程:
磁盘/分区 ---> pv(物理卷) ----> vg(卷组) -----> lv(逻辑卷) ----> 格式化/挂载使用
注意:
磁盘/分区,要求是裸设备(无文件系统的设备)
建议规范做法将分区的ID修改8e
二、lvm逻辑卷管理指令
1、pv物理卷相关指令
1) 查看pv
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.51 GiB / 0 free]
Total: 1 [<19.51 GiB] / in use: 1 [<19.51 GiB] / in no VG: 0 [0 ]
2) 创建物理卷
# pvcreate 磁盘/分区名称
# pvcreate /dev/sdc
3) 删除物理卷
# pvremove 物理卷名称
2、vg卷组相关指令
查看卷组
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group "centos" using metadata type lvm2
[root@localhost ~]#
查看卷组详细信息
[root@localhost ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.51 GiB
PE Size 4.00 MiB //PE 物理扩展单元, 类似于数据块
Total PE 4994 //该卷组中共有几个PE
Alloc PE / Size 4994 / <19.51 GiB //卷组已分配的空间
Free PE / Size 0 / 0 //卷组剩余空间
VG UUID V1dlCd-vG4Q-zZAk-0Jhu-Ixxd-5KTP-sa83fz
创建卷组
# vgcreate 卷组名称 pv名称 pv名称 pv名称
# 创建卷组 data # vgcreate data /dev/sdc
3、lv逻辑卷相关指令
查看逻辑卷
[root@localhost ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.51 GiB] inherit
/dev/卷组名称/逻辑卷名称 /dev/data/web
创建逻辑卷
# lvcreate -L 容量 -n 逻辑卷名称 卷组名称
# lvcreate -L 100G -n test vg01 ----------> /dev/vg01/test
三、创建逻辑卷
/dev/data/web 5G ext4文件系统 /data/web
1、创建物理卷
[root@localhost ~]# pvcreate /dev/sdc /dev/sdd
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.51 GiB / 0 free]
PV /dev/sdd lvm2 [20.00 GiB]
PV /dev/sdc lvm2 [20.00 GiB]
Total: 3 [<59.51 GiB] / in use: 1 [<19.51 GiB] / in no VG: 2 [40.00 GiB]
火爆上 oopi[]'][[】、0
2、创建卷组data
[root@localhost ~]# vgcreate data /dev/sdc /dev/sdd
Volume group "data" successfully created
[root@localhost ~]#
[root@localhost ~]# vgdisplay data
--- Volume group ---
VG Name data
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 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID hK6DQf-A7ry-sbCC-1UqR-c0C0-iao7-TkcxDc
3、创建逻辑卷 web
[root@localhost ~]# lvcreate -L 5G -n web data
Logical volume "web" created.
[root@localhost ~]# lvscan
ACTIVE '/dev/data/web' [5.00 GiB] inherit
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.51 GiB] inherit
4、创建文件系统、挂载使用
[root@localhost ~]# mkfs -t ext4 /dev/data/web
[root@localhost ~]# tail -n 1 /etc/fstab
/dev/data/web /data/web ext4 defaults 0 0
[root@localhost ~]# mkdir -p /data/web
[root@localhost ~]# mount -a
[root@localhost ~]# df -hT | grep "data"
/dev/mapper/data-web ext4 4.8G 20M 4.6G 1% /data/web
[root@localhost ~]#
[root@localhost ~]# touch /data/web/{1..10}.html
[root@localhost ~]# ls /data/web/
10.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html
[root@localhost ~]# ls -l /dev/data/web
lrwxrwxrwx. 1 root root 7 Dec 23 18:42 /dev/data/web -> ../dm-2
[root@localhost ~]#
[root@localhost ~]# ls -l /dev/dm-2
brw-rw----. 1 root disk 253, 2 Dec 23 18:42 /dev/dm-2
[root@localhost ~]#
[root@localhost ~]# ls -l /dev/mapper/data-web
lrwxrwxrwx. 1 root root 7 Dec 23 18:42 /dev/mapper/data-web -> ../dm-2
四、案例 ---- 以指定PE数量的方式创建逻辑卷
# lvcreate -l PE数量 -n 逻辑卷名称 卷组名称
创建逻辑卷/dev/data/nginx, 容量800M, xfs文件系统 /data/nginx
[root@localhost ~]# lvcreate -l 200 -n nginx data
Logical volume "nginx" created.
[root@localhost ~]# lvscan
ACTIVE '/dev/data/web' [5.00 GiB] inherit
ACTIVE '/dev/data/nginx' [800.00 MiB] inherit
PE默认大小为4M, 在创建卷组时使用-s选项可修改PE大小
[root@localhost ~]# pvcreate /dev/sde
Physical volume "/dev/sde" successfully created.
[root@localhost ~]# vgcreate -s 16 vg01 /dev/sde
Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay vg01
--- Volume group ---
VG Name vg01
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 19.98 GiB
PE Size 16.00 MiB
Total PE 1279
Alloc PE / Size 0 / 0
Free PE / Size 1279 / 19.98 GiB
VG UUID udttBx-RdYn-kTHW-rgDN-uSyJ-6DXz-DI0xUw
五、案例 ---- 逻辑卷扩展
流程:
1、扩展逻辑卷的物理边界大小
2、扩展逻辑卷的文件系统大小
resize2fs 扩展ext文件系统
xfs_growfs 扩展xfs文件系统
扩展逻辑卷/dev/data/web容量到15GB
1) 确认卷组有足够的剩余空间
[root@localhost ~]# vgdisplay data | grep -i "free"
Free PE / Size 8758 / 34.21 GiB
2) 扩展物理边界
[root@localhost ~]# lvextend -L +10G /dev/data/web
Size of logical volume data/web changed from 5.00 GiB (1280 extents) to 15.00 GiB (3840 extents).
Logical volume data/web successfully resized.
[root@localhost ~]#
[root@localhost ~]# lvscan
ACTIVE '/dev/data/web' [15.00 GiB] inherit
3) 扩展文件系统
[root@localhost ~]# resize2fs /dev/data/web //redisze2fs只能用于扩展ext文件系统
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/data/web is mounted on /data/web; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/data/web is now 3932160 blocks long.
[root@localhost ~]# df -hT | grep "web"
/dev/sdb1 ext4 477M 5.3M 442M 2% /web
/dev/mapper/data-web ext4 15G 25M 14G 1% /data/web
为逻辑卷/dev/data/nginx扩展30GB空间 【xfs文件系统】
1) 确认卷组的剩余空间
[root@localhost ~]# vgdisplay data | grep -i free
Free PE / Size 6198 / 24.21 GiB
2) 扩展卷组data
[root@localhost ~]# pvcreate /dev/sdf
Physical volume "/dev/sdf" successfully created.
[root@localhost ~]#
[root@localhost ~]# vgextend data /dev/sdf
Volume group "data" successfully extended
[root@localhost ~]#
[root@localhost ~]# vgdisplay data | grep -i free
Free PE / Size 11317 / <44.21 GiB
3) 扩展逻辑卷物理边界
[root@localhost ~]# lvextend -L +30G /dev/data/nginx
[root@localhost ~]# lvscan
ACTIVE '/dev/data/web' [15.00 GiB] inherit
ACTIVE '/dev/data/nginx' [30.78 GiB] inherit
4) 扩展文件系统
[root@localhost ~]# xfs_growfs /dev/data/nginx
meta-data=/dev/mapper/data-nginx isize=512 agcount=4, agsize=51200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=204800, 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 204800 to 8069120
[root@localhost ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 18G 5.8G 12G 33% /
devtmpfs devtmpfs 473M 0 473M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sdb5 xfs 497M 26M 472M 6% /openstack
/dev/sdb6 xfs 497M 26M 472M 6% /python
/dev/sdb1 ext4 477M 5.3M 442M 2% /web
/dev/sdb2 ext4 477M 2.3M 445M 1% /nginx
/dev/mapper/data-web ext4 15G 25M 14G 1% /data/web
/dev/mapper/data-nginx xfs 31G 37M 31G 1% /data/nginx
六、逻辑卷缩减
流程:
1、先缩减文件系统
2、再缩减物理边界
注意事项:
1、逻辑卷要处于卸载状态
2、建议备份数据
3、xfs文件系统不支持缩减
4、缩减后的空间要可以保存之前数据
缩减逻辑卷/dev/data/web的空间到10G
1) 备份数据
[root@localhost ~]# cd /data/
[root@localhost data]# tar czf /tmp/web_$(date +%Y_%m_%d).tar.gz web/
2) 卸载逻辑卷
[root@localhost ~]# umount /dev/data/web
3) 检测逻辑卷文件系统是否有损坏
[root@localhost ~]# fsck -f /dev/data/web
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/data-web: 21/983040 files (0.0% non-contiguous), 100864/3932160 blocks
4) 缩减文件系统到10GB
[root@localhost ~]# resize2fs -f /dev/data/web 10G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/data/web to 2621440 (4k) blocks.
The filesystem on /dev/data/web is now 2621440 blocks long.
5) 缩减物理边界
[root@localhost ~]# lvreduce -L -5GB /dev/data/web
WARNING: Reducing active logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data/web? [y/n]: y
Size of logical volume data/web changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560 extents).
Logical volume data/web successfully resized.
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# lvscan
ACTIVE '/dev/data/web' [10.00 GiB] inherit
6) 重新挂载逻辑卷, 验证可正常查看数据
[root@localhost ~]# mount /dev/data/web /data/web/
[root@localhost ~]# ls /data/web/
10.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html
七、逻辑卷快照 snapshot
作用:结合特定应用程序, 方便备份数据
基于cow(copy on write 写时复制)机制
创建快照时,快照中只保存数据的指针信息(元数据信息), 只有当原逻辑卷数据发生变化时,才会将真实的数据复制到快照中来
创建快照
# lvcreate -s -p r -L 容量 -n 快照名称 逻辑卷名称
-s: 快照
-p r: 将快照的权限设置为只读
-n: 快照名称
-L 容量:
快照所允许的原逻辑卷数据变化量
基于快照备份数据
1) 创建快照
[root@localhost ~]# lvcreate -s -p r -n web_snap -L 500M /dev/data/web
Using default stripesize 64.00 KiB.
Logical volume "web_snap" created.
[root@localhost ~]# lvscan
ACTIVE Original '/dev/data/web' [10.00 GiB] inherit
ACTIVE '/dev/data/nginx' [30.78 GiB] inherit
ACTIVE Snapshot '/dev/data/web_snap' [500.00 MiB] inherit
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<29.51 GiB] inherit
2) 挂载快照,备份数据
[root@localhost ~]# mount /dev/data/web_snap /mnt/
[root@localhost ~]# tar czf /tmp/web01_$(date +%Y_%m_%d).tar.gz /mnt/
3) 卸载、删除快照
[root@localhost ~]# umount /dev/data/web_snap
[root@localhost ~]# lvremove /dev/data/web_snap
Do you really want to remove active logical volume data/web_snap? [y/n]: y
Logical volume "web_snap" successfully removed
[root@localhost ~]#
[root@localhost ~]# lvscan
ACTIVE '/dev/data/web' [10.00 GiB] inherit
ACTIVE '/dev/data/nginx' [30.78 GiB] inherit
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<29.51 GiB] inherit