『学了就忘』Linux文件系统管理 — 67、通过命令模式进行LVM分区
通过命令模式进行LVM分区,也就是通过命令进行LVM逻辑卷分区。
1、物理卷管理
(1)准备硬盘或者分区
前提还是首先要有一块硬盘或者分区。
创建方式就是使用fdisk
交互命令,不过需要注意的是,分区的系统ID不再是Linux默认的分区ID号83了,而要改成LVM的ID号8e
。
通过fdisk
交互命令,在扩展分区sdb3
中创建了三个逻辑分区sdb4
、sdb5
和sdb6
。
如下图所示:
从图中可以看出,这三个分区的默认系统ID号为83,我们需要修改程LVM的ID号8e
。
执行如下命令即可,逐一修改。
最后结果如下:
最后保存退出即可,如下图所所示:
需要执行reboot
命令,重启一下系统。
(2)建立物理卷
有了上边的分区之后,我们就可以把分区建立成物理卷了。
创建物理卷命令:
[root@localhost ~]# pvcreate [设备文件名]
建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。
如果要把整块硬盘都建立成物理卷,命令如下:
[root@localhost ~]# pvcreate /dev/sdb(硬盘的设备文件名)
在我们的使用中,是要把分区建立成为物理卷,执行以下命令:
[root@localhost ~]# pvcreate /dev/sdb5(分区名称)
执行命令结果:
(3)查看物理卷
需要执行pvscan
命令查看物理卷。
[root@localhost ~]# pvscan
命令结果如下:
我们可以看到在我的系统中,/dev/sdb5-7
这三个分区是物理卷。
最后一行的意思是:总共3个物理卷[大小] / 使用了0个卷[大小] / 空闲3个卷[大小]。
第二个查询命令是pvdisplay
命令,它可以查看到更详细的物理卷状态。
命令如下:
[root@localhost ~]# pvdisplay
命令结果如下:
(3)删除物理卷
需要执行pvremove
命令。
命令如下:
[root@localhost ~]# pvremove /dev/sdb7
2、创建卷组
(1)建立卷组
建立卷组格式如下:
[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
选项:
-s
:指定PE的大小,单位可以是MB
,GB
,TB
等。如果不写默认PE
大小是4MB。(vgcreate
命令的选项就-s
一个,还是修改PE
大小的,所以上边命令中选项就可以省略了。 )
我们有三个物理卷/dev/sdb5-7
,我们先把/dev/sdb5
和/dev/sdb6
加入卷组,留着/dev/sdb7
一会实验调整卷组大小。
命令如下:
[root@localhost ~]# vgcreate scvg /dev/sdb5 /dev/sdb6
Volume group "scvg" successfully created
# 提示:名称为scvg的VG创建成功
上边命令的作用就是把/dev/sdb5
和/dev/sdb6
物理卷加入到scvg
卷组中。
(2)查看卷组
查看卷组的命令同样是两个,vgscan
命令主要是查看系统中是否有卷组,而vgdisplay
命令则是查看卷组的详细状态的。
执行vgscan
命令,结果如下:
执行vgdisplay
命令,结果如下:
(3)增加卷组容量
卷组是可以进行扩容的,使用的命令是vgextend
。
执行命令:把/derv/sdb7
物理卷也加入scvg
卷组。
[root@localhost ~]# vgextend scvg /dev/sdb7
Volume group "scvg" successfully extended
执行vgdisplay
命令查看卷组,结果如下:
说明:如果有更多的物理卷,可以随时加入到卷组中。
(4)减小卷组容量
特别注意:
理论上卷组容量是可以缩减的,但是不允许进行缩减操作。例如:如果你6GB容量写满数据,你缩减2GB容量,数据肯定会丢失。
# 在卷组中删除/dev/sdb7物理卷
[root@localhost ~]# vgreduce scvg /dev/sdb7
Removed "/dev/sdb7" from volume group "scvg"
# 删除所有的未使用物理卷
[root@localhost ~]# vgreduce -a
(5)删除卷组
使用vgremove
命令,可以删除卷组。
[root@localhost ~]# vgremove scvg
Volume group "scvg" successfully removed
卷组删除之后,才能删除物理卷。
还要注意的是,
scvg
卷组还没有添加任何的逻辑卷,才可以删除,那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。还记得我刚说的吗?删除就是安装的反过程,每一步都不能跳过。
3、创建逻辑卷管理
(1)建立逻辑卷
建立逻辑卷命令:
[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L
容量:指定逻辑卷大小,单位MB
,GB
,TB
等。(只要卷组中有空间,分配多大的空间都可以,不一定按照物理卷的大小进行分配。)-l
个数:按照PE
个数指定逻辑卷大小,这个参数需要换算容量,太麻烦。-n
逻辑卷名:指定逻辑卷名。
那我们就建立一个3GB的sclv
逻辑卷,建立命令如下:
#在scvg卷组中建立3GB的sclv逻辑卷
[root@localhost ~]# lvcreate -L 3G -n sclv scvg
Logical volume "sclv" created
建立完逻辑卷之后,还要对逻辑卷进行格式化和挂载,之后逻辑卷才能正常使用。格式化和挂载命令的操作,和操作普通分区时是一样的,不过需要注意的是,逻辑卷的设备文件名是/dev/卷组名/逻辑卷名
,如我们的sclv
的设备文件名就是/dev/scvg/sclv
。
具体命令如下:
# 格式化
[root@localhost ~]# mkfs -t ext4 /dev/scvg/sclv
# 建立挂载点,并挂载
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/sclv /disklvm/
再用mount
命令查看分区挂载情况(用df -h
命令也可以查看)。
执行命令如下:
可以看到sclv
逻辑卷,已正常挂载。
当然如果需要开机自动挂载,也要修改/etc/fstab
文件。
(2)查看逻辑卷
同样的查看命令是两个,第一个lvscan
命令只能看到系统中是否拥有逻辑卷。
命令如下:
# 能够看到激活的逻辑卷,大小事3GB
[root@localhost ~] # lvscan
ACTIVE '/dev/scvg/sclv' [3 GiB]inherit
第二个命令是lvdisplay
,可以看到逻辑卷的详细信息。
命令如下:
(3)调整逻辑卷大小
调整逻辑卷大小用lvresize
命令,执行命令如下。
[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
选项:
-L
容量:安装容量调整大小,单位KB
,GB
,TB
等。使用+
代表增加空间,-
号代表减少空间。如果直接写容量,代表设定逻辑卷大小为指定大小。-l
个数:按照PE
个数调整逻辑卷大小。(一般不按这个分配空间,不好算。)
提示:逻辑卷增加容量,逻辑卷中的文件是不会丢失的。缩减容量不符合使用习惯,不要使用。
刚刚的sclv
逻辑卷的大小是3GB,我们的scvg
卷组中还有3GB的空闲空间,那么增加sclv
逻辑卷的大小到4GB。
命令如下:
# 增加sclv逻辑卷的大小到4GB
[root@localhost ~]# lvresize -L 4G /dev/scvg/sclv
Size of logical volume scvg/sclv changed from 3.00 GiB (768 extents) to 4.00 GiB(1024 extents).
Logical volume userlv successfully resized
# 当然命令也可以这样写
[root@localhost ~]# lvresize -L +1G /dev/scvg/sclv
执行lvdisplay
命令查看卷组,结果如下:
逻辑卷的大小已经改变了,但是好像有些问题,我通过df -h
命令查看磁盘信息,发现sclv
逻辑卷的大小还是3GB,如下图:
是因为sclv
逻辑卷的大小调整了,但是sclv
逻辑卷的挂载,依旧挂的是3GB大小。
如果需要让分区使用这个新扩容的逻辑卷,我们还要使用resize2fs
命令来调整分区的大小。不过这里就体现了LVM的优势,我们不需要卸载分区,直接就能调整分区的大小。(总结一下说,lvresize
命令是逻辑卷的扩容,resize2fs
命令是逻辑卷文件系统的扩展。)
resize2fs
命令格式如下:
[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
选项:
-f
:强制调整。- 设备文件名:指定调整哪个分区的大小。
- 调整的大小:指定把分区调整到多大,要加
M
,G
等单位。如果不加大小,会使用整个分区。
执行resize2fs
命令,之后再用df -h
命令查看磁盘信息。
执行命令结果如下:
可以看到sclv
逻辑卷的大小变成了4GB。(不需要卸载分区,里边的数据也不会丢失,很方便。)
(4)删除逻辑卷
一般不用此需求,创建好的逻辑卷就踏实的用。
lvremove
命令是删除逻辑卷,格式如下:
[root@localhost ~]# lvremove 逻辑卷设备文件名
我们删除sclv
这个逻辑卷,记得删除时要先卸载。
命令如下:
[root@localhost ~]# umount /dev/scvg/sclv
[root@localhost ~]# lvremove /dev/scvg/sclv