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了,也就是独立出来了