由于本人是linux小白,现在在自学linux目前学到了LVM就把LVM的实验步骤整理了一下,有什么错误请大家多多指点!

注:以下内容借鉴鸟哥的linux私房菜

         LVM的重点在于可以弹性的调整文件系统的容量!而并非在于性能与数据保全上面。需要文件的读写性能可以使用RAIDLVM可以整个多个物理分区,让这些分区看起来就像一个磁盘一样。而且还可以在将来的其他的物理分区或将其从这个LVM上删除。

 

  1. 1.1    什么是LVMPV,PE,VG,LV的意义

 

LVM的全名是Logical Volume Manager ,中文可以翻译为逻辑管理器。之所以成为“卷”可能是因为可以将文件系统向卷一样伸长或缩短之故吧!LVM的做法是将几个物理的分区(或磁盘)通过软件组合成为一块看起来独立的大磁盘(VG),然后将这些大磁盘在经过分成可以使用的分区(LV),最终就就够挂载使用了。但是为什么这样的系统可以进行扩充或缩小呢?其实与一个称为PE的选项有关。

  • Physical Volume,PV,物理卷

  • 我们实际的分区需要调整系统标识符(system ID)成为8eLVM的标识符),然后再通过pvcreate的命令将它转化为LVM最底层的物理卷(PV),之后才能将这些PV加以利用,调整systemID的方法就是使用fdisk工具

  • Volume GroupVG,卷组

  • 所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合起来的大磁盘。这个大磁盘默认的最大容量是256GB,该结果与PE的大小有关,每个VG最多可以包含65534PE,而每个PE的默认大小是4MB,一次默认的LVMVG会有4M*65534/1024M/G=256GBPELVM中最小的存储单位,我们的文件数据都是由PE来处理的,简单地说PE就像文件系统里的block大小。所以调整PE的大小会影响到VG的最大容量

  • Logical VolumeLV,逻辑卷

  • 最终的VG还会被切成LV,这个LV就是最后可以被格式化使用的类型分区率。LV不可以随意指定大小。既然PE是整个LVM对的最小存储单位,那么LV的大小就与再次LV内的PE总数有关。为了方便用户利用LVM来管理其系统,因此LV的设备文件通常指定为“/dev/VGNAME/LVNAME 注:VGNAMEVG的名称;LVNAMELV的名称”的样式。

 

 

  1. 1.2    LVM的实现流程

 

1、  先将磁盘通过fdisk命令进行分区

2、  将新建好的分区建为PV格式

3、  将全部的分区整个成一个VG,将VG的名称设置为vbirdv;且PE大小为16MB

4、  最终将VG容量都丢给LVLV的名称设置为vbirdlv

5、  最终将LV格式化为ext3的文件系统,并挂载到/mnt/lvm

 

  1. 1.3    实验步骤

  2.        ×    创建分区

[root@localhost ~]# fdisk /dev/sdb          注:使用fdisk工具对/dev/sdb这块磁盘进行分区,由于笔者电脑中只有两块磁盘,本次实验将使用不同的分区代替磁盘。

                           

                   Command(m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (1963-3917, default 1963):

Using default value 1963

Last cylinder, +cylinders or +size{K,M,G} (1963-3917, default 3917):+5G

 

如上示例创建sdb5sdb6sdb7sdb8四个分区(可以根据自己的习惯创建分区笔者使用的是扩展分区)                     

 

  • 更改system ID

Command(m for help): t

Partitionnumber (1-8): 5

Hex code(type L to list codes): 8e

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

 

Command(m for help): t

Partition number (1-8): 6

Hex code(type L to list codes): 8e

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

 

Command(m for help): t

Partition number (1-8): 7

Hex code(type L to list codes): 8e

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

 

Command(m for help): t

Partition number (1-8): 8

Hex code(type L to list codes): 8e

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

注:将分区类型改为8e(其实没有设置成8e也没关系,不过某些LVM的检测命令可能会检测不到该分区。)

 

Command(m for help): p

 

Disk/dev/sdb: 107.4 GB, 107374182400 bytes

255heads, 63 sectors/track, 13054 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

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

I/O size(minimum/optimal): 512 bytes / 512 bytes

Diskidentifier: 0x74429a75

 

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1        3917   31463271    5  Extended

/dev/sdb5               1         393    3156709+  8e  Linux LVM

/dev/sdb6             394        1308    7349706   8e  Linux LVM

/dev/sdb7            1309        1962    5253223+  8e  Linux LVM

/dev/sdb8            1963        2616    5253223+  8e  Linux LVM

Command(m for help): w

The partitiontable has been altered!

 

Callingioctl() to re-read partition table.

Syncingdisks.

使用p命令查看创建好的分区,确认无误后按w保存并退出。

 

[root@localhost~]# partprobe   注:强制让内核重新找一次分区表

 

[root@localhost~]# fdisk -l

 

Disk/dev/sdb: 107.4 GB, 107374182400 bytes

255heads, 63 sectors/track, 13054 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

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

I/O size(minimum/optimal): 512 bytes / 512 bytes

Diskidentifier: 0x74429a75

 

   Device Boot      Start         End     Blocks   Id System

/dev/sdb1               1        3917   31463271    5  Extended

/dev/sdb5               1         393    3156709+  8e  Linux LVM

/dev/sdb6             394        1308    7349706   8e  Linux LVM

/dev/sdb7            1309        1962    5253223+  8e  Linux LVM

/dev/sdb8            1963        2616    5253223+  8e  Linux LVM

 

1.4PV阶段

                   pv:physical volume(实际额)

     1)创建pv

           pvcreate

     2)删除pv

           pvremove

     3)扫描pv

           pvscan

     4)查看pv

           pvdisplay

     5)移动pv

           pvmove

 

  • 检查系统上是否存在PV,然后将/dev/sdb5~8新建成为PV格式

                   [root@localhost~]# pvscan

