Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理


(一)相关观点

逻辑卷是使用逻辑卷组治理(Logic Volume Manager)建立出来的装备,若是要领会逻辑卷,那么首先需要领会逻辑卷治理中的一些观点。

  • 物理卷(Physical Volume,PV):也就是物理磁盘分区,若是想要使用LVM来治理这个分区,可以使用fdisk将其ID改为LVM可以识别的值,即8e。
  • 卷组(Volume Group,VG):PV的群集
  • 逻辑卷(Logic Volume,LV):VG中画出来的一块逻辑磁盘

领会观点之后,逻辑卷是若何发生的就很清晰了:物理磁盘或者磁盘分区转换为物理卷,一个或多个物理卷群集形成一个或多个卷组,而逻辑卷就是从某个卷组内里抽象出来的一块磁盘空间。详细架构如下:

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理


(二)为什么要使用逻辑卷

对于物理磁盘,我们直接分区、花样化为文件系统之后就可以使用,那为什么还需要使用逻辑卷的方式来治理磁盘呢?我以为主要有2个缘故原由:

  • 营业上使用大容量的磁盘。举个例子,我们需要在/data下挂载30TB的存储,对于单个磁盘,是无法知足要求的,由于市面上没有那么大的单块磁盘。然则若是我们使用逻辑卷,将多个小容量的磁盘聚合为一个大的逻辑磁盘,就能知足需求。
  • 扩展和缩短磁盘。在营业初期计划磁盘时,我们并不能完全知道需要分配若干磁盘空间是合理的,若是使用物理卷,后期无法扩展和缩短,若是使用逻辑卷,可以凭据后期的需求量,手动扩展或缩短。

(三)建立物理卷(PV)

通过上面的逻辑卷架构图,可以知道,若是要建立逻辑卷,需要先有物理磁盘或者磁盘分区,然后使用物理磁盘或磁盘分区建立物理卷,再使用物理卷建立卷组,最后使用卷组建立逻辑卷。接下来一步一步建立逻辑卷。

建立物理卷是建立逻辑卷的第一步,建立物理卷相关下令有:

# pvcreate用于建立物理卷
pvcreate /dev/sdb

# pvdisplay、pvsca、pvs用于查看物理卷
pvdisplay
pvs
pvscan

可以使用磁盘直接建立物理卷,也可以使用磁盘分区建立物理卷。两种方式稍微有些差距,下面举行说明。

(3.1)使用磁盘直接建立物理卷

直接使用物理磁盘建立物理卷没有什么需要特别注意的,直接建立即可。

