一.为什么使用逻辑卷?
有这么一种情况 你在当初规划主机的时候将/home只给了50GB 等到用户众多的时候导致这个文件系统不够大,这个时候你会怎么做呢??这个时候多数的朋友都是重新加一个硬盘 然后重新分区格式化 将/home下的数据再完全 复制过来 然后将原来的分区卸载重新挂载新的分区 若是第二次分配的空间又太多的时候你会怎么办呢 这个时候又会导致很多的磁盘空间浪费 分区缩小又得重新操作上面的几步流程 那么这个时候就出现了更简单的方法了-lvm
LVM可以整合多个物理分区在一起 让这些分区看起来就像是一个磁盘一样 而且也可以在将来其他的物理分区或将其从这个lvm管理的磁盘当中删除 这样一来 整个磁盘上的空间就非常具有弹性了
逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间,可以将其卷组的可用空间分配给逻辑卷,并且可以调整文件系统的大小。如果磁盘开始出现错误,可以通过卷组将替换磁盘注册为物理卷,并且逻辑卷的范围可以迁移到新磁盘。
物理分区:相当于几个橙子
pv:物理卷,被处理过的物理分区(相当于几个橙子榨出来的几杯果汁)
vg:物理卷组,由pv组成(相当于将两被果汁放进去的大容器)
pe:物理扩展,是lvm的最小的存储单元(是大容器里面果汁的组成)
lvm:逻辑卷,是pe大小的整数倍,从vg里面划出来的,可以使硬盘无限扩容、无限分区,上限:8EB-1字节;(从大容器里面倒出来的果汁)
二.用命令行实施 lvm 存储
1、清除上一个实验的操作:
umount /mnt/ 卸载
vim /etc/fstab 删除上面实验添加的内容
fdisk /dev/vdb 删除分区
partprobe 同步分区信息
fdisk -l 查看分区
2.打开监控:
watch -n 1 ‘pvs;vgs;lvs;df -h /mnt’
3、建立2个分区,大小分别为 1G;改变(t) id 为8e,即就是建立物理设备
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 8e Linux LVM
/dev/vdb2 2099200 4196351 1048576 8e Linux LVM
4、
pvcreate /dev/vdb1 #将设备变成物理卷
vgcreate vg0 /dev/vdb1 #将设备放进物理卷组,vg的名字vg0不做限制,可以在创建时指定其他物理卷(以空格隔开),也可以随后使用vgextend添加新物理卷
lvcreate -L 300M -n lv0 vg0 #从物理卷组vg0取出一部分lv0,大小为300M,lvm的名字lv0不做限制
mkfs.xfs /dev/vg0/lv0 #格式化该部分,将在新逻辑卷上创建xfs文件系统
mount /dev/vg0/lv0 /mnt/ #挂载 ,会出现vg0-lv0
测试:
###建立lvm分区
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 8e Linux LVM
/dev/vdb2 2099200 4196351 1048576 8e Linux LVM
###将设备vdb1变成物理卷
[root@localhost ~]# pvcreate /dev/vdb1 ###将vdb1变成物理卷
Physical volume "/dev/vdb1" successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1
###将vdb1物理卷放进物理卷组vg0
Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0 ###创建lvm,名字为lv0
Logical volume "lv0" created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 ###xfs格式化/dev/vg0/lv0
meta-data=/dev/vg0/lv0 isize=256 agcount=4, agsize=19200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=76800, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz