码迷,mamicode.com
首页 > 其他好文 > 详细

LVM

时间:2016-03-13 06:40:15      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:lvm

简介:LVM是逻辑盘卷管理器(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性;LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用;在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作;比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

1,PV(Physical Volume)--- 物理卷 
               物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。我们实际的 partition 需要调整系统标识符 (system ID) 成为 8e (LVM 的标识符),然后再经过pvcreate 的命令将他转成 LVM 最底层的物理卷 (PV) ,之后才能够将这些 PV 加以利用。

2,VG(Volumne Group)--- 逻辑卷组 
               卷组是建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理器系统中可以只有一个卷组,也可以拥有多个卷组。每个VG 最多仅能包含 65534 个 PE 而已。 如果使用 LVM 预设的参数,则一个 VG 最大可达 256GB 的容量。

3,PE(Physical Extent)--- 物理块

               LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。

4,LV(Logical Volume)--- 逻辑卷 
               逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。lvm中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。为了方便用户利用 LVM 来管理其系统,因此 LV 的设备文件名通常指定为 /dev/vgname/lvname 的样式 (实际设备文件为 /dev/mapper/vgname-lvname)。

PS:LVM 可弹性的变更 filesystem 的容量,就是通过交换 PE来进行容量的增减;将原本 LV 内的 PE 移转到其他设备中以降低 LV 容量,或将其他装置的 PE 加到此 LV 中以加大容量。


LVM的应用:

               先准备 3 个 partition ,每个 partition 的容量分别为5G,12G,8G,并且调整 3个 partition 类型为8e;

               全部的 partition 整合成为一个 VG,VG 名称设定为 myvg;且 PE 的大小为 8MB;

               全部的 VG 容量都丢给 LV ,LV 的名称设定为 mylv;

               最终这个 LV 格式化为 ext4 的文件系统,且挂载在 /mnt/lvm 中

1,检查系统中是否安装了LVM管理工具

# rpm -qa | grep lvm

2,添加一块磁盘,创建3个分区

# fdisk /dev/sdb    (重复创建3个分区,并调整类型为8e)

         n

         p

        1

         +5G

         t

         8e

          w

3,更新分区表

# partprobe

4,创建3个物理卷

# pvcreate /dev/sdb{1,2,3}

pvcreate :将 物理partition 创建成为 PV ;
pvscan :搜寻目前系统里面任何具有 PV 的磁盘;
pvs:显示PV简略信息;
pvdisplay :显示出目前系统上面的 PV 信息;
pvremove :移除 PV ;

5,查看物理卷信息

# pvdisplay

6,创建VG

# vgcreate -s 8M myvg /dev/sdb{1,2,3}

vgcreate :创建VG ;
         -s : 指定PE的大小;
vgscan :搜寻系统上面是否有 VG 存在;
vgs:显示VG简略信息;
vgdisplay :显示目前系统上面的 VG 信息;
vgextend :在 VG 内增加额外的 PV ;
vgreduce :在 VG 内移除 PV;
vgchange :设定 VG 是否启动 (active);
vgremove :删除 VG;
vgrename:修改vg 名称;

7,查看VG信息

# vgdisplay

8,VG扩容(准备一个新分区,并调整分区类型为8e)

# pvcreate /dev/sda6

# vgextend myvg /dev/sda6

# vgdisplay

9,VG缩减

# pvmove /dev/sda6     ###先要转移数据

# vgreduce myvg /dev/sda6

# vgdisplay myvg

# pvremove /dev/sda6

10,创建LV

# lvcreate -L 10G -n mylv myvg

lvcreate :创建 LV;
         -L :后面接容量,容量的单位可以是 M,G,T 等;要注意的是,最小单位为 PE,因此这个数量必须要是 PE 的倍数,若不相符,系统会自行计算最相近的容量;
         -l  :后面可以接 PE 的个数,而不是数量。若要这么做,得要自行计算 PE 数;
         -n :后面接的就是 LV 的名称;
         -p :指定访问属性;
lvscan :查询系统上面的 LV ;
lvs:显示LV简略信息;
lvdisplay :显示系统上面的 LV 信息;
lvextend :增容 ;
lvreduce :缩减;
lvremove :删除 LV;
lvresize :对 LV 容量大小调整;
lvrename:修改LV 的名称;

11,查看LV的信息

# lvdisplay /dev/myvg/mylv

12,格式化挂载

# mke2fs -t ext4 -b 2048 /dev/myvg/mylv 

# mkdir /mnt/lvm

# mount /dev/myvg/mylv /mnt/lvm

13,扩容LV (先扩展物理边界,再扩展逻辑边界)

# lvextend -L 15G /dev/myvg/mylv

# lvs

# df -h

# resize2fs /dev/myvg/mylv

# df -h /mnt/lvm

14,缩减LV(先卸载,后缩减逻辑边界,再缩减物理边界)

# umount /mnt/lvm

# e2fsck -f /dev/myvg/mylv    ###强制文件系统检测

# resize2fs /dev/myvg/mylv 10G

# lvreduce -L 10G /dev/myvg/mylv

# mount /dev/myvg/mylv /mnt/lvm    ###重新挂载

# ls -l /mnt/lvm    ###查看文件是否还存在

# df -h /mnt/lvm

15,删除LVM(如果要彻底删除LVM的话,需要把创建的步骤反过来操作

# umount /mnt/lvm

# lvremove /dev/myvg/mylv

# vgchange -a n myvg

# vgremove myvg

# pvremove /dev/sdb{1,2,3} 

16,LVM快照 (snapshot)快照卷与被快照的LV 必须要在同一个VG 里

# lvcreate -s -L 120M -n mylv-snap -p r /dev/myvg/mylv

#  mkdir /mnt/snapshot

# mount -r /dev/myvg/mylv-snap /mnt/snapshot/

17,修改原卷中文件的内容,快照卷中对应的文件内容不变;对snapshot 里的资料进行打包备份,准备还原

# tar -Jcf /tmp/snapshot.tar.xz /mnt/snapshot/*

18,删除快照卷

# umount /mnt/snapshot

# lvremove /dev/myvg/mylv-snap

19,恢复快照

# umount /mnt/lvm

# mke2fs -t ext4 /dev/myvg/mylv

# mount /dev/myvg/mylv /mnt/lvm

# tar -Jxf /tmp/snapshot.tar.xz -C /mnt/lvm/

# ll /mnt/lvm/







本文出自 “珞辰的博客” 博客,请务必保留此出处http://luochen2015.blog.51cto.com/9772274/1750383

LVM

标签:lvm

原文地址:http://luochen2015.blog.51cto.com/9772274/1750383

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!