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

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、pvscanVG: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  SystemCommand (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): pDisk /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: 0x39094458Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  LinuxCommand (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 其他格式化

# 格式化成xfsmkfs.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.mzph.cn/news/710152.shtml

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

相关文章

设计模式(二)单例模式

单例模式:确保一个类只有一个实例,并提供了全局访问点;主要是用于控制共享资源的访问; 单例模式的实现分为懒汉式和饿汉式。 懒汉式单例在需要时才会创建,而饿汉式单例则在类加载时立即创建实例; 单例模…

印象笔记 - Markdown 入门指南

一、Markdown 是什么? Markdown 是一种轻量级的「标记语言」,创始人为约翰格鲁伯,用简洁的语法代替排版,目前被越来越多的知识工作者、写作爱好者、程序员或研究员广泛使用。其常用的标记符号不超过十个,相对于更为复…

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人 前言一、Deepfakes技术原理卷积神经网络(CNN):细致的艺术学徒生成对抗网络(GAN):画家与评审的双重角色…

MySQL 逗号分隔查询--find_in_set()函数

业务场景: 在使用MySQL的时候,可能的某个字段存储的是一个英文逗号分割的字符串(这里我们不讨论表设计的合理性),如图所示: 我们在查询的时候需要匹配逗号分割中的某个字符串,该怎么查询呢&am…

CRM 系统:管理工作流程的最佳利器全面解析

一个好的CRM解决方案能够使您业务保持活力——也就是管理客户。这意味着CRM系统提供了包括流程自动化、联系人管理、多渠道管理、数据分析等一系列工具。可以说,CRM是企业管理工作流程的最佳工具之一。 现在,市场上有上万种不同类型的CRM解决方案&#…

机器学习提升秘籍:Scikit-learn学习网站全攻略!

介绍:是一个开源的Python机器学习库,它提供了一整套用于数据挖掘和数据分析的工具,包括各种分类、回归、聚类和降维算法以及模型评估、选择和数据预处理等功能。以下是关于Scikit-learn的一些详细介绍: 算法覆盖广泛:S…

Mendix 开发实践指南|Mendix的核心概念

在当今快速变化的技术环境中,Mendix平台以模型驱动开发方法,重新定义了应用程序的构建过程。本章内容,将深入探讨Mendix的几大核心概念:模型驱动开发、微流、纳流 、 实体模型和页面,旨在帮助我们全面理解Mendix平台的…

java之Bean对象

1. 什么是Bean? Bean被实例化的,是被Spring框架所管理的Java对象。 Spring容器会自动完成Bean的实例化。将所创建的的Bean自动注入到Ioc容器中以供调用。 spring框架中 IOC容器中管理的对象就是Bean对象 2. 第三方bean Bean 因为第三方bean&#xff0…

​LeetCode解法汇总2476. 二叉搜索树最近节点查询

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCode,lintCode等网站题目的解法和代码,以及完整的mode类&#…

如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

Linux系统编程之线程互斥锁的使用方法

文章目录 一、Linux上线程开发互斥锁概要二、创建及销毁互斥锁2.1 示例:主线程等待两个线程退出,1线程和2线程打印信息 三、互斥量的初始化问题 一、Linux上线程开发互斥锁概要 互斥量(mutex)从本质上来说是一把锁,在…

Stable Diffusion 模型分享:yayoi_mix(日本美女、真实、照片)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五 下载地址 模型介绍 yayoi_mix 是一个现实模型,是一个针对日本女性训练及合并的模型。 条目内容类型大模型基础模型SD…

前后端项目宝塔linux部署(springboot,vue,python)

宝塔linux安装就省略了,网上一堆 1.部署后端 1.首先把自己项目里面打包好的的jar包上传到服务器随便一个地方,我这里就上传到www/wwwroot下面了,宝塔的文件页面可以很便携上传 2.然后到下面这个页面 选那个java环境管理装个jdk&#xff…

全网首个GDB移植手册【Howto:Porting the GUN Debugger】翻译

Howto:Porting the GUN Debugger ✍【作者】:电子科大不知名程序员 📣【说明】:本文是自己在搭建mcore架构GDB时的参考的手册,具有很强的学习指导性,因原文档(链接:https://www.embecosm.com/a…

企业文件图纸加密有哪些?图纸文件加密防泄密软件如何选?

在现在的市场发展中,对于企业的图纸文件安全问题越来越重视,如设计图纸,重要文件等,一旦泄漏就会给企业造成巨大的经济损失。所以对企业管理者来讲,如何才能选择一款好用的适合本企业的图纸文件加密软件是非常重要的&a…

网络编程难点之select、poll与epoll详解

前言 为什么需要I/O多路复用技术? 首先,I/O多路复用技术主要被应用在需要高性能的网络服务器程序中。 高性能网络服务器程序需要做的事情就是供多个客户端同时进行连接并处理客户端传送过来的数据请求: 对于这种情况,很多人自然…

【招生】江西师范大学—地质灾害研究团队—地理与环境学院/鄱阳湖流域实验室

【招生】江西师范大学—地质灾害研究团队—地理与环境学院/鄱阳湖流域实验室 研究方向:InSAR、极化SAR、GNSS、地球物理、GIS 招生专业:GIS、人文地理 学院地址:江西南昌江西师范大学

什么是数据同步利器DataX,如何使用?

什么是 Datax? DataX 是阿里云 DataWorks数据集成 的开源版本,使用Java 语言编写,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、Ma…

python笔记_数据类型

定义:python的变量在使用前必须赋值,数据类型指的是变量指定的内存数据的类型 string字符串类型使用引号int整型整数float浮点型小数bool布尔值(逻辑)输出true/false A,整数类型 整型字节 1,python的整数有十六进制,十进制&#…

面试数据库篇(mysql)- 11主从同步

原理 MySQL主从复制的核心就是二进制日志 二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。 复…