一 LVM概述
LVM是linux操作系统中对磁盘分区进行管理的一种逻辑机制,能够在保持现有数据不变的情况下动态调整磁盘容量,从而增强磁盘管理的灵活性。
二 LVM术语
2.1 PV(物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘,比如常见的/dev/sdb(整块硬盘),/dev/sdb1(整块硬盘的第一个分区)。
2.2 VG(卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷。
2.3 LV(逻辑卷)
逻辑卷建立在卷组之上,与物理卷没有直接关系。每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。扩容缩容登操作均是在逻辑卷上进行操作。
2.4 PE
PE是物理卷中可用于分配的最小存储单元,默认4M。
三 LVM建立步骤
在vmware上创建的虚拟机中添加两块2G的虚拟磁盘/dev/sdb,/dev/sdc,用于一下操作试验:
- 创建物理卷(整块硬盘或者硬盘分区)
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
- 查看是否创建成功
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 243.14m 243.14m
/dev/sdb2 lvm2 --- 243.28m 243.28m
/dev/sdb3 lvm2 --- 535.00m 535.00m
- 创建卷组
创建卷组vg01,并把/dev/sdb1物理卷加入到卷组vg01中。
[root@localhost ~]# vgcreate vg01 /dev/sdb1
Volume group "vg01" successfully created
- 查看卷组是否创建成功
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 0 0 wz--n- <2240.00m <240.00m
- 创建逻辑卷
在卷组vg01中创建大小为50M的逻辑卷lg01。
[root@localhost ~]# lvcreate -n lg01 -L 50M vg01
Logical volume "lg01" created.
- 查看是否创建成功
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lg01 vg01 -wi-a----- 50.00m
- 格式化并挂载
root@ubuntu1:~# mkfs.xfs /dev/vg01/lg01
meta-data=/dev/vg01/lg01 isize=512 agcount=2, agsize=6656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0
data = bsize=4096 blocks=13312, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- 创建挂载目录及挂载
[root@localhost ~]# mkdir /lv01
[root@localhost ~]# mount /dev/vg01/lg01 /lv01
[root@localhost ~]# df -h
Filesystem 1K-blocks Used Available Use% Mounted on
udev 978684 0 978684 0% /dev
tmpfs 200640 1556 199084 1% /run
/dev/sda1 20509264 7904368 11540040 41% /
tmpfs 1003192 0 1003192 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1003192 0 1003192 0% /sys/fs/cgroup
/snap/gnome-system-monitor/157
tmpfs 200636 16 200620 1% /run/user/121
tmpfs 200636 0 200636 0% /run/user/0
/dev/mapper/vg01-lg01 49828 2848 46980 6% /lv01
四 LVM扩展操作
- 移除逻辑卷
[root@localhost ~]# lvremove vg01 /dev/vg01/lg01
Logical volume vg01/lg01 contains a filesystem in use.
[root@localhost ~]# umount /lv01
[root@localhost ~]# lvremove vg01 /dev/vg01/lg01
Do you really want to remove active logical volume vg01/lg01? [y/n]: y
Logical volume "lg01" successfully removed
- 移除卷组
[root@localhost ~]# vgremove vg01
Volume group "vg01" successfully removed
- 移除物理卷
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
- 扩展卷组(vg01卷组中加入/dev/sdb2)
root@ubuntu1:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg01 lvm2 a-- 240.00m 188.00m
/dev/sdb2 lvm2 --- 243.28m 243.28m
/dev/sdb3 lvm2 --- 535.00m 535.00m
root@ubuntu1:~# vgextend vg01 /dev/sdb2
Volume group "vg01" successfully extended
root@ubuntu1:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg01 lvm2 a-- 240.00m 240.00m
/dev/sdb2 vg01 lvm2 a-- 240.00m 240.00m
/dev/sdb3 lvm2 --- 535.00m 535.00m
- 移除卷组中的pv
root@ubuntu1:~# vgreduce vg01 /dev/sdb2
Removed "/dev/sdb2" from volume group "vg01"
root@ubuntu1:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg01 lvm2 a-- 240.00m 240.00m
/dev/sdb2 lvm2 --- 243.28m 243.28m
/dev/sdb3 lvm2 --- 535.00m 535.00m
- 给现有挂载点扩容
现在挂载点容量为50M
root@ubuntu1:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 956M 0 956M 0% /dev
tmpfs 196M 1.6M 195M 1% /run
/dev/sda1 20G 7.6G 12G 41% /
tmpfs 980M 0 980M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/mapper/vg01-lv01 49M 2.8M 46M 6% /lv01
扩容
root@ubuntu1:~# lvextend -L +100M /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 52.00 MiB (13 extents) to 152.00 MiB (38 extents).
Logical volume vg01/lv01 successfully resized.
root@ubuntu1:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 956M 0 956M 0% /dev
tmpfs 196M 1.6M 195M 1% /run
/dev/sda1 20G 7.6G 12G 41% /
tmpfs 980M 0 980M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 980M 0 980M 0% /sys/fs/cgroup
tmpfs 196M 16K 196M 1% /run/user/121
tmpfs 196M 0 196M 0% /run/user/0
/dev/mapper/vg01-lv01 49M 2.8M 46M 6% /lv01
扩容后发现显示仍然为扩容前的空间大小,需要使用扩容命令实现生效。
root@ubuntu1:~# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=2, agsize=6656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0 rmapbt=0
= reflink=0
data = bsize=4096 blocks=13312, 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 13312 to 38912
root@ubuntu1:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 956M 0 956M 0% /dev
tmpfs 196M 1.6M 195M 1% /run
/dev/sda1 20G 7.6G 12G 41% /
tmpfs 980M 0 980M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 980M 0 980M 0% /sys/fs/cgroup
tmpfs 196M 16K 196M 1% /run/user/121
tmpfs 196M 0 196M 0% /run/user/0
/dev/mapper/vg01-lv01 149M 3.1M 146M 3% /lv01