LVM全称是Logical Volume Manager,即逻辑卷管理。它是Linux环境下对磁盘分区进行管理的一种机制,建立在硬盘和分区之上的一个逻辑层,使得磁盘分区管理更具灵活性。
实验环境
操作系统:CentOS 6.10
案例一:创建逻辑卷
使用两块物理硬盘创建一个卷组,划分卷组中的全部空间给逻辑卷,最终实现系统开机自动挂载逻辑卷。
第一步查看物理硬盘
如下图,/dev/sda是正在使用的本地硬盘,/dev/sdb和dev/sdc则是新添加的物理硬盘。
# fdisk -l | grep Disk
第二步创建物理卷
将/dev/sdb和dev/sdc创建物理卷。
# pvcreate /dev/sdb /dev/sdc
扩展阅读展开隐藏
一般情况下,使用标准分区方案的精简版操作系统是无法使用pvcreate、vgcreate等等相关命令,需要手动安装lvm2软件包。
# yum -y install lvm2
第三步创建卷组
将/dev/sdb和dev/sdc创建一个名为wanghualang_vg的卷组,并设置卷组的扩展单元大小为16M。
# vgcreate -s 16M wanghualang_vg /dev/sdb /dev/sdc
第四步创建逻辑卷
创建一个名为wanghualang_lvm的逻辑卷,并划分wanghualang_vg卷组里的全部空间。
# lvcreate -n wanghualang_lvm -l +100%free wanghualang_vg
第五步格式化逻辑卷
ext2/3/4文件系统是早期红帽RHEL的默认文件系统,自RHEL 7.x之后,默认文件系统已调整为xfs,关于xfs的相关操作,日后再开篇详细说明。
# mkfs.ext4 /dev/wanghualang_vg/wanghualang_lvm
第六步屏蔽磁盘检查
如今ext2/3/4文件系统已经非常可靠,且机房服务器极少出现问题意外断电的情况,大家可以根据实际情况按需屏蔽文件系统的自检。
# tune2fs -c -1 -i 0 /dev/wanghualang_vg/wanghualang_lvm
第七步手动挂载逻辑卷
新建一个挂载目录,手动挂载逻辑卷。
# mkdir /wanghualang
# mount /dev/wanghualang_vg/wanghualang_lvm /wanghualang/
# df -h
第八步开机挂载逻辑卷
手动挂载确认没问题后,可以根据实际需要配置开机自动挂载,建议大家使用UUID的方式挂载逻辑卷,下面的xxxx就是生成出来的UUID,根据实际情况修改。
# blkid /dev/mapper/wanghualang_vg-wanghualang_lvm
# echo "UUID=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /wanghualang ext4 defaults 0 0">>/etc/fstab
案例二:删除逻辑卷
因业务需要,现在需要删除案例一中创建的逻辑卷。
第一步卸载逻辑卷
# umount /wanghualang
第二步删除逻辑卷
删除逻辑卷的时候会提示确认,按y。
# lvremove /dev/mapper/wanghualang_vg-wanghualang_lvm
第三步删除开机挂载
案例一中是直接在配置文件的末尾添加了一行实现开机挂载,大家使用sed命令删除配置文件末尾一行即可。
# sed -i '$d' /etc/fstab
案例三:创建指定空间大小的逻辑卷
因业务需要,需要再次创建逻辑卷,但这次只划分卷组中的15G空间给逻辑卷,剩余空间留着备用。注意,案例一中已创建过物理卷、卷组,此步跳过。
第一步检查卷组空间
案例一中已经创建了物理卷,卷组,这里就不必重复操作了。只需要检查卷组是否有足够的空间划出15G给逻辑卷。如下图,空闲空间有29.97G,满足空间要求。
# vgdisplay
第二步创建逻辑卷
根据业务需要,只划分15GB给逻辑卷。
# lvcreate -n wanghualang_lvm -L 15GB wanghualang_vg
第三步格式化、屏蔽磁盘检查
# mkfs.ext4 /dev/mapper/wanghualang_vg-wanghualang_lvm
# tune2fs -c -1 -i 0 /dev/wanghualang_vg/wanghualang_lvm
第四步手动挂载逻辑卷
# mount /dev/wanghualang_vg/wanghualang_lvm /wanghualang/
# df -h
案例四:扩容逻辑卷
现因业务需要,对逻辑卷进行扩容,从15GB扩容至25GB。注意,案例三中已演示过检查卷组空间的方法,跳过此步。
第一步扩容逻辑卷
业务需求是从15GB扩容至25GB,即增加10GB。
# lvextend -L +10GB /dev/mapper/wanghualang_vg-wanghualang_lvm
第二步扩容文件系统
逻辑卷扩容后,接着还需要对文件系统进行扩容,这样才能通过df -h看到实际的磁盘空间变化。
# resize2fs /dev/mapper/wanghualang_vg-wanghualang_lvm
第三步查看磁盘信息
# df -h
案例五:缩小逻辑卷
现在因业务需要,对逻辑卷进行缩小,从25GB缩小至10GB。缩小逻辑卷在实际工作中很少遇到,简单了解一下缩小逻辑卷的操作流程即可。
第一步卸载逻辑卷
扩容逻辑卷可以在线进行,但缩小逻辑卷的时候,必须先卸载逻辑卷。
# umount /wanghualang
第二步检查文件系统
# e2fsck -f /dev/mapper/wanghualang_vg-wanghualang_lvm
第三步缩小文件系统
根据需求,将文件系统缩小至10GB,注意,是缩小至10GB,而不是缩小10GB。
# resize2fs /dev/mapper/wanghualang_vg-wanghualang_lvm 10G
第四步缩小逻辑卷
案例四中的逻辑卷原来大小为25GB,现在要求把文件系统缩小至10GB,即逻辑卷需要缩小15GB。
# lvreduce -L -15G /dev/mapper/wanghualang_vg-wanghualang_lvm
第五步查看逻辑卷
# lvdisplay | grep "LV Size"
第六步手动挂载逻辑卷
# mount /dev/wanghualang_vg/wanghualang_lvm /wanghualang/
# df -h | grep wanghualang
案例六:扩容卷组
关于逻辑卷的创建、删除、自定义创建、扩容、缩小在前五个案例中已经介绍过了,接下来将围绕卷组进行操作,因业务需要,需要把逻辑卷扩容至60GB。
第一步检查卷组空间
经过检查,当前卷组是由两个物理卷组成,且总空间只有30GB,明显不满足业务扩容需求。
# vgs
第二步添加物理硬盘
在虚拟机中添加一块30GB的硬盘,如下图,本机中已多出一块30GB的硬盘/dev/sdd。
# fdisk -l | grep Disk
第三步新增物理卷
# pvcreate /dev/sdd
第四步把新增物理卷加入指定卷组
# vgextend wanghualang_vg /dev/sdd
第五步查看卷组
此时,卷组已经由三个物理卷组成,并成功扩容至60GB,接下来可以参考案例四来扩容逻辑卷。
# vgs
案例七:缩小卷组
因业务需要,现在某台服务器不再需要某组raid阵列或者说某块物理硬盘了,尽可能移除容量最小的旧硬盘给其他服务器使用,最后再把逻辑卷扩容至调整后的最大卷组空间。缩小卷组在实际工作中很少遇到,简单了解一下缩小卷组的操作流程即可。
第一步卸载逻辑卷
凡是缩小的操作,都是先卸载逻辑卷。
# umount /wanghualang
第二步确认卷组中要移除哪块物理卷
根据业务需要,尽可能移除容量最小的硬盘,如下图,/dev/sdb就是移除对象。这里强调说明一下,之所以移除/dev/sdb并非它的容量最小,而是/dev/sdb恰好仍未被卷组使用,PSize等于PFree则说明/dev/sdb当前未被卷组使用。仔细看/dev/sdc的PSize、PFree就可以知道当前逻辑卷空间的10G就是来自/dev/sdc。
# pvs
第三步从卷组中移除指定物理卷
# vgreduce wanghualang_vg /dev/sdb
第四步确认卷组信息
此时卷组已移除一个物理卷,容量也变为50GB,接下来可以参考案例一来扩容逻辑卷,划分调整后的卷组中的全部空间。
# vgs