1.简介
lvm提供了一种动态的磁盘逻辑卷管理方法。lvm逻辑卷管理可以把多个磁盘整合成一个磁盘,比如有4个磁盘,每个磁盘是5g内存,如果用单个磁盘来安装LOL,那肯定是安装不了的,现在lvm这个技术就可以把4个5g的磁盘整合成1个20g的磁盘,这样就可以把lol给安装上了,然后就可以愉快的玩耍了。
lvm有三个概念,分别是物理卷(PV,Physical Volume),卷组(VG,Volume Group),逻辑卷(LV,Logical Volume)。可以把物理卷当做面粉,把这些面粉和在一起就变成了面团(卷组),再从面团里面取一些出来做成包子(逻辑卷),而且每一个包子的重量(内存大小),必须是每一勺面粉(基本单位PE,Physical Extent)的倍数。
2.部署逻辑卷
基本命令
- pvcreate 建立物理卷
- pvs 查看已有的物理卷
- pvdisplay 详细显示每一个物理卷
- pvremove 删除物理卷
- pvscan 扫描物理卷
- vgcreate 建立卷组
- vgs 查看已有的卷组
- vgdisplay 详细显示
- vgextend 扩大卷组
- vgremove 删除卷组
- vgreduce 缩小卷组
- vgscan 扫描卷组
- lvs 查看已有的逻辑卷
- lvcreate 建立逻辑卷
- lvdisplay 详细查看逻辑卷
- lvextend 扩大逻辑卷
- lvreduce 缩小逻辑卷
- lvscan 扫描
实例:
1.在vmware环境中,创建一台centos7虚拟机,给该虚拟机两个20g磁盘,把这两个磁盘做成逻辑卷,挂载到/mylvm中,并实现对该逻辑卷的扩容和缩小。
##列出所有的磁盘
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 78.9G 0 part
├─centos-root 253:0 0 70G 0 lvm /
├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
└─centos-home 253:2 0 1G 0 lvm /home
sdb 8:16 0 20G 0 disk ##新的磁盘sdb
sdc 8:32 0 20G 0 disk ##新的磁盘sdc
sr0 11:0 1 4G 0 rom
##查看物理卷
[root@centos7 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 78.88g 4.00m
##让sdb和sdc支持lvm也就是创建物理卷
[root@centos7 ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
##可以看到物理卷已经添加成功了
[root@centos7 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 78.88g 4.00m
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
##创建storage卷组并把这两块磁盘添加到该卷组中
[root@centos7 ~]# vgcreate storage /dev/sd{b,c} ##多块磁盘时可以简写为/dev/sd{b,c}形式,
Volume group "storage" successfully created ##和/dev/sdb /dev/sdc 形式相同
[root@centos7 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 78.88g 4.00m
storage 2 0 0 wz--n- 39.99g 39.99g
##查看storage的详细情况
[root@centos7 ~]# vgdisplay storage
--- Volume group ---
VG Name storage
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 ##PE基本单位的大小,1PE就是4MiB
Total PE 10238 ##总共有10238个PE
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB ##剩余的磁盘大小
VG UUID c2OImr-ciP6-LWRx-B6t2-vD7u-yLiN-k6nAPD
##在storage卷组中创建大小为10g的逻辑卷vo1
[root@centos7 ~]# lvcreate -n vo1 -L 10g storage ##-L 指定大小,-l指定PE的个数
Logical volume "vo1" created.
[root@centos7 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 1.00g
root centos -wi-ao---- 70.00g
swap centos -wi-ao---- 7.88g
vo1 storage -wi-a----- 10.00g
##格式化新建的逻辑卷vo1
[root@centos7 ~]# mkfs.ext4 /dev/storage/vo1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
##创建/mylvm并把vo1挂载到该目录下
[root@centos7 ~]# mkdir /mylvm
[root@centos7 ~]# mount /dev/storage/vo1 /mylvm/
##用df查看挂载信息
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 70G 856M 70G 2% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-home 1014M 33M 982M 4% /home
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 781M 0 781M 0% /run/user/0
/dev/mapper/storage-vo1 9.8G 37M 9.2G 1% /mylvm
##用了一段时间后,发现/mylvm空间不够用了,需要给它扩容
##先卸载设备和挂载点的关联
[root@centos7 ~]# umount /mylvm/
##把vo1逻辑卷拓展到30g
[root@centos7 ~]# lvextend -L 30g /dev/storage/vo1
Size of logical volume storage/vo1 changed from 10.00 GiB (2560 extents) to 30.00 GiB (7680 extents).
Logical volume vo1 successfully resized.
[root@centos7 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 1.00g
root centos -wi-ao---- 70.00g
swap centos -wi-ao---- 7.88g
vo1 storage -wi-a----- 30.00g
##检查硬盘的完整性
[root@centos7 ~]# e2fsck -f /dev/storage/vo1
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/storage/vo1: 11/655360 files (0.0% non-contiguous), 83137/2621440 blocks
##重置硬盘容量
[root@centos7 ~]# resize2fs /dev/storage/vo1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo1 to 7864320 (4k) blocks.
The filesystem on /dev/storage/vo1 is now 7864320 blocks long.
##重新挂载并查看挂载的状态
[root@centos7 ~]# mount /dev/storage/vo1 /mylvm/
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 70G 855M 70G 2% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-home 1014M 33M 982M 4% /home
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 781M 0 781M 0% /run/user/0
/dev/mapper/storage-vo1 30G 44M 28G 1% /mylvm ##扩容成功
##用了之后发现好像又给多了,现在想给vo1减小到5g(→_→)
##和扩容不同的是要先检查文件系统的完整性,确认当前硬盘的大小,因为减小硬盘的大小,可能会使数据丢失,所以减小后的内存一定是要比已用内存大的。
##把文件系统卸载并检查文件系统的完整性
[root@centos7 ~]# umount /mylvm/
[root@centos7 ~]# e2fsck -f /dev/storage/vo1
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/storage/vo1: 11/1966080 files (0.0% non-contiguous), 167431/7864320 blocks
##把逻辑卷vo1的容量减少到25g,
[root@centos7 ~]# resize2fs /dev/storage/vo1 25g ##25g这里要和下面的大小保持一致
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo1 to 6553600 (4k) blocks.
The filesystem on /dev/storage/vo1 is now 6553600 blocks long.
[root@centos7 ~]# lvreduce -L 25g /dev/storage/vo1
WARNING: Reducing active logical volume to 25.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vo1? [y/n]: y
Size of logical volume storage/vo1 changed from 30.00 GiB (7680 extents) to 25.00 GiB (6400 extents).
Logical volume vo1 successfully resized.
##挂载设备并查看挂载信息
[root@centos7 ~]# mount /dev/storage/vo1 /mylvm/
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 70G 855M 70G 2% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-home 1014M 33M 982M 4% /home
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 781M 0 781M 0% /run/user/0
/dev/mapper/storage-vo1 25G 44M 24G 1% /mylvm ##缩小成功
2.在vmware环境中,创建一台centos7虚拟机,给该虚拟机根分区扩容。
##和上面的一样,创建两个物理卷
[root@centos7 ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
##查看所有硬盘
[root@centos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 78.9G 0 part
├─centos-root 253:0 0 70G 0 lvm /
├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
└─centos-home 253:2 0 1G 0 lvm /home
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4G 0 rom
##通过上面的返回信息可以知道根分区的卷组是centos,逻辑卷是root。
##查看centos卷组信息
[root@centos7 ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 78.88 GiB
PE Size 4.00 MiB
Total PE 20193
Alloc PE / Size 20192 / 78.88 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID H3RRDU-9Ptw-nLYP-VV2A-CXRL-tCEa-5FfmAi
##发现剩余容量不足了,接下来只要把新的两块物理卷添加到这个卷组,然后再给root逻辑卷扩容就好了
##把/dev/sdb和/dev/sdc添加到centos卷组
[root@centos7 ~]# vgextend centos /dev/sdb /dev/sdc
Volume group "centos" successfully extended
[root@centos7 ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 3
Act PV 3
VG Size 118.87 GiB ##总容量增加了
PE Size 4.00 MiB
Total PE 30431
Alloc PE / Size 20192 / 78.88 GiB
Free PE / Size 10239 / 40.00 GiB
VG UUID H3RRDU-9Ptw-nLYP-VV2A-CXRL-tCEa-5FfmAi
##给根分区增加20g容量
[root@centos7 ~]# lvextend -L +20g /dev/centos/root
Size of logical volume centos/root changed from 70.00 GiB (17920 extents) to 90.00 GiB (23040 extents).
Logical volume root successfully resized.
[root@centos7 ~]# lvdisplay /dev/centos/root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID b0G0id-3sht-2L8f-me2g-D9ed-qrrt-jgP9lQ
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-04-12 06:02:08 +0800
LV Status available
# open 1
LV Size 90.00 GiB ##容量增大了
Current LE 23040
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
##重新调整分区大小
##centos根分区默认使用的是xfs文件系统,所有用xfs_growfs命令重新调整分区
[root@centos7 ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=4587520 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=18350080, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=8960, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 18350080 to 23592960
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 90G 856M 90G 1% / ##扩大了
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-home 1014M 33M 982M 4% /home
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 781M 0 781M 0% /run/user/0
##扩容成功