我的地盘我做主(二)——LVM

逻辑卷管理器(英语:Logical Volume Manager,缩写为LVM),又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume management)功能。它在硬盘的硬盘分区之上,又创建一个逻辑层,以方便系统管理硬盘分区系统。最先由IBM开发,在AIX系统上实现,OS/2 操作系统与 HP-UX也支持这个功能。在1998年,Heinz Mauelshagen 根据在 HP-UX 上的逻辑卷管理器,写作出第一个 Linux 版本的逻辑卷管理器。——维基百科

这是我们“我的地盘我做主”系列的第二季,讲述的是可爱又可恨的LVM,它能够实现我们的存储空间动态的在不重启和关机的情况下增加或缩减。这个功能这么强大为什么会可恨呢?因为如果我们的数据丢失那么在LVM级别找回数据要比直接在磁盘级别难的多的多,所以有些管理员就不太提倡使用LVM,不过话又说回来,“恨”难道不是因为“爱”吗?

通常情况下来说我们的LVM包括三部分:物理卷(PV),卷组(VG),逻辑卷(LV)。在实际操作中他是五个层次,在PV之下得有磁盘分区,在LV之上得有文件系统。LVM工作的原理是:

1、通过创建PV可以实现向PV之中动态的添加物理磁盘分区来控制PV的大小;

2、创建VG,可以把PV等分成多个物理扩展单元(PE),通过向VG中动态添加PE的形式来控制VG的大小;

3、创建LV,通过向LV中添加逻辑扩展单元(LE)来控制LV的大小;

4、通过伸展文件系统的方式,动态控制文件系统的大小。

在LVM中可以把PV理解为磁盘,把VG理解为扩展分区,把LV理解为扩展分区下的磁盘分区,但只是比喻。使用LVM还有一个好处就是可以创建快照,快照是LVM的一个特性,相当于访问原磁盘的另一个入口,能够热备份磁盘数据。它的原理是:创建快照的一瞬间扫描所对应磁盘的元数据区,并将时间戳停留在创建快照的时刻,如果在备份的过程中有文件被改变则事先将被改变的文件复制到快照区域内,然后备份从快照入口进行而不是直接从原磁盘进行。快照必须和被备份的数据在同一个LV之中。

接下了我们就通过一个实例来见证一下LVM的创建、动态增减和备份的过程(由于时间关系,今天还有两个博客没写呢555,就只复制命令及显示效果不再截图了):

## 创建PV

## 准备块设备,调整类型8e,不要格式化

##            fdisk /dev/sdb|sdc

## [[email protected] ~]# pvcreate /dev/{sdb8,sdc1}

##  Physical volume "/dev/sdb8" successfully created

##  Physical volume "/dev/sdc1" successfully created

## [[email protected] ~]# pvs

##  PV         VG   Fmt  Attr PSize  PFree

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

##  /dev/sdb8       lvm2 ---   8.93g  8.93g

##  /dev/sdc1       lvm2 ---  10.00g 10.00g

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

##  --- Physical volume ---

##  PV Name               /dev/sda2

##  VG Name               vg0

##  PV Size               60.00 GiB / not usable 8.00 MiB

##  Allocatable           yes

##  PE Size               8.00 MiB

##  Total PE              7679

##  Free PE               1023

##  Allocated PE          6656

##  PV UUID               EtliVS-uMl7-Cofz-oJdT-4ci8-PkeO-i9HtPI

##

##  "/dev/sdb8" is a new physical volume of "8.93 GiB"

##  --- NEW Physical volume ---

##  PV Name               /dev/sdb8

##  VG Name

##  PV Size               8.93 GiB

##  Allocatable           NO

##  PE Size               0

##  Total PE              0

##  Free PE               0

##  Allocated PE          0

##  PV UUID               aQypnH-kaw0-iNLf-tc4s-EDOk-2lF1-a8rsLh

##

##  "/dev/sdc1" is a new physical volume of "10.00 GiB"

##  --- NEW Physical volume ---

##  PV Name               /dev/sdc1

##  VG Name

##  PV Size               10.00 GiB

##  Allocatable           NO

##  PE Size               0

##  Total PE              0