PV /dev/sda2   VGVolGroup   lvm2 [39.51 GiB / 0    free]

       Total:1 [39.51 GiB] / in use: 1 [39.51 GiB] / in no VG: 0 [0   ]

 

         注:这个PV创建系统的时候自带的,与本次实验无关

        

  • 创建PV

         [root@localhost ~]# pvcreate/dev/sdb{5,6,7,8}

       Physicalvolume "/dev/sdb5" successfully created

       Physicalvolume "/dev/sdb6" successfully created

       Physicalvolume "/dev/sdb7" successfully created

       Physicalvolume "/dev/sdb8" successfully created

         注:这个命令可以一下创建多个PV比单个穿件简便不少

        

         [root@localhost ~]# pvscan

       PV/dev/sda2   VG VolGroup        lvm2 [39.51 GiB / 0    free]

       PV/dev/sdb5                      lvm2 [3.01GiB]

       PV/dev/sdb6                      lvm2 [7.01GiB]

       PV/dev/sdb7                      lvm2 [5.01 GiB]

       PV/dev/sdb8                      lvm2 [5.01GiB]

Total: 5[59.55 GiB] / in use: 1 [39.51 GiB] / in no VG: 4 [20.04 GiB]

这就分别显示每个PV的信息与系统所有的PV信息。尤其是最有一行,显示的是:整体PV的量/已经被使用到VG的量/剩余的PV

 

  • 更详细的显示PV信息

                   [root@localhost~]# pvdisplay

                [root@localhost ~]# pvdisplay

                --- Physical volume ---

                PV Name               /dev/sda2

                VG Name               VolGroup

                PV Size               39.51 GiB / not usable 3.00 MiB

                Allocatable           yes (but full)

                  PE Size              4.00 MiB

                Total PE              10114

                Free PE               0

                Allocated PE          10114

                PV UUID              C8Soc4-4V1F-I3LI-YyJr-KnEP-urtx-xXpKjh

  

                 "/dev/sdb5" is a newphysical volume of "3.01 GiB"

                --- NEW Physical volume ---

                  PV Name               /dev/sdb5

                VG Name              

                PV Size               3.01 GiB

                Allocatable           NO

                PE Size               0  

                Total PE              0

                Free PE               0

                 Allocated PE          0

                PV UUID              IYkvra-xyFA-mB1U-7wvs-fhf4-I4Qg-88C3mG

  

                 "/dev/sdb6" is a newphysical volume of "7.01 GiB"

                --- NEW Physical volume ---

                PV Name               /dev/sdb6             ←实际的分区设备名称

                VG Name                                              ←因为尚未分配出去所以空白

                  PV Size               7.01 GiB                 ←就是容量的说明

                Allocatable           NO                               ←是否已被分配

                PE Size               0                              ←在此PV内的PE大小

                Total PE              0                                  ←共分出几个PE

                Free PE               0                                 ←没被LV用掉的PE

                Allocated PE          0                                   ←尚可分配出去的PE数量

                PV UUID              gErjmF-t2Wb-jFI4-qLZ4-4lze-1oU9-O7HdRb

  

                "/dev/sdb7" is a newphysical volume of "5.01 GiB"

                --- NEW Physical volume ---

                PV Name               /dev/sdb7

                VG Name              

                PV Size               5.01 GiB

                Allocatable           NO

                PE Size               0  

                Total PE              0

                Free PE               0

                Allocated PE          0

                PV UUID              CqHwxm-ZfFT-KHju-SkS0-bXNN-Q70X-hYkjb0

  

                "/dev/sdb8" is a newphysical volume of "5.01 GiB"

                --- NEW Physical volume ---

                PV Name               /dev/sdb8

                VG Name              

                PV Size               5.01 GiB

                Allocatable           NO

                PE Size               0  

                TotalPE              0

                 Free PE               0

                Allocated PE          0

                 PV UUID              ty3uai-DtDD-h2QC-n01u-psKJ-7Blf-cvQAiL

 

注:由于PE是新建VG的时候才给予的参,因此在这里看到的PV里面PE会是0

