一、前言
LVM逻辑卷
LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以事项一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性
使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可能就会带来很大的麻烦。
逻辑卷(LVM):它是Linux环境下对磁盘分区进行管理的一种机制,它是建立在物理存储设备之上的一个抽象层,优点在于灵活管理。
二、LVM工作流程
- 物理磁盘
- 命令创建pv
- 创建卷组vg
- 创建逻辑卷lv
- 格式化lv文件系统
- 挂载使用
- 物理分区阶段:将物理磁盘
fdisk
格式化修改System ID为LVM标记(8e) - PV阶段:通过
pvcreate
、pvdisplay
将Linux分区处理为物理卷PV - VG阶段:接下来通过
vgcreate
、vgdisplay
将创建好的物理卷PV处理为卷组VG - LV阶段:通过
lvcreate
将卷组分成若干个逻辑卷LV - 开始使用:通过
mkfs
对LV格式化,最后挂载LV使用
三、LVM常用命令汇总
操作 |
pv命令 |
vg命令 |
lv命令 |
列出display |
pvs |
vgs |
lvs |
扩容extend |
vgextend |
lvextend |
|
缩容reduct |
vgreduce |
Lvreduce |
|
删除remove |
pvremove |
vgremove |
lvremove |
改变容量resize |
vgresize |
物理卷(pv)管理
命令 |
功能 |
pvcreate |
创建物理卷 |
pvscan |
查看物理卷信息 |
pvdisplay |
查看各个物理卷的详细参数 |
pvremove |
删除物理卷 |
卷组(VG)管理相关命令
命令 |
功能 |
vgcreate |
创建卷组 |
vgscan |
查看卷组信息 |
vgdisplay |
查看卷组的详细参数 |
vgreduce |
缩小卷组,把物理卷从卷组中删除 |
vgextend |
扩展卷组,把某个物理卷添加到卷组中 |
vgremove |
删除卷组 |
逻辑卷(LV)管理相关命令
lvcreate
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE个数)
-n 后面跟逻辑卷名
-s 创建快照
命令 |
功能 |
lvcreate |
创建逻辑卷 |
lvscan |
查看逻辑卷信息 |
lvdisplay |
查看逻辑卷的具体参数 |
lvextend |
增大逻辑卷大小 |
lvreduce |
减小逻辑卷大小 |
lvremove |
删除逻辑卷 |
四、LVM实战
要求
- 使用2块硬盘,容量分别是20G,20G
- 创建卷组,名字是vg1-0327
- 创建2个lv,名字依次是lv1,lv2容量分别是15G,10G
- 2个逻辑卷,挂载点分别是/t1 /t2 文件系统分别是xfs、ext4
- 要求分别查看2个逻辑卷的文件系统信息
思路:
1. 物理的设备
2. 将物理设备做成物理卷
3. 创建卷组并将物理卷加入其中
4. 创建逻辑卷
5. 格式化逻辑卷
6. 挂载使用
1.安装lvm
yum install lvm2 -y
2.查看pv
pvs
3.创建pv
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
4.查看创建后的pv
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
5.查看vg
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
6.创建vg sdb sdc创建为卷组,名字是 vg1-0327
注意语法
[root@localhost ~]# vgcreate vg1-0327 /dev/sdb /dev/sdc
Volume group "vg1-0327" successfully created
7.查看创建后的vg
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0327 2 0 0 wz--n- 39.99g 39.99g
8.查看lv
lvs
9.创建lv(创建分区)
lv1 15G
lv2 10G
[root@localhost ~]# lvcreate -n lv1 -L 15G vg1-0327
Logical volume "lv1" created.
[root@localhost ~]# lvcreate -n lv2 -L 10G vg1-0327
Logical volume "lv2" created.
10.查看lv
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv1 vg1-0327 -wi-a----- 15.00g
lv2 vg1-0327 -wi-a----- 10.00g
11.查看磁盘设备信息
通过如下命令,查看lvm设备的信息
[root@localhost ~]# blkid | grep 'sd[bc]'
/dev/sdc: UUID="mxTVP4-6uf1-5rUh-0TFl-e0r8-TeDf-1iOxd1" TYPE="LVM2_member"
/dev/sdb: UUID="1ngONs-vQiM-hu0P-Pqdi-JTsn-24dq-CtmDMi" TYPE="LVM2_member"
查看/dev/卷组/
ls /dev/vg1-0327/
12.lv格式化文件系统
lv1 15G ---xfs
lv2 10G ----ext4
[root@client-242 ~]# mkfs.xfs /dev/vg1-0327/lv1
[root@client-242 ~]# mkfs.ext4 /dev/vg1-0327/lv2
13.挂载lv
mount 设备名 挂载点
[root@localhost ~]# mount /dev/vg1-0327/lv1 /t1
[root@localhost ~]# mount /dev/vg1-0327/lv2 /t2
14.查看挂载
[root@localhost ~]# mount -l | grep t1
/dev/mapper/vg1--0327-lv1 on /t1 type xfs (rw,relatime,attr2,inode64,noquota)
[root@localhost ~]# mount -l | grep t2
/dev/mapper/vg1--0327-lv2 on /t2 type ext4 (rw,relatime,data=ordered)
尝试写入数据
[root@client-242 ~]# touch /t1/今天也是美好的一天
[root@client-242 ~]# touch /t2/明天更是美好的一天
15.开机自动挂载
一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab
否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
进入紧急模式,直到你再次修复fstab文件
重启即可
把t1 t2设置为开机自动挂载
[root@client-242 ~]# tail -2 /etc/fstab
UUID="04fda700-511c-43d4-ae9a-d87d72ee7175" /t1 xfs defaults 0 0
/dev/mapper/vg1--0224-lv2 /t2 ext4 defaults 0 0
LVM扩容(重点)
需求
- 要求扩容lv1,扩大到25G容量
先查看当前机器的lv情况,确定你要扩容的设备
[root@localhost ~]# df -Th | grep lv1
/dev/mapper/vg1--0327-lv1 xfs 15G 33M 15G 1% /t1
扩容到25G需求
1. 你的卷组,容量还够不够
2. 卷组容量不够,加新硬盘,再次pv化,加入卷组就好了
方案一,卷组容量够
1.确认vg卷组容量够不够
确认vg1卷组剩余空间15G
[root@localhost ~]# vgs | grep vg1
vg1-0327 2 2 0 wz--n- 39.99g 14.99g
2.确认够用,直接lvextend扩容lv逻辑卷即可
用法1 给lv1增加10G
[root@localhost ~]# lvextend -L +10G /dev/vg1-0327/lv1
Size of logical volume vg1-0327/lv1 changed from 15.00 GiB (3840 extents) to 25.00 GiB (6400 extents).
Logical volume vg1-0327/lv1 successfully resized.
[root@localhost ~]# lvs | grep lv1
lv1 vg1-0327 -wi-ao---- 25.00g
用法2 直接,调整到25G大小
[root@localhost ~]# lvextend -L 25G /dev/vg1-0327/lv1
3.虽然你调整了 lv1逻辑卷的大小,但是文件系统它不知道,
你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
ext4文件系统,使用resize2fs命令
xfs文件系统,使用xfs_growfs调整大小
4.调整lv1 xfs文件系统的大小
[root@localhost ~]# xfs_growfs /dev/mapper/vg1--0327-lv1
[root@localhost ~]# df -Th | grep lv1
/dev/mapper/vg1--0327-lv1 xfs 25G 33M 25G 1% /t1
5.调整lv2的文件系统,调整到20G
看看卷组还剩下多少,不够用了,就得扩大卷组了
[root@localhost ~]# vgs | grep vg1
vg1-0327 2 2 0 wz--n- 39.99g 4.99g
方案二,卷组容量不够
1.添加一块50G新硬盘,
2.给硬盘pv化
[root@localhost ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
3.查看pv物理卷
[root@localhost ~]# pvs | grep sdd
/dev/sdd lvm2 --- 50.00g 50.00g
4.vg卷组扩容
[root@localhost ~]# vgextend vg1-0327 /dev/sdd
Volume group "vg1-0327" successfully extended
5.再次查看vg卷组
[root@localhost ~]# vgs | grep vg1
vg1-0327 3 2 0 wz--n- <89.99g <54.99g
6.扩容lv2
调整lv2的文件系统,调整到20G
[root@localhost ~]# lvextend -L 20G /dev/vg1-0327/lv2
Size of logical volume vg1-0327/lv2 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume vg1-0327/lv2 successfully resized.
7.再次查看lv2
[root@localhost ~]# lvs | grep lv2
lv2 vg1-0327 -wi-ao---- 20.00g
8.调整etx4文件系统
[root@localhost ~]# resize2fs /dev/mapper/vg1--0327-lv2
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1--0327-lv2 is mounted on /t2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg1--0327-lv2 is now 5242880 blocks long.
9.查看磁盘挂载容量情况
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 3.7G 14G 22% /
/dev/sda1 xfs 1014M 195M 820M 20% /boot
/dev/mapper/vg1--0327-lv1 xfs 25G 33M 25G 1% /t1
/dev/mapper/vg1--0327-lv2 ext4 20G 44M 19G 1% /t2
tmpfs tmpfs 378M 0 378M 0% /run/user/0