首页 > 代码库 > LVM

LVM

LinuxLVM(逻辑卷管理)    

         Linux系统安装伊始,Linux用户就会面临一个问题:如何给系统各个分区分配足够使用的磁盘空间。这个问题,当系统的存储空间即将用尽时显得尤为棘手。解决的办法通常是使用符号链接,或者一些调整分区大小的工具(如parted)对分区大小进行调整,但这只是一个暂时性的解决办法,不久后,我们又会面临同样的问题。

         此外,每次这样的更改,都需要对分区表进行修改,又要对机器进行关机重启操作。这样的话,会对服务器上正在跑的业务造成一定的损失。LVM(逻辑卷管理)能够帮助我们解决这个问题。

        

         一、LVM简介

   LVM Logical Volume Manager(逻辑卷管理)的简写,它将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区添加其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

         与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小或添加移除(可能需对文件系统工具进行升级)LVM也允许按用户组对存储卷进行管理,允许用户使用更直观的名称("sales‘ ‘development‘)代替物理磁盘名(‘sda‘‘sdb‘)来标识存储卷。

         因此,使用LVM主要是方便了对存储系统的管理,增加了系统的扩展性。

        


         注:由四个磁盘分区可以组成一个很大的空间,然后在这些空间上划分一些逻辑分区,当一个逻辑分区的空间不够用的时候,可以从剩余空间上划分一些空间给空间不够用的分区使用。

 

         二、LVM的基本术语

         LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们要清楚以下几个术语所代表的含义:

         物理存储介质(The physical media):

         指硬盘,如:/dev/hda1/dev/sda等,是存储系统最底层的存储单元。

 

         物理卷PVphysicalvolume):

         指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

 

         卷组VGVolume Group):

         LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

 

         逻辑卷LVlogicalvolume):

         LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr)

 

         PEphysical extent):

         每一个物理卷被划分为大小相等的、称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB

 

         LElogical extent):

         逻辑卷也被划分为被称为LE(LogicalExtents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

 

         简单来说就是:

         PV是物理的磁盘分区

         VGLVM中的物理的磁盘分区,也就是说PV必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘,一个VG中包含多个PV

         LV也就是从VG中划分的逻辑分区

 

      

         注:每个PV有大小相等的PE组成(默认为4M);每个LV有大小相等的LE组成(默认为4M

 

         三、安装LVM

         lsmod| grep dm_mod   #查看device-mapper模块是否已经加载

 

         若出现以下输出,即表明加载成功:

         dm_mod               63097  4 dm_mirror,dm_multipath,dm_raid45,dm_log

 

         否则,使用以下命令加载device-mapper模块:

         modprobedm_mod

 

         yuminstall lvm2    #安装LVM2

 

         四、创建和管理LVM

         1、创建分区

         fdisk  /dev/sdb                 #创建新分区,将整个磁盘都创建为两个个分区,分区号为sdb1sdb2

         t                                             #更改分区类型为8e

         w                                           #保存分区设置

         partprobe                            #使分区立即生效,否则需要重启系统

 

         *LVM创建的大致过程

         从硬盘驱动器分区中创建物理卷(physicalvolumes-PV)

         从物理卷中创建卷组(volumegroups-VG)

         从卷组中创建逻辑卷(logicalvolumes-LV),并分派逻辑卷挂载点,其中只有逻辑卷才可以写数据。

 

         2、创建PV

         相关命令:

         pvcreate   创建PV

         pvscan    扫描PV

         pvdisplay   显示PV

         pvremove  删除PV

        

         pvcreate  /dev/sdb1   

         pvcreate  /dev/sdb2        #使用pvcreate进行转换

         pvdisplay                               #查看创建好的pv

 

         3、创建VG(这里我们的VG中目前只有/dev/sdb1,如果以后VG的空间使用完,我们可以在添加其他硬盘扩充VG

         相关命令:

         vgcreate    创建VG

         vgscan      扫描目前系统上是否有VG存在

         vgdispaly    显示VG状态

         vgextend    在目前的VG中添加pv,即扩展VG

         vgreduce    减小VG,即在目前的VG中移除pv

         vgchange    配置VG是否启动(active

         vgremove   删除VG

        

         vgcreate  VG0 /dev/sdb1  /dev/sdb2 …    #vgcreate 卷组名  物理卷1 物理卷2 …

         vgdisplay                                                                      #查看创建的VG状态

         vgchange–ay VG0                                                    #激活卷组

 

         4、创建LV

         lvcreate  -L 800M  –n  LV1 VG0        #创建一个大小为800M,名为LV1的逻辑卷。其中L指定大小,n指定逻辑卷名称,VG0表示从VG0卷组中划分LV1

         lvdisplay                                                                       #查看创建的LV

 

         5LV格式化及挂载

         mkfs.ext4  /dev/VG0/LV1                                    

或者mkfs –text4  /dev/VG0/LV1                               #格式化LV1

         mkdir/mnt/lvm                                                          #创建逻辑卷挂载目录

         mount/dev/VG0/LV1 /mnt/lvm                             #挂载

         df–Thl                                                                          #查看逻辑卷是否挂载上

 

         最好是将LV1写入fstable文件中,放边其在启东市就能挂载。

eg/dev/VG0/LV1           /mnt/lvm          ext4          defaults          1       2

 

         到此,LVM的完整过程已经创建完毕。

 

 

         五、LVM容量调整

         下面的这些内容,才是LVM真正强大的地方。LVM的容量调整可以再多个环节进行,无论是在PV卷,VG卷组还是LV上,都可以方便快速的进行容量调整。

         一般情况下,我们对LVM分区大小的调整,都是从VG的剩余空间来扩展的。如果VG中没有剩余空间了,那么我们要通过添加PVVG扩容。在没有现成的PV时,我们需要通过添加硬盘来创建PV

 

         1、使用fdisk添加一块物理分区,修改其分区类型为8e

         fdisk  /dev/sdc

         n

         l                                                       #新建逻辑分区

         1                                                      #分区号设为1

         t        8e                                      #分区类型更改为8e

         w                                                     #写入分区表

         partprobe                                     #重读分区表

         mkfs.ext4  /dev/sdc1              #格式化

         partx/dev/sdc                             #查看当前硬盘的分区表及使用情况

 

         具体步骤,参见“创建和管理LVM”中的“创建分区”。

         这里需要首先卸载掉原来挂载的LV1:

         umount  /dev/VG0/LV1

        

         2、添加物理卷(这里假定新添加的物理分区为/dev/sdc1

         pvcreate  /dev/sdc1

         pvscan                                                                       #浏览创建的物理卷,或者使用pvdisplay

 

         3、对卷组进行扩容

         vgdisplay

         vgextend  VG0 /dev/sdc1

        

 

         4、对原来的LV进行扩容

         这里我们已经对卷组VG0扩容完毕,也就是说,VG0中已经有空闲的空间可以提供给LV进行扩容。

         lvdisplay

         lvextend  -L +500M  /dev/VG0/LV1                    #LV1扩容500M

         lvscan

         resize2fs  -f /dev/VG0/LV1                                      #使系统识别到更改容量后的系统

 

         mount  /dev/VG0/LV1 /mnt/lvm                            #对刚才卸载掉的LV1进行重新挂载

 

 

         六、卸载LVM的方法

         如果不想使用LVM的话,可以卸载它, 卸载的方法与分区的删除方法类似,就是最后创建的最先删除。顺序如下:
         先删除LV
         再删除VG
         最后PV
         以前的LVM的分区应用fdisk转换成其它类型的文件系统,当普通分区使用。

 

eg1df

         2umount/mnt/lvm

         3lvremove  /dev/VG0/LV1                                                         #删除逻辑卷

         4vgchange  –a n  VG0                                                                   #更改VG0为休眠状态

            vgremove VG0                                                                                   #删除卷组

         5pvscan

      pvremove  /dev/sdb1   /dev/sdb2  /dev/sdc1

         6、使用fdisk修改磁盘的分区类型。一般的Linux文件系统类型为83

 

 

 

 

 


LVM