概述

LVM的产生是因为传统的分区一旦分区好后就无法在线扩充空间,也存在一些工具能实现在线扩充空间但是还是会面临数据损坏的风险;传统的分区当分区空间不足时,一般的解决办法是再创建一个更大的分区将原分区卸载然后将数据拷贝到新分区,但是在企业的生产系统往往不允许停机或者允许停机的时间很短,LVM就能很好的解决在线扩充空间的问题,而且不会对数据造成影响,LVM还能通过快照在备份的过程中保证日志文件和表空间文件在同一时间点的一致性;本篇文章不会对概念知识做太详细的介绍,主要讲述LVM的扩容、收缩、移除的方法。

原理

PE(Physical Extend):卷的最小单位,默认4M大小,就像我们的数据是以页的形式存储一样,卷就是以PE的形式存储。

PV(Physical Volume):物理卷,如果要使用逻辑卷,首先第一步操作就是将磁盘格式化成PV,从上图可以看出PV是保护PE的,PV内PE的数量取决于这块磁盘的容量/4M.

VG(Volume Group):卷组,VG就是将很多PE组合在一起生成一个卷组,当然这里的PE是可以跨磁盘的,如果当前服务器磁盘空间不足就可以增加一个新磁盘对当前系统不会产生任何影响。

LV(Logical Volume):逻辑卷,逻辑卷最终是给用户使用的,前面几个都是为创建逻辑卷做的准备,创建逻辑卷的大小只要不超过VG剩余空间就可以。

步骤:

1.PV:格式化磁盘

2.VG:创建卷组

3.LV:创建逻辑卷

4.mkfs:格式化逻辑卷

5.mount:挂载逻辑卷

创建LV

1.PV(格式化磁盘):pvcreate命令  

第一步就是对磁盘格式化,不要对现有已分区的磁盘做这个操作。

先查看当前系统磁盘信息,我电脑通过虚拟机刚添加了两块块20G的磁盘,分别是sdb、sdc,使用fdisk -l查看

fdisk -l

格式化/dev/sdb

pvcreate /dev/sdb /dev/sdc

使用pvdisplay或者pvs查看pv信息

从上图可以的信息可以得知PV的大小和剩余空间信息。

2.VG(创建卷组):vgcreate命令

vgcreate vggroup /dev/sdb /dev/sdc

vggroup是卷组名称

使用vgdisplay和vgs查看vg信息

通过vgdisplay可以查看vg的大小和PE的大小,从上图可以看到单个PE的默认大小是4M,当前VG总共有10238个PE,当前vg总共使用了两个pv。

3.LV(创建逻辑卷):lvcreate -n 逻辑卷名称 -L 逻辑卷大小 卷组名

记住创建逻辑卷大小不能超过卷组的剩余空间大小,我这里创建30G大小的逻辑卷。

lvcreate -n lv -L 30G vggroup

使用lvdisplay和lvs查看lv的信息

lvdisplay可以获取到的lv信息包括,lv的名称和路径、lv对应的vg组的名称、lv的大小、当前lv包含的PE数量。

lv的文件路径保存在vg下面。

4.mkfs(格式化lv)

mkfs.ext4 /dev/vggroup/lv

5.mount(挂载LV)

mount -t ext4 /dev/vggroup/lv /mnt

使用df -h查看挂载信息

注意:这里的挂载只是临时挂载,当服务器重启后挂载会没有,需要永久挂载需要修改配置文件,方法参考:http://www.cnblogs.com/chenmh/p/5097530.html

扩充逻辑卷(LV)

在对LV(逻辑卷)进行容量扩充之前先查看VG(卷组)中剩余空间有多少,扩充的大小不能超过VG剩余的空间大小

vgdisplay

当前VG剩余空间9.99G

1.lvextend(扩充逻辑卷)

为了演示在线扩充对文件不造成影响,我先在/mnt目录下创建了一个text测试文件,内容为“1”

lvextend -L +.99G /dev/vggroup/lv

这里将VG所有的剩余空间全部划分给LV

vg的剩余空间变成了0

LV的大小变成了39.99G

2.resize2fs:更新文件系统 

resize2fs  /dev/vggroup/lv

查看/mnt目录下的text文件是否受影响

文件没有受影响。

扩充卷组(VG)

当前我系统VG已经没有剩余空间了,如果这个时候系统空间不够了,这个时候就要增加一块磁盘来增加VG的大小,在虚拟机我增加一个10G的新磁盘sdd

