一、LVM概述
LVM:是 Logical Volume Manager(逻辑卷管理)的简写。
LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,是建立在硬盘和分区之上的一个逻辑层,能够在保持现
有数据不变的情况下动态调整磁盘容量,从而来提高磁盘分区管理的灵活性。
首先了解LVM的几个基本术语:
名词解释:
物理卷:physical volume PV
卷组:vlolume groap VG
物理分区:physical partition PP
逻辑卷:logical volume LV
逻辑分区:logical partition LP
二、LVM命令的详解
将普通分区转换为物理卷的命令是pvcreate。
将物理卷组合为卷组的命令是vgcreate。
从卷组中提取容量创建逻辑卷的命令是Ivcreate。
创建完成后可以分别使用pvdisplay、vgdisplay、 Ivdisplay 查看效果。
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan扫描 | pvscan | vgscan | lvscan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisplay | vgdisplay | lvdisplay |
Remove删除 | pvremove | vgremove | lvmove |
Extend扩展 | ---------- | vgextend | lvextend |
Reduce减少 | ---------- | vgreduce | lvreduce |
2.1、新建物理分区
将各物理磁盘或分区的系统类型设为Linux LVM,其system ID为 8e,通过fdisk工具中的 t 命令设置类型。
[root@server3 ~]# fdisk /dev/sdc
...
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):t #设置类型
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e #指定system id为8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):t #设置类型
分区号 (1,2,默认 2):
Hex 代码(输入 L 列出所有代码):8e #指定system id为8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0e3b0805
设备 Boot Start End Blocks Id System # 磁盘信息
/dev/sdc1 2048 10487807 5242880 8e Linux LVM
/dev/sdc2 10487808 20973567 5242880 8e Linux LVM
命令(输入 m 获取帮助):w
...
2.2、PV物理卷
1、pvcreate:用于将分区或整个硬盘转换成物理卷。
用法: pvcreate [选项]物理卷[物理卷..]
例子:
[root@server3 ~]# pvcreate /dev/sdc{1,2} # 将两个分区初始化为物理卷
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.
2、pvscan:扫描当前系统上的所有物理卷
root@server3 ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<59.00 GiB / 4.00 MiB free]
PV /dev/sdc1 lvm2 [5.00 GiB]
PV /dev/sdc2 lvm2 [5.00 GiB]
Total: 3 [<69.00 GiB] / in use: 1 [<59.00 GiB] / in no VG: 2 [10.00 GiB]
3、pvdisplay:显示物理卷的属性
[root@server3 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <59.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 15103
Free PE 1
Allocated PE 15102
PV UUID sgwtEa-1iNn-lVnL-njYf-jzDO-nm8T-2Bx6IP
"/dev/sdc1" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID U5Emlp-ardb-Qr9I-vh33-nLc7-pOFA-aiNeFz
"/dev/sdc2" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc2
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID k8DDqx-1E6C-swSh-7qNw-uplR-uBM6-ncl6dS
4、pvremove:将物理卷信息删除,使其不再被视为一个物理卷
用法:pvremove [option] PV_DEVICE
[root@server3 ~]# pvremove /dev/sdc2 #删除/sdc2 物理卷
Labels on physical volume "/dev/sdc2" successfully wiped.
[root@server3 ~]# pvscan #查看物理卷信息;物理卷/sdc2 已被删除
PV /dev/sda2 VG centos lvm2 [<59.00 GiB / 4.00 MiB free]
PV /dev/sdc1 lvm2 [5.00 GiB]
Total: 2 [<64.00 GiB] / in use: 1 [<59.00 GiB] / in no VG: 1 [5.00 GiB]
2.3、创建VG卷组
卷组将多个物理卷整合起来(屏蔽了底层细节),并划分PE(physical extend)
PE是物理卷中的最小存储单元,有点类似于文件系统中的block,PE大小可指定,默认为4M。
1、vgcreate:创建卷组
用法:vgcreate [option] VG_NAME PV_DEVICE
选项:
-s:卷组中的物理卷的PE大小,默认为4M
-l:卷组上允许创建的最大逻辑卷数
-p:卷级中允许添加的最大物理卷数
例子:
[root@server3 ~]# vgcreate -s 6G myvg /dev/sdc{1,2}
Volume group "myvg" successfully created
2、vgscan:查找系统中存在的LVM卷组,并显示找到的卷组列表
[root@server3 ~]# vgscan
Reading volume groups from cache.
Found volume group "centos" using metadata type lvm2
Found volume group "myvg" using metadata type lvm2
3、vgdisplay:显示卷组属性
用法:vgdisplay [option] [VG_NAME]
[root@server3 ~]# vgdisplay
...
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 0
PE Size 6.00 GiB
Total PE 0
Alloc PE / Size 0 / 0
Free PE / Size 0 / 0
VG UUID F8elQL-VxDA-Yf91-e1o9-QpKF-Px82-y4s9sO
4、vgextend:动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量
用法:vgextend VG_NAME PV_DEVICE
例 vgextend myvg /dev/sdb3
5、vgreduce:通过删除LVM卷组中的物理卷来减少卷组容量,不能删除LVM卷组中剩余的最后一个物理卷
用法:vgreduce VG_NAME PV_DEVICE
6、vgremove:删除卷组,其上的逻辑卷必须处于离线状态
用法:vgremove [-f] VG_NAME
-f:强制删除
2.4、创建LV
在卷组上创建LV(logical volume,逻辑卷)
为了便于管理,逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME。
1、lvcreate:创建逻辑卷或快照
用法:lvcreate [选项] [参数]
选项:
-L:指定大小
-l:指定大小(LE数)
-n:指定名称
-s:创建快照
-p r:设置为只读(该选项一般用于创建快照中)
注:使用该命令创建逻辑卷时当然必须指明卷组,创建快照时必须指明针对哪个逻辑卷
例子
[root@server3 ~]# lvcreate -L 2G -n mylv myvg
Logical volume "mylv" created.
2、lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件
[root@server3 ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/home' [<18.70 GiB] inherit
ACTIVE '/dev/centos/root' [<38.30 GiB] inherit
ACTIVE '/dev/myvg/mylv' [2.00 GiB] inherit
3、lvdisplay:显示逻辑卷属性
[root@server3 ~]# lvdisplay
...
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID fO9Voa-0SZh-xfbZ-XlBD-h8g2-KhL5-y0d6Qj
LV Write Access read/write
LV Creation host, time server3, 2020-10-29 21:14:06 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:
4、lvextend:可在线扩展逻辑卷空间
用法:lvextend -L/-l 扩展的大小 /dev/VG_NAME/LV_NAME
选项:
-L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M
-l:指定扩展(后)的大小(LE数)
例子:
lvextend -L 200M /dev/myvg/mylv
5、lvreduce:缩减逻辑卷空间,一般离线使用
用法:lvexreduce -L/-l 缩减的大小 /dev/VG_NAME/LV_NAME
选项:
-L:指定缩减(后)的大小
-l:指定缩减(后)的大小(LE数)
例 lvreduce -L 200M /dev/myvg/mylv
6、lvremove:删除逻辑卷,需要处于离线(卸载)状态
用法:lvremove [-f] /dev/VG_NAME/LV_NAME
-f:强制删除
三、格式化逻辑卷并挂载
[root@server3 ~]# mke2fs -t ext4 /dev/myvg/mylv
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
...
Writing superblocks and filesystem accounting information: 完成
[root@server3 ~]# mkdir /data1
[root@server3 ~]# mount /dev/myvg/mylv /data1
[root@server3 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 39G 4.4G 34G 12% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.1M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 19G 33M 19G 1% /home
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 ext4 4.8G 20M 4.6G 1% /data
/dev/mapper/myvg-mylv ext4 2.0G 6.0M 1.8G 1% /data1
四、总结
如果格式化成 EXT4 文件系统,然后在使用 lvextend 命令为逻辑卷扩容,最后一定要用 resize2fs 更新系统识别的
文件系统大小。
如果格式化成 xfs 文件系统,LVM扩容后使用的是 xfs_growfs 命令 更新系统识别的文件系统大小。
通过以上内容,相信大家对LVM的配置过程和一些命令有了一定的了解,但是对于LVM的配置还需要多多练习。不
要担心,在下一个博客我会列举一个实例操作来带着大家做