而且也没有多余的PE可供分配(allocatable

 

         1.5VG阶段

                   g:volume group(卷组)

1)创建vg

Vgcreate

     2)删除vg

           vgremove

     3)扫描vg

           vgscan

     4)查看vg

             vgdisplay

     5)移动vg

            gmove

     6)扩展vg

           vgextend

     7)缩减vg

           vgreduce

VG不同,PV的名称是自定义的!我们知道PV的名称其实就是分区的设备文件名,但是这个VG名称则可以随便你自己取。在下面例子当中将VG取名为vbirdvg。新建这个VG的流程是这样的。

 

  • 创建VG

 

         [root@localhost ~]# vgcreate -s 16Mvbirdvg /dev/sdb{5,6,7}

        Volumegroup "vbirdvg" successfully created

         以上字段的意思为将/dev/sdb5-7创建为一个VG,且指定PE大小为16MB

         注:-s后面跟的是PE的大小(size,单位可以是MGT(大小写均可)

        

         [root@localhost ~]# vgscan

        Readingall physical volumes.  This may take awhile...

       Foundvolume group "vbirdvg" using metadata type lvm2

       Foundvolume group "VolGroup" using metadata type lvm2

         注:以上信息可以看出vbirdvg已经创建成功

 

         [root@localhost ~]# pvscan

       PV/dev/sdb5   VG vbirdvg         lvm2 [3.00 GiB / 3.00 GiB free]

        PV/dev/sdb6   VG vbirdvg         lvm2 [7.00 GiB / 7.00 GiB free]

       PV/dev/sdb7   VG vbirdvg         lvm2 [5.00 GiB / 5.00 GiB free]

       PV/dev/sda2   VG VolGroup        lvm2 [39.51 GiB / 0    free]

        PV/dev/sdb8                      lvm2 [5.01GiB]

        Total:5 [59.52 GiB] / in use: 4 [54.51 GiB] / in no VG: 1 [5.01 GiB]

        

         注:从以上信息中可以看出有三个PV被占用,有一个空闲(/dev/sdb8

        

  • 更详细的显示出VG的信息

         [root@localhost ~]# vgdisplay

       ---Volume group ---

       VGName               vbirdvg

       SystemID            

       Format                lvm2

       MetadataAreas        3

       MetadataSequence No  1

       VGAccess             read/write

       VGStatus             resizable

       MAXLV                0

       CurLV                0

       OpenLV               0

       MaxPV                0

       CurPV                3

       ActPV                3

       VGSize               15.00 GiB                                   ←整体的VG容量有这么大

       PESize               16.00 MiB                                   ←内部每个PE的大小

       Total PE              960                                        ←总共的PE数量共有这么多

       Alloc PE / Size       0 / 0  

        Free PE / Size       960 / 15.00 GiB

       VGUUID              QaQ6X4-U9RP-wW7m-bgWA-UJvY-4Kg5-6jmvye

注:深色三行指的是PE能够使用的情况!由于尚未创建LV,因此所有的PE均可自由使用。

 

       ---Volume group ---

       VGName               VolGroup

       SystemID            

       Format                lvm2

       MetadataAreas        1

       MetadataSequence No  3

       VGAccess             read/write

       VGStatus             resizable

       MAXLV                0

       CurLV                2

       OpenLV               2

        MaxPV                0

       CurPV                1

       ActPV                1

       VGSize               39.51 GiB

       PESize               4.00 MiB

       TotalPE              10114

       AllocPE / Size       10114 / 39.51 GiB

       Free  PE / Size       0 / 0  

       VG UUID              madnL1-qOMP-r9EC-36w9-0bO0-KeyZ-z0znMh

         注:VolGroup是创建系统时自带,本实验将无视该内容

                           

这样我们就创建一个VG了,假设我们要增加这个VG的容量,我们可以使用刚才保留的/dev/sdb8增加VG容量。

        

  • 扩展VG

                            [root@localhost~]# vgextend vbirdvg /dev/sdb8

                         ume group"vbirdvg" successfully extended

                            注:这个命令可以将PV/dev/sdb8)丢给vbirdvg

 

                            

                            

[root@localhost ~]# vgdisplay

 --- Volume group ---

 VG Name               vbirdvg

 System ID            

 Format                lvm2

 Metadata Areas        4

 Metadata Sequence No  2

 VG Access             read/write

 VG Status             resizable

 MAX LV                0

 Cur LV                0

 Open LV               0

 Max PV                0

 Cur PV                4

 Act PV                4

 VG Size               20.00 GiB

 PE Size               16.00 MiB

 Total PE              1280                      ←可以看出PE数已经增加

 Alloc PE / Size       0 / 0  

 Free  PE / Size       1280 / 20.00 GiB

 VG UUID              QaQ6X4-U9RP-wW7m-bgWA-UJvY-4Kg5-6jmvye

  

 --- Volume group ---

 VG Name               VolGroup

 System ID            

 Format                lvm2

 Metadata Areas        1

 Metadata Sequence No  3

 VG Access             read/write

 VG Status             resizable

 MAX LV                0

 Cur LV                2

 Open LV               2

 Max PV                0

 Cur PV                1

 Act PV                1

 VG Size               39.51 GiB

 PE Size               4.00 MiB

 Total PE              10114

 Alloc PE / Size       10114 /39.51 GiB

 Free  PE / Size       0 / 0  

 VG UUID              madnL1-qOMP-r9EC-36w9-0bO0-KeyZ-z0znMh                      

1.6.LV阶段

          创建出VG这个大磁盘之后,再来就是要新建分区。这个分区就是所谓的LV。假设我们将刚才那个vbirdvg磁盘分成vbirdlv,整个VG的容量都会被分配到vbirdlv里面去。

          LV命令:

1)创建LV

