LVM 是逻辑盘卷管理器( Logical Volume Manager )的简称,是一种分区管理机制。LVM 是建立在硬盘 和分区 之上的一个逻辑层,为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性
要配置LVM,可以按以下步骤进行
- 创建和初始化物理卷(Physical Volume),通过pvcreate建立pv,即pv阶段;
- 添加物理卷到卷组(Volume Group),使用vgcreate加入多个pv成为vg,即vg阶段;
- 在卷组上创建逻辑卷(logical volume),使用lvcreate划分vg,成为一个或多个lv,即lv阶段;
将若干个磁盘分区连接为一个整块的卷组( Vloume group ),管理员可以在卷组上随意创建逻辑卷( logical volumes ),并进一步在逻辑卷上创建文件系统
xxx
物理区域 (Physical Extent, PE)
-
每个 PV 又是由 PE 组成 类似于 Windows 下的分区格式化中的“簇”概念
-
PE 的大小默认为 4MB
-
PE 的大小一旦确定不能改变,同一 LG 中的所有 PV 的 PE 的大小又要一致
逻辑区域 (Logical Extent , LE )
- LE 一一对映 PE ,所以 PE 单元为多大,映射到 LE 单元就是多大
- 当 LVM 执行完成之后, LV 及 VG 的相关元数据保留在位于 PV 起始处的卷组描述符区域 Volume Group Descriptor Area ←这和 Windows 下的分区表是一样的
- /boot 分区不能位于 LG 中,因为引导装载程序无法从逻辑卷中读取。必须为 /boot 单独分配一个主分区
XXX
物理卷 (Physical Volume, PV)
PV 在 LVM 系统中处于最底层,PV 一般是整个硬盘、或硬盘上一个可用分区
卷组 (Volume Group, VG)
建立在 PV 之上,可以由多个 PV 组成一个 VG ,也可以是单个.VG 创建之后,可以动态地添加 PV 到 VG 中,在 VG 上一个创建多个 LVM 分区(逻辑卷)
一个 LVM 系统中可以包含多个 VG(注释:在这 LVM 系统中你可以把 VG 理解为实际的物理硬盘)
逻辑卷 ( Logical Volume, LV)
LV 建立在 LV 之上(类似于 Windows下的对物理硬盘分区,或者是Linux下分出 /boot, /, Swap, /usr, /var, /tmp, /home等区域
)
LV 创建后,大小可以改变.在 LV 上可以建立文件系统用于不同的分区,如/usr, /home
创建LVM
[root@Catdexin-PC ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sdc 8:32 0 5G 0 disk
sdd 8:48 0 5G 0 disk
创建LVM要经过下面几步
-
创建(标记)一个物理卷(PV)
# pvcreate 盘路径 [root@Catdexin-PC ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created.
-
创建卷组(VG)
# vgcreate 组名 盘路径 [root@Catdexin-PC ~]# vgcreate vg1 /dev/sdb Volume group "vg1" successfully created
-
创建逻辑卷(LV)
# lvcreate -L大小 -n 卷名 组名 [root@Catdexin-PC ~]# lvcreate -L4G -n lv1 vg1 Logical volume "lv1" created.
-
格式化文件类型
[root@Catdexin-PC ~]# mkfs.ext4 /dev/vg1/lv1
-
创建挂载点
[root@Catdexin-PC ~]# mkdir /mnt/lv1
-
挂载
[root@Catdexin-PC ~]# mount /dev/vg1/lv1 /mnt/lv1/
观察一下效果
[root@Catdexin-PC ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 5G 0 disk
└─vg1-lv1 253:2 0 4G 0 lvm /mnt/lv1
sdc 8:32 0 5G 0 disk
扩展LVM
准备工作
我们首先写满一个磁盘
[root@Catdexin-PC ~]# dd if=/dev/zero of=/mnt/lv1/1.txt bs=1M count=4000
dd: 写入"/mnt/lv1/1.txt" 出错: 设备上没有空间
记录了3872+0 的读入
记录了3871+0 的写出
4059762688字节(4.1 GB)已复制,3.50458 秒,1.2 GB/秒
现在 磁盘已经满了 可以使用语句查看一下
[root@Catdexin-PC ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg1-lv1 ext4 3.9G 3.8G 0 100% /mnt/lv1
查看PV信息
[root@Catdexin-PC ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb vg1 lvm2 a-- <5.00g 1020.00m
查看VG信息
[root@Catdexin-PC ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 1 1 0 wz--n- 3.99g 0.99g
VG扩容
-
步骤一 创建PV卷
[root@Catdexin-PC ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created.
-
步骤二 将PV卷添加到VG组中
# vgextend 目标vg 目标pv [root@Catdexin-PC ~]# vgextend vg1 /dev/sdc Volume group "vg1" successfully extended
LV扩容
-
步骤一 观察vg是否有剩余空间
[root@Catdexin-PC ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg1 2 1 0 wz--n- 9.99g 5.99g
-
步骤二 扩容lv
# lvextend -L +4G 目标lv [root@Catdexin-PC ~]# lvextend -L +4G /dev/vg1/lv1 Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to 8.00 GiB (2048 extents). Logical volume vg1/lv1 successfully resized.
-
步骤三 文件系统扩容
# resize2fs 目标lv [root@Catdexin-PC ~]# resize2fs /dev/vg1/lv1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vg1/lv1 is now 2097152 blocks long.
查看下效果
[root@Catdexin-PC ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg1-lv1 ext4 7.8G 3.8G 3.6G 52% /mnt/lv1
[root@Catdexin-PC ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 5G 0 disk
└─vg1-lv1 253:2 0 8G 0 lvm /mnt/lv1
sdc 8:32 0 5G 0 disk
└─vg1-lv1 253:2 0 8G 0 lvm /mnt/lv1