本文环境:CentOS7

1.什么是逻辑卷(Logical Volume)?

  逻辑卷是系统的一种磁盘管理方式,目的是把硬盘空间从物理硬盘的管理方式中跳出来,进行更方便的统一管理分配。

  逻辑卷是由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。每个卷可以看作一个逻辑盘,可以是一个物理硬盘的逻辑盘。

图片是网上引用的,

2.逻辑卷的特点和作用

  逻辑卷由下层卷组(Physical Volume),物理卷(Volume Group)格式化组成

  物理卷是将底层的硬盘划分为了一个一个的PE(Physical Extend),我们的LVM磁盘管理中PE的默认大小是4M大小,PE就是我们逻辑卷管理的最基本单位

  允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小

  允许在多个物理设备间重新组织文件系统 

  将设备指定为物理卷 

   物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的 

  可以在逻辑卷上创建文件系统 

3 .创建逻辑卷

  3.1 创建逻辑卷,刚刚讲了,逻辑卷是由下层的卷组和物理卷格式化组成,所以先创建物理卷和卷组

    3.1.1 创建物理卷(PV)使用pvcreate

      我的磁盘情况如下

 1 sda      8:0    0  200G  0 disk
 2 ├─sda1   8:1    0    1G  0 part /boot
 3 ├─sda2   8:2    0  100G  0 part /
 4 ├─sda3   8:3    0   50G  0 part /data
 5 ├─sda4   8:4    0    1K  0 part
 6 └─sda5   8:5    0    2M  0 part [SWAP]
 7 sdb      8:16   0   20G  0 disk
 8 sdc      8:32   0   20G  0 disk
 9 sdd      8:48   0  200G  0 disk
10 sde      8:64   0   10G  0 disk
11 sr0     11:0    1 10.3G  0 rom  

  物理卷可以使用磁盘和分区来创建,如果时间分区来创建,对磁盘分区之后在创建物理卷(PV)。

  下面我使用sdb和sde两块磁盘来创建物理卷

  pvcreate /dev/sd{b,e}                            #这样写就是两块一起创建了

1 [root@CentOS-7-64 ~]# pvcreate /dev/sd{b,e}
2   Physical volume "/dev/sdb" successfully created.
3   Physical volume "/dev/sde" successfully created.
4 [root@CentOS-7-64 ~]# 

  然后使用  pvs和lvdisplay  来查看创建好的(物理卷)PV

2 [root@CentOS-7-64 ~]# pvs              #查看简单的信息
3   PV         VG Fmt  Attr PSize  PFree
4   /dev/sdb      lvm2 ---  20.00g 20.00g
5   /dev/sde      lvm2 ---  10.00g 10.00g
6 [root@CentOS-7-64 ~]# 
 1 [root@CentOS-7-64 ~]# pvdisplay       #查看详细的PV各个信息
 2   "/dev/sdb" is a new physical volume of "20.00 GiB"
 3   --- NEW Physical volume ---
 4   PV Name               /dev/sdb
 5   VG Name
 6   PV Size               20.00 GiB
 7   Allocatable           NO
 8   PE Size               0
 9   Total PE              0
10   Free PE               0
11   Allocated PE          0
12   PV UUID               YW3kNy-jMFI-fTW0-2DmX-7KrK-NBP4-kYA0U8
13
14   "/dev/sde" is a new physical volume of "10.00 GiB"
15   --- NEW Physical volume ---
16   PV Name               /dev/sde
17   VG Name
18   PV Size               10.00 GiB
19   Allocatable           NO
20   PE Size               0
21   Total PE              0
22   Free PE               0
23   Allocated PE          0
24   PV UUID               1uiW6y-JQDQ-uA3q-Mryc-kG7R-NX1c-4P96AT
25
26 [root@CentOS-7-64 ~]# 

  3.2 如上物理卷创建成功了,下面把物理卷组成卷组(vg)使用命令 vgcreate

  vgcreate 部分帮助信息如下

 1   vgcreate - Create a volume group
 2
 3   vgcreate VG_new PV ...
 4     [ -A|--autobackup y|n ]
 5     [ -c|--clustered y|n ]
 6     [ -l|--maxlogicalvolumes Number ]
 7     [ -p|--maxphysicalvolumes Number ]
 8     [ -M|--metadatatype lvm2|lvm1 ]
 9     [ -s|--physicalextentsize Size[m|UNIT] ]
10     [ -f|--force ]
11     [ -Z|--zero y|n ]

  创建vg

 