##  Free PE               0

##  Allocated PE          0

##  PV UUID               z3VxUx-xs9y-IuQw-oXys-oBha-dISA-20NVn7

## yb,zb 更大的度量单位

## [[email protected] ~]# vgcreate myvg /dev/{sdb8,sdc1} --> 不指定PE大小默认为4M

## [[email protected] ~]# vgremove -t myvg --> 测试能否删除,去掉-t直接删除

## [[email protected] ~]# vgcreate -s 16M myvg /dev/{sdb8,sdc1} --> PE越大浪费空间越多,增加缩减LV越粗糙

##  Volume group "myvg" successfully created

## [[email protected] ~]# vgdisplay

##  --- Volume group ---

##  VG Name               myvg

##  System ID

##  Format                lvm2

##  Metadata Areas        2

##  Metadata Sequence No  1

##  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               18.92 GiB

##  PE Size               16.00 MiB

##  Total PE              1211

##  Alloc PE / Size       0 / 0

##  Free  PE / Size       1211 / 18.92 GiB

##  VG UUID               uzQfZt-uFEg-2tm2-Mwe1-cXrd-zi9C-bi7rBQ

##

## 当在缩减VG时应当先把要去除的PV上的有数据的PE移动到(move)同VG中其他PV当中,而不能直接移除(remove)PV

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

##  No data to move for myvg

## [[email protected] ~]# vgreduce myvg /dev/sdb8

##  Removed "/dev/sdb8" from volume group "myvg"

## 扩展vg:通过向VG中添加更多的PV实现

## [[email protected] ~]# vgextend myvg /dev/sdb8

##  Volume group "myvg" successfully extended

## 移除PV:首先要reduces VG然后再remove PV

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

##  Labels on physical volume "/dev/sdb8" successfully wiped

##

## 创建LV:

## -l:指定PE的个数

## -L:直接指定大小(但必须是PE的整数倍)

## [[email protected] scrips]# lvcreate -L 3G -n mylv myvg

## Logical volume "mylv" created

##

## [[email protected] ~]# lvs

##  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

##  mylv myvg -wi-a-----  2.00g

## [[email protected] ~]# lvdisplay

##  --- Logical volume ---

##  LV Path                /dev/myvg/mylv

##  LV Name                mylv

##  VG Name                myvg

##  LV UUID                3wwSaO-MyyT-jTQa-hVyq-nxoR-cX8v-ufFaiL

##  LV Write Access        read/write

##  LV Creation host, time bogon, 2015-04-04 12:53:03 +0800

##  LV Status              available

##  # open                 0

##  LV Size                2.00 GiB

##  Current LE             128

##  Segments               1

##  Allocation             inherit

##  Read ahead sectors     auto

##  - currently set to     256

##  Block device           253:4

## 逻辑卷LV的路径:两个链接路径,一个实际路径

## [[email protected] ~]# ll /dev/myvg/mylv

## lrwxrwxrwx 1 root root 7 Apr  4 12:53 /dev/myvg/mylv -> ../dm-4

## [[email protected] ~]# ll /dev/mapper/myvg-mylv

## lrwxrwxrwx 1 root root 7 Apr  4 12:53 /dev/mapper/myvg-mylv -> ../dm-4

##

## 创建文件系统:移除LV操作不可逆,移除后LV上的所有数据都会删除

## [[email protected] ~]# mke2fs -t ext4 /dev/myvg/mylv

## [[email protected] ~]# mount /dev/myvg/mylv /users/

## 移除LV:要先卸载,再移除

## [[email protected] ~]# lvremove -t /dev/myvg/mylv --> 去掉-t则为真正移除

##

## 扩展LV:先扩展物理边界,再扩展逻辑边界

## 1、扩展物理边界-->这里使用的是LVextend

## [[email protected] ~]# lvextend -L 5G /dev/myvg/mylv

##  Size of logical volume myvg/mylv changed from 2.00 GiB (128 extents) to 5.00 GiB (320 extents).

##  Logical volume mylv successfully resized

## [[email protected] ~]# df -h /dev/myvg/mylv

## Filesystem            Size  Used Avail Use% Mounted on