lvcreate

     

     2)删除lv

            lvremove

     3)扫描lv

            lvscan

     4)查看lv

             lvdisplay

     5)移动lv

             lvmove

     6)缩减lv

            lvreduce

     7)扩展lv

            lvextend

  •   创建LV

          [root@localhost ~]#lvcreate -L 20G -n vbirdlv vbirdvg

       Logical volume "vbirdlv" created

注:-L后面接容量,容量的单位可以是MGT等,需要注意的是最小单位为PE,因此这个数量必须要是PE的倍数,若不相符,系统会自行计算最相近的容量。

lvcreate后面也可以跟小写的“-l”若使用小写的-l则需要跟PE的“个数”,而不是数量,若要这么做,得要自行计算PE数。

          -n:后面接的是LV的名称。

          vgdisplay可以看出VG共有20G,所以-L后面跟20G

         

  •   查看LV的详细信息

                   [root@localhost~]# lvdisplay

 --- Logical volume ---

 LV Path               /dev/vbirdvg/vbirdlv

 LV Name                vbirdlv

 VG Name                vbirdvg

 LV UUID               p89ztk-RQFc-YG5j-20Xc-QtJ9-uYdR-DU5bfZ

 LV Write Access        read/write

 LV Creation host, time localhost, 2016-06-27 22:10:32 +0800

 LV Status              available

 # open                 0

 LV Size                20.00 GiB                         ←这个LV的容量这么大

 Current LE             1280

 Segments               4

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:2

  

 --- Logical volume ---

 LV Path                /dev/VolGroup/lv_root

 LV Name                lv_root

 VG Name                VolGroup

 LV UUID               JNU6kK-z5rp-xkTU-lB9F-98yj-WcZc-E1AXrH

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2016-04-07 06:36:29 +0800

 LV Status              available

 # open                 1

 LV Size                37.57 GiB

 Current LE             9618

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:0

  

 --- Logical volume ---

 LV Path               /dev/VolGroup/lv_swap

 LV Name                lv_swap

 VG Name                VolGroup

 LV UUID               w1qlH9-6odx-Q4Es-tVAt-n3gn-JOjx-1v7QQY

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2016-04-07 06:36:32 +0800

 LV Status              available

 # open                 1

 LV Size                1.94 GiB

 Current LE             496

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:1

    

     注:我们整个分区已经准备好,接下来就是针对LV进行处理。要注意的是,VG的名称是vbirdvg,但是LV的名称必须使用全名!即/dev/vbirdvg/vbirdlv。后续的处理都是这样的!笔者就犯过这样的错误,不注意的话很容易搞错。

 

    

  1. 7、       文件系统阶段

  2.        ×    格式化、挂载、查看LV

                            [root@localhost ~]#mkfs -t ext3 /dev/vbirdvg/vbirdlv

mke2fs 1.41.12 (17-May-2010)

文件系统标签=

操作系统:Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0blocks

1310720 inodes, 5242880 blocks

262144 blocks (5.00%) reserved forthe super user

第一个数据块=0

Maximum filesystem blocks=4294967296

160 block groups

32768 blocks per group, 32768fragments per group

8192 inodes per group

Superblock backups stored on blocks:

         32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

         4096000

 

正在写入inode: 完成                           

Creating journal (32768 blocks): 完成

Writing superblocks and filesystemaccounting information: 完成

 

This filesystem will be automaticallychecked every 29 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

[root@localhost ~]# mkdir /mnt/lvm   ←/mnt下创建一个名为lvm的文件夹

[root@localhost ~]# mount/dev/vbirdvg/vbirdlv /mnt/lvm             ←LV分区挂载到新建的文件夹下

 

[root@localhost ~]# df

Filesystem                   1K-blocks    Used Available Use% Mounted on

/dev/mapper/VolGroup-lv_root  38776280 5019072  31787444 14% /

tmpfs                           243140      72   243068   1% /dev/shm

/dev/sda1                       495844   34907   435337   8% /boot

/dev/mapper/vbirdvg-vbirdlv  20642428  176196  19417656  1% /mnt/lvm

 

