配置过几次LVM,但是由于间隔比较长,每次配置前都需要先上网查资料。好吧,我写在自己的博客中,以后就看这里的配置过程了。LVM是一种逻辑卷,主要解决物理卷(就是磁盘)空间划分的问题。由于我们在安装操作系统时不可能准确预见各个目录需要多少空间,因此系统长时间(比如运行了几年)运行后可能出现某个目录空间不足的情况。举个最简单的例子,假设机器上硬盘容量是200G,全部划分给根目录(这是最省心的一种办法),那么当这200G空间全部存储了数据后就没有办法继续存储数据了,只能换一块大硬盘重装系统了,然后将原有数据导入到新系统中。LVM解决了这个问题,如果操作系统安装在LVM上,我们可以通过添加新硬盘的方式扩充LVM容量,从而可以继续存储数据。LVM涉及到下面几个概念:
PV:Physical Volume,这是物理卷
LV:Logical Volume,这是逻辑卷
VG:Volume Group,这是卷组
这三个概念是什么意思呢?一般情况下我们拿到一个硬盘后会对硬盘进行分区,每个分区就是一个PV。LV和VG是逻辑上的概念,VG跟硬盘对应,LV跟PV对应。也就是说卷组相当于一个逻辑硬盘,我们可以在这个逻辑硬盘上创建分区,每个分区就是一个逻辑卷。我们可以对每个逻辑卷进行格式化,存储数据。而卷组由多个物理卷组成。现在就清楚了,使用LVM包括下面几个步骤:
1.创建物理卷
2.多个物理卷构成一个卷组
3.在卷组上创建分区,每个分区就是一个逻辑卷
4.对逻辑卷进行格式化,比如格式化成ext4文件系统
5.挂载逻辑卷,存储数据
我有一个U盘,在系统中识别为/dev/sdb,U盘划分了多个分区,用sdb1、sdb2、sdb3、sdb5四个分区来创建LVM。创建LVM的分区不要求必须位于同一个硬盘中,你也可以使用sda1、sdb1、sdc2、sdc3等位于不同硬盘中的分区创建LVM。下面讲述各个步骤的操作过程。其实明白了上述几个概念后配置过程就很简单了。
1.创建物理卷
与物理卷相关的几条命令是:pvcreate、pvscan、pvdisplay、pvremove。
pvcreate:创建一个物理卷
pvremove:删除一个物理卷
pvscan:扫描系统中所有的物理卷
pvdisplay:显示一个物理卷的详细信息
比如,我们在sdb1、sdb2、sdb3、sdb5上创建四个物理卷,命令如下:
现在可以通过pvscan查看系统中所有的物理卷,如下:
我们还可以通过pvdisplay查看一个物理卷的详细信息,如下:
2.创建卷组
与卷组相关的几条命令是:vgcreate、vgscan、vgdisplay、vgremove。
vgcreate:创建一个卷组
vgremove:删除一个卷组
vgscan:扫描系统中所有卷组
vgdisplay:显示一个卷组的详细信息
创建卷组时我们需要指定数据块大小,数据块大小是卷组(以及逻辑卷)容量变化的基本单位。LVM的主要优势是可以扩容(当然也可以缩小容量),容量变化必须是数据块大小的整数倍。数据块大小默认值是4MB,因此容量变化必须是4MB的整数倍。我们可以使用参数 -s 改变卷组中数据块大小,因此pvcreate格式如下:
pvcreate -s 数据块大小 卷组名称 构成卷组的逻辑卷
3.创建逻辑卷
与逻辑卷相关的几条命令是:lvcreate、lvscan、lvdisplay、lvremove。
lvcreate:创建一个逻辑卷
lvscan:扫描系统中所有逻辑卷
lvdisplay:显示一个逻辑卷的详细信息
lvremove:删除一个逻辑卷
卷组相当于一个逻辑硬盘,lvcreate的作用是在卷组上创建逻辑分区,lvcreate用法如下:
lvcreate -l 数据块数量 -n 逻辑卷名称 卷组名称
在这个例子中,我们创建了一个逻辑卷,名称是volume1,容量是2GB,这个逻辑卷的路径是/dev/group/volume1。
4.格式化逻辑卷
现在我们就可以像使用一个硬盘分区一样使用这个逻辑卷了,可以将逻辑卷格式化成ext4文件系统。
然后将其挂载在系统中正常使用了。
5.逻辑卷扩容
LVM最大的优势是可以扩容。上面的例子中volume1的容量是2GB,现在想把volume1容量扩充到2.5GB该怎么操作呢?LVM提供了lvresize命令来修改逻辑卷的容量,这条命令如下:
lvresize -l 容量变化 逻辑卷
参数中的容量变化是以数据块大小为单位,因此我们想增加0.5GB,那么这里的值应该是+128。负值表示减小逻辑卷容量。
现在逻辑卷的容量就扩展到了2.5GB。还有一点需要注意:在这个例子中卷组容量是4GB,逻辑卷的初始容量是2GB,此时卷组中还有2GB剩余空间,因此lvresize命令才能成功。如果卷组中剩余容量小于逻辑卷想扩展的容量lvresize就会失败。比如,现在卷组中剩余容量是1.5GB,如果逻辑卷想再扩大2GB就不可能成功了。这种情况下,我们首先需要扩展卷组的容量,LVM提供了vgextend扩大卷组的容量,这条命令格式如下:
vgextend 卷组名称 新的物理卷
比如,我们创建一个新的物理卷sdb6,将sdb6添加到group中,然后将volume1容量再扩大2GB,操作如下:
虽然通过两次扩容我们已经将逻辑卷容量扩展到了4.5G,但是通过df命令我们发现文件系统的容量仍然是2.0GB,显示如下:
因此我们还需要对ext4文件系统扩容,这是通过命令resize2fs实现的,这条命令与LVM无关,这是ext4文件系统的命令。执行resize2fs后容量就扩展到4.5GB了。