LVM(动态磁盘)
基本概念
- LVM与传统的分区相比
- 优点:可以进行动态调整、弹性伸缩,保持数据完整性
- 缺点:依赖操作系统
- 逻辑化:pvcreate创建物理卷,PE(最小存储单元)
- 池化:vgcreate创建卷组
- 分配:lvcreate创建逻辑卷lv
- 格式化:mkfs.xfs mkfs.ext4
- 挂载(相当于windows中分配盘符):mount
- 自动挂载
- 开机挂载
实验
准备底层存储(PP):给虚拟机添加一块硬盘(20G)分区工具:fdisk
创建
若执行pvcreate命令时提示没有找到,可以执行yum provides pvcreate查看是由谁提供了pvcreate命令
[root@localhost ~]# yum provides pvcreate
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
centos/filelists_db | 2.9 MB 00:00:00
7:lvm2-2.02.130-5.el7.x86_64 : Userland logical volume management tools
Repo : centos
Matched from:
Filename : /usr/sbin/pvcreate
# 可以看到是由lvm2包提供了这个命令,安装lvm包
[root@localhost ~]# yum install -y lvm2
对磁盘进行分区
# 查看新添加的硬盘名
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4G 0 rom
# 选做:使用fdisk对sdb进行分区
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Select (default e): p
Last sector, +sectors or +size{K,M,G} (31459328-41943039, default 41943039): +5G
Command (m for help): n
Select (default e): p
Last sector, +sectors or +size{K,M,G} (31459328-41943039, default 41943039): +5G
Command (m for help): w
创建物理卷
# 创建物理卷,指定block块的大小为16M(默认为4M)
[root@localhost ~]# pvcreate -s 16m /dev/sdb[1-2]
# 查看创建的物理卷
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 39.51g 44.00m
/dev/sdb1 xcloudvg lvm2 a-- 5.00g 5.00g
/dev/sdb2 xcloudvg lvm2 a-- 5.00g 5.00g
创建卷组
# 创建卷组
[root@localhost ~]# vgcreate mycg /dev/sdb[1-2]
# 查看创建的卷组
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 39.51g 44.00m
myvg 3 0 0 wz--n- 9.99g 9.99g
创建逻辑卷
# 创建逻辑卷
[root@localhost ~]# lvcreate -L 5G -n mylv myvg
# 查看创建的逻辑卷
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 35.59g
swap centos -wi-ao---- 3.88g
mylv myvg -wi-a----- 5.00g
[root@localhost ~]# lvscan
格式化逻辑卷
# 格式化lv
[root@localhost ~]# mkfs.xfs /dev/xcloudvg/mylv
meta-data=/dev/xcloudvg/mylv isize=256 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
将逻辑卷进行挂载
# 挂载
[root@localhost ~]# mount /dev/xcloudvg/mylv /mnt/
[root@localhost ~]# df -h | grep mylv
/dev/mapper/xcloudvg-mylv 5.0G 33M 5.0G 1% /mnt
扩容
对vg进行扩容
# 准备一个pv
[root@localhost ~]# pvcreate /dev/sdb3
# 将pv加入myvg
[root@localhost ~]# vgextend myvg /dev/sdb3
对lv进行扩容
# 对lv进行扩容,在原来的基础上加1G
[root@localhost ~]# lvextend -L 1G /dev/myvg/mylv
# 此时df -h查看还是5G,使扩容生效刷新(ext4)
[root@localhost ~]# resize2fs /dev/myvg/mylv
# xfs使扩容生效
[root@localhost ~]# xfs_growfs /dev/myvg/mylv
自动挂载
[root@xserver1 ~]# chmod +x /etc/rc.d/rc.local
[root@xserver1 ~]# vim /etc/rc.d/rc.local
#!/bin/bash
......
mount -t xfs /dev/mapper/xcloudvg-xcloudlv /mnt