磁盘管理之LVM

最近总是在做LVM网上看了很多文章,写的不怎么滴。于是痛下决心,自己做一个简单明了的和大家分享一下。

一、LVM简介

LVM是 LogicalVolume Manager(逻辑卷管理)的简写,它由HeinzMauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

优点:与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales‘、‘development‘)代替物理磁盘名(如‘sda‘、‘sdb‘)来标识存储卷。

知识点:

PV 、VG、 LV三者关系

PV:是物理的磁盘分区

VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。

LV:也就是从VG中划分的逻辑分区

pv --> vg --> lv

主要关键点、注意点:

关键点:

存储空间边界:物理边界、逻辑边界

注意点:

扩展:物理边界 --> 逻辑边界

缩减:逻辑边界 --> 物理边界(缩减不能少于已经存储的所有数据空间的大小)

缩减时,先缩减文件系统,并要执行强制检测:e2fsck -f

涉及命令:

pv:pvcreate, pvs, pvdisplay, pvremove, pvmove, pvscan

vg: vgcreate, vgs, vgdisplay, vgremove, vgextend, vgreduce,vgscan

lv: lvcreate, lvs, lvdisplay, lvremove, lvextend, lvreduce,lvscan

目录:

本博主要讲LVM创建、在线扩容、在线缩减、快照和删除

废话不多说,看看实际操作:

准备环境:添加一块未使用过的磁盘/dev/sdb,使用fdisk从其中分出两个5G的分区,并且将其分区类型该为8e

