本章的内容包含以下几大部分(由于作者水平有限,错误之处请留言谢谢!):

(1)什么是LVM,PV,PE,VG,LV。

(2)LVM的实际操作

(3)怎样放大LV的容量

(4)怎样缩小LV的容量

(5)怎样删除逻辑卷


LVM的定义:中文翻译就是逻辑卷管理器,可以整合多个物理分区在一起,让这些分区看起来像是一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个lvm管理的磁盘当中删除,可以弹性调整文件系统的容量。

PV:指的就是物理卷,我们实际分区要调整系统标识符成为8e(LVM的标识符)然后在经过pvcreat的命令转化成LVM最底层的物理卷(PV)。

PE:指的就是物理扩展块,它是LVM中最小的存储快,默认使用4MB的PE块,我们的文件数据写入都是写入PE来处理的,简单来说,PE就像是文件系统里面的block大小。

VG:就是将许多PV整合成VG,一个VG最大的容量可达256GB,与PE有关。

LV:最终的VG会被切成LV,这个LV就是最后可以被格式化使用的分区。


PV命令:

pvcreat:将物理分区新建成为PV。

pvscan:查询目前系统里面任何具有PV的磁盘。

pvdisplay:显示出目前系统上面的PV状态

pvremove:将PV属性删除,让该分区不具有PV属性。


VG命令:

vgcreat:新建VG

vgscan:查找系统上面是否存在VG。

vgdisply:显示目前系统上面的VG状态。

vgxtend:在VG内增加额外的pv。

vgreduce:在VG内删除PV。

vgchange:删除一个VG。


LV命令:

lvcreat:新建LV

lvscan:查找系统上面是否存在LV。

lvdisply:显示目前系统上面的LV状态。

lvxtend:在LV里面增加的LV状态。

lvreduce:在LV里面减少容量。

lvmove:删除一个LV。

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


实际上只看这些概念的东西是很不容易理解的,反正我是不理解,举个列子就很清楚了:

小明想吃馒头,家里的面粉不够,于是从隔壁老王家,老李家,老张家,分别借来一些面粉,准备蒸馒头吃,首先需要把面粉(物理卷pv)揉成一个大面团(卷组VG),然后把这些面团分割成一个个小馒头(逻辑卷LV)而且每个小馒头的重量必须是每勺面粉(PE)的倍数。

相信举了这个例子之后大家都已经很明白了他们的含义以及它们之间的关系了把,那么它们是怎样实现的那,大家看图就一目了然了:

微信图片_20180310094012.jpg

(2)LVM的实际操作

1:新建一个磁盘,分出4个区,每个分区容量1G,

2:先将前三个建成一个VG,在把最后一个分区增加到VG里面VG的名称设置为vbirdvg,且PE的大小为16MB,

3:将全部的VG容量丢给LV,LV的名称设置为vbirdlv,最后将lv,格式化为ext4,且挂载在/mnt/lvm中。

第一步:

blob.png

由图可知我新建了sdc,并且分了4个物理区,我先用pvscan查看一下,系统上面有没有pv,然后在把四个分区新建成pv格式。

blob.png

下面用pvdisplay这个命令显示出更详细的每个PV信息,这里只列出一个,

blob.png

第二步:

[root@centos6 ~]# vgcreate -s 16M vbirdvg /dev/sdc{1,2,3}                  将/dev/sdc123新建成为一个VG,且指定PE为16M,vgcreate [-s N[mgt]]VG名称PV名称,-s后面接pe的大小, 单位是mgt,都可以

  Volume group "vbirdvg" successfully created

[root@centos6 ~]# vgscan                                                                      查看系统上面是否有VG存在。

  Reading all physical volumes.  This may take a while...                             阅读所有物理卷。这可能需要一段时间

  Found volume group "vbirdvg" using metadata type lvm2                      使用元数据类型lvm2找到卷组“vbirdvg

