LVM(Logical Volume Manager:逻辑建管理)
dm:将一个或多个底层快设备组织成一个逻辑设备的模块
查看:/dev/mapper
相关概念:
PV:物理卷,指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,是LVM的基本存储逻辑块
VG:卷组,类似于非LVM系统中的物理磁盘,由一个或多个物理卷组成。可以在卷组上创建一个或多个LLV:逻辑卷,类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上
PE:物理块,LVM设备最小的存储单元。每一个PV被划分为多个PE,默认4M
PV、VG、LV三者的关系
首先产生物理卷PV
再将物理卷PV合并成为卷组VG
最后从卷组VG中划分出多个逻辑卷LV直接使用
具体说明:
物理磁盘被格式化为PV,空间被划分为很多个PE
很多不同的PV组成了同一个VG,PV中的PE全部进入了VG的PE池中
LV是基于PE创建的,组成LV的PE可能来自不同的物理磁盘
LV可以直接格式化后挂在使用
LV的扩展与缩减实质上是增加与减少PE的数量,在此过程中不会丢失数据
安装LVM
首先确定系统中是否安装了LVM工具
~]#rpm -qa | grep lvm
创建和管理LVM
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e
创建2个分区(sdb1,sdb2)
将linux类型更改为8e:
t---8e
w保存
创建逻辑卷:
pvcreate /dev/sdb1 /dev/sdb2
pvs:查看PV的信息
pvdisplay:仔细查看PV信息
将新创建的两个分区/dev/sdb1和/dev/sdb2转化成物理卷
创建卷组VG,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。
vgcreate vg /dev/sdb1 /dev/sdb2:卷组名称为vg,可以起别的名称
vgs:查看vg的信息
vgdisplay:查看详细信息
从vg上分割1G给新的逻辑卷LV1:
lvcreate -L 1G -n lv1 vg
lvs
格式化:(使用mkfs创建ext4文件系统)
mkfs.ext4 /dev/vg/lv1
将创建好的文件系统挂在到/data1上(创建好后会在/dev/mapper生成软连接vg-lv1):
记得要创建/data1目录:
mkdir /data1
mount /dev/vg/lv1 /data1
dh -f:查看
ll /dev/vg/lv1:查看一下
便于服务器重启后自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面,UUID可以通过blkid查询:
blkid(找/dev/mapper/vg-vl1)
UUID="739cd3f6-0da8-45a4-9fe4-87c4704ecdbf"
vim /etc/fstab
UUID="739cd3f6-0da8-45a4-9fe4-87c4704ecdbf" /data1 ext4 defaults 0 0
为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount -a使内核重新读取/etc/fstab,看能否自动挂载
umount /data1
mount -a
mount | grep data1
逻辑卷lv1不够用了,该如何扩展
给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vg/lv1或者lvextend –l 2.5G /dev/vg/lv1 给lv1加500M空间(lv1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。
lvextend -L +500M /dev/vg/lv1
lvs查看
resize2fs /dev/vg/lv1 同步
df -h查看文件系统
卷组不够用了,该如何扩大卷组
重新从第二块硬盘上创建一个分区sdb3,具体操作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。
vgextend vg /dev/sdb3:将创建好的分区加入到组vg中
pvs:查看
若磁盘空间不足,如何减少逻辑卷空间释放给其他逻辑卷使用
减少逻辑卷空间:
先卸载逻辑卷lv
然后通过e2fsck命令检测逻辑卷上空余的空间
使用resize2fs将文件系统减少到700M
再使用lvreduce命令将逻辑卷减少到700M
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,那数据就出问题了。
umount /data1
e2fsck -f /dev/mapper/vg-lv1
resize2fs /dev/mapper/vg-lv1 1G
lvreduce -L 700M /dev/vgdata/lv1
完成后就可以重新使用了:
mount /dev/vg/lv1 /data1
mount | grep data1
如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去
通过pvmove命令转移空间数据
通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去
通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉
pvs查看
pvmove /dev/sdb1 /dev/sdb2
pvs查看
vgreduce vg /dev/sdb1
pvremove /dev/sdb1
删除整个逻辑卷
先通过umount命令卸载掉逻辑卷lv1
修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来
通过lvremove 删除逻辑卷lv1
通过vgremove 删除卷组vg
通过pvremove 将物理卷转化成普通分区
umount /dev/mapper/vg-lv1
lvremove /dev/vg/lv1
vgremove vg
pvremove /dev/sdb1 /dev/sdb2
删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可
总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如