[[email protected] ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 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: 0x5e9ab9d4

Device Boot      Start        End      Blocks  Id  System

/dev/sdb1              1         654     5253223+ 8e  Linux LVM

/dev/sdb2            655        1308     5253255  8e  Linux LVM

[[email protected] ~]#

一:LVM创建

1、创建物理卷PV

物理卷Physical Volume就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。pvcreate 命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。

创建物理卷PV(Physical Volume)

[[email protected] ~]# pvcreate /dev/sdb1

Physical volume"/dev/sdb1" successfully created

[[email protected] ~]# pvcreate /dev/sdb2

Physical volume"/dev/sdb2" successfully created

查看一下:

[[email protected] ~]# pvscan

PV /dev/sdb1                      lvm2 [5.01 GiB]

PV /dev/sdb2                      lvm2 [5.01 GiB]

或者:

[[email protected] ~]# pvdisplay /dev/sdb1

--- Physical volume ---

PV Name               /dev/sdb1

VG Name               testvg

PV Size               5.01 GiB / not usable 2.10 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              1282

Free PE               1282

Allocated PE          0

PV UUID              HKjj00-Gkth-MikJ-8tQ4-TpGI-y5e0-ctD3R3

2、创建卷组VG

卷组Volume Group是由多个PV整合而成的,VG最多可以有65534个PE(PhysicalExtent)组成,每一个物理卷被划分为称为PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认的PE块是4M,默认VG最大是256G{由默认的PE块大小计算:4M*65534/(1024M/G)=256G}。

[[email protected] ~]# vgcreate testvg /dev/sdb1

Volume group"testvg" successfully created

查看:

[[email protected] ~]# vgs testvg

VG     #PV #LV #SN Attr   VSize VFree

testvg   1  0   0 wz--n- 5.01g 5.01g

扩展pv:

[[email protected] ~]# vgextend testvg /dev/sdb2

Volume group"testvg" successfully extended

[[email protected] ~]# vgdisplay testvg

--- Volume group ---

VG Name               testvg

System ID

Format                lvm2

Metadata Areas        2

Metadata SequenceNo  2

VG Access             read/write

VG Status             resizable

MAX LV                0

Cur LV                0

Open LV               0

Max PV                0

Cur PV                2

Act PV                2

VG Size               10.02 GiB

PE Size               4.00 MiB

Total PE              2564

Alloc PE / Size       0 / 0

Free  PE / Size      2564 / 10.02 GiB

VG UUID              dHcETg-pshe-TR1h-tPnv-H0JQ-foWZ-0jjPJB

缩减pv:

缩减前要先将要移除硬盘上的数据迁移:

[[email protected] ~]# pvmove /dev/sdb1

[[email protected] ~]# vgreduce testvg /dev/sdb1

Removed"/dev/sdb1" from volume group "testvg"

查看:

[[email protected] ~]# vgs

VG     #PV #LV #SN Attr   VSize VFree

testvg   1  0   0 wz--n-  5.01g 5.01g

3、创建逻辑卷LV

创建逻辑卷Logical Volume,就像硬盘上的分区一样,LV的大小是PE的整数倍。LV的访问路径: /dev/vgname/lvname或/dev/mapper/vgname-lvname

Lvcreate参数: -L:创建LV的大小, -n 创建LV的名字

e.g. lvcreate -L5G -n testlv testvg

其中-L容量的指定也可以用-l选项,指定PE的个数。

[[email protected] ~]# lvcreate -L 2G -n testlv testvg

Logical volume"testlv" created

查看:

[[email protected] ~]# lvdisplay testvg

--- Logical volume ---

LV Path                /dev/testvg/testlv

LV Name                testlv

VG Name                testvg

LV UUID               cqNyAR-QLxf-9H7M-280z-2h2h-X6A0-O2LWG6

LV Write Access        read/write

LV Creation host, timewhb, 2014-07-25 18:52:19 +0800

LV Status              available

# open                 0

LV Size                5.00 GiB

Current LE             1280

Segments               1

Allocation             inherit

Read ahead sectors     auto

- currently set to     256

Block device           253:4

大功告成,LVM 创建完成,可以使用了

使用:

格式化、挂载逻辑卷testlv:

格式化:

[[email protected] ~]# mke2fs -t ext4 /dev/testvg/testlv

挂载:

[[email protected] ~]# mkdir /mnt/lvm

[[email protected] ~]# mount /dev/testvg/testlv /mnt/lvm/

查看:

[[email protected] ~]# df -h

Filesystem                Size  Used Avail Use% Mounted on

/dev/mapper/testvg-testlv 5.0G  138M  4.6G  3% /mnt/lvm

LV的在线扩展和缩减

扩展逻辑卷的步骤:

1、创建新的分区,并修改分区类型为8e

2、创建物理卷PV

3、将新创建的PV添加到要扩展的逻辑卷所在的卷组

4、用命令lvextend或者lvresize来将新加入的PE添加到要扩展的逻辑卷中

5、用命令resize2fs扩展文件系统的容量

如果卷组中有多余的空间足够扩展逻辑卷,可以直接从第4步开始。

lv扩展到6G

[[email protected] mnt]# lvextend -L 5G /dev/testvg/testlv

扩展物理边界:

[[email protected] mnt]# resize2fs /dev/testvg/testlv

详解过程:

创建1个新分区/dev/sdb3,并修改分区类型为8e,创建之后的新分区:

Device Boot      Start         End      Blocks   Id  System

/dev/sdb3             917        1570     525325

将分区信息写入分区表:

[[email protected] ~]# kpartx -af /dev/sdb

[[email protected] ~]# partx -a /dev/sdb

新硬盘创建pv:

[[email protected] ~]# pvcreate /dev/sdb3

dev_is_mpath: failed to get device for 18:02

Physical volume "/dev/sdb3" successfully created

扩展VG:

[[email protected] ~]# vgextend testvg /dev/sdb3

Volume group "testvg" successfully extended

扩展LV:

[[email protected] ~]# lvextend -L 10G /dev/testvg/testlv

Extending logical volume testlv to 10.00 GiB

Logical volume testlv successfully resized

物理边界扩展完成,下面扩张文件系统边界:

[[email protected] ~]# resize2fs /dev/testvg/testlv

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/testvg/testlv is mounted on /mnt/lvm; on-line resizing required

old desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of /dev/testvg/testlv to 3407872 (4k) blocks.

The filesystem on /dev/testvg/testlv is now 3407872 blocks long.

[[email protected] ~]# df -h

Filesystem              Size  Used Avail Use% Mounted on

/dev/mapper/testvg-testlv   10G  141M 10G   2% /mnt/lvm

缩减逻辑卷的步骤:

缩减逻辑卷一定要先离线

1、先卸载文件系统,然后强制执行检测e2fsck -f

2、然后确定要移除的物理卷的大小,有多少个PE。然后用命令resize2fs缩减文件系统大小,然后重新挂载逻辑卷

3、用命令lvreduce或者lvresize缩减指定个数的PE, 也可以计算出相应的大小来缩减

4、LV缩减之后,通过命令pvdisplay查看,指定要移除的PV,如果要移除的PV有PE在用,用pvmove转移PE到空闲的PV。pvmove可以指定要转移的PE

pvmove /dev/sdb1:1000-1999/dev/sdc1

or

pvmove /dev/sdb1:1000-1999/dev/sdc1:0-999

5、用命令vgreduce缩减指定要从卷组冲移除的物理卷,然后用pvremove命令移除物理卷

下面我们将sdb1移除详细步骤:

卸载文件系统:

[[email protected] ~]# umount /mnt/lvm

强制检测文件系统:

[[email protected] ~]# e2fsck -f /dev/testvg/testlv

e2fsck 1.41.12 (17-May-2010)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

缩减文件系统:

[[email protected] ~]# resize2fs /dev/testvg/testlv 9.7G

resize2fs 1.41.12 (17-May-2010)

resize2fs: Invalid new size: 9.7G

查看要移除的PV是否有占用的PE

[[email protected] ~]# pvdisplay

--- Physical volume ---

PV Name               /dev/sdb1

VG Name               testvg

PV Size               3.01 GiB / not usable 2.75 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              770

Free PE               519

Allocated PE          251

PV UUID               xNUWFa-1FdZ-Ctkj-rvJp-dACa-FnJw-mJf6Sc

--- Physical volume ---

PV Name               /dev/sdb3

VG Name               testvg

PV Size               1.01 GiB / not usable 3.41 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              258

Free PE               258

Allocated PE          0

PV UUID               8esNBR-k4zM-sQW6-Z71N-hKBX-0YlT-Egb1o5

#可以看出/dev/sdb1有251个PE被分配,而/dev/sdb3的258个PE都是空闲的,所以通过pvmove命令来转移被分配的PE到/dev/sdb3

[[email protected] ~]# pvmove /dev/sdb1 /dev/sdb3

/dev/sdb1: Moved: 0.0%

/dev/sdb1: Moved: 31.5%

/dev/sdb1: Moved: 74.5%

/dev/sdb1: Moved: 100.0%

转移之后:

[[email protected] ~]# pvdisplay

--- Physical volume ---

PV Name               /dev/sdb1

VG Name               testvg

PV Size               3.01 GiB / not usable 2.75 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              770

Free PE               770

Allocated PE          0

PV UUID               xNUWFa-1FdZ-Ctkj-rvJp-dACa-FnJw-mJf6Sc

--- Physical volume ---

PV Name               /dev/sdb3

VG Name               testvg

PV Size               1.01 GiB / not usable 3.41 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              258

Free PE               7

Allocated PE          251

PV UUID               8esNBR-k4zM-sQW6-Z71N-hKBX-0YlT-Egb1o5

/dev/sdb1中的数据全部都已经转移到/dev/sdb3中了.呵呵

将sdb1从testvg中移除:

[[email protected] ~]# vgreduce testvg /dev/sdb1

Removed "/dev/sdb1" from volume group "testvg"

[[email protected] ~]# pvremove /dev/sdb1

Labels on physical volume "/dev/sdb1" successfully wiped

[[email protected] ~]# pvs

PV         VG     Fmt  Attr PSize  PFree

/dev/sda2  vg0    lvm2 a--  59.99g  7.99g

/dev/sdb2  testvg lvm2 a--   4.00g     0

/dev/sdb3  testvg lvm2 a--   5.01g     0

/dev/sdb5  testvg lvm2 a--   1.01g 28.00m

大功告成!!!!!

LVM快照系统

快照就是将当时的系统资料记录下来,就好像照相记录一般。未来若有任何数据更动了,则原始数据会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。

以创建逻辑卷testlv的快照为例:

命令格式:

lvcreate -s命令创建快照

#lvcreate -L 快照区大小 -s -n 快照名 被快照的逻辑卷

创建快照:

[[email protected] ~]# lvcreate –L 1G -s -n testlv-snap/dev/testvg/testlv

Logical volume "testlv-snap" created

查看:

[[email protected] ~]# lvdisplay

--- Logical volume ---

LV Path                /dev/testvg/testlv

LV Name                testlv

VG Name                testvg

LV UUID                zi5txf-3qCY-n70x-pAq6-hfUv-OBo6-4fdFtg

LV Write Access        read/write

LV Creation host, time bogon, 2014-07-21 14:32:32 +0800

LV snapshot status     source of

testlv-snap [active]

LV Status              available

# open                 1

LV Size                9.00 GiB

Current LE             2304

Segments               2

Allocation             inherit

Read ahead sectors     auto

- currently set to     256

Block device           253:2

挂载快照:

[[email protected] ~]# mount /dev/testvg/testlv-snap /mnt/snapshot

删除LVM

以删除之前创建的LVM为例:

删除前先卸载:

[[email protected] ~]# umount /mnt/lvm

[[email protected] ~]# umount /mnt/snapshot

[[email protected] ~]# lvremove /dev/testvg/testlv-snap

Do you really want to remove active logical volume testlv-snap? [y/n]: y

Logical volume "testlv-snap" successfully removed

[[email protected] ~]# lvremove /dev/testvg/testlv

Do you really want to remove active logical volume testlv? [y/n]: y

Logical volume "testlv" successfully removed

取消激活状态的卷组:

[[email protected] ~]# vgchange -a n testvg

[[email protected] ~]# vgremove testvg

Volume group "testvg" successfully removed

删除PV:

[[email protected] ~]# pvremove /dev/sdb{2,3}

Labels on physical volume "/dev/sdb2" successfully wiped

Labels on physical volume "/dev/sdb3" successfully wiped[[email protected] ~]# pvs

PV         VG   Fmt  Attr PSize  PFree

磁盘管理之LVM,布布扣,bubuko.com

时间: 2024-10-01 04:50:20

磁盘管理之LVM的相关文章

linux下磁盘管理机制--LVM

当我们用传统分区方法使用磁盘时,当出现分区大小不够用的时候,通常只能添加添加一个更大的磁盘,重新创建分区来扩展空间.但是,这样只能是将原来的磁盘下线,换上新的磁盘,在将原始数据写入,在实际的生产过程中是不允许的.此时就需要使用逻辑卷LVM这种磁盘分区管理了. 逻辑卷是将硬盘空间重新"分割"成大小相等的块(PE)组成的PV放到一个容器(VG)中,当需要可以随时向这个容器中取出这样的块,来实现动态调整磁盘空间大小.当然新添加的块不会改变原来的文件系统,而且原磁盘也不用下线. 下面说明逻辑卷

Linux磁盘管理:LVM逻辑卷创建及使用

Linux磁盘管理:LVM逻辑卷创建及使用    一.创建LVM逻辑卷    通过图文并茂的方式来看看如何创建我们的LVM ,首先是要将我们的物理硬盘格式化成PV,然后将多个PV加入到创建好的VG中,最后通过VG创建我们的LV.所以我们第一步就是将我们的物理硬盘格式化成PV(物理卷) ①将物理硬盘格式化成PV(物理卷) 使用的是 pvcreate 命令 这里我已经事先虚拟化了3快物理硬盘,每块硬盘的大小为8G,通过 fdisk -l 命令可以查看 [[email protected] ~]# f

【转载】Linux磁盘管理:LVM逻辑卷管理

Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该分区进行文件系统的格式化,在Linux系统中如果要使用该分区就将其挂载上去即可,windows的话其实底

Linux入门之磁盘管理(9)LVM逻辑卷案例

Linux入门之磁盘管理(9)LVM逻辑卷案例 案例介绍阶段(1): 创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M:而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且支持ACL功能. 1.准备工作 #这里我们分别从两个磁盘选择10G来准备组合为PV [[email protected] ~]# fdisk -l | grep -o '/.*B' /dev/sda: 21.5 GB /dev/sdb: 2

Linux 红帽   磁盘管理~~~~RAID5+LVM

Linux  红帽    磁盘管理~~~~RAID5+LVM 实验环境: 在Linux 操作系统的PC机上添加3块20G大小的磁盘 实验步骤: 一.  创建RAID5: 1. 准备工作: [[email protected] ~]# uname -a              //查看基本信息 [[email protected] ~]# cat /etc/redhat-release        //查看红帽的发行版本 为添加好的三个磁盘进行分区, 分区的类型:FD(全称:)    为了节省

LInux磁盘管理:LVM逻辑卷

Linux磁盘管理:LVM逻辑卷 LVM简介   LVM(Logical Volume Manager 逻辑卷管理),是Linux操作系统的逻辑卷管理器.   LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性.   与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储.它使系统管理员可以更方便的为应用与用户分配存储空间. 逻辑卷基本术语 物

linux磁盘管理之LVM逻辑卷认识与管理详解(实验详细,可跟做)

Linux磁盘管理之LVM逻辑卷认识与管理详解 前言 本文接着上篇文章作如下延伸:链接:Linux磁盘管理之磁盘管理与文件系统 什么是LVM?为什么需要LVM? 如何具体进行LVM逻辑卷管理? 什么是磁盘配额?为什么需要磁盘配额? 在Linux中进行磁盘配额的条件是什么呢? 如何具体进行磁盘配额? 下面对以上问题逐一讲解,深入实例进行操作,带你深入理解linux磁盘管理之LVM逻辑卷管理. 一.LVM概述 1.什么是LVM?为什么需要LVM? ? 许多 Linux 使用者安装操作系统时都会遇到这

Linux磁盘管理之LVM

我想每个人在初次安装Linux系统都遇到过的情况,在当初规划磁盘空间的时候给/home 或者 / 分配很小的磁盘空间,等使用一段时间就发现,df 查看的时候磁盘的使用率已经超过80%以上了.现在你该怎么办呢? 可能再加一块磁盘,然后重新分割.格式化.挂载 ,复制文件到新分区,挂载在卸载! 整个过程太过繁琐.而且,若是第二次分割又不尽如意难道又要重新讲上述流程在来一遍吗?尤其是复制文件,非常的耗费文件哦.有别的办法吗? 有,就是LVM(Logical Volume Manager) LVM(Log

每天进步一点点——Linux磁盘管理之LVM与RAID

转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965799 1. 传统磁盘管理问题 当分区大小不够用时无法扩展其大小,只能通过添加硬盘.创建新的分区来扩充空间,但是新添加进来的硬盘是作为独立文件系统存在的,原有的文件系统并未得到扩充,上层应用很多时候只能访问一个文件系统.只能让现有磁盘下线,换上新的磁盘之后,再将原来磁盘中的数据导入. 2. LVM LVM(Logical Volume Manager)逻辑卷管理通过将底层物理硬盘抽象