【摘要】
对于每一个运维人员来说,创建linux逻辑卷都是最基本的知识,在最近项目中需要做到自动化创建逻辑卷并实现开机挂载,因此本文会讲解如何创建逻辑,并附上自动化创建逻辑卷的脚本。
- LVM相关知识
LVM全称为Logical Volume Manager 逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层。LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。比如:我们日常办公电脑,文件系统是建立在磁盘上的,磁盘大小限制了我们能存储多少文件,如果我们创建了逻辑卷,限制存储大小的是lv逻辑卷,并且逻辑卷是可以动态扩展的,而且不会丢失现有的数据,即使我们如果新增加了硬盘,也不会改变现有上层的逻辑卷,大大提高了磁盘的灵活性。
需要理解的三个概念:物理卷(pv)、卷组(vg)、逻辑卷(lv)
PV:物理卷由分区创建而成,可以理解有多少个分区就有多少个物理卷
VG:多个物理卷构成卷组,可以动态扩展
LV:逻辑卷是从卷组上面划分而来,可以动态扩展
本文按照如下过程详解如何创建逻辑卷以及卷组和逻辑卷的扩容:创建物理分区-->创建物理卷-->创建卷组-->创建逻辑卷-->卷组扩容-->逻辑卷扩容
实验环境:centos7.5 ,文件系统xfs
- 创建物理分区
首先通过lsblk命令或者fdisk -l 查看当前系统的分区情况:
从图片中看出,目前sdb尚没有进行分区的磁盘,接着通过如下命令:
fdisk /dev/sdb对磁盘进行分区,本实例创建了/dev/sdb1和/dev/sdb2两个分区。
- 创建物理卷
第二步中已经创建了sdb1和sdb2两个分区,然后将分区创建为物理卷
pvcreate 分区名 #创建物理卷
pvdisplay #查看已经创建的物理卷
pvremove 物理卷名称 #删除物理卷eg:pvremove /dev/sdb1
- 创建卷组
第三步中已经创建了/dev/sdb1和/dev/sdb2两个物理卷,然后就将物理卷创建成一个卷组
vgcreate 卷组名 多个物理卷名称 #创建卷组
vgdisplay #查看已经创建的卷组
vgremove 卷组名 #删除卷组
- 创建逻辑卷
在卷组中进行划分逻辑卷,假如需要创建的逻辑卷名称为lv01和lv02
lvcreate -L 大小 -n 逻辑卷名称 卷组名 #创建指定大小的逻辑
lvcreate -l 100%free -n 逻辑卷名称 卷组名称 #创建逻辑卷并将卷组剩下的所有空间分配给该逻辑卷
lvdisplay #查看已经创建的逻辑卷
lvremove /dev/卷组名称/逻辑卷名称 #删除逻辑卷
- 格式文件系统以及挂载
mkfs.xfs /dev/卷组名称/逻辑卷名称 #格式化
mount 设备名 挂载点 #挂载设备
另外还可以将挂载操作写入配置文件/etc/fstab,实现开机挂载
通过df -h查看逻辑卷是否挂机成功
- 自动化脚本
以下通过脚本实现以上过程:
- pt_info="/data/lv01##lv01##10g /data/lv02##lv02##5g" #格式:挂载点##逻辑卷名称#大小,多个逻辑卷信息,空格分开
- vg_name=data_vg #卷组名称
- #判断挂载点是否已经被其他设备挂载
- function is_exist_mount_point(){
- status=0
- mount_point=$(df -h|grep "/dev/"|awk '{print $NF}')
- cus_dir=$1
- for j in ${mount_point};do
- if [ "$cus_dir" = "$j" ];then
- status=1
- break
- fi
- done
- return $status
- }
- disk_info=$(lsblk|tail -2|head -1)
- disk_type=$(echo $disk_info|awk '{print $NF}')
- if [ "$disk_type" = "disk" ];then
- disk_name="/dev/$(echo $disk_info|awk '{print $1}')"
- else
- echo "不存在新增的磁盘"
- fi
- pv_name="${disk_name}1"
- echo "n
- p
- t
- 8e
- w
- "|fdisk ${disk_name}
- pvcreate ${pv_name}
- vgcreate ${vg_name} ${pv_name}
- for i in ${pt_info};do
- dir=$(echo $i|awk -F'##' '{print $1}')
- lv_name=$(echo $i|awk -F'##' '{print $2}')
- size=$(echo $i|awk -F'##' '{print $3}')
- is_exist_mount_point $dir
- #返回0,则挂载点可用,返回1,挂载点不可用
- if [ $? -eq 0 ];then
- lvcreate -L $size -n $lv_name $vg_name
- if [ ! -d $dir ];then
- mkdir -p $dir
- fi
- mkfs.xfs /dev/$vg_name/$lv_name
- mount /dev/$vg_name/$lv_name $dir
- echo "/dev/$vg_name/$lv_name $dir $fs defaults 0 0">> /etc/fstab
- elif [ $? -eq 1 ];then
- continue
- fi
- done
- 扩展卷组
在上面的卷组data-vg中,增加一块磁盘空间大小为5G的sdc,首先通过步骤二和步骤三创建好物理卷/dev/sdc1,然后将该物理卷假如到卷组data-vg中
vgextend 卷组名称 物理卷 #扩展卷组
- 扩展逻辑卷
将原来10G的lv01扩展为15G
lvextend -L 大小 /dev/卷组名称/逻辑卷名称 # 扩展卷组
xfs_growfs /dev/卷组名称/逻辑卷名称 # 调整xfs文件系统大小,注意:ext系列和xfs文件系统命令不一样,本文测试环境文件系统为xfs
- 总结
以上就是创建逻辑卷的整个过程,以及卷组的扩容和逻辑卷的扩容,重点理解pv、vg、lv三个的概念后,操作过程相对简单。