1.格式化新磁盘(pvcreate)

pvcreate /dev/sdd

2.将格式化的PV添加到VG中去(vgextend)

vgextend vggroup /dev/sdd

3.查看当前vg的大小(vgdisplay)

当前VG的大小变成了50G,剩余空间也变成10G,当前VG的PV数变成了3

收缩逻辑卷(LG)

注意:对逻辑卷进行收缩操作之前必须先卸载逻辑卷,再缩小文件系统,最后才是缩小逻辑卷,而且收缩的大小也不能超过剩余空间大小。

1.卸载逻辑卷(unmount)

umount /mnt

2.收缩文件系统

这步一定要操作,而且是在收缩LV之前操作

先检查文件系统(e2fsck)

e2fsck -f /dev/vggroup/lv

缩小文件系统(resize2fs)

将文件系统缩小到30G,刚才如果细心注意会发现,使用lvdisplay查看文件系统是39.9G,而通过df -h查看是40G,这里以df -h的大小为准,因为下一步收缩LV的时候是通过减操作,所以要数据一致性下一步就是-10G

--将文件系统缩小为30G
resize2fs /dev/vggroup/lv 30G

3.缩小LV(lvreduce)

lvreduce -L -10G /dev/vggroup/lv

注意:这三步操作顺序不能弄乱。

接下来再挂载lV卷看看空间是否修改

mount /dev/vggroup/lv /mnt/

可以看到重新挂载后text文件还是存在,lv的大小也变成了30G

虽然可以使用收缩LV但是还是不建议这样做,特别是企业的系统,因为收缩后的结果会存在很多的未知可能。

收缩卷组(VG)

收缩卷组只能对那些未使用pv进行操作,如果你的当前PV已经已经在逻辑卷中被使用,那么该PV是不能去除的,比如刚才新增加的sdd磁盘未被使用就可以将其从VG中去除。

通过PVS查看那些PV已被使用

pvs

当前只有/dev/sdd未被使用

1.卸载逻辑卷

逻辑卷对应的是卷组而不是PV,虽然sdd在前面的操作并没有被添加到LV当中,但是这里还是需要先将LV卸载

umount /mnt

2.移除PV(vgreduce)

vgreduce vggroup /dev/sdd

3.删除pv

pvremove /dev/sdd

可以看到/dev/sdd已经被移除

删除lv、vg、pv

1.同样删除前先卸载所有lv,在当前系统只有一个lv

umount /mnt

2.lvremove,vgreomve,pvremove

--删除LV
lvremove /dev/vggroup/lv --删除VG
vgremove vggroup --删除PV
pvremove /dev/sdb /dev/sdc

这些删除操作都确保未被使用,比如删除LV在删除前先将数据拷贝出去然后再删除,删除VG确保VG组中不存在LV,删除PV刚才已经说过了,PV需要没有被使用。

重设一个lV的大小

删除LV

卸载LV
umount /home
删除lv
lvremove /dev/vg_mingyu001/lv_home

创建LV

创建LV
lvcreate -n lv_home -L 100G vg_mingyu001
格式化lv
mkfs.ext4 /dev/vg_mingyu001/lv_home
挂载lv
mount -t ext4 /dev/vg_mingyu001/lv_home /home

查看

查看挂载
df -h

mount挂载相关内容参考: http://www.cnblogs.com/chenmh/p/5097530.html

分区相关内容参考:http://www.cnblogs.com/chenmh/p/5096592.html

修改逻辑卷名

 1.查看逻辑卷名

lvscan
[root@monitor ~]# lvscan
ACTIVE '/dev/vggroup/lv' [19.00 GiB] inherit

2.修改逻辑卷名

lvrename /dev/vggroup/lv /dev/vggroup/lv_data

将逻辑卷名“lv”改为“lv_data”

3.修改分区文件

vim /etc/fstab

这里同样将lv改成lv_data

4.修改引导

vim /etc/grub.conf 

引导只针对boot分区,如果不是针对boot分区的逻辑卷进行改名那么也就不修改修改引导的逻辑卷卷名了。

5.重启

reboot

20161410补充

总结

LVM带来的好处不仅仅是在线扩容,在备份的过程中为了保证日志文件和表空间文件一致性问题也用到了LVM,在工作当中可能会遇到这种情况,当前的逻辑空间全部分配到了一个不合理的挂载上了,现在需要将这个挂载的空间调小,这种情况下需要提前将这个挂载内的文件拷贝到别的地方,然后卸载挂载删除lv,再创建一个小的LV,将原先的文件拷贝回来。对于特别重要的数据可以先用一个新盘挂载分配好逻辑LV将数据拷贝到新的LV上然后卸载旧的LV,将新的LV挂载到挂载到旧的LV的挂载点上确保新盘无误后可以删除旧的数据。

