逻辑卷 LVM: logical volume management

逻辑意义上将多块块设备组织起来当做一个设备来使用。

Abstract layer 抽象层:隐藏了底层的硬件细节,而输出给用户更高意义上的逻辑设备。

动态地扩大或者缩小磁盘空间。

版本:lvm  lvm2普遍使用

PV  Pysical Volume 物理卷,就是我们的实体磁盘或者分区 ,类似于/dev/sda2, /dev/sda3等等,由PE  Physical Extends(物理磁盘块,类似于chunk)组成。多个PV可以组合起来形成一个VG(卷组  Volume Group)。

PE (Physical Extend)  建立VG的时候指定的block块大小,默认是4MB。一个VG最大可以容许65534个PE。

VG (Volume Group 卷组) 将一个或者多个PV组合起来形成一个大的磁盘。最大容量与PE有关,默认最大的LVM可达到256G。

在卷组的层次上,把多个底层不同的分区或者硬盘输出给用户空间,使得用户看起来就像一个设备一样,卷组可以增大或者缩减。

卷组类似于扩展分区,不能直接使用。需要在卷组的基础上继续构建一个层次,称之为LV

(Logical Volume 逻辑卷)

LV (Logical Volume 逻辑卷) 由VG分割出来,可以被系统使用。f

LVM的配置与管理_休闲

         PE,VG,LV的关系

LVM的配置与管理_职场_02

                                LV创建过程

常用命令:

显示:pvdisplay  vgdisplay lvdisplay

扫描:pvscan vgscan lvscan

创建:pvcreate vgcreate lvcreate

移除:pvremvoe  vgremove  lvremove

扩展:vgextend lvextend

缩减:vgreduce lgreduce

LVM的配置与管理_休闲_03

创建一个LV的过程:

创建两个分区:/dev/sda14  /dev/sda15

LVM的配置与管理_休闲_04

创建物理卷:

[root@server27 ~]# pvcreate /dev/sda14

    Physical volume "/dev/sda14" successfully created

[root@server27 ~]# pvcreate /dev/sda15

   Physical volume "/dev/sda15" successfully created

[root@server27 ~]# pvdisplay

LVM的配置与管理_职场_05

创建卷组:

[root@server27 ~]# vgcreate myvg /dev/sda14

  Volume group "myvg" successfully created

[root@server27 ~]# vgdisplay

LVM的配置与管理_LVM_06

创建逻辑卷

[root@server27 ~]# lvcreate -L 100M -n lv1 myvg

  Logical volume "lv1" created

-L  创建逻辑卷的大小

-n  逻辑卷的名字

myvg  在哪个卷组中创建

[root@server27 ~]# lvdisplay myvg

LVM的配置与管理_职场_07

下面就可以格式化,正常挂载使用了。

[root@server27 ~]# mkfs -t ext3 /dev/myvg/lv1

[root@server27 ~]# mount /dev/myvg/lv1 /lvm

[root@server27 ~]# cd /lvm

[root@server27 lvm]# ls

lost+found

[root@server27 lvm]# cp /etc/fstab ./

[root@server27 lvm]# ls

fstab  lost+found

扩展逻辑卷:

PS: lvcreate -L 200M  /dev/myvg/lv1   扩展到200M

     lvcreate -L +200M /dev/myvg/lv1    在原有的基础上再扩展200M

     -l 指定PE的个数

[root@server27 lvm]# lvextend -l +25 /dev/myvg/lv1

  Extending logical volume lv1 to 200.00 MB

  Logical volume lv1 successfully resized

LVM的配置与管理_LVM_08

没有增大,怎么回事?

逻辑卷的增大要分两个步骤。默认情况下,刚创建完一个分区并格式化后,逻辑边界和物理边界一样大,当使用lvextend只是将物理边界给扩大了,逻辑边界依然没有变。此时需要将逻辑边界也扩大一下,使用resizefs命令。

[root@server27 ~]# resize2fs -p /dev/myvg/lv1

resize2fs 1.39 (29-May-2006)

Filesystem at /dev/myvg/lv1 is mounted on /lvm; on-line resizing required

Performing an on-line resize of /dev/myvg/lv1 to 204800 (1k) blocks.

The filesystem on /dev/myvg/lv1 is now 204800 blocks long.

LVM的配置与管理_休闲_09

LVM的配置与管理_休闲_10

文件正常,不受影响。

先扩展VG,再扩展LV的操作:

[root@server27 lvm]# vgextend myvg /dev/sda15

  Volume group "myvg" successfully extended

[root@server27 lvm]# vgdisplay

LVM的配置与管理_职场_11

缩减逻辑卷:在不影响文件使用的前提下,对逻辑卷空间的缩减。

先缩减逻辑边界 再缩减物理边界

fsck   file system check 文件系统一致性检查

先卸载:

[root@server27 lvm]# umount /lvm

umount: /lvm: device is busy

umount: /lvm: device is busy

[root@server27 ~]# fuser -km /dev/myvg/lv1

/dev/myvg/lv1:       10854c

[root@server27 ~]# umount /lvm

文件系统一致性检查

[root@server27 ~]# e2fsck -f /dev/myvg/lv1

LVM的配置与管理_职场_12

缩减逻辑边界

[root@server27 ~]# resize2fs /dev/myvg/lv1 100M

resize2fs 1.39 (29-May-2006)

Resizing the filesystem on /dev/myvg/lv1 to 102400 (1k) blocks.

The filesystem on /dev/myvg/lv1 is now 102400 blocks long.

[root@server27 ~]# lvreduce -L 100M /dev/myvg/lv1

  WARNING: Reducing active logical volume to 100.00 MB

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

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

  Reducing logical volume lv1 to 100.00 MB

  Logical volume lv1 successfully resized

LVM的配置与管理_休闲_13

LVM的配置与管理_LVM_14

数据未受影响

Q:如果删除的PV上有数据呢?

pvmove  移动数据到其他物理卷中

PS:pvrmove 移除物理卷

[root@server27 ~]# pvmove /dev/sda14

  /dev/sda14: Moved: 60.0%

  /dev/sda14: Moved: 100.0%

[root@server27 ~]# vgreduce myvg /dev/sda14

  Removed "/dev/sda14" from volume group "myvg"

[root@server27 ~]# pvdisplay

LVM的配置与管理_LVM_15

LVM的配置与管理_休闲_16

数据正常,未受影响

将/dev/sda14移除,再显示一下PV已经看不到了。

[root@server27 lvm]# pvremove /dev/sda14

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

[root@server27 lvm]# pvdisplay

Snapshot 快照

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

LVM的配置与管理_休闲_17

左图为最初建置系统快照区的状况,LVM 会预留一个区域 (左图的左侧三个 PE 区块) 作为资料存放处。 此时快照区内并没有任何资料,而快照区与系统区共享所有的 PE 资料, 因此你会看到快照区的内容与档案系统是一模一样的。 等到系统运作一阵子后,假设 A 区域的资料被更动了 (上面右图所示),则更动前系统会将该区域的资料移动到快照区, 所以在右图的快照区被占用了一块 PE 成为 A,而其他 B 到 I 的区块则还是与档案系统共享!

快照区与被快照的 LV 必须要在同一个 VG 上头。

备份工具:dump  - ext2/3 filesystem backup

-level#  指定备份级别 0---9  0完全备份   1---9 增量备份:只备份上一次比此次级别低的到这一刻为止的内容

-f  把备份的结果保存到的位置

-u  在每次成功备份之后,将备份信息更新到/etc/dumpdates 文件中。

恢复工具:

restore

     -r 重建文件系统

     -f file 从文件中恢复,可以是一个特殊设备例如 /dev/st0(磁带设备)或者/dev/sda1或者是一个普通文件

创建一个快照卷:

[root@server27 lvm]# lvcreate -L 10M -s -n snap_lv1 /dev/myvg/lv1

  Rounding up size to full physical extent 12.00 MB

  Logical volume "snap_lv1" created

[root@server27 lvm]# lvdisplay

LVM的配置与管理_LVM_18

创建之后就可以挂载了

[root@server27 lvm]# mkdir /snap

[root@server27 lvm]# mount -o ro /dev/myvg/snap_lv1 /snap

[root@server27 lvm]# cd /snap/

[root@server27 snap]# ls

fstab  lost+found

PS:当改变的数据超过10M时,快照就会发生崩溃的情况。

对快照备份:

[root@server27 snap]# dump -0u -f /tmp/lv1.backuo /snap

恢复

[root@server27 lvm]# restore -rf /tmp/lv1.backuo

[root@server27 lvm]# ls

fstab  lost+found  restoresymtable


本文转载自 “諸葛草廬” 博客http://lyp0909.blog.51cto.com/508999/503582