注:其实Lv的名称构成为/dev/vbirdvg/vbirdlv是为了让用户直观德找到我们所需要的数据,实际上LVM的设备是放置到/dev/mapper/目录下!此时LV已经建好了,可以自有应用/mnt/lvm中的所有资源。

 

  1. 1.8、     放大LV容量

刚才和大家说到LVM最大的特色就是弹性调整磁盘容量,下面我们将        演示如何放大LVM容量,具体步骤如下:

1) 创建新的分区,将system ID改为8e

2) 利用pvcreate构建PV

3) 利用vgextendPV加入我们的vbirdvg

4) 通过resize2fs将文件系统的容量却是增加;


  • 创建新分区

[root@localhost lvm]# fdisk /dev/sdb

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

sectors (command 'u').


Command (m for help): p


Disk /dev/sdb: 107.4 GB, 107374182400 bytes

255 heads, 63 sectors/track, 13054 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: 0x74429a75


   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1        3917   31463271    5  Extended

/dev/sdb5               1         393    3156709+  8e  Linux LVM

/dev/sdb6             394        1308    7349706   8e  Linux LVM

/dev/sdb7            1309        1962    5253223+  8e  Linux LVM

/dev/sdb8            1963        2616    5253223+  8e  Linux LVM


Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (2617-3917, default 2617):   

Using default value 2617

G


Command (m for help): p


Disk /dev/sdb: 107.4 GB, 107374182400 bytes

255 heads, 63 sectors/track, 13054 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: 0x74429a75


   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1        3917   31463271    5  Extended

/dev/sdb5               1         393    3156709+  8e  Linux LVM

/dev/sdb6             394        1308    7349706   8e Linux LVM

/dev/sdb7            1309        1962    5253223+  8e  Linux LVM

/dev/sdb8            1963        2616    5253223+  8e  Linux LVM

/dev/sdb9            2617        3009    3156741   83  Linux


Command (m for help): t

Partition number (1-9): 9

Hex code (type L to list codes): 8e

Changed system type of partition 9 to 8e (Linux LVM)


Command (m for help): p


Disk /dev/sdb: 107.4 GB, 107374182400 bytes

255 heads, 63 sectors/track, 13054 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: 0x74429a75


   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1        3917   31463271    5  Extended

/dev/sdb5               1         393    3156709+  8e  Linux LVM

/dev/sdb6             394        1308    7349706   8e  Linux LVM

/dev/sdb7            1309        1962    5253223+  8e  Linux LVM

/dev/sdb8            1963        2616    5253223+  8e Linux LVM

/dev/sdb9            2617        3009    3156741   8e  Linux LVM


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.


源忙.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.


                      

                               [root@localhostlvm]# partprobe

 

       

  • 创建新的PV

                               [root@localhost ~]# pvcreate /dev/sdb9

Physical volume"/dev/sdb9" successfully created

 

[root@localhost ~]# pvscan

  PV /dev/sdb5   VG vbirdvg   lvm2 [3.00 GiB / 0    free]

  PV /dev/sdb6   VG vbirdvg   lvm2 [7.00 GiB / 0    free]

  PV /dev/sdb7   VG vbirdvg   lvm2 [5.00 GiB / 0    free]

  PV /dev/sdb8   VG vbirdvg   lvm2 [5.00 GiB / 0    free]

  PV /dev/sdb9                           lvm2 [3.00 GiB / 0    free]

  PV /dev/sda2   VG VolGroup  lvm2 [39.51 GiB / 0    free]

        Total: 6 [62.51 GiB] / inuse: 6 [62.51 GiB] / in no VG: 0 [0   ]

            注:可以看出/dev/sdb9是新加入尚未使用的

                  

  • 加大VG使用vgextend功能

 

[root@localhost ~]#vgextend vbirdvg /dev/sdb9

   Volumn group “vbirdvg”successfully extended

 

[root@localhost ~]# vgdisplay

  --- Volume group ---

  VG Name               vbirdvg

  System ID            

  Format                lvm2

  Metadata Areas        5

  Metadata Sequence No  4

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                1

  Open LV               0

  Max PV                0

  Cur PV                5

  Act PV                5

  VG Size               23.00 GiB

  PE Size               16.00 MiB

  Total PE              1472

  Alloc PE / Size       1280 / 23.00 GiB

  Free  PE / Size       192/ 3GB 

  VG UUID              QaQ6X4-U9RP-wW7m-bgWA-UJvY-4Kg5-6jmvye

  

  --- Volume group ---

  VG Name               VolGroup

  System ID            

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  3

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                2

  Open LV               2

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               39.51 GiB

  PE Size               4.00 MiB

  Total PE              10114

  Alloc PE / Size       10114 / 39.51 GiB

  Free  PE / Size       0 / 0  

  VG UUID               madnL1-qOMP-r9EC-36w9-0bO0-KeyZ-z0znMh

 

root@localhost ~]# lvresize –l +192 /dev/vbirdvg/vbirdlv

   Extending logical volume vbirdlvto 23 GB

   Logical volume vbirdlvsuccessfully resized

