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
相关推荐
The Future is mine6 小时前
.Net Core 在Linux系统下创建服务
linux·运维·.netcore
一只积极向上的小咸鱼6 小时前
Windows中通过wsl运行Ubuntu
linux·运维·ubuntu
爱吃汽的小橘7 小时前
异步串口通信和逻辑分析仪
运维·服务器·网络·单片机·嵌入式硬件·fpga开发
Maple_land8 小时前
Linux进程第八讲——进程状态全景解析(二):从阻塞到消亡的完整生命周期
linux·运维·服务器·c++·centos
爱吃生蚝的于勒8 小时前
【Linux】零基础学会Linux之权限
linux·运维·服务器·数据结构·git·算法·github
Cyan_RA98 小时前
Linux 远程Ubuntu服务器本地部署大模型 EmoLLM 中常见的问题及解决方案 万字详解
linux·运维·服务器·ubuntu·大模型·远程部署·emollm
minji...8 小时前
Linux相关工具vim/gcc/g++/gdb/cgdb的使用详解
linux·运维·服务器·c++·git·自动化·vim
web安全工具库8 小时前
Linux 高手进阶:Vim 核心模式与分屏操作详解
linux·运维·服务器·前端·数据库
不会调制解调的猫9 小时前
笔记 | 内网服务器通过wifi穿透,设置流量走向
运维·服务器·笔记