[root@centos6 ~]# pvscan                                                    查询系统上具有的PV的磁盘,发现sdc4没被用掉哈

  PV /dev/sdc1   VG vbirdvg         lvm2 [1.00 GiB / 1.00 GiB free]

  PV /dev/sdc2   VG vbirdvg         lvm2 [1.00 GiB / 1.00 GiB free]

  PV /dev/sdc3   VG vbirdvg         lvm2 [1.00 GiB / 1.00 GiB free]

  PV /dev/sdc4                      lvm2 [1.01 GiB]

  Total: 4 [4.01 GiB] / in use: 3 [3.00 GiB] / in no VG: 1 [1.01 GiB]

[root@centos6 ~]# vgdisplay                                                                     显示目前系统上面的VG状态,     

  --- Volume group ---

  VG Name               vbirdvg

  System ID             

  Format                lvm2

  Metadata Areas        3

  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                3

  Act PV                3

  VG Size               3.00 GiB

  PE Size               16.00 MiB

  Total PE              192

  Alloc PE / Size       0 / 0   

  Free  PE / Size       192 / 3.00 GiB

  VG UUID               GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F

[root@centos6 ~]# vgextend vbirdvg /dev/sdc4                                                  将sdc4的容量增加到VG中

  Volume group "vbirdvg" successfully extended

[root@centos6 ~]# vgdisplay                                                                   显示系统上面的VG状态。

  --- 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               4.00 GiB

  PE Size               16.00 MiB

  Total PE              256                                              PE的数量由原来的192变为256个,

  Alloc PE / Size       0 / 0   

  Free  PE / Size       256 / 4.00 GiB

  VG UUID               GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F

   

[root@centos6 ~]# lvcreate -l 256 -n vbirdlv vbirdvg                 将整个vbirdvg分配给vbirdlv,要注意PE总共256个,                                      lvcreate [-L N[mgt] ]  [-n LV名称] VG名称,-L后面接容量,-n后面接LV的名称-l接pe个数

  Logical volume "vbirdlv" created.

[root@centos6 ~]# lvdisplay                                                                   显示系统上LV的状态

  --- Logical volume ---

  LV Path                /dev/vbirdvg/vbirdlv

  LV Name                vbirdlv

  VG Name                vbirdvg

  LV UUID                m7gbpi-1Y1t-GfJb-KMRx-xaXB-QSlx-IOLeaf

  LV Write Access        read/write

  LV Creation host, time centos6.magedu.com, 2018-03-11 02:34:03 +0800

  LV Status              available

  # open                 0

  LV Size                4.00 GiB

  Current LE             256

  Segments               4

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0

   

[root@centos6 ~]# mkfs -t ext4 /dev/vbirdvg/vbirdlv                                 格式化

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

262144 inodes, 1048576 blocks

52428 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1073741824

32 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

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

Writing inode tables: done                            

