目录

1.      LVM 简介... 1

2.      LVM基本术语... 1

3.      LVM的安装... 2

4.      LVM的使用... 3

4.1        物理卷的管理... 3

4.2        卷组的管理:3

4.3        逻辑卷的管理:3

5.      一个例子... 4

5.1        练习:4

5.2        开始部署

1.  LVM简介

LVM逻辑卷管理器(英语:LogicalVolume Manager,缩写为LVM),又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume management)功能。它在硬盘的硬盘分区之上,又创建一个逻辑层,以方便系统管理硬盘分区系统。

由四个磁盘分区可以组成一个很大的空间,然后在这些空间上划分一些逻辑分区,我们可以对这些逻辑分区进行大小调节, 也可以进行快照备份.

1.  LVM基本术语

Physical volume(PV): 物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的SoftwareRAID 卷。

Volume Group(VG):卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

Logical Volume(LV): 逻辑卷相当于非LVM系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统

Physical Extent (PE):物理块, 物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。PE的大小是可配置的,默认为4MB。

wKiom1P3KfiwvblvAAC2NAs5_NY894.gif

Figure 1LVM模型


1.  LVM的安装

查看lvm2是否已经安装

[root@stu~]# rpm -qa|grep lvm

mesa-private-llvm-3.3-0.3.rc3.el6.i686

lvm2-2.02.100-8.el6.i686

lvm2-libs-2.02.100-8.el6.i686

如果没有返回内容, 那么需要进行安装

[root@stu~]# yum install lvm2

2.  LVM的使用

如果要创建一个逻辑卷需要经过以下三个阶段:

2.1  物理卷的管理:

pvcreate /path/to/dev: 初始化一个磁盘或分区创建成为物理卷;

pvmove /path/to/dev: 移动该设备上的物理块到其他设备上.(在移除物理卷时可以使用,防止数据丢失)

pvscan: 搜索目前系统里面任何具有物理卷的磁盘或分区;

pvdisplay: 显示出目前系统上面的物理卷状态;

pvremove /path/to/pv_dev : 将物理卷移除,让该分区不具有物理卷属性。

2.2  卷组的管理:

vgcreate : 创建卷组命令 –s PE大小, 默认4M;

vgscan : 搜索系统上面是否有卷组存在

vgdisplay : 显示目前系统上面的卷组状态;

vgextend : 在卷组内添加额外的物理卷;

vgreduce : 在卷组内移除物理卷;

vgchange : 配置卷组是否启动 (active);

vgremove : 删除一个卷组

2.3  逻辑卷的管理:

lvcreate : 创建逻辑卷.

lvscan : 查询系统上面的逻辑卷.

lvdisplay : 显示系统上面的逻辑卷状态

lvextend : 在逻辑卷里面添加容量.

lvreduce : 在逻辑卷里面减少容量.

lvremove : 删除一个逻辑卷.

lvresize : 对 LV 进行容量大小的调整.

3.  一个例子

3.1  练习:

       1. 创建一个由两个物理卷组成的大小为20G的卷组myvg, 要求PE大小16M.

       2. 在该卷组上创建大小为7G的逻辑卷mylv1, 要求其文件系统为ext4, 块大小为2048,

       3. 开机自动挂载到/users

       4. 新建用户openstack, 其家目录为/users/openstack, 切换至openstack用户, 复制一些文件到家目录中

       5. 缩减mylv1到5G大小, 切换到openstack用户, 确保没有数据丢失

       6. 对mylv1创建快照卷snap-mylv1, 并通过其备份数据到/tmp/user.tar.bz2;

 

3.2  开始部署

1.    准备了两个分区, sdb1(8G),sdc1(12G)来组成一个20G 的myvg卷组

格式化第一个sdb1

#使用fdisk格式化sdb

[root@stu~]# fdisk /dev/sdb

 

WARNING:DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') andchange display units to

         sectors (command 'u').

#创建一个新的分区

Command(m for help): n

Commandaction

   e  extended

   p  primary partition (1-4)

p

Partitionnumber (1-4): 1

Firstcylinder (1-1305, default 1): 1

Lastcylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +8G

#调整分区格式为LVM

Command(m for help): t

Selectedpartition 1

Hexcode (type L to list codes): 8e

Changedsystem type of partition 1 to 8e (Linux LVM)

#如果忘了代码,可以输入l查找LVM格式的代码

wKiom1P3KmSgytBiAAXHjYxKwNo539.jpg

#查看分区状况

Command(m for help): p

 

Disk/dev/sdb: 10.7 GB, 10737418240 bytes

255heads, 63 sectors/track, 1305 cylinders

Units= cylinders of 16065 * 512 = 8225280 bytes

Sectorsize (logical/physical): 512 bytes / 512 bytes

