自动创建linux逻辑卷及扩容

本文详细介绍了在Linux环境下使用LVM进行逻辑卷管理的过程,包括创建物理分区、物理卷、卷组及逻辑卷,以及自动化脚本实现和卷组、逻辑卷的扩容。通过实际案例演示,帮助读者掌握LVM的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【摘要】

对于每一个运维人员来说,创建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查看逻辑卷是否挂机成功

 

  • 自动化脚本

 以下通过脚本实现以上过程:

  1. pt_info="/data/lv01##lv01##10g /data/lv02##lv02##5g"  #格式:挂载点##逻辑卷名称#大小,多个逻辑卷信息,空格分开  
  2. vg_name=data_vg  #卷组名称  
  3.   
  4. #判断挂载点是否已经被其他设备挂载  
  5. function is_exist_mount_point(){  
  6.     status=0  
  7.     mount_point=$(df -h|grep "/dev/"|awk '{print $NF}')  
  8.     cus_dir=$1  
  9.     for j in ${mount_point};do  
  10.         if [ "$cus_dir" = "$j" ];then  
  11.             status=1  
  12.             break  
  13.         fi  
  14.     done  
  15.     return $status  
  16. }  
  17.   
  18.   
  19. disk_info=$(lsblk|tail -2|head -1)  
  20. disk_type=$(echo $disk_info|awk '{print $NF}')  
  21. if [ "$disk_type" = "disk" ];then  
  22.     disk_name="/dev/$(echo $disk_info|awk '{print $1}')"  
  23. else  
  24.     echo "不存在新增的磁盘"  
  25. fi  
  26.   
  27. pv_name="${disk_name}1"  
  28.   
  29. echo "n  
  30. p  
  31.   
  32.   
  33.   
  34. t  
  35. 8e  
  36. w  
  37. "|fdisk ${disk_name}  
  38.   
  39.   
  40. pvcreate ${pv_name}  
  41. vgcreate ${vg_name} ${pv_name}  
  42.   
  43.   
  44. for i in ${pt_info};do  
  45.     dir=$(echo $i|awk -F'##' '{print $1}')  
  46.     lv_name=$(echo $i|awk -F'##' '{print $2}')  
  47.     size=$(echo $i|awk -F'##' '{print $3}')  
  48.     is_exist_mount_point $dir  
  49.     #返回0,则挂载点可用,返回1,挂载点不可用   
  50.     if [ $? -eq 0 ];then  
  51.         lvcreate -L $size -n $lv_name $vg_name  
  52.         if [ ! -d $dir ];then  
  53.             mkdir -p $dir  
  54.         fi  
  55.         mkfs.xfs /dev/$vg_name/$lv_name  
  56.         mount /dev/$vg_name/$lv_name $dir  
  57.         echo "/dev/$vg_name/$lv_name  $dir  $fs   defaults   0 0">> /etc/fstab  
  58.     elif [ $? -eq 1 ];then  
  59.         continue  
  60.     fi  
  61.   
  62. 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三个的概念后,操作过程相对简单。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿木木爱打代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值