注:本次使用-l只是为了给大家演示-l的用法

这样就增加LV了。Lvresize的用法很简单,基本上同样通过-l-L来增加。

 

[root@localhost ~]# lvdisplay

  --- Logical volume ---

  LV Path                /dev/vbirdvg/vbirdlv

  LV Name                vbirdlv

  VG Name                vbirdvg

  LV UUID                p89ztk-RQFc-YG5j-20Xc-QtJ9-uYdR-DU5bfZ

  LV Write Access        read/write

  LV Creation host, timelocalhost, 2016-06-27 22:10:32 +0800

  LV Status              available

  # open                 0

  LV Size                23.00 GiB

  Current LE             1472

  Segments               5

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:2

  

  --- Logical volume ---

  LV Path                /dev/VolGroup/lv_root

  LV Name                lv_root

  VG Name                VolGroup

  LV UUID               JNU6kK-z5rp-xkTU-lB9F-98yj-WcZc-E1AXrH

  LV Write Access        read/write

  LV Creation host, timelocalhost.localdomain, 2016-04-07 06:36:29 +0800

  LV Status              available

  # open                 1

  LV Size                37.57 GiB

  Current LE             9618

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0

  

  --- Logical volume ---

  LV Path                /dev/VolGroup/lv_swap

  LV Name                lv_swap

  VG Name                VolGroup

  LV UUID               w1qlH9-6odx-Q4Es-tVAt-n3gn-JOjx-1v7QQY

  LV Write Access        read/write

  LV Creation host, timelocalhost.localdomain, 2016-04-07 06:36:32 +0800

  LV Status              available

  # open                 1

  LV Size                1.94 GiB

  Current LE             496

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:1

 

[root@localhost ~]# df -h /mnt/lvm

Filesystem                  Size  Used Avail Use% Mounted on

/dev/mapper/vbirdvg-vbirdlv  20G  173M   19G  1% /mnt/lvm

注:可以看出最终结果中LV真的有放大到23G,但文件系统没有增加。而且,我们的LVM可以在线直接处理,并不需要给它umount

                  

  • 使用resize2fs

[root@localhost lvm]# dumpe2fs /dev/vbirdvg/vbirdlv

dumpe2fs 1.41.12 (17-May-2010)

Filesystem volume name:   <none>

Last mounted on:          <not available>

Filesystem UUID:          b0560ee1-443e-4230-a3bd-0d13d4d39891

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inodedir_index filetype needs_recovery sparse_super large_file

Filesystem flags:         signed_directory_hash

Default mount options:    (none)

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              1310720

Block count:              5242880                 这个文件系统的block总数

Reserved block count:     262144

Free blocks:              5116557

Free inodes:              1310708

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      1022

Blocks per group:         32768         多少个block设置成为一个block

Fragments per group:      32768

Inodes per group:         8192

Inode blocks per group:   512

Filesystem created:       Mon Jun 27 22:17:05 2016

Last mount time:          Mon Jun 27 22:41:45 2016

Last write time:          Mon Jun 27 22:41:45 2016

Mount count:              2

Maximum mount count:      29

Last checked:             Mon Jun 27 22:17:05 2016

Check interval:           15552000 (6 months)

Next check after:         Sat Dec 24 22:17:05 2016

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:                256

Required extra isize:     28

Desired extra isize:      28

Journal inode:            8

Default directory hash:   half_md4

Directory Hash Seed:      624a67f4-a148-425e-bb32-59ad7534feea

Journal backup:           inode blocks

Journal features:         (none)

日志大小:             128M

Journal length:           32768

Journal sequence:         0x0000000e

Journal start:            1

 

 

Group 0: (Blocks 0-32767)                ←括号内为block的号码

  superblock at 0, Group descriptors at 1-2

  保留的GDT块位于 3-1024

 Block bitmap at 1025 (+1025), Inode bitmap at 1026 (+1026)

 Inode表位于 1027-1538 (+1027)

 31222 free blocks, 8180 free inodes, 2 directories

  可用块数: 1545-6151, 6153-32767

  可用inode: 12-13, 15-8192

 

….(中间省略)…….

 

Group 159: (Blocks 5210112-5242879)          这是本系统中最后一个group

 Block bitmap at 5210112 (+0), Inode bitmap at 5210113 (+1)

 Inode表位于 5210114-5210625 (+2)

 32254 free blocks, 8192 free inodes, 0 directories

  可用块数: 5210626-5242879

  可用inode: 1302529-1310720

注:以上信息是文件系统内的superblock的记录情况。

              

                            [root@localhostlvm]# resize2fs -f /dev/vbirdvg/vbirdlv

resize2fs1.41.12 (17-May-2010)

zingrequired

olddesc_blocks = 2, new_desc_blocks = 2

ocks.

Thefilesystem on /dev/vbirdvg/vbirdlv is now 6029312 blocks long.

                            注:

                                   -f:强制进行resize的操作;

              -f后面跟设备名还可以在设备名后面跟大小,可以加也可以不加,如果加上size的话必须给定一个单位(MG等)如果没有size的话默认使用整个分区量来处理。

 

