Linux之lvm存储卷管理篇

一、使用场景

在企业生产环境下,通常情况下我们会考虑对磁盘进行扩容情况,但随着用户的增长,磁盘可能逐渐被填满,这时候你只能添加新硬盘,新分区,但是旧的磁分区还在旧的磁盘分区上,你只能停止业务进行数据迁移了

LVM是把多个磁盘化成一个硬盘,但特点是:后期可以加入新硬盘,这个逻辑卷的容量就增加了,等于这个大硬盘容量更大

逻辑卷组(500G+100G=600G),大硬盘500G------>获取部分的容量,化为一个逻辑组(分区)---->逻辑组进行格式化(分区进行格式化)-------->挂载使用

如果你使用了Lvm,你可以将多个物理分区抽象为一个逻辑卷组,并且这个逻辑卷组是可以动态扩容的。当逻辑卷组容量不够时,只需要买硬盘,通过命令添加到这个指定的逻辑卷组中

lvm工作流程

挂载流程

这里的物理层也叫pe ,我们需要将物理卷pe整合在pv中,然后我将我整合的逻辑上的pv整合成一个大的VG组,然后对VG组进行分区得到多个LV(LV中包含多个LE(逻辑单元))

二、Lvm常用命令

通过lsblk查看磁盘信息

