Linux 逻辑卷管理器(LVM)

  • Linux 逻辑卷管理器(LVM)已关闭评论
  • 160 次浏览
  • A+
所属分类:linux技术
摘要

LVM: Logical Volume Manager,可以实现动态的扩容和缩容。逻辑卷是一种逻辑上的管理方式,把一块或多块硬盘或分区逻辑的组合在一起,命令成一个卷组(VG),卷组的空间来自所有硬盘空间的总和。(组成逻辑卷的硬盘或分区大小可以不一样)


LVM:

LVM: Logical Volume Manager,可以实现动态的扩容和缩容。逻辑卷是一种逻辑上的管理方式,把一块或多块硬盘或分区逻辑的组合在一起,命令成一个卷组(VG),卷组的空间来自所有硬盘空间的总和。(组成逻辑卷的硬盘或分区大小可以不一样)

VG:

多个磁盘或者分区组合在一起的(逻辑上的大硬盘)

LV:

是从VG中取出一块空间而来的(相当于VG这个逻辑上大硬盘的一个分区)

PE:

PE:物理盘区,作用是负责分配空间的最小单位(逻辑卷中),扩容和缩容都是以PE为单位来操作的。PE大小默认为4M

LVM的实现过程:

  • 1.将设备设为物理卷 -- 贴个标签,表示这个硬盘要作为物理卷使用了

  • 2.指定卷组(一个或多个物理卷加入卷组形成一个大硬盘)

  • 3.创建逻辑卷(相当于分区)

  • 4.创建文件系统并挂载
    Linux 逻辑卷管理器(LVM)

逻辑卷的名字:

逻辑卷有三个名称你可以用,一个真名,两个软连接。

第一个逻辑卷对应设备名:/dev/dm-# (逻辑卷的真名)

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

逻辑卷的软链接:

  • /dev/mapper/VG_NAME-LV_NAME

  • /dev/VG_NAME/LV_NAME

逻辑卷的实现范例:

#创建swap空间,分区的id要改为82,创建逻辑卷,物理设备分区的id要改成8e fdisk的t选项。 #如果是使用硬盘的话,就不存在改ID的问题了。  #这些命令依赖lvm2这个工具包 #创建物理卷 pvcreate /dev/sda3 #为卷组分配物理卷 vgcreate vg0(卷组名) /dev/sda3(把创建的pv加进来) #-s可以指定PE的大小 #从卷组创建逻辑卷 lvcreate  -L 256M  -n data vg0 # -n:指定设备名称  -l:PE的个数 -L:指定LV的大小 mkfs.xfs   /dev/vg0/data #创建文件系统 #挂载 mount /dev/vg0/data /mnt/data 

逻辑卷的扩展和缩减

扩展逻辑卷:

#两步实现 -- 空间扩展和文件系统扩展 (缺点在于文件系统扩容的时候不同系列的文件系统命令不一样)  #第一步实现逻辑卷的空间扩展 lvextend -L [+]#[mMgGtT](大小) /dev/VG_NAME/LV_NAME #-l:扩容多少个pe -L:扩容的大小 不写+号表示扩容到xx,写了+号表示增加xxx  #第二步实现文件系统的扩展 #使用df命令看到的是文件系统的情况,扩容了的部分但是上面没有文件系统,所以就看不见 #针对ext resize2fs /dev/VG_NAME/LV_NAME #resize2fs:对ext系列的文件系统进行扩容,把文件系统同步到空间里面去 #针对xfs  xfs_growfs MOUNTPOINT    #一步实现容间和文件系统的扩展(不用关注文件系统的类型,直接扩容) lvextend -r -l +100%FREE /dev/VG_NAME/LV_NAME #-l:pe的个数  -r:表示不管是什么文件系统都立即同步文件系统  +100%FREE:表示剩下的所有剩余空间 

扩展卷组的空间:

##添加物理卷到卷组中(分区需要改id号) pvcreate 物理卷  ##将添加的设备添加到卷组中 vgextend 卷组名 物理卷 

缩减逻辑卷(有丢失数据的风险)

#建议先备份再缩减,xfs文件系统不支持缩减  #五个步骤:1.卸载 -- 2.检查文件系统完整性(不管是否完整必须) -- 3.缩减文件系统 --  4.缩减逻辑卷大小 -- 5.重新挂载  #1.卸载: umount /dev/VG_NAME/LV_NAME #首先卸载  #2.检查文件系统完整性 e2fsck -f /dev/VG_NAME/LV_NAME  #3.缩减文件系统 resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT](缩减后的大小,例如2G表示缩减到2G)  #4.缩减逻辑卷大小 lvreduce -L  [-]#[mMgGtT](这个大小要和上面的大小相匹配) /dev/VG_NAME/LV_NAME(对谁进行缩减)  #5.重新挂载 mount /dev/VG_NAME/LV_NAME mountpoint 

清除缓存的方法:

使用 free -h 可以看到缓存 查看缓存对应的目录: find /proc -name 'drop*' --- /proc/sys/vm/drop_caches 清理缓存:echo 3 > /proc/sys/vm/drop_caches --- 3就是清理缓存 #缓存的目的就是为了提高性能(一般做测试的时候才清理缓存)