【转载】Linux磁盘管理:LVM逻辑卷管理

这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工做原理!!!

1、传统的磁盘管理node

其实在Linux操做系统中,咱们的磁盘管理机制和windows上的差很少,绝大多数都是使用MBR(Master Boot Recorder)都是经过先对一个硬盘进行分区,而后再将该分区进行文件系统的格式化,在Linux系统中若是要使用该分区就将其挂载上去便可,windows的话其实底层也就是自动将全部的分区挂载好,而后咱们就能够对该分区进行使用了。数据库

可是这种传统的磁盘管理常常会带来不少的问题,好比说当咱们使用的一个分区,其空间大小已经再也不够用了,这个时候咱们没有办法经过拉伸分区来进行分区扩充,固然目前也有其余第三方的磁盘管理软件能够进行磁盘的分区空间划分,可是这样会给咱们的文件系统形成很大的伤害,有时会致使文件系统崩溃等问题。对于传统的磁盘管理若是说咱们碰到当分区大小不足的时候,咱们只能经过增长新的硬盘,而后在新的硬盘上建立分区,对分区进行格式化之后,而后将以前分区的全部东西都拷贝到新的分区里面才行。可是新增长的硬盘是做为独立的文件系统存在的,原有的文件系统并无获得任何的扩充,上层应用只能访问到一个文件系统。这样的方式对我的的电脑来讲可能还能接受,可是若是对于生产环境下的服务器来讲,这是不可接受的。由于若是要把一个分区的内容都拷贝到另外一个分区上去,势必要首先卸载掉以前的那个分区,而后*对整个分区进行拷贝,若是服务器上运行着一个重要的服务,好比说WWW或者FTP,其要求是 7*24 小时运行正常的,那么卸载掉分区这是不可想象的,同时若是该分区保存的内容很是很是的多,那么在对分区进行转移时时间可能会耗费好久,因此,这个时候咱们就会受到传统磁盘管理的限制,由于其不可以进行动态的磁盘管理。所以,为了解决这个问题,LVM技术就诞生了!!!windows

2、LVM的磁盘管理服务器

正是由于传统的磁盘管理不能对咱们的磁盘空间进行动态的管理,所以就诞生出了LVM这个技术,那么LVM究竟是什么呢?它又是怎么对磁盘进行管理的呢?app

LVM(Logical volume Manager)是逻辑卷管理的简称。它是Linux环境下对磁盘分区进行管理的一种机制。如今不只仅是Linux系统上可使用LVM这种磁盘管理机制,对于其它的类UNIX操做系统,以及windows操做系统都有相似与LVM这种磁盘管理软件。ide

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

LVM最大的特色就是能够对磁盘进行动态管理。由于逻辑卷的大小是能够动态调整的,并且不会丢失现有的数据。咱们若是新增长了硬盘,其也不会改变现有上层的逻辑卷。做为一个动态磁盘管理机制,逻辑卷技术大大提升了磁盘管理的灵活性!!!ui

3、LVM的原理spa

要想理解好LVM的原理,咱们必须首先要掌握4个基本的逻辑卷概念。操作系统

①PE  (Physical Extend)  物理拓展

②PV  (Physical Volume)  物理卷

③VG  (Volume Group)  卷组

④LV  (Logical Volume)  逻辑卷

咱们知道在使用LVM对磁盘进行动态管理之后,咱们是以逻辑卷的方式呈现给上层的服务的。因此咱们全部的操做目的,其实就是去建立一个LV(Logical Volume),逻辑卷就是用来取代咱们以前的分区,咱们经过对逻辑卷进行格式化,而后进行挂载操做就可使用了。那么LVM的工做原理是什么呢?所谓无图无真相,我们下面经过图来对逻辑卷的原理进行解释!!

1.将咱们的物理硬盘格式化成PV(Physical Volume)

咱们看到,这里有两块硬盘,一块是sda,另外一块是sdb,在LVM磁盘管理里,我首先要将这两块硬盘格式化为咱们的PV(Physical Volume),也就是咱们的物理卷,其实格式化物理卷的过程当中LVM是将底层的硬盘划分为了一个一个的PE(Physical Extend),咱们的LVM磁盘管理中PE的默认大小是4M大小,其实PE就是咱们逻辑卷管理的最基本单位。好比说我有一个400M的硬盘,那么在将其格式化成PV的时候,其实际就是将这块物理硬盘划分红了100个的PE,由于PE默认的大小就是4M。这个就是咱们的第一步操做。

2.建立一个VG(Volume Group)