# 使用fdisk -l确认磁盘,可以看到/dev/sdb未做分区处置
[root@masterdb ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 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

# 使用pvcreate将sdb磁盘建立为物理卷
[root@masterdb ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.

# 使用pvdisplay确认物理卷信息
[root@masterdb ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               centos
  PV Size               <68.73 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              17593
  Free PE               0
  Allocated PE          17593
  PV UUID               FRxq7G-1XWu-dPeW-wEwO-322y-M9XR-0ExebA
   
  "/dev/sdb" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               nsL75f-o3fD-apyz-SSY0-miUi-4RYf-zVLIT6
   
# 也可以使用pvs确认物理卷信息,不外能够看到的信息比pvdisplay少
[root@masterdb ~]# pvs 
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda3  centos lvm2 a--  68.72g    0 
  /dev/sdb          lvm2 ---   2.00g 2.00g
[root@masterdb ~]#

(3.2)使用磁盘分区建立物理卷

磁盘分区之后,磁盘id为83,若是要使用逻辑卷治理,需要将id改为8e,才气建立物理卷。

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理

分区1修改id历程如下:

[root@masterdb ~]# fdisk /dev/sdc 
 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.


 Command (m for help): t  #t可以修改分区代码
 Partition number (1,2, default 2): 1            #选择1分区举行修改
 Hex code (type L to list all codes): L         #若是不知道类型,可以用”L”列出可以选择的修改代码

  0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
  1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
  2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
  3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
  4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
  5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
  6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
  7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
  8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
  9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
  a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
  b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
  c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
  e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
  f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
 10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
 11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
 12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
 14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
 16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
 17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
 18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
 1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
 1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
 1e  Hidden W95 FAT1 80  Old Minix      
 Hex code (type L to list all codes): 8e         #选择8e
 Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w             # 保留
 The partition table has been altered!

Calling ioctl() to re-read partition table.
 Syncing disks.
 [root@masterdb ~]#

根据上面的历程,修改分区2,最终效果如下:

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理

接着举行建立物理卷(PV)即可

[root@masterdb ~]# pvcreate /dev/sdc1 
  Physical volume "/dev/sdc1" successfully created.
[root@masterdb ~]# pvcreate /dev/sdc2 
  Physical volume "/dev/sdc2" successfully created.

(四)建立、扩容卷组

(4.1)建立卷组

有了PV就可以建立卷组了,建立卷组相关下令有:

# 使用vgcreate建立卷组
vgcreate VG_NAME device1 ... devicen

# 使用vgdosplay、vgscan、vgs下令查看卷组
vgdisplay
vgscan
vgs

接下来演示使用sdb和sdc1建立一个卷组VG_TEST。

# 使用vgcreate建立卷组VG_TEST,包罗物理卷:/dev/sdb和/dev/sdc1
[root@masterdb ~]# vgcreate VG_TEST /dev/sdb /dev/sdc1
  Volume group "VG_TEST" successfully created

# 查看方式一:使用vgdisplay查看卷组信息
[root@masterdb ~]# vgdisplay
  --- Volume group ---
  VG Name               VG_TEST
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               2.99 GiB
  PE Size               4.00 MiB
  Total PE              766
  Alloc PE / Size       0 / 0   
  Free  PE / Size       766 / 2.99 GiB
  VG UUID               DmY2Nz-ietc-2Y8Y-7A1b-1cpT-qEeV-XrgURn
...  
   
# 查看方式二:使用vgscan查看卷组信息
[root@masterdb ~]# vgscan
  Reading volume groups from cache.
  Found volume group "VG_TEST" using metadata type lvm2
  Found volume group "centos" using metadata type lvm2

# 查看方式三:使用vgs查看卷组信息
[root@masterdb ~]# vgs 
  VG      #PV #LV #SN Attr   VSize  VFree
  VG_TEST   2   0   0 wz--n-  2.99g 2.99g
  centos    1   4   0 wz--n- 68.72g    0

在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

(4.2)扩容卷组

若是在使用历程中,发现要使用的空间大于卷组的空间,可以对卷组举行扩容,把新的物理卷(PV)加入到卷组中,语法为

vgextend VG_NAME device1 ... devicen

接下来演示将sdc2加入到卷组VG_TEST中。

# 使用vgextend扩容卷组VG_TEST
[root@masterdb ~]# vgextend VG_TEST /dev/sdc2  
  Volume group "VG_TEST" successfully extended

最终效果如下,发现PV数目和VG容量都发生了转变

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理

(五)建立、扩容逻辑卷

(5.1)建立逻辑卷

有了卷组,就可以建立逻辑卷(LV)了,建立逻辑卷相关下令有:

# 使用lvcreate建立逻辑卷
lvcreate –L SIZE –n LV_NAME VG_NAME

使用lvdisplay、lvscan、lvs查看逻辑卷
lvdisplay
lvscan
lvs

接下来演示使用VG_TEST建立逻辑卷lv_test

# 使用lvcreate建立逻辑卷lv_test
[root@masterdb ~]# lvcreate -L 1g -n lv_test VG_TEST
  Logical volume "lv_test" created.

# 查看方式一:使用lvdisplay查看逻辑卷
[root@masterdb ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/VG_TEST/lv_test
  LV Name                lv_test
  VG Name                VG_TEST
  LV UUID                RqWMOG-wCJJ-deu4-dIgv-c5hI-Bsqa-FHgh4E
  LV Write Access        read/write
  LV Creation host, time masterdb, 2020-05-13 22:42:45 +0800
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:4
...
   
# 查看方式二:使用lvscan查看逻辑卷  
[root@masterdb ~]# lvscan 
  ACTIVE            '/dev/VG_TEST/lv_test' [1.00 GiB] inherit
  ACTIVE            '/dev/centos/mysql' [<45.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [<3.73 GiB] inherit
  ACTIVE            '/dev/centos/home' [10.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [10.00 GiB] inherit
  
# 查看方式三:使用lvs查看逻辑卷  
[root@masterdb ~]# lvs 
  LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_test VG_TEST -wi-a-----   1.00g                                                    
  home    centos  -wi-ao----  10.00g                                                    
  mysql   centos  -wi-ao---- <45.00g                                                    
  root    centos  -wi-ao----  10.00g                                                    
  swap    centos  -wi-ao----  <3.73g

建立完lv之后,花样化挂载即可使用

# 建立文件系统
[root@masterdb ~]# mkfs.ext3 /dev/VG_TEST/lv_test 
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
 65536 inodes, 262144 blocks
 13107 blocks (5.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=268435456
 8 block groups
 32768 blocks per group, 32768 fragments per group
 8192 inodes per group
 Superblock backups stored on blocks: 
     32768, 98304, 163840, 229376

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

# 建立挂载点
[root@masterdb ~]# mkdir /test 

# 挂载文件系统
[root@masterdb ~]# mount /dev/VG_TEST/lv_test /test 

# 确认效果
[root@masterdb ~]# dfh 
 Filesystem                   Size  Used Avail Use% Mounted on
 /dev/mapper/centos-root       10G  4.1G  5.9G  42% /
 ...
 /dev/mapper/VG_TEST-lv_test  976M  1.3M  924M   1% /test


(5.2)扩容逻辑卷

使用如下下令举行扩容

# 使用lvextend扩容lv,+SIZE代表增添的空间
lvextend -L +SIZE lv_device

# 调整文件系统的巨细
resize2fs device lv_device

接下来演示使用对逻辑卷lv_test扩容500M。

扩容前文件磁盘巨细如下:

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理

举行扩容操作:

# 对lv举行扩容,增添500M空间
[root@masterdb ~]# lvextend -L +500M /dev/VG_TEST/lv_test 
  Size of logical volume VG_TEST/lv_test changed from 1.00 GiB (256 extents) to <1.49 GiB (381 extents).
  Logical volume VG_TEST/lv_test successfully resized.

之后查看磁盘巨细,未发生改变:

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理

调整文件系统的巨细:

# 使用resize2fs调整文件系统的巨细
[root@masterdb ~]# resize2fs /dev/VG_TEST/lv_test 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/VG_TEST/lv_test is mounted on /test; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/VG_TEST/lv_test is now 390144 blocks long.

确认磁盘巨细已经发生了改变

Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)治理


【完】

原创文章,作者:admin,如若转载,请注明出处:https://www.2lxm.com/archives/9256.html