Creating journal (32768 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.

[root@centos6 ~]# mkdir /mnt/lvm                                                 创建挂载点

[root@centos6 ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm                                  挂载

[root@centos6 ~]# df                                                                    查看

Filesystem           1K-blocks    Used Available Use% Mounted on

/dev/sda3             20511356 4161156  15301624  22% /

tmpfs                  1019176      76   1019100   1% /dev/shm

/dev/sda5             20511356   45000  19417780   1% /app

/dev/sda1               194241   40350    143651  22% /boot

/dev/sdb4               505396     408    478484   1% /mnt/sdb4

/dev/mapper/vbirdvg-vbirdlv

                       3997376    8184   3779480   1% /mnt/lvm

总结:

大家能看到这里,说明还没有懵,上面的操作都是我一步步写的,虽然比较长,但是非常详细,难度不大,就是要记住这些乱七八糟的命令,就好了,没什么其他办法。

3)放大LV的容量

[root@localhost /]# df -h

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   20G  3.3G   17G  17% /

devtmpfs                 977M     0  977M   0% /dev

tmpfs                    993M     0  993M   0% /dev/shm

tmpfs                    993M  9.2M  984M   1% /run

tmpfs                    993M     0  993M   0% /sys/fs/cgroup

/dev/sda1                197M  139M   59M  71% /boot

/dev/mapper/centos-app    20G   84M   20G   1% /app

tmpfs                    199M  4.0K  199M   1% /run/user/42

tmpfs                    199M   24K  199M   1% /run/user/1000

tmpfs                    199M     0  199M   0% /run/user/0

/dev/mapper/storage-vo   772M  2.5M  730M   1% /baiyijie                        逻辑卷vo现在的容量

[root@localhost /]# umount /baiyijie                                                            扩展前一定要先卸载设备和挂载点

[root@localhost /]# df -h                                                                               查看发现已经卸载

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   20G  3.3G   17G  17% /

devtmpfs                 977M     0  977M   0% /dev

tmpfs                    993M     0  993M   0% /dev/shm

tmpfs                    993M  9.2M  984M   1% /run

tmpfs                    993M     0  993M   0% /sys/fs/cgroup

/dev/sda1                197M  139M   59M  71% /boot

/dev/mapper/centos-app    20G   84M   20G   1% /app

tmpfs                    199M  4.0K  199M   1% /run/user/42

tmpfs                    199M   24K  199M   1% /run/user/1000

tmpfs                    199M     0  199M   0% /run/user/0

[root@localhost /]# lvextend -L 2000M /dev/storage/vo                           把逻辑卷vo扩展至2000M.

  Size of logical volume storage/vo changed from 800.00 MiB (200 extents) to 1.95 GiB (500 extents).

  Logical volume storage/vo successfully resized.

[root@localhost /]# e2fsck -f /dev/storage/vo                                            检查磁盘完整性,并重置硬盘容量。

e2fsck 1.42.9 (28-Dec-2013)

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/storage/vo: 11/200000 files (0.0% non-contiguous), 31901/819200 blocks

[root@localhost /]# resize2fs /dev/storage/vo                            通过resize2fs将文件系统的容量确实增加!

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/storage/vo to 2048000 (1k) blocks.

The filesystem on /dev/storage/vo is now 2048000 blocks long.


[root@localhost /]# mount /dev/storage/vo /baiyijie                       挂载

[root@localhost /]# df -h                                                                   查看

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   20G  3.3G   17G  17% /

devtmpfs                 977M     0  977M   0% /dev

tmpfs                    993M     0  993M   0% /dev/shm

tmpfs                    993M  9.2M  984M   1% /run

tmpfs                    993M     0  993M   0% /sys/fs/cgroup

/dev/sda1                197M  139M   59M  71% /boot

/dev/mapper/centos-app    20G   84M   20G   1% /app

tmpfs                    199M  4.0K  199M   1% /run/user/42

tmpfs                    199M   24K  199M   1% /run/user/1000

tmpfs                    199M     0  199M   0% /run/user/0

/dev/mapper/storage-vo   1.9G  2.9M  1.8G   1% /baiyijie                           可以看到确实增加了哈哈

(4)缩小LV的容量

现实企业中一般很少会缩lv的容量的,如果有,说明你在的整个企业很low,还是赶紧走吧!

总结:在LVM中逻辑卷的扩容和所容都需要先取消逻辑卷与目录的挂载关联,扩容操作是先扩容后检查文件系统的完整性,而缩容操作是为了保证数据的安全,需要先检查文件系统完整性在缩容。

(5)删除逻辑卷

[root@localhost /]# umount /baiyijie                                                                      先取消逻辑卷与目录的挂载关联,这里没有写入到配置文件中就不再演示

[root@localhost /]# lvremove /dev/storage/vo                                                        删除逻辑卷设备,需要输入y来确认

Do you really want to remove active logical volume storage/vo? [y/n]: y                              确认

  Logical volume "vo" successfully removed

[root@localhost /]# vgremove storage                                                                          删除卷组,只写卷组名称就可以,不需要设备的绝对路径,下面也是

  Volume group "storage" successfully removed

[root@localhost /]# pvremove /dev/sdc /dev/sdd                                                           删除物理卷设备

  Labels on physical volume "/dev/sdc" successfully wiped.

  Labels on physical volume "/dev/sdd" successfully wiped.

总结:

在LVM中的删除顺序不是随意的,要先删除逻辑卷,卷组,然后是物理卷,切记。