[root@localhost ~]# df -h /mnt/lvm

Filesystem                   Size  Used Avail Use% Mounted on

/dev/mapper/vbirdvg-vbirdlv   23G 173M   22G   1% /mnt/lvm

 

[root@localhost ~]# ls -l/mnt/lvm/

总用量 20

drwx------. 2 root root 16384 6 27 22:17 lost+found

-rwxr-xr-x. 1 root root    23 6  2722:29 test.sh

 

注:Lvm中的数据依然存在。

如果你已经有填数据在lvm扇区中,这个数据是不会死掉的,还会在以前原本的扇区当中。

  1. 1.9、      缩小LV容量

         [root@localhost ~]# pvdisplay

  --- Physical volume ---

  PV Name               /dev/sdb5

  VG Name               vbirdvg

  PV Size               3.01 GiB / not usable 10.75 MiB

  Allocatable           yes (but full)

  PE Size               16.00 MiB

  Total PE              192

  Free PE               0

  Allocated PE          192

         PV UUID              IYkvra-xyFA-mB1U-7wvs-fhf4-I4Qg-88C3mG

注:从以上信息得知/dev/sdb5有多大,而且含有192PE的量。

那如果要使用resize2fs是,则减去7.01GB就可以了。

 

[root@localhost ~]# pvscan

 PV /dev/sdb5   VG vbirdvg    lvm2 [3.00 GiB / 0    free]

 PV /dev/sdb6   VG vbirdvg    lvm2 [7.00 GiB / 0    free]

 PV /dev/sdb7   VG vbirdvg    lvm2 [5.00 GiB / 0    free]

 PV /dev/sdb8   VG vbirdvg    lvm2 [5.00 GiB / 0    free]

 PV /dev/sdb9   VG vbirdvg    lvm2 [3.00 GiB / 0    free]

 PV /dev/sda2   VG VolGroup   lvm2 [39.51 GiB / 0    free]

         Total: 6 [62.51 GiB] / in use: 6 [62.51 GiB] /in no VG: 0 [0   ]

                     注:从以上信息可以看出去除/dev/sdb5剩余容量为20GB7+5+5+3=20

  • 卸载/mnt/lvm

[root@localhost ~]# umount/mnt/lvm

                  

 

  • 进行磁盘检查

[root@localhost ~]# e2fsck -f/dev/vbirdvg/vbirdlv

e2fsck 1.41.12 (17-May-2010)

第一步: 检查inode,,和大小

第二步: 检查目录结构

3: 检查目录连接性

Pass 4: Checking reference counts

5: 检查簇概要信息

      /dev/vbirdvg/vbirdlv:12/1507328 files (0.0% non-contiguous), 138659/6029312 blocks

                           

  • 降低文件系统的容量

[root@localhost ~]# resize2fs/dev/vbirdvg/vbirdlv 20G

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on/dev/vbirdvg/vbirdlv to 5242880 (4k) blocks.

The filesystem on/dev/vbirdvg/vbirdlv is now 5242880 blocks long.

注:有可能出现容量不能够写小数点为的时候大家可以把G换算成M就可以了。

 

 

  • 降低LV的容量

[root@localhost ~]# lvresize -l-192 /dev/vbirdvg/vbirdlv

 WARNING: Reducing active and open logical volume to 20.00 GiB

 THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reducevbirdlv? [y/n]: y            ←会有警告信息,但是我们的实际数据量还是比16G要小,所以就按y

 Reducing logical volume vbirdlv to 20.00 GiB

 Logical volume vbirdlv successfully resized

注:降低LV的量,同时我们知道/dev/sdb5192PE

 

[root@localhost ~]# lvdisplay

 --- Logical volume ---

 LV Path               /dev/vbirdvg/vbirdlv

 LV Name                vbirdlv

 VG Name                vbirdvg

 LV UUID               p89ztk-RQFc-YG5j-20Xc-QtJ9-uYdR-DU5bfZ

 LV Write Access        read/write

 LV Creation host, time localhost, 2016-06-27 22:10:32 +0800

 LV Status              available

 # open                 1

 LV Size                20.00 GiB

 Current LE             1280

 Segments               4

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:2

  

 --- Logical volume ---

 LV Path               /dev/VolGroup/lv_root

 LV Name                lv_root

 VG Name                VolGroup

 LV UUID               JNU6kK-z5rp-xkTU-lB9F-98yj-WcZc-E1AXrH

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2016-04-07 06:36:29 +0800

 LV Status              available

 # open                 1

 LV Size                37.57 GiB

 Current LE             9618

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:0

  

 --- Logical volume ---

 LV Path               /dev/VolGroup/lv_swap

 LV Name                lv_swap

 VG Name                VolGroup

 LV UUID                w1qlH9-6odx-Q4Es-tVAt-n3gn-JOjx-1v7QQY

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2016-04-07 06:36:32 +0800

 LV Status              available

 # open                 1

 LV Size                1.94 GiB

 Current LE             496

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:1

  

  注:这样就将LV缩小了,接下来就是要将/dev/sdb5移出vbirdvg这个VG之外。我们在移出之前我们要先确定/dev/sdb9里面的PE完全不被使用后才能将/dev/sdb5抽离

                  

  • /dev/sdb9移出vbirdvg

 

