Linux磁盘设备LVM介绍和常用场景说明

news2024/11/19 1:38:13

Linux常见的物理设备数据备份和负载均衡模式

  • 1. LVM技术说明
  • 2. 相关概念
  • 3. 常用命令
    • 3.1 安装lvm命令
    • 3.2 创建分区
    • 3.3 格式化成LVM
    • 3.4 其他格式化
  • 4. 常用场景
    • 4.1 创建LVM并挂载
    • 4.2 LVM扩容
      • 4.2.1 xfs扩容
      • 4.2.2 ext4扩容
    • 4.2 缩减逻辑卷lv
    • 4.3 缩减vg:(迁移到闲置设备)
    • 4.4 LVM快照创建
    • 4.5 删除设备
  • 5. 参考文档

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。


1. LVM技术说明

Linux的LVM(Logical Volume Manager)是一种磁盘管理工具,可以用来对Linux系统中的磁盘进行灵活的管理和分区。

LVM可以将多个物理硬盘或分区组合在一起形成一个逻辑卷组(Volume Group),然后再从逻辑卷组中创建逻辑卷(Logical Volumes)。逻辑卷可以被格式化为文件系统,并且可以像普通分区一样挂载到文件系统树中的任意位置。

LVM的主要优点有:

  • 可以动态地扩展和缩小逻辑卷的大小,而无需重新分区或格式化磁盘。
  • 可以将不同的物理硬盘或分区组合在一起,形成一个大的逻辑卷组,从而充分利用磁盘空间。
  • 可以对逻辑卷进行快照备份,以便在数据损坏或删除时进行恢复。
  • 可以通过移动数据块的方式进行数据迁移,从而实现数据的高可用性和负载均衡。

2. 相关概念

  • PV(Physical Volume):物理空间的意思,其实就是指一个分区(如/dev/sdb1 )或者是一个盘(如/dev/sdb)
  • VG(Volume Group):相当于一个Pool,由多个PV组成的pool
  • LV(Logical Volume):用来建立一个文件系统的空间,这个空间来源于VG,大小随意,可以扩展。(比如/dev/mapper/rhel-root这个目录其实是一个文件系统挂载点,这个点就是承载在一个LV上,这个文件系统的大小就是这个LV的大小。 )

在这里插入图片描述

在这里插入图片描述

3. 常用命令

3.1 安装lvm命令

yum install lvm2  -y

常用的命令如下

PV:Physical(物理卷)     pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan

VG:Volume Group(卷组)     vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent 

LV:logical Volume(逻辑卷)      lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename

3.2 创建分区

[root@node1 ~]# fdisk  /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p          

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458   
    Device Boot      Start         End      Blocks   Id  System

Command (m for help): n       Command action   
    e   extended   
    p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +3G 

Command (m for help): n
Command action 
  e   extended 
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (394-1305, default 394): 
Using default value 394Last cylinder, +cylinders or +size{K,M,G} (394-1305, default 1305): +5G
Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  Linux

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

3.3 格式化成LVM

[root@node1 ~]# fdisk  /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').Command (m for help): p   
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  Linux
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): tPartition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   8e  Linux LVM
/dev/sdb2             394        1047     5253255   8e  Linux LVM
Command (m for help): wThe partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

在这里插入图片描述

3.4 其他格式化

# 格式化成xfs
 mkfs.xfs -n ftype=1 /dev/vdb -f
# 格式化成ext4
mkfs.ext4 /dev/vdb

4. 常用场景

4.1 创建LVM并挂载

[root@localhost ~]# pvcreate /dev/vdb1            ##创建物理卷
[root@localhost ~]# vgcreate -s 8M vg0 /dev/vdb1  ##创建物理卷组vg0,PE为8M
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0   ##在卷组vg0上创建名为lv0,大小为300M的逻辑卷

[root@localhost ~]# mkfs.xfs -n ftype=1 /dev/vg0/lv0 -f         ##格式化逻辑卷并改系统格式为xfs
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0         ##格式化逻辑卷并改系统格式为ext4
[root@localhost ~]# mount /dev/vg0/lv0 /mnt       ##挂载【linux下的文件系统需要被挂载后才能使用】
[root@localhost ~]# df -h

4.2 LVM扩容

4.2.1 xfs扩容

分为2种情况

  1. 情况1: vg足够扩展
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0      ##扩展逻辑卷空间到500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0            ##扩展文件系统
  1. 情况2:vg不够拉伸,得先扩大设备再扩大系统

先申请设备并扩容,确保vg足够

[root@localhost ~]# pvcreate /dev/vdb2        ##创建物理卷/dev/vdb2 
[root@localhost ~]# vgextend vg0 /dev/vdb2    ##将新的物理卷vdb2添加到现有的卷组vg0 

