Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

自然
自然
自然
297
文章
307
评论
2019年10月6日01:27:28 1 4928字阅读16分25秒

lvm是一种基于逻辑的磁盘管理机制,将多个硬盘或者硬盘分区标记为独立的物理卷,并将这些物理卷进行分组为不同的卷组,最终从卷组中取出一定的空间创建一个逻辑卷。它通过特定算法机制将不连续的磁盘空间变得连续且容量巨大,让存储容量管理可以自由扩展与缩减,极大限度的提升了硬盘空间的使用率。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

lvm逻辑卷的突出优势是方便扩展空间、扩展某一个挂载的空间,如果用分区的方式,对根的扩展是非常麻烦的,磁盘满了,我们是无法扩展的,即使还有空间,那也是不能动的。分区一旦确定,就不可以修改。逻辑卷就是为了解决这个困扰二诞生的。

Physical Volume(物理卷)的创建

逻辑卷支持将完整磁盘或者磁盘分区创建为物理卷,为了同时展示磁盘与分区两种使用情景。自然使用如下图的sdb1分区、sdc硬盘作为演示。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

硬盘分区我们需要预先处理一下,我们按照常规操作创建好硬盘分区后,还需要将硬盘分区系统id修改为8e。

Hex code (type L to list codes): L

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

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x33720a7a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM

自然使用pvcreate命令把/dev/sdb1 和/dev/sdc创建为Physical Volume(物理卷),并使用pvs和pvdisplay查看当前物理卷与物理卷详细信息

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

Volume Group(卷组)的创建

通过pvdisplay命令我们查看到了物理卷的相关信息,可以看见VG Name一栏为空,这表示当前物理卷没有加入任何卷组。

自然使用vgcreate命令创建一个名为vg0的卷组,并将/dev/sdb1 和/dev/sdc加入到vg0这个卷组当中,并查看卷组vg0的相关信息。

我们可以看到vg0的大小VG Size:30GiB=sdb1(10G)+sdc(20GB),说明两个物理卷已经成功加入到了卷组vg0。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复后期其他物理卷加入可用命令行:vgextend vg0 /dev/sda3

Magical Volume(逻辑卷)的创建

我们已经将分区sdb1和硬盘sdc创建为物理卷并成功将他们加入了卷组vg0当中,这是他们已经组成了一个相对巨大且连续的"大硬盘"。那么我们接下来就是使用他们,现在我们来常见逻辑卷,你可以简单地将之理解为"给这个大硬盘分区"。

这里自然使用lvcreate命令,在卷组vg0中创建了一个名为lv_mysql,大小为5G的逻辑卷,并使用pvdisplay命令查看这个逻辑卷的相关信息。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

Magical Volume(逻辑卷)的使用

通过lsblk命令我们可以看见,已经创建了一个别名为vg0-lv_mysql(dm-0)的逻辑卷分区,我们要如何使用它呢?既然他现在是一个分区,那么我们按照平时创建分区的思路(分区、格式化文件系统、挂载)操作即可。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

使用mkfs.ext4命令将/dev/vg0/lv_mysql格式化ext4格式的文件系统

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复自然将/dev/vg0/lv_mysql挂载到/mysql这个文件夹上面,并使用df命令进行查看。通过途中可以看见/dev/vg0/lv_mysql被以ext4的格式挂载到了/mysql下面。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

Magical Volume(逻辑卷)的扩展

我们只分配了5G的容量给lv_mysql这个逻辑卷。如果是传统分区方式,我们只能是暂停服务后把数据转移到一个容量更大的硬盘分区当中,再重启服务。

lvm逻辑卷的方式可以让我们在不暂停服务的情况下动态扩展分区的大小。通过vgdisplay命令打印的信息,我们可以看到卷重vg0已经分配了5G的容量,还有25GB的闲置容量。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复自然使用lvextend命令为lv_mysql增加了10GB空间,从图中可以看出lv_mysql的容量从5.00GiB改变为15.00GiB。我们对lvm分区lv_mysql的空间的扩展那操作已经完成。我们还需要对文件系统进行扩展,我们的文件系统为etx4格式,所以我们使用resize2fs命令对lv_mysql的文件系统进行动态扩展。

centos7默认文件系统为xfs,使用xfs_growfs命令进行文件系统扩容

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复利用df命令,我们可以看见/mysql的容量已经成功扩展到了15GB。

Magical Volume(逻辑卷)的缩减

利用lvm逻辑卷的机制,我们可以对容量进行扩展,相对的我们也可以对容量进行缩减。我们先利用mount命令将/mysql进行卸载,并查看逻辑卷lv_mysql的最新信息。

使用e2fsck命令检查文件系统完整性,再使用resize2fs命令把逻辑卷lv_mysql的文件系统压缩至10GB。

对文件系统进行压缩一定要慎重,这个操作可能会造成文件的丢失。举例:已经存在30GB的数据,你要将文件系统压缩至10GB,那么必然会造成数据的丢失

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