复制代码
[root@localhost ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   20G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0   19G  0 part 
  ├─openeuler-root 253:0    0   17G  0 lvm  /
  └─openeuler-swap 253:1    0    2G  0 lvm  [SWAP]
sr0                 11:0    1  3.8G  0 rom  

pv命令的使用

复制代码
##  安装lvm命令
yum install lvm2 -y

### 安装该工具后,即可使用lvm的命令(图片解释)
pvcreate
pvs
[root@localhost ~]# pvs
  PV         VG        Fmt  Attr PSize   PFree
  /dev/sda2  openeuler lvm2 a--  <19.00g    0 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# pvscan
  PV /dev/sda2   VG openeuler       lvm2 [<19.00 GiB / 0    free]
  Total: 1 [<19.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 0 [0   ]
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               openeuler
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               CdcPrY-yVNv-2Bxa-M1lh-poRu-kz4t-gEdwjD




## 删除pv
pvremove /dev/sdb

三、操作流程

添加一块30G硬盘

查看到已经创建的磁盘

查看vg状态

将两块硬盘sdb sdc 创建为vg-0224

复制代码
#### pv实例化   ###
[root@localhost ~]# pvcreate /dev/sdb 
  Physical volume "/dev/sdb" successfully created.


###  将pv加入到卷组
[root@localhost ~]# vgcreate vg666 /dev/sdb 
  Volume group "vg666" successfully created


## vg状态
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               vg666
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <30.00 GiB
  PE Size               4.00 MiB
  Total PE              7679
  Alloc PE / Size       0 / 0   
  Free  PE / Size       7679 / <30.00 GiB
  VG UUID               eiBxNz-mSc1-VXDT-ip1R-1MMD-DIaa-4EuFuj

转换成lv逻辑卷格式

复制代码
lvcreate 
-L 指定逻辑卷的大小,单位为"kKmMgGtT"字节
-l 指定逻辑卷的大小(PE个数)
-n 后面跟逻辑卷名 
-s 创建快照




###  查看当前机器的逻辑卷信息
### lvs状态查看
[root@localhost ~]# lvs
  LV   VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root openeuler -wi-ao---- <17.00g                                                    
  swap openeuler -wi-ao----   2.00g     



###  创建lv  设置卷组容量的一半(参考下图)
lvcreate -n vg666 -l 50%VG vg666
[root@localhost ~]# lvs
  LV    VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  openeuler -wi-ao---- <17.00g                                                    
  swap  openeuler -wi-ao----   2.00g                                                    
  vg666 vg666     -wi-a----- <15.00g    


## 删除逻辑卷
[root@localhost ~]# lvremove /dev/vg666/vg666 
Do you really want to remove active logical volume vg666/vg666? [y/n]: y
  Logical volume "vg666" successfully removed.
[root@localhost ~]# 



## 指定逻辑卷大小
lvcreate -n lv1-666 -L 20G vg666


## 查看lvs分配情况
[root@localhost ~]# lvs
  LV      VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    openeuler -wi-ao---- <17.00g                                                    
  swap    openeuler -wi-ao----   2.00g                                                    
  lv1-666 vg666     -wi-a-----  20.00g

卷组分配情况

清空lvm环境

复制代码
#### 删除卷组情况

[root@localhost ~]# lvremove /dev/vg666/vg666 


#### 删除pv卷
[root@client-242 ~]# pvremove /dev/sdb
  Labels on physical volume "/dev/sdb" successfully wiped.

##    查看pv状态
[root@client-242 ~]# pvs


### 如果vg没有清理完成,pv是无法直接额删除的
[root@localhost ~]# pvremove /dev/sdb
  PV /dev/sdb is used by VG vg666 so please use vgreduce first.
  (If you are certain you need pvremove, then confirm by using --force twice.)
  /dev/sdb: physical volume label not removed.
[root@localhost ~]# 

## 查看vg状态
[root@client-242 ~]# vgs

挂载方式分析

复制代码
### 方式1 临时挂载
# 临时挂载(重启后失效)
mount /dev/vg666/lv1--666 /data


### 方式2  永久挂载
[root@localhost ~]# vim /etc/fstab 

## 查看uuid情况
blkid /dev/vg666/lv1--666

扩展文件类型

复制代码
# 如果有新分区,扩展物理卷和卷组
pvcreate /dev/sdb2
vgextend vg666 /dev/sdb2

# 扩展逻辑卷
lvextend -l +100%FREE /dev/vg666/lv1--666


#  扩展文件系统(使得文件系统能够使用扩展30G)
resize2fs /dev/vg666/lv1--666


## 验证
[root@localhost ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    4.0M     0  4.0M   0% /dev
tmpfs                       1.3G     0  1.3G   0% /dev/shm
tmpfs                       524M  7.5M  516M   2% /run
tmpfs                       4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/mapper/openeuler-root   17G  3.5G   13G  23% /
tmpfs                       1.3G     0  1.3G   0% /tmp
/dev/sda1                   974M  145M  762M  16% /boot

扩容成功截图

转换成

复制代码
UUID="1b921c3d-f782-4c17-b08f-2e38a41ea56b" /      ext4
      defaults  1 1

## 挂载
mount -a

## 测试是否挂载成功
[root@localhost ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   20G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0   19G  0 part 
  ├─openeuler-root 253:0    0   47G  0 lvm  /
  └─openeuler-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                  8:16   0   30G  0 disk 
└─openeuler-root   253:0    0   47G  0 lvm  /
sr0                 11:0    1 1024M  0 rom  



[root@localhost ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    4.0M     0  4.0M   0% /dev
tmpfs                       1.3G     0  1.3G   0% /dev/shm
tmpfs                       524M  7.5M  516M   2% /run
tmpfs                       4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/mapper/openeuler-root   47G  3.5G   41G   8% /
tmpfs                       1.3G     0  1.3G   0% /tmp
/dev/sda1                   974M  145M  762M  16% /boot

注意:如果当逻辑卷已经被文件占用,但又不想删除原卷组数据,想单独取出pv逻辑卷时,可以考虑下面方法

复制代码
# 3. 如果 /dev/sdb 上有数据,需要先迁移数据
pvmove /dev/sdb /dev/sda2

# 4. 从卷组中移除物理卷
vgreduce openeuler /dev/sdb

# 5. 移除物理卷属性
pvremove /dev/sdb
相关推荐
Bella的成长园地15 分钟前
Linux 中sudo bash -i 和 su root 有什么区别?
linux·运维·bash
matrixlzp1 小时前
Jenkins 实战3:Jenkins + habor + docker 自动化部署
运维·jenkins
vortex51 小时前
Linux 用户管理详解:从古老Unix到现代集成
linux·运维·unix
玩转测试开发3 小时前
xshell设置跳板机登录内网服务器
运维·服务器·数据库
Java 码农3 小时前
linux shell 数组
linux·运维·服务器
大梦谁先觉i3 小时前
Linux 磁盘空间“消失”之谜:文件已删,空间却不释放?
linux·运维·服务器
序属秋秋秋3 小时前
《Linux系统编程之开发工具》【编译器 + 自动化构建器】
linux·运维·服务器·c语言·c++·自动化·编译器
塔能物联运维3 小时前
物联网运维中基于自适应射频环境监测的动态频谱优化技术
运维·物联网
小涂4 小时前
在Linux(deepin-community-25)下安装MongoDB
linux·运维·mongodb
艾莉丝努力练剑4 小时前
【Linux基础开发工具 (一)】详解Linux软件生态与包管理器:从yum / apt原理到镜像源实战
linux·运维·服务器·ubuntu·centos·1024程序员节