1 [root@CentOS-7-64 ~]# vgcreate -s 16M vg /dev/sdb     #-s 指定每个PE(Physical Extend)的大小 默认为4M
2   Volume group "vg" successfully created

  查看vg

  vgs  和 vgdisplay  命令

1 [root@CentOS-7-64 ~]# vgs  #vgs 查看的显示
2   VG #PV #LV #SN Attr   VSize  VFree
3   vg   1   0   0 wz--n- 19.98g 19.98g
 1 [root@CentOS-7-64 ~]# vgdisplay        #vgdisplay  查看的显示
 2   --- Volume group ---
 3   VG Name               vg
 4   System ID
 5   Format                lvm2
 6   Metadata Areas        1
 7   Metadata Sequence No  1
 8   VG Access             read/write
 9   VG Status             resizable
10   MAX LV                0
11   Cur LV                0
12   Open LV               0
13   Max PV                0
14   Cur PV                1
15   Act PV                1
16   VG Size               19.98 GiB
17   PE Size               16.00 MiB
18   Total PE              1279
19   Alloc PE / Size       0 / 0
20   Free  PE / Size       1279 / 19.98 GiB
21   VG UUID               OB7OIp-HK6l-VsN9-YmB0-vk10-vE0M-aL6CWR
22    

  3.3 扩展卷组的大小 vgextend

   下面我把另一个磁盘sde也加入卷组vg中

1 [root@CentOS-7-64 ~]# vgextend vg /dev/sde
2   Volume group "vg" successfully extended

  再次查看卷组vg的信息

 1 [root@CentOS-7-64 ~]# vgdisplay
 2   --- Volume group ---
 3   VG Name               vg
 4   System ID
 5   Format                lvm2
 6   Metadata Areas        2
 7   Metadata Sequence No  2
 8   VG Access             read/write
 9   VG Status             resizable
10   MAX LV                0
11   Cur LV                0
12   Open LV               0
13   Max PV                0
14   Cur PV                2
15   Act PV                2
16   VG Size               <29.97 GiB
17   PE Size               16.00 MiB
18   Total PE              1918
19   Alloc PE / Size       0 / 0
20   Free  PE / Size       1918 / <29.97 GiB
21   VG UUID               OB7OIp-HK6l-VsN9-YmB0-vk10-vE0M-aL6CWR
 VG Size 已经改变了  说明已经扩展完成了

3.5 前面准备工作创建了物理卷(PV),卷组(VG),下面创建逻辑卷(LV)
  使用lvcreate 命令
 1   1   lvcreate - Create a logical volume
 2   2
 3   3   Create a linear LV.
 4   4   lvcreate -L|--size Size[m|UNIT] VG
 5   5         [ -l|--extents Number[PERCENT] ]
 6   6         [    --type linear ]
 7   7         [ COMMON_OPTIONS ]
 8   8         [ PV ... ]
 9 -------------------------常用选项---------------
10   Common options for command:
11 147         [ -a|--activate y|n|ay ]
12 148         [ -A|--autobackup y|n ]
13 149         [ -C|--contiguous y|n ]
14 150         [ -M|--persistent y|n ]
15 151         [ -j|--major Number ]
16 152         [ -k|--setactivationskip y|n ]
17 153         [ -K|--ignoreactivationskip ]
18 154         [ -n|--name String ]
19 155         [ -p|--permission rw|r ]
20 156         [ -r|--readahead auto|none|Number ]
21 157         [ -W|--wipesignatures y|n ]
22 158         [ -Z|--zero y|n ]

  lvcreate -n lv -L 5G vg

1 [root@CentOS-7-64 ~]# lvcreate -n lv -L 5G vg
2 WARNING: xfs signature detected on /dev/vg/lv at offset 0. Wipe it? [y/n]: y
3   Wiping xfs signature on /dev/vg/lv.
4   Logical volume "lv" created.
5 [root@CentOS-7-64 ~]# 

使用 lvs 和lvdisplay查看

 1 [root@CentOS-7-64 ~]# lvdisplay      #  lvdisplay 显示如下
 2   --- Logical volume ---
 3   LV Path                /dev/vg/lv
 4   LV Name                lv
 5   VG Name                vg
 6   LV UUID                BFWlJL-qcFU-OWJk-A3Yb-xTLf-c3cg-utCrnl
 7   LV Write Access        read/write
 8   LV Creation host, time CentOS-7-64, 2019-10-20 10:42:04 +0800
 9   LV Status              available
