LVM(逻辑卷管理器)

胡扯中orz:

之前弄完centos7的时候发现系统开机十分慢,当然我至今没有找到具体原因。不过在当时考虑了很多,特别是以为操作系统安装的所占容量太小导致的,于是想要扩大它的容量自然而然就接触到了LVM,不得不说LVM真的是个好东西啊!

LVM(Logical Volume Manager)简述

LVM这个主要是用来给已经规划好大小的空间改变容量的,也就是可以弹性的调整逻辑卷的容量。可以类比windows上的扩大或者压缩某个盘的容量(虽然这么是不准确,但是这样进行类比可能会让比较抽象的概念变得清晰一点吧)

与LVM相联系的概念:PV,PE,VG,LV

物理卷(PV)

实际的分区,需要调整系统标识符(System ID)为8e,说白了,PV就是系统底层的分区,不过要将这个分区的系统标识符调整为8e才能创建成为一个PV

物理块(PE)

可以理解为数据存储的基本单元吧

物理卷组(VG)

建立在物理卷之上,由一个或者多个物理卷组成,在建立物理卷组之后,可以自由从该物理卷组中添加或者移除物理卷,LVM中可以有一个VG或者多个VG

逻辑卷组(LV)

终于到这最后一步了,最终由VG切成的LV才能够被格式化使用的类似分区的东西了,从而能供我们挂载使用,需要注意的是LVM的大小不是连续的,这要根据PE的大小情况而定

具体的操作流程

分区阶段:
首先将需要进行添加到LVM中的分区用fdisk工具将其系统标识符改为8e(fdisk工具的使用比较简单,在此不多加赘述,需要注意的是:在 fdisk 执行完成之后要运行 partprobe
PV阶段:

操作 含义
pvcreate 将分区建立成为PV
pvscan 查看系统里面所有具有PV的磁盘
pvdisplay 显示出目前系统上PV的状态
pvremove 将PV属性移除

VG阶段

操作 含义
vgcreate 建立VG
vgscan 查看系统里面所有 VG
vgdisplay 显示目前系统上面的 VG 状态
vgextend 在 VG 内增加额外的 PV
vgreduce 在 VG 内移除 PV
vgchange 设定 VG 是否启动 (active)
vgremove 删除一个 VG

注意vgcreate的命令使用格式,可以用vgcreate -h进行查询,VG的命名由自己设定
LV阶段

操作 含义
lvcreate 建立 LV
lvscan 查看系统上面所有的 LV
lvdisplay 查看系统上面的所有 LV 状态
lvextend 在 LV 里面增加容量
lvreduce 在 LV 里面减少容量
lvremove 删除一个 LV
lvresize 对 LV 进行容量大小的调整

文件系统阶段
mkfs 命令,对第四步进行了的lv进行格式化,并且用mount命令进行挂载,然后即可使用

实际操作

已经用fdisk分出了分区并且将其SystemID设置成为了8e之后进行如下操作
查看磁盘状态如下:

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00023f11

设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648    31877119    15732736   8e  Linux LVM
/dev/sda3        31877120    38168575     3145728   82  Linux swap / Solaris
/dev/sda4        38168576    41943039     1887232    5  Extended
/dev/sda5        38170624    40267775     1048576   83  Linux
/dev/sda6        40269824    41943039      836608   83  Linux

磁盘 /dev/mapper/cl-root:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/cl-home:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/cl-var:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

创建PV

[root@localhost ~]# pvcreate /dev/sda5 /dev/sda6
Device /dev/sda6 not found (or ignored by filtering).
Physical volume "/dev/sda5" successfully created.

创建VG

[root@localhost ~]# vgcreate LuckyCoder /dev/sda5
Volume group "LuckyCoder" successfully created

创建LV

[root@localhost ~]# lvcreate -l 460 -n coder1 LuckyCoder
Logical volume "coder1" created.

格式化LV并且挂载

[root@localhost ~]# mkfs -t ext4 /dev/LuckyCoder/coder1    
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
117840 inodes, 471040 blocks
23552 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=482344960
15 block groups
32768 blocks per group, 32768 fragments per group
7856 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@localhost ~]# mkdir /mnt/test
[root@localhost ~]# mount /dev/LuckyCoder/coder1 /mnt/test
[root@localhost ~]# df /mnt/test
文件系统                        1K-块  已用    可用 已用% 挂载点
/dev/mapper/LuckyCoder-coder1 1821764  5520 1705652    1% /mnt/test