## /dev/mapper/myvg-mylv

##  2.0G  3.1M  1.9G   1% /users

## df -h 可以查看使用情况和挂载情况,逻辑边界仍没改变

## 2、扩展逻辑边界

## [[email protected] ~]# resize2fs /dev/myvg/mylv

## resize2fs 1.41.12 (17-May-2010)

## Filesystem at /dev/myvg/mylv is mounted on /users; on-line resizing required

## old desc_blocks = 1, new_desc_blocks = 1

## Performing an on-line resize of /dev/myvg/mylv to 1310720 (4k) blocks.

## The filesystem on /dev/myvg/mylv is now 1310720 blocks long.

##

## [[email protected] ~]# df -h /dev/myvg/mylv

## Filesystem            Size  Used Avail Use% Mounted on

## /dev/mapper/myvg-mylv

##  4.9G  4.0M  4.7G   1% /users

## 逻辑边界已经扩展了

## lvresize既能缩减又能扩展

## 缩减lv:切记要离线进行,先缩减文件系统大小,再缩减lv大小,并且缩减后的大小要能够容纳现有的所有数据

## [[email protected] ~]# du -sh /users/ --> 确保缩减后的容量能够装下现有数据

## 24K /users/

## [[email protected] ~]# umount /users/ --> 卸载要缩减的lv

## [[email protected] ~]# e2fsck -f /dev/myvg/mylv --> 强制检查lv,并且没有报错

## e2fsck 1.41.12 (17-May-2010)

## Pass 1: Checking inodes, blocks, and sizes

## Pass 2: Checking directory structure

## Pass 3: Checking directory connectivity

## Pass 4: Checking reference counts

## Pass 5: Checking group summary information

## /dev/myvg/mylv: 12/327680 files (0.0% non-contiguous), 37983/1310720 blocks

##

## [[email protected] ~]# resize2fs /dev/myvg/mylv 3G --> 缩减文件系统至3G

## resize2fs 1.41.12 (17-May-2010)

## Resizing the filesystem on /dev/myvg/mylv to 786432 (4k) blocks.

## The filesystem on /dev/myvg/mylv is now 786432 blocks long.

##

## [[email protected] ~]# lvreduce -L 3G /dev/myvg/mylv --> 缩减物理边界至3G

##  WARNING: Reducing active logical volume to 3.00 GiB

##  THIS MAY DESTROY YOUR DATA (filesystem etc.)

## Do you really want to reduce mylv? [y/n]: y

##  Size of logical volume myvg/mylv changed from 5.00 GiB (320 extents) to 3.00 GiB (192 extents).

##  Logical volume mylv successfully resized

## [[email protected] ~]# lvs /dev/myvg/mylv

##  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

##  mylv myvg -wi-a----- 3.00g

##

## 创建快照卷

## 快照卷应该是只读的,不能人为的向上面写东西

## 1、快照卷要与原卷在同一卷组中,因此创建快照卷无需指定卷组,而且原卷中要有足够的空间来创建快照卷

## [[email protected] ~]# lvcreate -L 50M -n mylv-snap -p r -s /dev/myvg/mylv

## --> -L指定大小,如果不是pe的整数倍则是大于指定数的最小整数,-n指定快照名称,-p指定权限r只读,-s指定为创建快照卷,/dev/myvg/mylv指定对谁创建快照卷

##  Rounding up size to full physical extent 64.00 MiB

##  Logical volume "mylv-snap" created

## 2、挂载快照卷

## [[email protected] ~]# mount -r /dev/myvg/mylv-snap /backup/

## [[email protected] ~]# ll /backup/

## total 20

## drwx------ 2 root root 16384 Apr  4 16:09 lost+found

## -rw-r--r-- 1 root root  3427 Apr  4 16:10 passwd

## 3、修改原卷,快照卷中的内容不会更新,如果实时修改需要用到在线备份工具或冗余工具

## 4、要通过快照卷备份原卷,备份过之后就可以卸载删掉快照卷

## 逻辑卷不会简单的使用,因为物理设备坏的几率会变大,通常会把LVM放到RAID上以降低物理设备坏的几率

