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

lvm实例详解

时间:2015-08-30 17:58:09      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:linux   lvm工作原理   动态   拓展   缩减   

一、简介

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

基本的逻辑卷管理概念:

PVPhysical Volume- 物理卷 

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

VGVolumne Group- 卷组 

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

LVLogical Volume- 逻辑卷 

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

PEPhysical Extends- 物理扩展单元

每个 PV 都会以 PE 为基本单元划分。

LE(Logical Extends) - 逻辑扩展单元

组成 LV 的基本单元,一个 LE 对应一个 PE

技术分享

通过实例的演示来详解LVM的应用场景:

实例1:创建一个至少有两个PV组成的大小为20G的名为testvgVG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;

实例2 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;

实例3:扩展testlv7G,要求archlinux用户的文件不能丢失;

实例4:收缩testlv3G,要求archlinux用户的文件不能丢失;

 

实例一(创建LVM)创建一个至少有两个PV组成的大小为20G的名为testvgVG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;


[root@centos6 ~]# fdisk -l | grep "^Disk\>"  #查看硬盘个数
Disk /dev/sda: 21.5GB, 21474836480 bytes
Disk identifier:0x0006b70f
Disk /dev/sdc: 21.5GB, 21474836480 bytes
Disk identifier:0x00000000
Disk /dev/sdd: 21.5GB, 21474836480 bytes
Disk identifier:0x00000000
Disk /dev/sdb: 21.5GB, 21474836480 bytes
Disk identifier:0x00000000

通过fdisk /dev/sdb创建lvm{/dev/sdc ,/dev/sdd}步骤一样

技术分享

[root@centos6 ~]# pvcreate /dev/sdb1    #创建pv
Physical volume "/dev/sdb1"successfully created
[root@centos6 ~]#pvcreate /dev/sdc1
Physical volume "/dev/sdc1"successfully created

[root@centos6 ~]# vgcreate -s16M testvg /dev/sdb1 /dev/sdc1 #创建PE为16M,名为test的卷组
Volume group "testvg" successfullycreated
[root@centos6 ~]# vgs  # 显示VG的信息,更详细的可以用vgdisplay
  VG  #PV #LV #SN Attr   VSize  VFree
 testvg 2  0  0 wz--n-    39.97g   39.97g

[root@centos6 ~]# lvcreate -L 5G -n testlv testvg #创建大小为5G,为testlv的逻辑卷
  Logical volume "testlv" created
[root@centos6 ~]# lvs   #显示Llmv的信息  详细信息可用lvdisplay
 LV  VG  Attr LSize Pool Origin Data%  Meta% Move Log Cpy%Sync Convert
 testlv testvg -wi-a----- 5.00g

[root@centos6 ~]# mke2fs -t ext4 /dev/testvg/testlv    #格式化为ext4文件系统  
mke2fs 1.41.12(17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096(log=2)
Fragment size=4096(log=2)
Stride=0 blocks,Stripe width=0 blocks
327680 inodes,1310720 blocks
65536 blocks (5.00%)reserved for the super user
First data block=0
Maximum filesystemblocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backupsstored on blocks:
32768, 98304,163840, 229376, 294912, 819200, 884736

  

[root@centos6~]# mkdir /users 
[root@centos6 ~]#mount
mount     mount.fuse   mount.nfs4  mountstats  
mount.cifs   mount.nfs   mountpoint   mount.tmpfs 
[root@centos6 ~]# mount /dev/testvg/testlv /users/  #挂载至/users
[root@centos6 ~]# df -h      显示挂载的分区
Filesystem       Size  Used Avail Use% Mounted on
/dev/sda2             9.8G  8.5G 787M  92% /
tmpfs                 491M     0 491M   0% /dev/shm
/dev/sda1             488M   27M 437M   6% /boot
/dev/sda5             980M  2.8M 947M   1% /mysql
/dev/mapper/testvg-testlv 
    4.8G  10M  4.6G   1% /users

实例二的创建过程省略:

[root@centos6 users]# ls /users/   #显示/user的文件
abc.txt  archlinux 
lost+found

实例三(拓展lvm)扩展testlv7G,要求archlinux用户的文件不能丢失;

[root@centos6 ~]# lvextend -L +2G /dev/testvg/testlv   # -L +2 需要拓展的容量
Size of logical volume testvg/testlv changedfrom 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
Logical volume testlv successfully resized
[root@centos6 ~]# lvs   #显示后的容量
  LV    VG     Attr       LSize Pool Origin Data%  Meta% 
Move Log Cpy%Sync Convert
  testlv testvg -wi-ao---- 7.00g                                                   
[root@centos6 ~]# su - archlinux
[archlinux@centos6 ~]$ ls      #数据依然还在
pam.d

 

实例四(lvm的缩减):收缩testlv3G,要求archlinux用户的文件不能丢失;

缩减步骤:

  卸载分区---强制修复文件系统---缩减文件系统--缩减LVM

[root@centos6 ~]#umount /dev/testvg/testlv
[root@centos6 ~]# e2fsck -f /dev/testvg/testlv   #强制修复文件系统
e2fsck 1.41.12(17-May-2010)
Pass 1: Checkinginodes, blocks, and sizes
Pass 2: Checkingdirectory structure
Pass 3: Checkingdirectory connectivity
Pass 4: Checkingreference counts
Pass 5: Checking
group summary information
/dev/testvg/testlv:77/327680 files (0.0% non-contiguous), 55962/1310720 blocks
[root@centos6 ~]# resize2fs /dev/testvg/testlv 3G  #将文件系统缩减到3G
resize2fs 1.41.12(17-May-2010)
Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks.
The filesystem on/dev/testvg/testlv is now 786432 blocks long.
 
[root@centos6 ~]# lvreduce -L 3G /dev/testvg/testlv   #缩减LVM到3G 
  WARNING: Reducing active logical volume to3.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testlv? [y/n]: y
  Size of logical volume testvg/testlv changed
from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
  Logical volume testlv successfully resized
[root@centos6 users]# lvs      #显示的是3G
  LV    
VG     Attr       LSize Pool Origin Data%  Meta% 
Move Log Cpy%Sync Convert
  testlv testvg -wi-ao---- 3.00g       
[root@centos6 ~]# mount /dev/testvg/testlv /users/  #重新挂载分区
root@centos6 users]# df -h    #显示的容量是3G
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.8G  8.4G 860M  91% /
tmpfs              491M     0 491M   0% /dev/shm
/dev/sda1             488M   27M 437M   6% /boot
/dev/sda5             980M  2.8M 947M   1% /mysql
/dev/mapper/testvg-testlv
                      2.9G  7.8M 2.7G   1% /users
[root@centos6 ~]# su - archlinux
[archlinux@centos6~]$
[archlinux@centos6 ~]$ ls     #数据依然还在
pam.d
通过缩减LVM很危险,操作需谨慎。。。。。。。


lvm实例详解

标签:linux   lvm工作原理   动态   拓展   缩减   

原文地址:http://yangbb.blog.51cto.com/10649397/1689648

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