Linux 逻辑卷逻辑卷的创建,扩展,缩减

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 逻辑卷逻辑卷的创建,扩展,缩减相关的知识,希望对你有一定的参考价值。

Linux 逻辑卷逻辑卷的创建,扩展,缩减  


    在生活中会遇到磁盘空间不足的情况,为了不影响Linux系统的正常使用,我们需要在线扩展和缩减逻辑卷大小。首先需要先了解一下LVM(Logical Volume Manager),它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

    LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
    LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

基本的逻辑卷管理概念:

    PE(Physical Extent)- 物理扩展块,是LVM的最小的存储块,也就是说我们的文件系统都是由写入PE来处理,有点类似于文件系统里的block。LVM默认使用4M的PE块,而LVM的VG最多仅能有65534个PE,因此默认LVNMVG会有4M*65534/(1024M/G)=256G,

    PV(Physical Volume)- 物理卷,在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
    VG(Volumne Group)- 卷用户组,建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理 系统工程中可以只有一个卷组,也可以拥有多个卷组。

    LV(Logical Volume)- 逻辑卷,建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

    关系如下:

技术分享图片


                    


    写在最前 

        本文演示环境为centos 7.5,准备两块磁盘分别是5G、10G

    一、LVM的制作过程      

        1.分区或增加新的硬盘

            如果是分区,注意分区的ID设置为8e

#手动增加两块虚拟硬盘
[[email protected](yuaning) ~]# echo '- - -' > /sys/class/scsi_host/host2/scan   
[[email protected](yuaning) ~]# lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sdk                 8:160  0   10G  0 disk  
sdl                 8:176  0    5G  0 disk  
sr0                11:0    1 1024M  0 rom  

#磁盘分区及转换为8e
[[email protected](yuaning) ~]# fdisk /dev/sdk
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3d3051d3.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G
Partition 1 of type Linux and of size 1 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e

WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.

Changed type of partition 'FAT12' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdk: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3d3051d3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdk1            2048     2099199     1048576   8e  Linux LVM

Command (m for help): w
[[email protected](yuaning) ~]# partprobe  #激活分区

        2.创建物理卷pv

            先说说有关pv的命令:

            pvcreate 将物理分区新建为pv

            pvs/pvscan 查看系统里有pv的磁盘

            pvdisplay 显示系统上面的pv状态

            pvremove 删除pv

[[email protected](yuaning) ~]# pvcreate /dev/sdk   #此处可以添加多个磁盘,和raid设备
  Physical volume "/dev/sdk" successfully created.