10   # open                 0
11   LV Size                5.00 GiB
12   Current LE             320
13   Segments               1
14   Allocation             inherit
15   Read ahead sectors     auto
16   - currently set to     8192
17   Block device           253:0

  3.6 既然逻辑卷做完了,下面需要个逻辑卷创建文件系统

  我使用的是xte4 因为ext4创建的逻辑卷可以使用  resize2fs  缩减,而xfs文件系统不可缩减

 1 [root@CentOS-7-64 ~]# mkfs -t ext4 /dev/vg/lv
 2 mke2fs 1.42.9 (28-Dec-2013)
 3 Filesystem label=
 4 OS type: Linux
 5 Block size=4096 (log=2)
 6 Fragment size=4096 (log=2)
 7 Stride=0 blocks, Stripe width=0 blocks
 8 327680 inodes, 1310720 blocks
 9 65536 blocks (5.00%) reserved for the super user
10 First data block=0
11 Maximum filesystem blocks=1342177280
12 40 block groups
13 32768 blocks per group, 32768 fragments per group
14 8192 inodes per group
15 Superblock backups stored on blocks:
16     32768, 98304, 163840, 229376, 294912, 819200, 884736
17
18 Allocating group tables: done
19 Writing inode tables: done
20 Creating journal (32768 blocks): done
21 Writing superblocks and filesystem accounting information: done 
1 [root@CentOS-7-64 ~]# blkid -s TYPE      #查看文件系统
2 /dev/sda1: TYPE="xfs"
3 /dev/sda2: TYPE="xfs"
4 /dev/sda3: TYPE="xfs"
5 /dev/sda5: TYPE="swap"
6 /dev/sde: TYPE="LVM2_member"
7 /dev/sdb: TYPE="LVM2_member"
8 /dev/mapper/vg-lv: TYPE="ext4"        #文件系统创建成功了
9 [root@CentOS-7-64 ~]# 

  3.7 问价系统创建成功了挂载就能使用了  

1 [root@CentOS-7-64 ~]# mount /dev/mapper/vg-lv /mnt  # 挂载到/mnt

  3.8 扩展逻辑卷

  我的逻辑卷只分配5G,空间不大,和分区不一样的是逻辑卷可以扩展 使用 lvextent  或者 lvresize

  扩展逻辑卷不需要取消挂载,可以在挂载状态扩展,而减少逻辑卷必须先取消挂载,不然直接取消挂载再去缩小会有莫名其实的错误。我已经趟过坑了

1  lvresize -L +5G /dev/vg/lv
2   Size of logical volume vg/lv changed from 5.00 GiB (64 extents) to 10.00 GiB (384 extents).
3   Logical volume vg/lv successfully resized.
 1 [root@CentOS-7-64 ~]# lvdisplay
 2   --- Logical volume ---
 3   LV Path                /dev/vg/lv
 4   LV Name                lv
 5   VG Name                vg
 6   LV UUID                BFWlJL-qcFU-OWJk-A3Yb-xTLf-c3cg-utCrnl
 7   LV Write Access        read/write
 8   LV Creation host, time CentOS-7-64, 2019-10-20 10:42:04 +0800
 9   LV Status              available
10   # open                 0
11   LV Size                10.00 GiB
12   Current LE             3840
13   Segments               2
14   Allocation             inherit
15   Read ahead sectors     auto
16   - currently set to     8192
17   Block device           253:0

这样逻辑卷的扩展就完成了 ,但是还有一个问题,那刚刚扩展的5G没有文件系统,所以还需要一个命令 resize2fs /dev/vg/lv (此命令只针对ext文件系统),如果扩展的是xfs文件系统需使用 xfs_growfs  /dev/vg/lv

在刚刚扩展时 lvextend -r 选项可以自动同步文件系统。部分文件系统类型。

注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

4.总结
  逻辑卷相比分区可扩展,缩减,读取性能貌似还还好,而且linux系统中逻辑卷可以使用raid
  逻辑卷可以做快照,可以移除,迁移(需要先禁用逻辑卷lvchange,然后导出lvexport)
  假若硬盘或分区出现故障,逻辑卷还可以移动到相同的卷组中(使用pvmove移动空间,但是卷组中的空间必须不小于被移动的空间),

  逻辑卷很方便灵活,可以自由扩展,但是/boot不可以使用逻辑卷。因为这里面是系统中的启动项,逻辑卷是虚拟的,所以把逻辑卷
  放入/boot中系统都起不来。


  

01-15 16:40