扩展逻辑卷

[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0     ##增加逻辑卷空间到1500M 
[root@localhost ~]# xfs_growfs /dev/vg0/lv0			   ## 扩容xfs文件系统

4.2.2 ext4扩容

分为2种情况

  1. 情况1: vg足够扩展
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0      ##扩展逻辑卷空间到500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0            ##扩展文件系统
  1. 情况2:vg不够拉伸,得先扩大设备再扩大系统

先申请设备并扩容,确保vg足够

[root@localhost ~]# pvcreate /dev/vdb2        ##创建物理卷/dev/vdb2 
[root@localhost ~]# vgextend vg0 /dev/vdb2    ##将新的物理卷vdb2添加到现有的卷组vg0 

扩展逻辑卷

[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0     ##增加逻辑卷空间到1500M 
[root@localhost ~]# resize2fs /dev/vg0/lv0     	## 扩容ext4文件系统

4.2 缩减逻辑卷lv

[root@localhost ~]# umount /mnt                     ##先卸载
[root@localhost ~]# e2fsck -f /dev/vg0/lv0          ##扫描逻辑卷上的空余空间
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M    ##设备文件减少到1000M
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0  ##将逻辑卷减少到1000M
[root@localhost ~]# mount /dev/vg0/lv0 /mnt         ##挂载

4.3 缩减vg:(迁移到闲置设备)

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2  ##将vdb1的空间数据转移到vdb2
  /dev/vdb1: Moved: 88.0%
  /dev/vdb1: Moved: 100.0%                      ##转移数据成功
[root@localhost ~]# vgreduce vg0 /dev/vdb1      ##将/dev/vdb1分区从vg0卷组中移除
  Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1          ##把/dev/vdb1分区从系统中删除
  Labels on physical volume "/dev/vdb1" successfully wiped

注意:将vdb1的空间数据转移到vdb2时,要确保vdb2的足够的空间能将vdb1的数据转移,否则需要先将vdb1缩减。

4.4 LVM快照创建

[root@localhost ~]# touch /mnt/file{1..5}
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0  ##建立一个50M的快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt                 ##挂载快照
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# rm -fr *                                   ##删除所有文件
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt
[root@localhost ~]# lvremove /dev/vg0/lv0backup                   ##删除快照
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0  ##重建快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt                 ##挂载快照
[root@localhost ~]# ls /mnt                                ##又可以看到之前建立的文件

结论: LVM的快照可以将某一时刻的信息记录到快照区中,因此,可以利用这一特点对数据做完全备份。

4.5 删除设备

[root@localhost ~]# umount /mnt  ##卸载
[root@localhost ~]# df
[root@localhost ~]# lvremove /dev/vg0/lv0backup    ##删除快照
[root@localhost ~]# lvremove /dev/vg0/lv0         ##删除逻辑卷
[root@localhost ~]# vgremove vg0                  ##删除物理卷组
[root@localhost ~]# pvremove /dev/vdb{1..2}       ##删除物理卷

5. 参考文档

暂无

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 刷题 [C++] 第54题.螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 题目分析 根据题意可知,我们不需要记录已经走过的路径,只需要通过调整矩阵的上下左右边界即可完成任务;首先创建出矩阵…

Unity中URP下实现水体(水面反射)

文章目录 前言一、原理1、法一:使用立方体纹理 CubeMap,作为反射纹理使用2、法二:使用反射探针生成环境反射图,所谓反射的采样纹理 二、实现水面反射1、定义和申明CubeMap2、反射向量需要什么3、计算 N ⃗ \vec{N} N 4、计算 V ⃗…

10_Vue

文章目录 Vue快速入门Vue的指令Vue的插值表达式V指令v-bind(单向绑定)v-model(双向绑定)v-on(事件监听)v-for(循环)v-text、v-htmlv-show(显示/隐藏)v-if&…

解压缩软件哪个好用?附详细操作步骤~

在日常生活和工作中,我们经常需要处理各种压缩文件,如ZIP、RAR、嗨格式压缩大师等。而要解压这些文件,就需要借助专门的解压缩软件。然而,在众多的解压缩软件中,究竟哪个更好用呢?本文将带您一起探寻&#…

QT C++实战:实现用户登录页面及多个界面跳转

主要思路 一个登录界面,以管理员Or普通用户登录管理员:一个管理员的操作界面,可以把数据录入到数据库中。有返回登陆按钮,可以选择重新登陆(管理员Or普通用户普通用户:一个主界面,负责展示视频…

成人年龄判断(个人学习笔记黑马学习)

结合前面学习的input输入语句,完成如下案例: 1.通过input语句,获取键盘输入,为变量age赋值。(注意转换成数字类型) 2.通过if判断是否是成年人,满足条件则输出提示信息,如下: 欢迎来到黑马儿童游乐场&#x…

模块整理!YOLOv9中的“Silence”、“RepNCSPELAN4”、“ADown”、“CBLinear”创新模块汇总!

代码链接:https://github.com/WongKinYiu/yolov9/tree/main 论文链接:YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 大量文字及图片来袭! 本文整理了YOLOv9中的创新模块,附代码和结构图&a…

Golang使用Swag搭建api文档

1. 简介 Gin是Golang目前最为常用的Web框架之一。 公司项目验收需要API接口设计说明书(Golang后端服务基于Gin框架编写),编写任务自然就落到了我们研发人员身上。 项目经理提供了文档模板,让我们参考模板来手动编写,要…

代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串

代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串 LeetCode(39)组合总和 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;clas…

每日五道java面试题之spring篇(九)

目录: 第一题. 说一下Spring的事务传播行为第二题. 说一下 spring 的事务隔离?第三题. Spring AOP and AspectJ AOP 有什么区别?AOP 有哪些实现方式?第四题. JDK动态代理和CGLIB动态代理的区别第五题. 解释一下Spring AOP里面的几…

代码随想录刷题训练营day25:LeetCode(216)组合总和III、LeetCode(17)电话号码的字母组合

代码随想录刷题训练营day25:LeetCode(40)组合总和 II、LeetCode(216)组合总和III、LeetCode(17)电话号码的字母组合 LeetCode(40)组合总和 II 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util…

集合详解-迭代器遍历-增强for-List集合-List五种遍历方式-Set集合-排序规则Comparable-双列集合

Collection集合 数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 Collection 集合概述和使用 Collection…

毫米波雷达基本原理

毫米波 (mmWave) 是一类使用短波长电磁波的特殊雷达技术。雷达系统发射的电磁波信号被其发射路径上的物体阻挡继而会发生反射。通过捕捉反射的信号,雷达系统可以确定物体的距离、速度和角度。 毫米波雷达可发射波长为毫米量级的信号。在电磁频谱中,这种波…

配置MMDetection的solov2攻略整理

目录 一、MMDetection 特性 常见用法 二、ubuntu20.04配置solov2 三、Windows11配置solov2 一、MMDetection MMDetection是一个用于目标检测的开源框架,由OpenMMLab开发和维护。它提供了丰富的预训练模型和模块,可以用于各种目标检测任务&#xff…

【算法与数据结构】复杂度深度解析(超详解)

文章目录 📝算法效率🌠 算法的复杂度🌠 时间复杂度的概念🌉大O的渐进表示法。 🌠常见复杂度🌠常见时间复杂度计算举例🌉常数阶O(1)🌉对数阶 O(logN)🌉线性阶 O(N)&#x…

LiveGBS流媒体平台GB/T28181功能-查看国标设备下通道会话列表直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话

LiveGBS流媒体平台GB/T28181功能-查看直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话 1、会话列表2、会话类型3、搭建GB28181视频直播平台 1、会话列表 LiveGBS-> 国标设备-》点击在线状态 点击会话列表 2、会话类型 下拉会话类型可以看到 直播会话、回放会话、下载…

武器大师——操作符详解(上)

目录 一、操作符的分类 二、二进制和进制转换 2.1.二进制与十进制的互相转化 2.1.1 二进制转十进制 2.1.2 十进制转二进制 ​编辑 2.2.二进制转8进制和16进制 2.2.1 转8进制 2.2.2 转16进制 三、原码、反码、补码 四、移位操作符 4.1.左移操作符&#xff08;<…

【web APIs】3、(学习笔记)有案例!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、概念其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 二、案例举例电梯导航 前言 掌握阻止事件冒泡的方法理解事件委托的实现原理 一、概念…

省市区街道/乡镇四级联动vue3

最近优化了一个省.市.区/县、乡镇/街道的四级联动组件&#xff0c;技术栈是element vue3记录一下。 本来是这样的三级联动&#xff1a; 这个三级联动很简单&#xff0c;直接利用el-select组件把地区值带进去就行了&#xff0c;现在要优化成省.市.区/县、乡镇/街道的四级联动&…

若依前后端分离版开源项目学习

前言&#xff1a;vscode中vue代码没有高亮显示&#xff0c;可以下载vetur插件解决&#xff0c;ctrl点击无法跳转函数定义问题&#xff0c;可以下载vue-helper插件解决&#xff1b;idea中ctrl点击函数即可跳转函数定义。 一、登录 1.生成验证码 基本思路&#xff1a; 后端生…