[[email protected](yuaning) ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sda2  centos lvm2 a--  32.00g  4.00m
  /dev/sdj1  testvg lvm2 a--   4.98g     0 
  /dev/sdj2  testvg lvm2 a--   4.98g     0 
  /dev/sdj3  testvg lvm2 a--   4.98g  4.95g
  /dev/sdk          lvm2 ---  10.00g 10.00g

        3.创建卷组vg

            有关vg的命令:

            vgcreate [-s xM] vgName /dev/sd ……  新建vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv

            vgextend 扩展vg,就是增加pv

            vgs/vgscan 查看系统里有vg的磁盘

            vgdisplay 显示系统上面的vg状态

            vgremove 删除vg

            vgreduce 在vg里删除pv

[[email protected](yuaning) ~]# vgcreate -s 16M vgcyn /dev/sdk
  Volume group "vgcyn" successfully created
[[email protected](yuaning) ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   3   0 wz--n- 32.00g 4.00m
  testvg   3   1   0 wz--n- 14.95g 4.95g
  vgcyn    1   0   0 wz--n-  9.98g 9.98g

        4.创建逻辑卷lv

            有关lv的命令:

            lvcreate -l pe num /-L size -n lvname vgName  新建lv,-l指定pe的个数!!!这里不是数量,-L指定容量,M,G

            lvextend 增加容量

            lvs/lvscan 查看系统里有lv的磁盘

            lvdisplay 显示系统上面的lv状态

            lvremove 删除lv

            lvreduce 在lv里减少容量

[[email protected](yuaning) ~]# lvcreate -l 630 -n lvcyn vgcyn #lv的大小是630*16M=10080M
  Logical volume "lvcyn" created.
[[email protected](yuaning) ~]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  app    centos -wi-ao---- 20.00g                                                    
  root   centos -wi-ao---- 10.00g                                                    
  swap   centos -wi-ao----  2.00g                                                    
  testlv testvg -wi-a----- 10.00g                                                    
  lvcyn  vgcyn  -wi-a-----  9.84g
[[email protected](yuaning) ~]# mkfs.ext4 /dev/vgcyn/lvcyn      #格式化
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
917504 inodes, 3670016 blocks
183500 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
112 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, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

    二、LVM的在线扩展  

        分为两种情况:

            第一种情况,需要扩展的pe数量,vg可以提供

[[email protected](yuaning) ~]# lvextend -L +100M /dev/vgcyn/lvcyn   #将之前准备的vg里的剩余pe加进去
  Rounding size to boundary between physical extents: 112.00 MiB.
  Size of logical volume vgcyn/lvcyn changed from 9.84 GiB (630 extents) to 9.95 GiB (637 extents).
  Logical volume vgcyn/lvcyn successfully resized.
[[email protected](yuaning) ~]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  app    centos -wi-ao---- 20.00g                                                    
  root   centos -wi-ao---- 10.00g                                                    
  swap   centos -wi-ao----  2.00g                                                    
  testlv testvg -wi-a----- 10.00g                                                    
  lvcyn  vgcyn  -wi-a-----  9.95g  
  
[[email protected](yuaning) ~]# resize2fs /dev/vgcyn/lvcyn  #更新文件系统的大小,即激活
[[email protected](yuaning) ~]# resize2fs -f /dev/vgcyn/lvcyn 500M #强制设置大小
[[email protected](yuaning) ~]# dump2fs /dev/vgcyn/lvcyn  #查看ext系列文件系统

            第二种情况,vg空间不够,需先扩展vg,扩展vg就是往vg中加pv

[[email protected](yuaning) ~]# vgextend vgcyn /dev/sdl  #事先准备两块磁盘,现在将另一块加进去
  Physical volume "/dev/sdl" successfully created.
  Volume group "vgcyn" successfully extended
[[email protected](yuaning) ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   3   0 wz--n-  32.00g  4.00m
  testvg   3   1   0 wz--n-  14.95g  4.95g
  vgcyn    2   1   0 wz--n- <14.97g <5.02g
[[email protected](yuaning) ~]# lvextend -L 14G /dev/vgcyn/lvcyn
  Size of logical volume vgcyn/lvcyn changed from 9.95 GiB (637 extents) to 14.00 GiB (896 extents).
  Logical volume vgcyn/lvcyn successfully resized.
[[email protected](yuaning) ~]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  app    centos -wi-ao---- 20.00g                                                    
  root   centos -wi-ao---- 10.00g                                                    
  swap   centos -wi-ao----  2.00g                                                    
  testlv testvg -wi-a----- 10.00g                                                    
  lvcyn  vgcyn  -wi-a----- 14.00g

    三、减小逻辑卷

        缩减逻辑卷的时候,要事先卸载挂载的文件系统,然后减少逻辑卷的容量,然后重新挂载

#事先自行 umount 
[[email protected](yuaning) ~]# e2fsck -f /dev/vgcyn/lvcyn  #强行检查文件系统
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/vgcyn/lvcyn: 11/917504 files (0.0% non-contiguous), 100612/3670016 blocks
[[email protected](yuaning) ~]# resize2fs /dev/vgcyn/lvcyn 10G  #缩减逻辑空间到10G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vgcyn/lvcyn to 2621440 (4k) blocks.
The filesystem on /dev/vgcyn/lvcyn is now 2621440 blocks long.

[[email protected](yuaning) ~]# lvreduce -L 10G /dev/vgcyn/lvcyn  #缩减逻辑空间到10G
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgcyn/lvcyn? [y/n]: y
  Size of logical volume vgcyn/lvcyn changed from 14.00 GiB (896 extents) to 10.00 GiB (640 extents).
  Logical volume vgcyn/lvcyn successfully resized.
[[email protected](yuaning) ~]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  app    centos -wi-ao---- 20.00g                                                    
  root   centos -wi-ao---- 10.00g                                                    
  swap   centos -wi-ao----  2.00g                                                    
  testlv testvg -wi-a----- 10.00g                                                    
  lvcyn  vgcyn  -wi-a----- 10.00g   #成功缩减
[[email protected](yuaning) ~]# ls #最后检查一下,文件又没丢失。

    至此,Linux的逻辑卷的创建,扩展,缩减都已完成。   


以上是关于Linux 逻辑卷逻辑卷的创建,扩展,缩减的主要内容,如果未能解决你的问题,请参考以下文章

linux命令:resize2fslvm逻辑卷lv扩展及缩减

lvm逻辑卷的基本应用,扩展及缩减快照功能实现方法

#yyds干货盘点# linux逻辑卷的创建扩容和理论

Linux之逻辑卷的管理与创建(记不住就多敲几次)

Linux入门之磁盘管理LVM逻辑卷的使用

GNU/Linux下LVM配置管理以及快照卷物理卷卷组逻辑卷的创建和删除