[root@localhost ~]# pvdisplay

 --- Physical volume ---

 PV Name               /dev/sdb5

 VG Name               vbirdvg

 PV Size               3.01 GiB /not usable 10.72 MiB

 Allocatable           yes (butfull)

 PE Size               16.00 MiB

 Total PE              192

 Free PE               0

 Allocated PE          192

 PV UUID               IYkvra-xyFA-mB1U-7wvs-fhf4-I4Qg-88C3mG  

 

     --- Physical volume ---

 PV Name               /dev/sdb6

 VG Name               vbirdvg

 PV Size               7.01 GiB /not usable 9.45 MiB

 Allocatable           yes (butfull)

 PE Size               16.00 MiB

 Total PE              448

 Free PE               0

 Allocated PE          448

 PV UUID              gErjmF-t2Wb-jFI4-qLZ4-4lze-1oU9-O7HdRb

  

 --- Physical volume ---

 PV Name               /dev/sdb7

 VG Name               vbirdvg

 PV Size               5.01 GiB /not usable 10.10 MiB

 Allocatable           yes (butfull)

 PE Size               16.00 MiB

 Total PE              320

 Free PE               0

 Allocated PE          320

 PV UUID              CqHwxm-ZfFT-KHju-SkS0-bXNN-Q70X-hYkjb0

  

 --- Physical volume ---

 PV Name               /dev/sdb8

 VG Name               vbirdvg

 PV Size               5.01 GiB /not usable 10.10 MiB

 Allocatable           yes (butfull)

 PE Size               16.00 MiB

 Total PE              320

 Free PE               0

 Allocated PE          320

 PV UUID              ty3uai-DtDD-h2QC-n01u-psKJ-7Blf-cvQAiL

  

 --- Physical volume ---

 PV Name               /dev/sdb9

 VG Name               vbirdvg

 PV Size               3.01 GiB /not usable 10.75 MiB

 Allocatable           yes

 PE Size               16.00 MiB

 Total PE              192

 Free PE               192

 Allocated PE          0

 PV UUID              PaBXJr-hpTK-hcvU-8Uxh-odDw-QNEX-dTeL0V

  

 --- Physical volume ---

 PV Name               /dev/sda2

 VG Name               VolGroup

 PV Size               39.51 GiB /not usable 3.00 MiB

 Allocatable           yes (butfull)

 PE Size               4.00 MiB

 Total PE              10114

 Free PE               0

 Allocated PE          10114

 PV UUID              C8Soc4-4V1F-I3LI-YyJr-KnEP-urtx-xXpKjh

   注:先确认/dev/sdb5是否将PE都删除了

                     通过查看上述信息可以看出在/dev/sdb9上有没有使用的PE刚好和/dev/sdb5上的PE一样大,我们需要将PE/dev/sdb5转移到/dev/sdb9

 

                  

  • 转移PE

[root@localhost ~]# pvmove/dev/sdb5 /dev/sdb9

 /dev/sdb5: Moved: 0.0%

 /dev/sdb5: Moved: 26.0%

 /dev/sdb5: Moved: 52.1%

 /dev/sdb5: Moved: 78.1%

 /dev/sdb5: Moved: 100.0%

   注:Pvmove 来源pv 目标pv,可以将/dev/sdb5中的数据全部移动到/dev/sdb9中。

  • /dev/sdb5移出vbirdvg

                            [root@localhost ~]# vgreduce vbirdvg/dev/sdb5

  Removed "/dev/sdb5" from volumegroup "vbirdvg"


[root@localhost~]# pvscan

PV /dev/sdb6   VG vbirdvg         lvm2 [7.00 GiB / 0    free]

 PV /dev/sdb7   VG vbirdvg         lvm2 [5.00 GiB / 0    free]

 PV /dev/sdb8   VG vbirdvg         lvm2 [5.00 GiB / 0    free]

 PV /dev/sdb9   VG vbirdvg         lvm2 [3.00 GiB / 0    free]

 PV /dev/sda2   VG VolGroup        lvm2 [39.51 GiB / 0    free]

 PV /dev/sdb5                     lvm2 [3.01 GiB]

  Total: 6 [62.52 GiB] / in use: 5 [59.51 GiB]/ in no VG: 1 [3.01 GiB]

  

                                      [root@localhost ~]# pvremove /dev/sdb5

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

         注:/dev/sdb5已经空出来了,可以去让他做别的事情了!基本上是完成了,LVM快照请参考文章http://bella41981.blog.51cto.com/10603572/1795009