简介
- LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。- 由四个磁盘分区可以组成一个很大的空间,然后在这些空间上划分一些逻辑分区,当一个逻辑分区的空间不够用时,可以从剩余空间上划分一些空间给空间不够用的分区使用
LVM基本术语
前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:
-
物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。 -
物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。 -
卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。 -
逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。 -
物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。 -
逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
图所示LVM抽象模型,展示了PV、VG、LV三者之间关系:
和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。
- PV:是物理的磁盘分区
- VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘
- LV:也就是从VG划分的逻辑分区
如下图所示PV VG LV 三者关系:
安装LVM
首先确定系统中是否安装了lvm工具:
[root@wwwroot]#rpm –qa | grep lvm
lvm-1.0.3-4
如果命令结果输入类似于上例,那么说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVMrpm工具包。
创建和管理LVM
要创建一个LVM系统,一般需要经过以下步骤:
- 创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。
例如:创建一个逻辑卷,创建名为datastore的卷组,大小为4G,逻辑卷的名字为database,所属卷组为datastore,逻辑卷大小为3G,文件格式为xfs,要求开机自动挂载
2. 创建三个新的分区 fdisk /dev/sda
3. 修改三个分区的id值为8e
-
w保存退出 使用partproe重新加载到内核
-
创建物理卷pvcreat /dev/sda{6,7}
创建逻辑卷组 vgcreat datastore /dev/sda{6,7} 使用vgs查看信息 -
创建逻辑分区database。Lvcreat -L +3G -n database datastore
使用lvs查看信息 -
修改逻辑分区的文件系统为xfs mkfs.xfs /dev/datastore/database
-
查看uuid值 blkid
-
将逻辑分区database的信息写入开机挂载的文件中
-
使用mount -a 测试
如何扩大卷组
扩大卷组,将database扩大到5G
- 创建一个新的分区 具体操作不再详述
- 扩大逻辑卷组 vgextend datastre /dev/sda8
- 扩大逻辑分区到5G
- 将新加的逻辑分区的文件系统修改成xfs
- 删除所有的逻辑卷并恢复到初始状态
- 取消挂载,将逻辑分区的信息从开机挂载文件中删除
2. 删除逻辑分区 lvremove /dev/datastore/database
- 删除逻辑卷组 vgremove datastore
- 删除物理卷组 pvremove /dev/sda{6,7,8}
5.删除物理分区 fdisk /dev/sda
[root@localhost data1]# vim /etc/fstab 删除挂载信息
6. 保存退出。
SWAP分区增加
- SWAP称之为交换分区,相当于Windows系统下的虚拟内存,作用就是当我们系统中的内存不够用时,可以通过SWAP来增加内存,安装Linux系统的时候,必须的两个分区一个是根,一个是SWAP。如果是安装系统时,SWAP分区分小了的话,需要增加大小,那么接下来的内容就是这个:SWAP分区的创建/扩展。
- 添加一个swap分区,容量为512M,可以开机自动挂载。
- 创建一个新的分区大小为512M fdisk /dev/sda
- 修改id值为82 表示此分区为swap分区
- 使用partproe让内核重新加载新的分区
- 将新的swap分区格式化 mkswap /dev/sda5
记录下此时的UUID,也可以用blkid查看 - 将格式化后的swap分区激活 swapon /dev/sda5查看free -m
- 将swap分区的信息写入开机自动挂载的文件中 vim /etc/fstab
7.使用mount -a 检测是否成功
LVM缩减
xfs文件系统不支持缩减,
umount /mnt ##取消挂载
e2fsck -f /dev/vg0/lv0 ##扫描文件系统
resize2fs /dev/vg0/lv0 1000M ##缩减文件系统
mount /dev/vg0/lv0 /mnt ##挂载
缩减vg,移除sdb1
pvmove /dev/sdb1 /dev/sdb2 ##将sdb1的数据移到sdb2,没数据则不需要。
vgreduce vg0 /dev/sdb1 ##移除物理卷组上的的物理卷/dev/sdb1
pvremove /dev/sdb1
删除成功了。
lVM快照
使用的命令:
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 // -L大小,-n快照名字,-s 快照对象。
我们给刚创建的lv0创建快照,
先在lv0中touch 9个文件。
然后创建快照。
umount /dev/vg0/lv0
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 //创建快照
mount /dev/vg0/lv0backup /mnt/ //挂载
刚才的文件,这个lvm快照就创建成功了。
当快照出问题时,我们就可以删除快照,重新创建快照,lvm又回到当初的模样,很是方便。