不要吝啬投上您神圣的一票!!!

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

Linux LVM逻辑卷的更多相关文章

  1. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...

  2. Linux 笔记 - 第十七章 Linux LVM 逻辑卷管理器

    一.前言 在实际生产中,有时会遇到磁盘分区空间不足的情况,这时候就需要对磁盘进行扩容,普通情况下需要新加一块磁盘,重分区.格式化.数据复制.卸载旧分区.挂载新分区等繁琐的步骤,而且有可能造成数据的丢失 ...

  3. Linux lvm 逻辑卷篇

    Linux LVM逻辑卷配置过程详解(创建.增加.减少.删除.卸载) 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用 ...

  4. Linux LVM逻辑卷配置过程详解

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  5. (转)Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)

    一.预备知识 LVM全称为Logical Volume Manager 逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘 ...

  6. Linux LVM 逻辑卷管理

    使用Linux好久了,一定会意识到一个问题,某个分区容量不够用了,想要扩容怎么办?这里就涉及到LVM逻辑卷的管理了,可以动态调整Linux分区容量. LVM 概述 全称Logical Volume M ...

  7. Linux随笔 - Linux LVM逻辑卷配置过程详解[转载]

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  8. LINUX——LVM逻辑卷管理

    LVM: logical volumes manager LVM逻辑卷部署 物理卷—>卷组—>逻辑卷 第一步:关机添加磁盘:两个磁盘可以构成一个磁盘组. 第二步:查看磁盘 # ls /de ...

  9. linux LVM逻辑卷管理

    什么是LVM LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性. ...

  10. linux lvm逻辑卷管理之lvdisplay命令

    linux 磁盘管理分fdisk parted 和LVM三种方式,我们这里重点是说lvm 我们来看看LVM基本术语(lvm和传统fdisk分区方式有区别)由于传统的磁盘管理不能对磁盘进行磁盘管理,因此 ...

随机推荐

  1. windows下mysql客户端输入中文显示??解决方法

    >>>>>>>>>>>>>>>>>>>> 1.检查并修改mysql的my.ini ...

  2. 用vue2 +vue-router2 + es6 +webpack 高仿饿了么app(干货满满)

    #高仿饿了么app商家详情 (vue2 +vue-router2 + es6 +webpack )   ##demo [demo 地址](http://liangxiaojuan.github.io/ ...

  3. ASP.NET 给作为隐藏域的TextBox赋值之后提交表单,无响应?

    操作步骤: 给页面隐藏TextBox赋值,然后触发ASP.NET change事件,调用ASP.NET后台方法,调用后执行客户端脚本this.RegisterClientScriptBlock(Dat ...

  4. myeclipse 无法启动

    1.对项目中的一个文件重新命名,导致卡死,结束myeclipse进程不管用,重启不管用. 删除工程下的文件  以  .markers.snap 和  marker开头的两个文件   位置: 工作空间\ ...

  5. three.js模型

    Three.js有一系列导入外部文件的辅助函数,是在three.js之外的,使用前需要额外下载, 在https://github.com/mrdoob/three.js/tree/master/exa ...

  6. Unity3D 脚本编译器无法关联VisualStudio2012解决办法

    开发环境:Win8 + Unity 4.34f1 +Visual Studio2012 旗舰版 解决办法:   1.创建一个start.bat文件,内容为:[start "" %* ...

  7. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)

    A. Within Arm's Reach 留坑. B. Bribing Eve 枚举经过$1$号点的所有直线,统计直线右侧的点数,旋转卡壳即可. 时间复杂度$O(n\log n)$. #includ ...

  8. Linux内核笔记--网络子系统初探

    内核版本:linux-2.6.11 本文对Linux网络子系统的收发包的流程进行一个大致梳理,以流水账的形式记录从应用层write一个socket开始到这些数据被应用层read出来的这个过程中linu ...

  9. apt 根据注解,编译时生成代码

    apt: @Retention后面的值,设置的为CLASS,说明就是编译时动态处理的.一般这类注解会在编译的时候,根据注解标识,动态生成一些类或者生成一些xml都可以,在运行时期,这类注解是没有的~~ ...

  10. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...