LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。物理分区或磁盘是 LVM 的第一构建块。这些可以是分区、完整磁盘、 RAID 集或 SAN 磁盘物理卷是 LVM 所使用的基础 “物理”存储。这通常是块设备, 例如分区或完整磁盘。设备必须初始化为 LVM 物理卷 , 才能与 LVM 结合使用卷组是存储池 ,由一个或多个物理卷组成物理区块是物理卷中存储的小型数据区块 , 用作 LVM 存储的后端逻辑区块映射到物理区块 , 构成LVM存储的前端。默认情况下 , 每个逻辑区块映射到一个物理区块。启用某些选项将更改 此映射。例如 ,镜像会导致每个逻辑区块映射到两个物理区块逻辑卷是逻辑区块组。逻辑卷可以像硬盘驱动器分区一样使用。
在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM逻辑卷。逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间 , 可以将其卷组的可用空间分配给逻辑卷,并且可以调整文件系统的大小。如果磁盘开始出现错误 , 可以通过卷组将替换磁盘注册为物理卷 , 并且逻辑卷的范围可迁移到新磁盘。
LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
(1). 物理卷( Physical Volume,PV)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝。默认为1,保存在设备的开始处;为2时,在设备结束处保存第二份备份。
(2). 卷组(Volume Group,VG)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷PV组成。
(3). 逻辑卷(Logical Volume,LV)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。
(4). 物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
/dev/卷组/逻辑卷
/dev/mapper/卷组-逻辑卷
fdisk /dev/vdb -->t -->L--->8e--->wq ##添加lvm标签8e的分区
partprobe #手动同步分区表
cat /proc/partitions ##查看
watch -n 1 'pvs;echo ====;vgs;echo ====;lvs;echo ====;df -h /mnt' #监控pv vg lv
pvcreate /dev/vdb1 ##建立pv 榨汁装入小瓶子
vgcreate vg0 /dev/vdb1 ##lv 倒入大杯子vg0 倒的是vdb1
lvcreate -L 20M -n lv0 vg0 ##lvm 倒出20M 根据需要扩展或缩小大缸
L大小 n名字
mkfs.xfs /dev/vg0/lv0 ##格式化
mount /dev/vg0/lv0 /mnt/ ##挂载
df -h /mnt
Step1 :创建三个物理分区并把分区id修改为8e
修改分区id为8e,即LVM
wq保存并退出
Step2:再另外打开一个Shell用以下命令去监控设备信息
为了方便看到成果,我们可以打开一个新的Shell监控设备信息
watch -n 1 'echo ====;pvs;echo ====;vgs;echo ====;lvs;echo ====;df -h /mnt' #监控pv vg lv
Step3:pvcreate命令创建物理卷
执行命令之后,可以看到三个物理卷创建成功。
Step4: vgcreate命令创建物理卷组
执行命令之后,可以看到一个名为westos,大小为4个G的物理卷组创建成功。
Step5 :lvcreate命令创建逻辑卷
从名为 westos 的卷组中取出1G的大小去创建一个名为 lv0 的逻辑卷,如下:
逻辑卷创建成功之后, 会产生一个虚拟设备文件,将有两个文件指向这个设备,一个是 /dev/mapper/卷组名-逻辑卷名,还有一个是 /dev/卷组命/逻辑卷名:
上面介绍了lv、vg和pv的创建过程,那么下面看一下对它们进行删除的命令:
注意:删除时应先删除lv逻辑卷,然后是删除vg卷组,最后再删除pv物理卷
lvremove /dev/westos/lv0
lvremove删除指定的逻辑卷,后面跟创建逻辑卷后产生的虚拟设备文件
vgremove 卷组名
pvremove /dev/vdb{1..3}
pvremove命令将删除指定的物理卷:
1. 格式化逻辑卷设备
mkfs.ext4 /dev/kuany/lv0
2. 挂载设备到文件系统上
mkdir /lvm
mount /dev/kuany/lv0 /lvm
3. 编辑开机自动挂载
mount | tail -1
vim /etc/fstab
""" /dev/mapper/kunany-lv0 /lvm ext4 defaults 0 0 """
ext4格式化 /dev/westos/lv0
挂载设备到文件系统上
编辑开机自动挂载
LVM的强大之处在于可以支持在线扩容(拉伸), 但不支持在线缩减。ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)
常用命令:lvextend
、resize2fs
2.1.拉伸逻辑卷
如何将逻辑卷拉伸到1.8G如何实现?
1). 确定卷组是否有足够的空间可以拉伸?
vgs
2). 逻辑卷拉伸命令
lvextend -L 1.8G /dev/kuany/lv0 或者
lvextend -L +300M /dev/kuany/lv0
3). 查看拉伸后的空间大小
lvs # 查看逻辑卷设备的大小是否拉伸成功
df -h /lvm # 查看文件系统的大小是否拉伸成功
4). 更新文件系统
resize2fs /dev/kuany/lv0
5). 查看更新后的文件系统
df -h /lvm
Step1:确定卷组是否有足够的空间可以拉伸
由图知,vg还有2.49G大小的空闲可用。
Step2 :使用逻辑卷拉伸命令lvextend对逻辑卷进行拉伸
在这里有两种方式对逻辑卷进行拉伸,都可以实现把逻辑卷拉伸到1.8G,命令分别如下,可以选择其中任意一个:
lvextend -L 1.8G /dev/westos/lv0
lvextend -L +300M /dev/westos/lv0
Step3 :查看拉伸后的空间大小
我们可以使用 lvs命令查看逻辑卷设备的大小是否拉伸成功;可以使用 df -h命令查看文件系统的大小是否拉伸成功,如下:
可以看到逻辑卷设备被拉伸申到了1.8G。
逻辑卷成功被拉伸,可是文件系统还并没有被拉伸,下面我们就需要对文件系统进行更新使其拉伸。
Step4 :更新文件系统的大小
resize2fs
命令可以对文件系统进行存储空间大小的更新,用 df -h
查看更新后的文件系统大小,如下:
2.2 拉伸物理卷组
上一个需求中,逻辑卷拉伸的大小比卷组的要小,那么如果逻辑卷拉伸大小需求要比卷组的空间大呢?这时就需要先对卷组进行拉伸,然后再从足够空间大小的卷组中取出需求大小的逻辑卷。
将逻辑卷拉伸到3.5G的实现过程:
1). 确定卷组是否有足够的空间可以拉伸?
vgs
2). 创建一个物理卷
pvcreate /dev/vdb5
3). 将新的物理卷添加/拉伸到物理卷组中
vgextend kuany /dev/vdb5
4). 查看拉伸后的物理卷组大小
vgs
5). 拉伸逻辑卷,执行3.1实验的内容
lvextend -L 3.5G /dev/kuany/lv0
df -h
resize2fs /dev/kuany/lv0
df -h
2.3 缩小逻辑卷
如果逻辑卷存储空间太大了,可能会造成浪费,因此会有缩小逻辑卷的需求,下面我们就看一下缩小逻辑卷的操作步骤。前面就提到过LVM不支持在线缩减,因此需要先把挂载的逻辑卷卸载掉。
== 注意:和拉伸逻辑卷顺序正好相反,缩小逻辑卷需要先缩小文件系统,然后才能进行缩小逻辑卷的操作。==
具体的操作步骤如下:
1). 卸载正在挂载的逻辑卷
umount /lvm
2). 对文件系统进行校验
e2fsck -fv /dev/kuany/lv0
3). 缩小文件系统到1G
resize2fs /dev/kuany/lv0 1G
4). 缩小逻辑卷
lvreduce -L 1G /dev/kuany/lv0
重新挂载设备, 查看缩减是否生效?
5). 查看卷组中是否有空闲的分区?如果有,则移除空闲分区。
vgreduce kuany /dev/vdb{number}
pvremove /dev/vdb{number}
2.4 xfs格式逻辑卷的拉伸(不能缩减)
上面介绍了ext4格式的逻辑卷的拉伸以及缩减步骤,那么如果逻辑卷的格式是xfs的话,又该如何进行拉伸呢?需要注意的一点是 xfs格式的逻辑卷不提供缩减方法。
xfs格式逻辑卷的拉伸方式可ext格式的拉伸步骤其实是相同的,只是在更新文件系统时用的命令是不同的。xfs格式文件系统的更新命令为 xfs_growfs ,用法和 resize2fs 用法是一样的。
下面就看一下xfs格式的逻辑卷的拉伸的具体步骤:
首先我们需要把之前的物理卷、卷组以及逻辑卷都删除掉,如下:
然后我们再创建接下来的实验要用的物理卷、卷组和1G大小的逻辑卷,如下:
然后将逻辑卷lv0格式化成xfs格式的文件系统,如下:
下面我们就试着将创建好的1G大小的逻辑卷拉伸到1.8G 大小,操作步骤如下:
1).确定卷组是否有足够的空间可以拉伸
vgs
2).对逻辑卷进行拉伸
lvextend -L 1.8G /dev/westos/lv0
或 lvextend -L +300M /dev/westos/lv0
3).查看文件系统的大小是否拉伸成功
df -h
4).更新文件系统,查看更新后的文件系统大小
xfs_growfs /dev/westos/lv0
df -h
这里就不再演示了!!!