在将硬盘格式化成PV之后,咱们第二步操做就是建立一个卷组,也就是VG(Volume Group),卷组在这里咱们能够将其抽象化成一个空间池,VG的做用就是用来装PE的,咱们能够把一个或者多个PV加到VG当中,由于在第一步操做时就已经将该硬盘划分红了多个PE,因此将多个PV加到VG里面后,VG里面就存放了许许多多来自不一样PV中的PE,咱们经过上面的图片就能够看到,咱们格式化了两块硬盘,每一个硬盘分别格式化成了3个PE,而后将两块硬盘的PE都加到了咱们的VG当中,那么咱们的VG当中就包含了6个PE,这6个PE就是两个硬盘的PE之和。一般建立一个卷组的时候咱们会为其取一个名字,也就是该VG的名字。

3.基于VG建立咱们最后要使用的LV(Logical Volume)

【注意】PV以及VG建立好之后咱们是不可以直接使用的,由于PV、VG是咱们逻辑卷底层的东西,咱们其实最后使用的是在VG基础上建立的LV(Logical Volume),因此第三步操做就是基于VG来建立咱们最终要使用的LV。

当咱们建立好咱们的VG之后,这个时候咱们建立LV其实就是从VG中拿出咱们指定数量的PE,仍是拿上图来讲,咱们看到咱们此时的VG里面已经拥有了6个PE,这时候咱们建立了咱们的第一个逻辑卷,它的大小是4个PE的大小,也就是16M(由于一个PE的默认大小是4M),而这4个PE有三个是来自于第一块硬盘,而另一个PE则是来自第二块硬盘。当咱们建立第二个逻辑卷时,它的大小就最多只有两个PE的大小了,由于其中的4个PE已经分配给了咱们的第一个逻辑卷。

因此建立逻辑卷其实就是咱们从VG中拿出咱们指定数量的PE,VG中的PE能够来自不一样的PV,咱们能够建立的逻辑卷的大小取决于VG当中PE存在的数量,而且咱们建立的逻辑卷其大小必定是PE的整数倍(即逻辑卷的大小必定要是4M的整数倍)。

4.将咱们建立好的LV进行文件系统的格式化,而后挂载使用

在建立好LV之后,这个时候咱们就可以对其进行文件系统的格式化了,咱们最终使用的就是咱们刚建立好的LV,其就至关于传统的文件管理的分区,咱们首先要对其进行文件系统的格式化操做,而后经过mount命令对其进行挂载,这个时候咱们就可以像使用日常的分区同样来使用咱们的逻辑卷了。

咱们在建立好LV之后,咱们会在 /dev 目录下看到咱们的LV信息,例如 /dev/vgname/lvname, 咱们每建立一个VG,其会在/dev目录下建立一个以该VG名字命名的文件夹,在该VG的基础上建立好LV之后,咱们会在这个VG目录下多出一个以LV名字命名的逻辑卷。

下面咱们来对整个LVM的工做原理进行一个总结:

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE

(2)不一样的PV加入到同一个VG中,不一样PV的PE所有进入到了VG的PE池内

(3)LV基于PE建立,大小为PE的整数倍,组成LV的PE可能来自不一样的物理磁盘

(4)LV如今就直接能够格式化后挂载使用了

(5)LV的扩充缩减实际上就是增长或减小组成该LV的PE数量,其过程不会丢失原始数据

 

咱们看到,咱们这里若是要对LV进行扩充,直接加进来一块sdc硬盘,而后将其格式化成PE,而后将该PV加入到了VG当中,这个时候咱们就能够经过增长LV中PE的数量来动态的对LV进行扩充了,只要咱们的LV的大小不要超过咱们VG空余空间的大小就好了!!

本篇随笔主要讲解了传统磁盘管理与LVM动态管理磁盘机制的不一样,并详细讲解了LVM的工做原理,在下一篇随笔当中,将会详细的讲解LVM的基本配置,包括建立PV、VG以及VG,并动态的对咱们的LV进行扩充、减小操做!!!

 

 

Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的建立及使用

 

在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工做原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工做原理,包括LVM中最重要的四个基本点(PE、PV、VG以及LV),这篇随笔将会详细的讲解LVM逻辑卷的建立、使用以及删除.

1、建立LVM逻辑卷

 

咱们经过图文并茂的方式来看看如何建立咱们的LVM,在上一篇随笔中,咱们已经熟悉了LVM的工做原理,首先是要将咱们的物理硬盘格式化成PV,而后将多个PV加入到建立好的VG中,最后经过VG建立咱们的LV。因此咱们第一步就是将咱们的物理硬盘格式化成PV(物理卷)

①将物理硬盘格式化成PV(物理卷)  使用的是 pvcreate 命令

