LVM

简介:

引言

       LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

       Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现 某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如PatitionMagic等),但这都只是暂时解决办法,没有根本解决问题。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下方便地调整各个分区大小。

       DMDevice Mapper Kernel Architecture(内核模块)

       功能:RAID,LVM2,快照,多路径(多线路),实现数据存储设备的寻路,镜像功能,动态扩


基本术语

Logical Volume        上层

   可以动态扩展,每一个LV就一个文件系统分区 LE其实就是PE,只是站在LV角度,LV就像分区。


Volume Group        中层

   可以划分多个LV ,制定多少PE,给LV多少PE,就是一个存储空间。


Physical Volume     底层

   没有加入VG之前是没有PE大小和数量的,PE(底层中块,逻辑存储单元),PV对设备部挑剔,可以是任何设备。


如图:


物理卷管理命令

pvs                    查看物理卷

pvdiskplay         详细查看物理卷

pvcreate            创建物理卷

                        /dev/sdb{5,6}

pvmove             移动目标物理卷内数据到其他物理卷

                       /dev/sdb6        

pvremove         抹除目标物理卷上的数据

                       /dev/sdb6

pvscan              扫描物理卷


卷组管理命令

vgs                   查看卷组

vgdisplay          详细查看卷组

vgcreate           创建卷组

   -s #默认是4MB,设置PE大小

                       myvg  /dev/sdb{5,6}

vgremove         删除VG(只有没有LV的时候可以随便删除)

           myvg

vgreduce          从卷组中移除物理卷

                       myvg /dev/sdb6

vgextend          添加物理卷至卷组

                       myvg /dev/sdb7


逻辑卷管理命令

lvs                    查看逻辑卷

lvdisplay           详细查看逻辑卷

lvcreate            创建逻辑卷

    -n name        名字

    -L num[M|G] 制定大小

                      lvcreate -n testlv -L 2G  myvg

mke2fs -j /dev/myvg/testlv(链接文件)

                     mount /dev/myvg/testlv /mnt

                     mount

                     /dev/mapper/myvg-testlv (真正的设备文件) on /mnt type ext3 (rw)

                     umount /mnt (先卸载,移除逻辑卷)

lvremove         移除逻辑卷

                     /dev/myvg/testlv(链接文件)

                     /dev/mapper/myvg-testlv (真正的设备文件)


扩展逻辑卷

lvextend    扩展物理边界(在线扩展,不影响源数据

    -L[+]#  增大多少,不写+号,别是扩展到多少

               /path/to/lv

               lvextend -L 140M /dev/myvg/testlv (在线扩展,不影响源数据)


resize2fs    扩展逻辑边界

   -p         能扩展多少就扩展多大(和物理边界一样)

               /path/to/lv 5G  修复逻辑卷边界为5G,不能超过物理边界

               resize2fs -p /dev/myvg/testlv     扩展逻辑边界和边界一致


缩减逻辑卷

注意:1、不能在线缩减,得先umount

         2、确保缩减后的空间大小依然能存储原有的所有数据

         3、在缩减之前应该先强行检查文件,以确保系统处于一至性状态。

           umount /mnt                         1

           df -lh                                     2

           e2fsck -f /dev/myvg/testlv     3


resize2fs    缩减逻辑边界

                resize2fs  /dev/myvg/testlv 60M    缩减至多大


lvreduce    缩减物理边界

                lvreduce -L 60M /dev/myvg/testlv

                vim /etc/fstab        永久生效

                mount -a               加载/etc/fstab条目

                mount                   查看是否生效

                df -lh                     查看物理空间是否缩小


快照卷

注意:1、生命周期为整个数据时长:在这段时长,数据额的增加量不能超出快照卷大小

        2、快照卷应该是只读的

        3、快照卷和原卷在同一卷组内


lvcreate

   -s          声明是快照卷

   -p r|w    权限

               lvcreate -L # -n SLV_NAME -p r /path/to/lv


模拟快照过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cp  /etc/inittab  /mnt
lvcreate -L 50M -n testlv-snap -s -p r  /dev/myvg/testlv   创建快照卷
touch  /mnt/1
vi  /mnt/inittab                             删除后2行
mkdir  snap
mount  /dev/myvg/testlv-snap  /snap           挂载快照卷
tar  -jcf  /tmp/backup . tar .bz2  /snap/inittab  备份快照卷
或者 cd  /snap
tar  -jcf  /tmp/backup . tar .bz2 inittab
umount  /snap                                卸载快照卷
lvremove  /dev/myvg/testlv-snap              删除快照卷(结束其生命周期)
rm  -rf  /mnt/ *                              删除源目录所有文件
tar  xf  /tmp/backup . tar .bz2 -C  /mnt/         还原至当前路径下
ls
snap                                       目录下有快照时的inittab文件




本文转自 ftmoonfans  51CTO博客,原文链接:http://blog.51cto.com/soulboy/1265511
相关文章
|
Java Spring 容器
如何解决spring EL注解@Value获取值为null的问题
本文探讨了在使用Spring框架时,如何避免`@Value("${xxx.xxx}")`注解导致值为null的问题。通过具体示例分析了几种常见错误场景,包括类未交给Spring管理、字段被`static`或`final`修饰以及通过`new`而非依赖注入创建对象等,提出了相应的解决方案,并强调了理解框架原理的重要性。
687 4
antd 的table中的数据 保留小数点后两位的代码
antd 的table中的数据 保留小数点后两位的代码,你可以使用 `antd` 中的 `Table` 组件的 `render` 函数来展示保留小数点后两位的数据。
636 0
|
NoSQL Cloud Native MongoDB
云原生之使用docker部署mongodb数据库
云原生之使用docker部署mongodb数据库
429 1
云原生之使用docker部署mongodb数据库
|
5月前
|
安全 Linux 定位技术
如何在CentOS中卸载LVM磁盘
综上,卸载LVM的过程就像是一场探险,需要小心翼翼地按照地图行动,不能偏离原定的路线。希望我手绘的这张地图对你有所帮助,让你能平安顺利地完成解除LVM的挑战。记住,整个过程中你都得小心谨慎,否则就可能会丢掉紧张刺激、惊险无比的宝石。在这个探险中,我为你解答了如何卸载LVM,提供了明确的指导和路线。人生就是一场探险,希望你在这个过程中学到的不仅仅是如何卸载LVM,更多的是如何在解决问题的过程中,认识自我,挑战自我,超越自我。那么,探险家们,还在等什么,让我们开始吧!
260 35
|
前端开发 Java 程序员
记录:java.net.SocketTimeoutException: connect timed out...【亲测有效】
记录:java.net.SocketTimeoutException: connect timed out...【亲测有效】
2546 0
|
存储 Ubuntu 5G
LVM 概念、术语和操作简介
LVM 概念、术语和操作简介
1041 1
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错合集之遇到了关于MySqIValidator类缺失的错误,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的干洗店预约洗衣系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的干洗店预约洗衣系统附带文章源码部署视频讲解等
189 1
|
存储 机器学习/深度学习 安全
Linux加强篇007-使用RAID与LVM磁盘阵列技术
山重水复疑无路,柳暗花明又一村
624 0
Linux加强篇007-使用RAID与LVM磁盘阵列技术