版权说明:本文为博主原创,如果转载请注明来源。作为学习笔记,不能保证所有知识点是完全正确以及表达无误,用于生产环境配置时请斟酌。如有错误或建议请联系。侵删联系:linuxops@qq.com。感谢各位!
一、前言
服务器的磁盘空间管理在运维工作中是很重要的,一台服务器安装皓系统配置好磁盘上线,随着业务的发展磁盘空间被占满,在传统的磁盘分区中,空间被占满是无法直接对空间进行扩容的.通常情况下我们会插上一个容量更大的磁盘,停止业务后将数据拷贝到更大的磁盘上从新挂载到原来的路径中,这种方式异常麻烦,不仅耗时耗力,更关键的业务停止带来了损失,特别是关键业务.应对这种情况,LVM就产生了.
LVM(Logical Volume Manager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
LVM有其明显的特性:可以在线动态扩容分区空间,也可以动态缩减空间。但也有其局限性:在一个卷组中的磁盘损坏是,整个卷组都会受到影响。
二、LVM的一些概念
在LVM中,通过对底层的物理磁盘抽象封装以逻辑卷的形式提供给上层应用,在抽象过程中有几个很重要的概念需要记住:
物理硬盘:底层的存储设备,linux中的/dev/sda,/dev/sdb等;
物理卷(physical volume,PV):对应于非LVM中的分区,在LVM中,带有LVM的相关信息;可以是一整块物理磁盘,也可以是物理磁盘中的某一个分区。
PE:物理块,默认为4MB,逻辑卷管理的存储的最小单位。
卷组(volume group,VG):有一个或多个物理卷组成为一个PE池;
逻辑卷(logical volume,LV):由卷组中产生,可以由一个或多个PE组成一个逻辑卷
以上是LVM中的几个重要的概念,可以看出,物理卷基于物理硬盘,卷组基于物理卷,逻辑卷基于卷组。在创建逻辑卷的时候也将按照这个顺序一层一层创建。
三、创建LVM
上面介绍了LVM的组成和一些概念,接下来我们要来创建一个LVM。创建一个新的LVM大致过程如下:
创建PV物理卷,物理卷可以是一整块磁盘,也可以是磁盘中的一个分区。
创建VG卷组,卷组可以包括多个PV物理卷。
创建LV逻辑卷,逻辑卷的空间来自某一个VG
格式化LV逻辑卷。
挂载LV逻辑卷
为了方便演示,我们使用kvm虚拟机,安装centos7.4系统。
先看一下目前系统的磁盘状态
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda2 20G 1.8G 19G 9% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.5M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 783M 0 783M 0% /run/user/0
[root@localhost ~]# fdisk -l
磁盘 /dev/vda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000de613
设备 Boot Start End Blocks Id System
/dev/vda1 2048 4095 1024 82 Linux swap / Solaris
/dev/vda2 * 4096 41943039 20969472 83 Linux
[root@localhost ~]# blkid
/dev/vda2: UUID="f729b994-5140-4785-9832-291567b56010" TYPE="xfs"
/dev/vda1: UUID="474529d9-7c38-4aee-8f06-201b8daf4dd5" TYPE="swap"
[root@localhost ~]#
可以看到目前系统只有一个磁盘,并且没有使用LVM。为了演示,我们加上三个磁盘,具体规划如下:
设备名称
磁盘大小
分区情况
/dev/vdb
10G
不分区
/dev/vdc
10G
不分区
/dev/vdd
10G
分两个区vdd1和vdd2
添加磁盘,并且对vdd分区之后磁盘的情况如下:
[root@localhost ~]# fdisk -l
磁盘 /dev/vda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000de613
设备 Boot Start End Blocks Id System
/dev/vda1 2048 4095 1024 82 Linux swap / Solaris
/dev/vda2 * 4096 41943039 20969472 83 Linux
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/vdc:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/vdd:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4af22dc0
设备 Boot Start End Blocks Id System
/dev/vdd1 2048 10487807 5242880 83 Linux
/dev/vdd2 10487808 20971519 5241856 83 Linux
[root@localhost ~]#
可以看出vdd被分为了两个区,每一个区的大小为5G
准备好了磁盘之后我们进行LVM操作。如果安装操作系统的时候没有使用逻辑卷,那么系统不会自动安装LVM,所以我们要安装一下LVM,当前LVM的版本是2。
[root@localhost ~]# yum install -y lvm2 lvm2-devel lvm2-libs
下面开始正式配置KVM。
1、创建PV物理卷
使用pvcreate命令创建PV物理卷,使用pvdisplay查看物理卷信息。
小技巧:LVM的相关命令其实很好记的,比如pvcreate,拆分为pv和create,create意为创建,pv是相对应的逻辑层,这样你应该猜到创建vg使用什么命令吧?
[root@localhost ~]# pvcreate /dev/vdb /dev/vdc /dev/vdd1 /dev/vdd2
Physical volume "/dev/vdb" successfully created.
Physical volume "/dev/vdc" successfully created.
Physical volume "/dev/vdd1" successfully created.
Physical volume "/dev/vdd2" successfully created.
[root@localhost ~]#
如上,创建好了PV,是不是很简单呢?
通过pvdisplay可以查看相关的PV信息,如下信息可以看出VG Name和PE Size还有Total PE都没有信息,是因为这些信息需要在VG中指定
[root@localhost ~]# pvdisplay /dev/vdb
"/dev/vdb" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdb
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID bOXMDt-dQGc-Kzu4-E29I-EEER-VhzU-xAkiwO
当然,如果pvdisplay不加参数将会显示所有PV的信息。另外试一下pvs命令吧,会有不一样的体验的
2、创建VG卷组