I/Osize (minimum/optimal): 512 bytes / 512 bytes

Diskidentifier: 0x8633d49d

 

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1        1045    8393931   8e  Linux LVM

#保存退出

Command(m for help): w

Thepartition table has been altered!

 

Callingioctl() to re-read partition table.

Syncingdisks.

#格式化并保存退出

 

准备第二个物理分区sdc1(12G) 步骤同上:

[root@stu~]# fdisk /dev/sdc

wKioL1P3La-QU-QbAAOz8VKZWXk433.jpg

 

#确认分区状况:

[root@stu~]# lsblk

wKiom1P3LM7AY1vqAAHEPwya0p4410.jpg

2.    创建物理卷

[root@stu~]# pvcreate /dev/sdb1 /dev/sdc1

wKioL1P3LgeDe5fNAACfoXLH4uI315.jpg

[root@stu~]# pvs

#查看物理卷情况

wKiom1P3LXmhYrGNAACifmHbQ_A254.jpg

[root@stu~]# pvscan

wKioL1P3LsHztrJgAADuERja-dM007.jpg

3.    创建大小为20G的卷组myvg, 要求PE大小16M.

[root@stu~]# vgcreate -s 16M myvg /dev/sdb1 /dev/sdc1

wKiom1P3Ld6BvIulAABsrsJ6nf4426.jpg

[root@stu~]# vgs

#查看卷组情况

wKioL1P3Ly-hNb9MAACDp0jjFUo186.jpg

4.    在该卷组上创建大小为7G的逻辑卷mylv1, 要求其文件系统为ext4, 块大小为2048

[root@stu~]# lvcreate myvg -n mylv1 -L 7G

#在卷组myvg上创建大小为7G的逻辑卷mylv1

wKioL1P3L1qgCcp0AABcSBQWHaM184.jpg

[root@stu~]# fdisk /dev/myvg/mylv1

#在逻辑卷上创建分区

wKiom1P3LmmhnWaoAAJA7XLso_k304.jpg

[root@stu~]# mke2fs -t ext4 -b 2048 /dev/myvg/mylv1

#格式化逻辑卷mylv1为ext4文件系统块大小2048K

wKiom1P3Lo-QoewIAANrkc5w9Hk829.jpg5.    开机自动挂载到/users

[root@stu/]# mkdir /users

[root@stu/]# vim + /etc/fstab

#设置开机自动挂载逻辑卷到/users上

#添加/dev/myvg/mylv1         /users                  ext4    defaults        0 2到/dev/fstab 最后一行

wKiom1P3MCGgW3fgAAI4OMCZlSE978.jpg

[root@stu/]# mount –a

#自动挂载

 

6.    新建用户openstack, 其家目录为/users/openstack, 切换至openstack用户, 复制一些文件到家目录中

[root@stuusers]# useradd openstack -d /users/openstack

#新建用户openstack, 其家目录为/users/openstack

[root@stuusers]# su - openstack

[root@stuusers]# cp -r /etc/* ~/

#切换至openstack用户, 复制一些/etc/下的文件到家目录中

 

7.    缩减mylv1到5G大小, 切换到openstack用户, 确保没有数据丢失

缩减逻辑卷大小思路:

  7.1. 卸载卷, 并执行强制检测

#e2fsck -f /path/to/lv_device

  7.2. 缩减逻辑边界:

#resize2fs /path/to/lv_device Size

  7.3. 缩减物理边界:

#lvreduce -L [-]Size /path/to/vg_name/lvname

        7.4.  验证是否正常

 

        7.5.  开始实施:

[root@stu~]# umount /dev/myvg/mylv1 #卸载卷

[root@stu~]# e2fsck -f /dev/myvg/mylv1 #强行检测

[root@stu~]# resize2fs /dev/myvg/mylv1 5G #缩减逻辑边界到5G

[root@stu~]# lvreduce -L 5G /dev/myvg/mylv1 #缩减物理边界到 5G

[root@stu~]# lsblk #验证数据

wKioL1P3MaqiQU3QAAMPH8HQEjI133.jpg

[root@stu~]# mount –a #重新挂载逻辑卷

[root@stu~]# cd /users/openstack/ #验证数据

[root@stuopenstack]# ll

wKiom1P3MQHRTC0qAADy-QRu6UI208.jpg

8.    对mylv1创建快照卷snap-mylv1, 并通过其备份数据到/tmp/user.tar.bz2;

[root@stuopenstack]# lvcreate -s -L 50M -n snap_mylv1 -p r /dev/myvg/mylv1 #建立快照

[root@stuopenstack]# mount /dev/myvg/snap_mylv1 /media/snap/ #挂载快照

[root@stuopenstack]# tar -jcf /tmp/user.tar.bz2 /media/snap/openstack/* #建立归档