## LVM一般都是放的操作系统,如果坏了重装个系统就可以了

OK,希望本文能够给您带来帮助,如有错误敬请指出,拜谢!

时间: 2024-08-07 21:17:07

我的地盘我做主(二)——LVM的相关文章

【Linux系统】磁盘划分之二LVM逻辑卷及磁盘配额

LVM逻辑卷的创建和管理与磁盘配额 首先解释一下LVM卷分为PV(physical Volume)物理卷.VG(Volume Group)卷组.LV(Logical Volume)逻辑卷. VG与LV都可以动态添加或移除.建立LVM逻辑卷是为了更好的利用磁盘空间,防止人为的恶意破坏. PV卷作用是LVM的基本存储设备. PE是PV卷的基本单元. VG卷组是由一个或多个PV卷组成的,而LV卷有事在VG卷上划分出一小块空间给用户创建系统文件.虽然是建立在VG卷组上但是却与PV卷没有直接的关系. 下面

Linux System 磁盘管理之方案二{LVM}

Linux 系统运维之场景:磁盘管理[拓展&压缩磁盘空间] 本文以Nutanix chassis 之 Centos 为例实操利用LVM工具管理磁盘 #fdisk -l 产看磁盘信息 /dev/sdb 是Nutanix平台新增给centos7的200G的磁盘空间 分别查看当前的pv物理卷.vg卷组.lv逻辑卷数量和名称信息 pvcreate /dev/sdb 创建物理卷并pvdisplay 验证 --blkid命令查看磁盘分区详细信息 blkid | column -t 磁盘文件系统格式错误,移除

linux第二十二LVM

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版.Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间.普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件

初识JAVA(二)(送给Java和安卓初学者)----常见错误

博主接着上篇的来讲哦,以后的更新中,博主会出一些练习题,有兴趣的可以做做然后吧代码粘贴到下面,大家可以一起研究学习,一起进步,本篇文章主要讲的是: 一.常见错误 二.连接上篇一起的训练 无论是什么方向的语言,甚至无论是什么行业的人,都会犯错,只要你有生命,你就会犯错,马云大哥这么牛,他也是一步步犯错,一步步改,才走到现在是吧,同样来说,你无论是大神,还是大侠甚至是某个语言的教父级人物,写代码也有出错的时候,有时候是不知道何时为何出的错,有时候是故意制造的错误(大家注意,以后在java开发中啊,编

学习笔记 四 : LVM

一 LVM管理 二 LVM配置

LVM原理和实践

LVM原理和实践 目录:    一:LVM原理详解    二:LVM创建    三:LVM的增大和放缩    四:LVM快照    五:相关扩展阅读 一:LVM原理详解1.LVM是什么?    LVM是linux系统上的一个逻辑卷管理器有两个版本lvm1和lvm2现在默认是lvmm2,lvm2兼容lvm1但是对于lvm1的快照是不兼容的,所以如果你使用lvm1创建了快照,请在升级为lvm2的时候将快照卷卸载Lvm2使用的是设备映射器(device mapper)2.6版本的内核有其驱动,2.4的

LVM简介

一LVM简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制. 二LVM作用: LVM是将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性. 三LVM术语 物理卷physical volume (PV)典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的Software RAID

LVM的基本使用

目录:一.LVM的介绍二.LVM的创建三.逻辑卷LV增大减小四.LVM快照 一.LVM的介绍 LVM是逻辑卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制.LVM的作法是将若干个磁盘分区连接为一个整块的卷组,形成一个存储池.管理员可以在卷组上随意创建逻辑卷组,并进一步在逻辑卷组上创建文件系统.管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名.管理和分配.当系统添加了新的磁盘,通过LVM管理员就不必将磁盘

LVM(逻辑卷管理详解)

想象一下,当初我们安装主机的时候,只给了它50G内存,随着时间的增长,文件的使用者过多导致文件系统不够大,这时会怎样?我们大多数人会重新再安装一个硬盘,然后分区格式化,然后再复制数据等等.这样一个过程过于麻烦了一些,也更容易浪费磁盘空间,但我们有更简单的方法来扩展我们的磁盘空间,那就是LVM. 一.LVM介绍 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制.LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适