文件系统压缩完成后,我们使用lvreduce命令对lv_mysql分区进行压缩,执行过程中会给你一个警告,问你是否确定缩减分区大小。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复缩减完成后,使用mount命令把lv_mysql挂载会/mysql目录。然后使用df命令再次查看挂载状态。如图所示,我们已经将名为lv_mysql的lvm逻辑卷从15GB缩减至10GB的容量。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

Magical Volume(逻辑卷)的迁移

通过pvdisplay命令我们发现卷组中,sdc这块硬盘并没有被使用。本着能少干货就少干货的原则,我们只需要迁移sdb这一块硬盘就足够了,那我们首先需要把sdc这块硬盘移出卷组。

PS:如果都使用了,那你还是老实的全部迁移吧!!!

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

我们使用vgreduce把硬盘sdc移出vg0这个卷组,并使用pvdisplay再次查看物理卷的信息,可以看见sdc已经不属于vg0这个卷组了。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

使用umount命令将文件系统进行卸载。为了保障当前服务器上的lv和vg和目标服务器的lv和vg重名,我们需要将当前vg或目标服务器vg进行重命名。这里我们将当前vg重命名为newvg0。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

为了保证我们在迁移的过程中,其他用户没有在使用,保证数据安全。我们还需要使用vgchange命令把卷组设置为不可用状态,通过lvdisplay命令可以看见LV状态已经变成了NOT available。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复下面我们将逻辑卷设置为导出状态,使用vgexport命令把newvgo设置为导出状态,并用vgdisplay命令再次确认当前卷组状态。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

下面我们就可以拆卸硬盘了,前部不要拆错了。我们将sdb这块硬盘安装到目标服务器上。

到了新服务器,我们可以看见原来服务器上的sdb硬盘,在这里是sdf硬盘。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复通过vgscan扫描当前系统中lvm卷组,使用vgchange命令将卷组newvg0下的逻辑卷设置为激活状态。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

使用lvdisplay命令,可以看见我们从原服务器上迁移过来的逻辑卷newvg0的状态已经为激活状态

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

最后,就是挂载文件系统。至此,lvm逻辑卷的迁移就完成了。

LVM逻辑卷快照

lvm快照的原理是将当前文件系统的文件时间戳进行记录,当文件发生改变时,将旧版本的文件推送到快照中。快照回滚时,只是将快照与当前逻辑卷进行合并,完成合并后删除快照。

Lvm快照只是记录当前时间文件的变化,并不会进行完整的文件备份,所以它的速度非常的快;快照只保留制作快照的时间,最原始的文件版本

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

快照是存储在当前卷组之中,所以要确保当然卷组拥有足够的空间。

快照的大小,永远小于等于快照时间时逻辑卷的大小,所以不需要分配太多的空间。

使用lvcreate命令为lv_mysql创建一个大小为1G名为lv_mysql_snap的快照。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

通过lvdisplay命令可以看到快照lv_mysql_snap的相关信息,从快照状态一栏可以看到lv_mysql_snap的快照目标是lv_mysql。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复现在我们对lv_mysql下的文件文件进行一些修改,下面两张图片时内容修改前后的对比。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

LVM快照的恢复

在上面的内容中,我们已经完成了快照的制作。并且对文件进行了一定修改,那么下面我们利用快照对文件进行恢复操作。

恢复记得对挂载关系进行取消。取消挂载后使用lvconvert命令对快照进行恢复,最后检查文件已经被恢复到了快照的时间点上。

Lvm逻辑卷管理、创建、使用、扩展、缩减、迁移、快照、恢复

快照恢复后它的使命就已经结束了,它会自动将自己删除。

总结

centos默认的安装方式就是采用lvm逻辑卷的机制划分硬盘,这将有利于我们以后扩展根目录的容量。以上操作前记得备份你的数据,对于数据的操作都要万分小心。尤其是卷的缩减和文件系统的缩减需要更加细心。可能你的一个回车键,让你哭到不行。

继续阅读
weinxin
自然博客
快来关注一下,一个linux运维爱好者的个人博客!
自然
  • 文本由 发表于 2019年10月6日01:27:28
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
centos7搭建yum仓库/源 Linux

centos7搭建yum仓库/源

我们一般情况下yum源都是用一些公共的yum源服务器,比较常见公共yum服务器的有阿里云、163、搜狐、中科院等。日常生产中自然使用最多的就是阿里云的镜像服务mirrors.aliyun.com,但是...
centos7配置yum源/仓库 Linux

centos7配置yum源/仓库

yum是rpm的一个前端程序,用于解决rpm包之间的以来关系。rpm包安装无法自动安装相关的以来,可能会造成服务错误,yum应运而生,它通过内建的数据库机制存储了rmp包的相关元数据,让你在安装服务是...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • avatar 青海分享 @回复 1

      66666666666牛逼