扩大LV的容量

首先将VG扩容

[root@localhost ~]# vgextend LuckyCoder /dev/sda6
Volume group "LuckyCoder" successfully extended

然后给LV扩容

[root@localhost ~]# lvextend -L +300M /dev/LuckyCoder/coder
Size of logical volume LuckyCoder/coder changed from 1020.00 MiB (255     extents) to 1.29 GiB (330 extents).
Logical volume LuckyCoder/coder successfully resized.

缩小LV的容量

[root@localhost ~]# lvresize -L -300M /dev/LuckyCoder/coder 
WARNING: Reducing active logical volume to 1020.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LuckyCoder/coder? [y/n]: y
Size of logical volume LuckyCoder/coder changed from 1.29 GiB (330 extents) to 1020.00 MiB (255 extents).
Logical volume LuckyCoder/coder successfully resized.

将某个PV独立出来

如下

[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name               /dev/sda5
VG Name               LuckyCoder
PV Size               1.00 GiB / not usable 4.00 MiB
Allocatable           yes 
PE Size               4.00 MiB
Total PE              255
Free PE               213
Allocated PE          42
PV UUID               o7GweK-jAyB-D2tT-pxTT-ODsZ-76ed-JAA11o

--- Physical volume ---
PV Name               /dev/sda6
VG Name               LuckyCoder
PV Size               800.00 MiB / not usable 4.00 MiB
Allocatable           yes 
PE Size               4.00 MiB
Total PE              199
Free PE               199
Allocated PE          0
PV UUID               WtTnom-YJvj-IuhD-WL10-HtjE-0Eta-6cKyyX

--- Physical volume ---
PV Name               /dev/sda3
VG Name               cl
PV Size               15.00 GiB / not usable 4.00 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              3840
Free PE               0
Allocated PE          3840
PV UUID               nTB7Ba-Ucfp-9U48-chO6-fEFy-15lY-mjvcsR

注意
在此我想要将/dev/sda5独立出来的话,必须要将其已经使用了的PE移到同一个VG下的其他的PV当中,在此将/dev/sda5中的已经使用的PE移动到/dev/sda6当中(注意/dev/sda6中的Free PE 必须能够容纳/dev/sda5中已经使用了的PE数量),命令如下

[root@localhost ~]# pvmove /dev/sda5 /dev/sda6
/dev/sda5: Moved: 100.00%
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name               /dev/sda5
VG Name               LuckyCoder
PV Size               1.00 GiB / not usable 4.00 MiB
Allocatable           yes 
PE Size               4.00 MiB
Total PE              255
Free PE               255
Allocated PE          0
PV UUID               o7GweK-jAyB-D2tT-pxTT-ODsZ-76ed-JAA11o

--- Physical volume ---
PV Name               /dev/sda6
VG Name               LuckyCoder
PV Size               800.00 MiB / not usable 4.00 MiB
Allocatable           yes 
PE Size               4.00 MiB
Total PE              199
Free PE               157
Allocated PE          42
PV UUID               WtTnom-YJvj-IuhD-WL10-HtjE-0Eta-6cKyyX

--- Physical volume ---
PV Name               /dev/sda3
VG Name               cl
PV Size               15.00 GiB / not usable 4.00 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              3840
Free PE               0
Allocated PE          3840
PV UUID               nTB7Ba-Ucfp-9U48-chO6-fEFy-15lY-mjvcsR
[root@localhost ~]# vgreduce /dev/LuckyCoder /dev/sda5
Removed "/dev/sda5" from volume group "LuckyCoder"
[root@localhost ~]# pvremove /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped.
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name               /dev/sda6
VG Name               LuckyCoder
PV Size               800.00 MiB / not usable 4.00 MiB
Allocatable           yes 
PE Size               4.00 MiB
Total PE              199
Free PE               157
Allocated PE          42
PV UUID               WtTnom-YJvj-IuhD-WL10-HtjE-0Eta-6cKyyX

如上所示/dev/sda5已经不是PV了,也就是独立出来了

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器