这里我已经事先虚拟化了3快物理硬盘,每块硬盘的大小为8G,经过 fdisk -l 命令能够查看

复制代码

[root@xiaoluo ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00093d90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         523     4194304   82  Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sda2   *         523        2611    16776192   83  Linux

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdd: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

复制代码

这里咱们根据上面图所示,咱们先将 /dev/sdb、 /dev/sdc 两块硬盘格式化成PV

[root@xiaoluo ~]# pvcreate /dev/sdb /dev/sdc 

  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created

建立完PV之后,咱们可使用pvdisplay(显示详细信息)、pvs命令来查看当前pv的信息

复制代码

[root@xiaoluo ~]# pvdisplay
  "/dev/sdb" is a new physical volume of "8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               8.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               93UEEl-cxBU-A4HC-LNSh-jp9G-uU5Q-EG8LM9
   
  "/dev/sdc" is a new physical volume of "8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               8.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               lH1vul-KBHx-H2C6-wbt1-8AdK-yHpr-bBIul5
   
[root@xiaoluo ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb        lvm2 a--  8.00g 8.00g
  /dev/sdc        lvm2 a--  8.00g 8.00g

复制代码

经过这两个命令咱们能够看到咱们已经建立好的PV的信息,两个PV都是8G,目前尚未使用,PFree都是8G.

②建立卷组(VG),并将PV加入到卷组中  经过 vgcreate 命令

在建立完PV之后,这时候咱们须要建立一个VG,而后将咱们的PV都加入到这个卷组当中,在建立卷组时要给该卷组起一个名字

[root@xiaoluo ~]# vgcreate xiaoluo /dev/sdb /dev/sdc 

  Volume group "xiaoluo" successfully created

一样,在建立好VG之后,咱们也可使用 vgdisplay 或者 vgs 命来来查看VG的信息

复制代码

[root@xiaoluo ~]# vgdisplay 
  --- Volume group ---
  VG Name               xiaoluo
  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  // 当前这里有两个PV,分别是咱们的 /dev/sdb 和 /dev/sdc
  Act PV                2
  VG Size               15.99 GiB  // 当前VG的大小
  PE Size               4.00 MiB  // 经过这个咱们也能够看到咱们LVM默认的PE大小就是4M
  Total PE              4094  // 由于VG里面存放的就是各个PV中的PE,因此PE的数量就是VG大小除以默认PE的大小
  Alloc PE / Size       0 / 0   
  Free  PE / Size       4094 / 15.99 GiB
  VG UUID               B8eavI-21kD-Phnm-F1t1-eo4K-wgvg-T5qUbt
   
[root@xiaoluo ~]# vgs
  VG      #PV #LV #SN Attr   VSize  VFree 
  xiaoluo   2   0   0 wz--n- 15.99g 15.99g

复制代码

③基于卷组(VG)建立逻辑卷(LV)  经过 lvcreate 命令

由于建立好的PV、VG都是底层的东西,咱们上层使用的是逻辑卷,因此咱们要基于VG建立咱们的逻辑卷才行

[root@xiaoluo ~]# lvcreate -n mylv -L 2G xiaoluo

  Logical volume "mylv" created

经过 lvcreate 命令基于VG建立好咱们的逻辑卷,名字为mylv,大小为2G,一样咱们可使用 lvdisplay 或者 lvs 命令来查看建立好的逻辑卷的信息

复制代码

[root@xiaoluo ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/xiaoluo/mylv  // 逻辑卷的路径
  LV Name                mylv  // 逻辑卷的名字
  VG Name                xiaoluo  // 逻辑卷所属卷组的名字
  LV UUID                PYuiYy-WpI6-XZB8-IhnQ-ANjM-lcz0-dlk4LR
  LV Write Access        read/write
  LV Creation host, time xiaoluo, 2013-05-23 23:45:08 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB  // 逻辑卷的大小
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
[root@xiaoluo ~]# lvs
  LV   VG      Attr      LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv xiaoluo -wi-a---- 2.00g

复制代码

这样子咱们的逻辑卷也就已经建立好了,咱们这个时候再经过 vgs 还有 pvs 命令查看一下咱们的PV与VG的信息

复制代码

[root@xiaoluo mnt]# vgs
  VG      #PV #LV #SN Attr   VSize  VFree 
  xiaoluo   2   1   0 wz--n- 15.99g 13.99g  // 咱们看到LV的数量此时变成了1,由于咱们刚建立好了一个LV,LVFree还有14G
[root@xiaoluo mnt]# pvs
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdb   xiaoluo lvm2 a--  8.00g 6.00g  // 刚建立好的LV用的是 /dev/sdb 这块硬盘的,因此这块硬盘的PFree还剩下6G
  /dev/sdc   xiaoluo lvm2 a--  8.00g 8.00g

复制代码

咱们发现,当咱们每建立完一个LV时,VG与PV的信息都是时时在变化的,而且咱们建立LV的大小是根据当前VG的大小来决定的,不能超过当前VG的剩余大小!

咱们在上一篇随笔里面有讲过,每建立好一个逻辑卷,都会在 /dev 目录下出现一个以该卷组命名的文件夹,基于该卷组建立的全部的逻辑卷都是存放在这个文件夹下面,咱们能够查看一下

[root@xiaoluo ~]# ls /dev/xiaoluo/mylv 
/dev/xiaoluo/mylv

咱们每建立一个新的逻辑卷,该VG目录下都会多出这么一个设备。

2、格式化并使用咱们的逻辑卷

咱们已经建立好了咱们的PV、VG以及LV,这时候咱们若是要使用逻辑卷,就必须将其格式化成咱们须要用的文件系统,并将其挂载起来,而后就能够像使用分区同样去使用逻辑卷了

 

复制代码

[root@xiaoluo ~]# mkfs.ext4 /dev/xiaoluo/mylv 
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
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

复制代码

 

格式化咱们的逻辑卷之后,就可使用 mount 命令将其进行挂载,咱们将其挂载到 /mnt 目录下

复制代码

[root@xiaoluo ~]# mount /dev/xiaoluo/mylv /mnt
[root@xiaoluo ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/mapper/xiaoluo-mylv on /mnt type ext4 (rw)
[root@xiaoluo ~]# cd /mnt/
[root@xiaoluo mnt]# ls
lost+found
[root@xiaoluo mnt]# touch xiaoluo.txt
[root@xiaoluo mnt]# ls
lost+found  xiaoluo.txt

复制代码

咱们看到,咱们的卷组已经挂载好了,而且能够像使用分区同样来对其进行文件操做了。

3、删除逻辑卷

咱们在建立好逻辑卷后能够经过建立文件系统,挂载逻辑卷来使用它,若是说咱们不想用了也能够将其删除掉。

【注意:】对于建立物理卷、建立卷组以及建立逻辑卷咱们是有严格顺序的,一样,对于删除逻辑卷、删除卷组以及删除物理卷也是有严格顺序要求的

①首先将正在使用的逻辑卷卸载掉  经过 umount 命令

②将逻辑卷先删除  经过 lvremove 命令

③删除卷组  经过 vgremove 命令

④最后再来删除咱们的物理卷  经过 pvremove 命令

复制代码

[root@xiaoluo /]# mount /dev/xiaoluo/mylv /mnt/
[root@xiaoluo /]# umount /mnt/
[root@xiaoluo /]# lvremove /dev/xiaoluo/mylv 
Do you really want to remove active logical volume mylv? [y/n]: y
  Logical volume "mylv" successfully removed

[root@xiaoluo /]# vgremove xiaoluo
  Volume group "xiaoluo" successfully removed

[root@xiaoluo /]# pvremove /dev/sdb 
  Labels on physical volume "/dev/sdb" successfully wiped

复制代码

此时咱们的刚建立的逻辑卷 mylv,卷组 xiaoluo以及物理卷 /dev/sdb 已经从咱们当前操做系统上删除掉了,经过 lvs、vgs、pvs命令能够查看一下

复制代码

[root@xiaoluo /]# lvs
  No volume groups found  // 逻辑卷已经没有了
[root@xiaoluo /]# vgs
  No volume groups found  // 卷组也没有了
[root@xiaoluo /]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdc        lvm2 a--  8.00g 8.00g  // sdb物理卷已经没有了,只剩下 sdc物理卷了

复制代码

本篇随笔详细讲解了LVM逻辑卷的建立、使用及删除,在下一篇随笔里咱们将继续讲解LVM逻辑卷的知识,包括如何对逻辑卷进行动态的拉伸以及对其进行压缩!!!

 

 

Linux学习之CentOS(二十七)--Linux磁盘管理:LVM逻辑卷的拉伸及缩减

 

在上一篇随笔里面 Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的建立及使用 详细讲解了LVM逻辑卷的建立及使用,咱们知道建立逻辑卷的步骤是先格式化物理硬盘位PV,而后建立一个VG,再将多个PV加入到VG中,最后基于VG建立咱们的LV。在这篇随笔里,咱们将继续学习LVM逻辑卷的知识,包括逻辑卷的拉伸及缩减...

1、拉伸一个逻辑卷

咱们知道相比于传统磁盘管理方式的各类问题,使用LVM逻辑卷来管理咱们的磁盘,咱们能够对其进行动态的管理。在传统的磁盘管理方式中,咱们若是出现分区大小不足的状况下,咱们此时只能经过加入一块物理硬盘,而后对其进行分区,由于加入的硬盘做为独立的文件系统存在,因此对原有分区并无影响,若是此时咱们须要扩大分区,就只能先将以前的分区先卸载掉,而后将全部的信息转移到新的分区下,最后再将新的分区挂载上去,若是是在生产环境下,这样是不可想象的,正由于如此,咱们才出现了LVM的磁盘管理方式,能够动态的对咱们的磁盘进行管理。

咱们首先来看下动态拉伸一个逻辑卷的示意图:

 

咱们从上图能够看到,咱们在对逻辑卷进行拉伸时,其实际就是向逻辑卷中增长PE的数量,而PE的数量是由VG中剩余PE的数量所决定的。

【注意:】逻辑卷的拉伸操做能够在线进行,不须要卸载掉咱们的逻辑卷

这样的好处就是当咱们的逻辑卷的大小不够用时,咱们不须要对其进行卸载,就能够动态的增长咱们的逻辑卷的大小,并不会对咱们的系统产生任何影响。例如若是咱们的服务器上运行着一个重要的服务或者数据库,并要求咱们7*24小时不间断保持在线,那么这样的动态增长逻辑卷的大小就很是的有必要了。

接下来咱们来看看拉伸逻辑卷的步骤:

由于咱们的逻辑卷的拉伸操做是能够在线进行的,因此这里咱们先将逻辑卷挂载上,并在使用状况下动态的拉伸咱们的逻辑卷

 

复制代码

[root@xiaoluo ~]# mount /dev/xiaoluo/mylv /mnt
[root@xiaoluo ~]# cd /mnt
[root@xiaoluo mnt]# vi xiaoluo.txt
[root@xiaoluo mnt]# cat xiaoluo.txt 
I am xiaoluo
[root@xiaoluo mnt]# ls
lost+found  xiaoluo.txt

复制代码

 

①查看当前VG的信息,保证VG中有足够的空闲空间  经过 vgdisplay 或者 vgs 命令

 

复制代码

[root@xiaoluo mnt]# vgdisplay

  --- Volume group ---
  VG Name               xiaoluo
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               15.99 GiB
  PE Size               4.00 MiB
  Total PE              4094
  Alloc PE / Size       512 / 2.00 GiB
  Free  PE / Size       3582 / 13.99 GiB  // 咱们的VG当前还有14G,还有足够的空闲空间
  VG UUID               Cn2iaV-gkf0-pg3M-5ZpY-Wqx9-C3r2-vmtnpM

复制代码

 

在咱们的VG中还有足够的空闲空间时,咱们就能够动态的对逻辑卷进行拉伸操做了

②扩充逻辑卷  经过 lvextend 命令

 

好比我这里要对 mylv 逻辑卷扩充1G的大小,此时咱们就可使用 lvextend -L +1G /dev/xiaoluo/mylv 命令来执行操做

 

复制代码

[root@xiaoluo mnt]# lvs
  LV   VG      Attr      LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv xiaoluo -wi-a---- 2.00g   // 咱们以前建立的 mylv 逻辑卷的大小为 2G

[root@xiaoluo mnt]# lvextend -L +1G /dev/xiaoluo/mylv 
  Extending logical volume mylv to 3.00 GiB  
  Logical volume mylv successfully resized

复制代码

 

③查看完扩充后LV大小  扩充完后咱们可使用 lvdisplay 或者 lvs 命令来查看一下当前lv的信息

复制代码

[root@xiaoluo mnt]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/xiaoluo/mylv
  LV Name                mylv
  VG Name                xiaoluo
  LV UUID                V8j32N-dTes-vADG-47gj-vSSk-LwdX-k3FPdd
  LV Write Access        read/write
  LV Creation host, time xiaoluo, 2013-05-24 20:42:46 +0800
  LV Status              available
  # open                 0
  LV Size                3.00 GiB  // 扩充之后咱们的 mylv 逻辑卷大小变成了3G了
  Current LE             768
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

复制代码

这个时候咱们发现拉伸之后咱们的逻辑卷大小变成了3G了,此时咱们正在使用个人逻辑卷,并无卸载掉该逻辑卷,同时咱们查看逻辑卷里面的内容,发现其里面的文件还在,而且没有受到一点损害

[root@xiaoluo mnt]# ls
lost+found  xiaoluo.txt
[root@xiaoluo mnt]# cat xiaoluo.txt 
I am xiaoluo

④更新文件系统  经过 resize2fs 命令

咱们在对逻辑卷进行拉伸之后,咱们经过 df -h 命令能够查看一下当前的文件系统信息

[root@xiaoluo mnt]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              16G  3.8G   12G  25% /
tmpfs                 249M  560K  248M   1% /dev/shm
/dev/mapper/xiaoluo-mylv
                      2.0G   68M  1.9G   4% /mnt  

咱们发现咱们当前的挂载的逻辑卷的文件系统大小仍是2G,并无变成3G,其缘由就是咱们的文件系统是在建立完LV之后就立刻格式化的,此后咱们对逻辑卷进行拉伸之后,其并不会改变当前的文件系统,因此咱们这个时候必须更新咱们的文件系统,经过使用 resize2fs 命令

复制代码

[root@xiaoluo mnt]# resize2fs /dev/xiaoluo/mylv 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xiaoluo/mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/xiaoluo/mylv to 786432 (4k) blocks.
The filesystem on /dev/xiaoluo/mylv is now 786432 blocks long.

[root@xiaoluo mnt]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              16G  3.8G   12G  25% /
tmpfs                 249M  560K  248M   1% /dev/shm
/dev/mapper/xiaoluo-mylv
                      3.0G   68M  2.8G   3% /mnt  // 这个时候咱们的文件系统已经更新了,大小也变成了3G

复制代码

此时咱们发现,咱们这时的文件系统也已经更新了,大小变成了3G.

咱们经过上面的步骤能够发现,拉伸一个逻辑卷的实际上是很是简单的,首先就是保持VG中有足够的空闲空间,其次就是对咱们的逻辑卷进行动态的拉伸,最后在拉伸完逻辑卷之后咱们还必需要更新咱们的文件系统。同时咱们能够发现,在对逻辑卷进行拉伸时咱们并不须要先卸载掉逻辑卷,能够在线进行,而且逻辑卷里面的文件内容都不会发生变化。

2、拉伸一个卷组

上面介绍了如何拉伸一个逻辑卷,若是说此时咱们的VG中PE的数量已经不足了,此时咱们若是须要拉伸咱们的逻辑卷,发现卷组中的空间已经不够用了,这个时候咱们就必须对咱们的卷组进行拉伸,使得卷组中有足够的空闲空间,最后再来拉伸咱们的逻辑卷。咱们知道卷组其实就是将多块PV加入到VG当中,因此卷组的拉伸也很是的简单,咱们只须要增长一块物理硬盘,将其格式化成PV,而后再将这个PV加入到该卷组中便可。

这里咱们首先模拟一下将VG中的剩余空间所有拉伸到咱们的逻辑卷当中,而后咱们经过增长一块物理硬盘,来对咱们的卷组进行拉伸操做

复制代码

[root@xiaoluo mnt]# vgs  // 查看当前vg的空闲空间大小
  VG      #PV #LV #SN Attr   VSize  VFree 
  xiaoluo   2   1   0 wz--n- 15.99g 12.99g
[root@xiaoluo mnt]# lvextend -L +11G /dev/xiaoluo/mylv   // 咱们将11G的空间拉伸给当前的逻辑卷
  Extending logical volume mylv to 14.00 GiB  
  Logical volume mylv successfully resized
[root@xiaoluo mnt]# resize2fs /dev/xiaoluo/mylv   // 更新文件系统
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xiaoluo/mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/xiaoluo/mylv to 3670016 (4k) blocks.
The filesystem on /dev/xiaoluo/mylv is now 3670016 blocks long.

[root@xiaoluo mnt]# df -h  // 查看当前文件系统信息
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              16G  3.8G   12G  25% /
tmpfs                 249M  560K  248M   1% /dev/shm
/dev/mapper/xiaoluo-mylv
                       14G   69M   14G   1% /mnt

复制代码

这个时候咱们若是还要对逻辑卷进行扩充,可是此时咱们的VG中空闲空间的大小已经不太够用了,咱们这个时候就须要对咱们的卷组进行动态的拉伸了

①将要添加到VG的硬盘格式化成PV  经过 pvcreate 命令

 

复制代码

[root@xiaoluo mnt]# pvcreate /dev/sdd 
  Physical volume "/dev/sdd" successfully created

[root@xiaoluo mnt]# pvs
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdb   xiaoluo lvm2 a--  8.00g    0 
  /dev/sdc   xiaoluo lvm2 a--  8.00g 1.99g
  /dev/sdd           lvm2 a--  8.00g 8.00g  // 此时咱们新加入的一块硬盘尚未添加到VG当中

复制代码

 

②将新的PV添加到指定的VG当中  经过 vgextend 命令

复制代码

[root@xiaoluo mnt]# vgextend xiaoluo /dev/sdd 
  Volume group "xiaoluo" successfully extended

[root@xiaoluo mnt]# pvs
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdb   xiaoluo lvm2 a--  8.00g    0 
  /dev/sdc   xiaoluo lvm2 a--  8.00g 1.99g
  /dev/sdd   xiaoluo lvm2 a--  8.00g 8.00g

复制代码

③查看当前VG的信息  经过 vgdisplay 或者 vgs 命令

复制代码

[root@xiaoluo mnt]# vgdisplay 
  --- Volume group ---
  VG Name               xiaoluo
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               23.99 GiB
  PE Size               4.00 MiB
  Total PE              6141
  Alloc PE / Size       3584 / 14.00 GiB
  Free  PE / Size       2557 / 9.99 GiB  // 此时咱们发现咱们VG的大小以及获得拉伸了
  VG UUID               h5oPBH-24zo-hn4N-zevL-MQVw-4EiX-x9QAyb

复制代码

3、缩小一个逻辑卷

上面讲的都是如何对逻辑卷进行拉伸以及对卷组进行拉伸,其实逻辑卷还能够动态的对其进行缩小,虽然在实际状况中,咱们几乎不会遇到缩小一个逻辑卷的这种状况,不过仍是有必要学习一下如何缩小一个逻辑卷,首先咱们也是先来看看缩小逻辑卷的一个示意图

咱们看到缩小逻辑卷其实就是从当前的LV中拿出指定的PE数量放回到VG当中。

【注意:】逻辑卷的缩小操做必须离线执行,要先卸载掉逻辑卷才能够

上面在讲的逻辑卷的拉伸操做时咱们能够在线执行,不须要卸载掉逻辑卷,可是在进行逻辑卷的缩小操做时,咱们必需要先卸载掉逻辑卷才行,不然就可能形成逻辑卷里的文件发生损害。接下来咱们来看一下对逻辑卷进行缩小操做的步骤

①卸载已经挂载的逻辑卷  经过 umount 命令

[root@xiaoluo mnt]# cd
[root@xiaoluo ~]# umount /mnt  // 先将咱们的逻辑卷卸载掉

②缩小文件系统(会提示须要运行fsck来检查文件系统)  经过 resize2fs 命令

咱们在讲到对逻辑卷进行拉伸的时候,其顺序是先对逻辑卷进行拉伸操做,而后再更新咱们的文件系统,可是在对逻辑卷进行缩小操做时,咱们必须先执行缩小文件系统这个操做!!!这个顺序必需要记清楚!!!

复制代码

[root@xiaoluo ~]# lvs  // 首先咱们看下咱们当前的逻辑卷大小,此时为14G,咱们这里假设要将其缩减为10G的大小
  LV   VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv xiaoluo -wi-a---- 14.00g                 
                            [root@xiaoluo ~]# resize2fs /dev/xiaoluo/mylv 10G  // 这条命令的做用就是缩小咱们的文件系统,将咱们的文件系统缩小到10Gresize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/xiaoluo/mylv' first.  // 提示咱们首先须要运行 e2fsck 命令来对咱们的文件系统进行检查

[root@xiaoluo ~]# e2fsck -f /dev/xiaoluo/mylv   // 使用 e2fsck 命令来检查咱们的文件系统
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/xiaoluo/mylv: 12/917504 files (0.0% non-contiguous), 75249/3670016 blocks
[root@xiaoluo ~]# resize2fs /dev/xiaoluo/mylv 10G  // 此时再使用 resize2fs 命令来缩小咱们的文件系统,缩小为10G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/xiaoluo/mylv to 2621440 (4k) blocks.
The filesystem on /dev/xiaoluo/mylv is now 2621440 blocks long.

复制代码

这个时候咱们的逻辑卷的文件系统已经被缩小为10G了,接下来咱们就能够缩小咱们的逻辑卷的大小了

③缩小LV  经过 lvreduce 命令

由于咱们以前的LV大小为14G,咱们经过缩小文件系统将其缩减为10G,因此此时咱们须要缩小4G大小的逻辑卷

复制代码

[root@xiaoluo ~]# lvreduce -L -4G /dev/xiaoluo/mylv   // 缩小4G大小的逻辑卷
  WARNING: Reducing active logical volume to 10.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)  // 这里会提示一个警告可能会损坏咱们的文件,这种状况会出如今 当咱们须要缩小的文件大小与实际操做时缩小的文件大小不一致时,好比这里我若是多缩小了1个G大小的逻辑卷,这个时候就会出现文件损坏的状况
Do you really want to reduce mylv? [y/n]: y  
  Reducing logical volume mylv to 10.00 GiB
  Logical volume mylv successfully resized
[root@xiaoluo ~]# lvs  // 此时咱们的逻辑卷已经被缩小为10G了
  LV   VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv xiaoluo -wi-a---- 10.00g

复制代码

缩小逻辑卷的操做是个危险的操做,稍不注意就可能损坏咱们的逻辑卷,形成文件的丢失或损害,因此咱们通常不要对逻辑卷进行缩减操做!!!

缩小完逻辑卷之后,咱们再将逻辑卷挂载到 /mnt 下,看看里面的文件是否还在

[root@xiaoluo ~]# mount /dev/xiaoluo/mylv /mnt/
[root@xiaoluo ~]# cd /mnt/
[root@xiaoluo mnt]# ls
lost+found  xiaoluo.txt
[root@xiaoluo mnt]# cat xiaoluo.txt 
I am xiaoluo

咱们发现,咱们以前建立的文件,以及文件里的内容都没有发生改变。

最后再强调一点:缩小逻辑卷的操做必需要先卸载掉逻辑卷,而后先缩小文件系统,最后再来缩小咱们的逻辑卷才行!!

4、缩小卷组

咱们既然能够动态的拉伸逻辑卷、拉伸卷组以及缩小逻辑卷,那么咱们固然也能够缩小咱们的卷组。何时咱们须要来缩小咱们的卷组呢?好比说我有一块硬盘,这个时候咱们须要将这块硬盘拆下来,或者说不想将这块硬盘再做为逻辑卷了,这个时候咱们就须要执行缩小卷组的操做了,缩小卷组的操做能够经过下面这个示意图来展现:

好比说咱们这里须要将物理卷/sdd这块硬盘拿走,那么缩小卷组的步骤以下:

①首先必须也要卸载掉咱们的逻辑卷  经过 umount 命令

 

[root@xiaoluo mnt]# cd
[root@xiaoluo ~]# umount /dev/xiaoluo/mylv

 

②将一个PV从指定卷组中移除掉  经过 vgreduce 命令

复制代码

[root@xiaoluo ~]# pvs  // 首先咱们须要看下咱们当前有哪些PV正在使用中,由于缩小一个卷组其实就是从卷组中移除一个PV,若是PV正在使用中,那么PV就移除不了
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdb   xiaoluo lvm2 a--  8.00g    0 
  /dev/sdc   xiaoluo lvm2 a--  8.00g 5.99g
  /dev/sdd   xiaoluo lvm2 a--  8.00g 8.00g  // 当前只有 sdd 这个PV能够移除掉

[root@xiaoluo ~]# vgreduce xiaoluo /dev/sdd   // 咱们将 /dev/sdd 这个PV从指定卷组 xiaoluo 中移除掉
  Removed "/dev/sdd" from volume group "xiaoluo"

复制代码

③查看当前卷组的信息  经过 vgdisplay 或者 vgs 命令

 

复制代码

[root@xiaoluo ~]# vgdisplay 
  --- Volume group ---
  VG Name               xiaoluo
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2  // 当前PV也变成了2块了
  Act PV                2
  VG Size               15.99 GiB  // 咱们发现这时咱们的卷组大小只有16G了
  PE Size               4.00 MiB
  Total PE              4094
  Alloc PE / Size       2560 / 10.00 GiB
  Free  PE / Size       1534 / 5.99 GiB
  VG UUID               h5oPBH-24zo-hn4N-zevL-MQVw-4EiX-x9QAyb

[root@xiaoluo ~]# pvs
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdb   xiaoluo lvm2 a--  8.00g    0 
  /dev/sdc   xiaoluo lvm2 a--  8.00g 5.99g
  /dev/sdd           lvm2 a--  8.00g 8.00g  // dev/sdd 这个PV已经从卷组中移除掉了

复制代码

 

④将PV删除掉   经过 pvremove 命令

 

 

[root@xiaoluo ~]# pvremove /dev/sdd 
  Labels on physical volume "/dev/sdd" successfully wiped

 

至此,本篇随笔就已经告一段落了,在本篇随笔里详细讲解了如何动态的对咱们的逻辑卷进行拉伸以及缩小操做,同时对LVM的基本概念、基本原理(Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工做原理)以及LVM的配置使用(Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的建立及使用)等知识的总结也所有结束了!!!

在之后学习Linux当中,将继续记录本身学习Linux的心得、体会!!!

相关文章
相关标签/搜索