LVM基础知识¶
基本概念¶
如果我们单块磁盘最大容量为1TB,但是有一个数据库文件有5个TB怎么办?在分区这个概念下是无法做到的,我们无法将小的分区(文件系统)合在一起使用。LVM可以做到, 前面也介绍过,LVM中的LV(逻辑卷)与物理磁盘的大小是完全无关的,可以将不同大小的物理盘合并到一起最终构建一个大的LV,那要怎么去实现呢,下面我们将介绍。
使用LVM(Logic Volume Manager)可以灵活方便的管理物理磁盘。你是否遇到某个磁盘分区空间不足,给你的文档存放规范带来不便。使用LVM可以轻松的解决这个问题。逻辑卷实际上是将物理磁盘虚拟化,这样逻辑卷的大小就不受物理卷大小的限制。并且它还有其它优点:
- 灵活的容量 当使用逻辑卷时,可在多个磁盘间扩展文件系统,因为您可以将磁盘和分区集合成一个逻辑卷。
- 重新设定存储池大小 您可以使用检单的软件命令增大或者减小逻辑卷的大小,而无需对所在磁盘设备重新格式化或者重新分区。
- 在线数据重新定位 要部署更新、更快或者更有弹性的存储子系统,以便您可以在系统活跃时移动数据。数据可以在磁盘正在使用时进行重新分配。例如,您可以在删除一个热交换磁盘之前将其清空。
- 方便设备命名 逻辑存储卷可在用户定义的组群中进行管理,这些组群可按您的要求进行命名。
- 磁盘条带 您可以创建一个可在两个或者更多磁盘间条状分布数据的逻辑卷。这可大幅度提高吞吐量。
- 镜像卷 逻辑卷为您提供了一个方便配置数据镜像的方法。
- 卷快照 使用逻辑卷,您可以提取设备快照,这样可在持续备份或者在不影响真实数据的情况下测试修改效果。
使用LVM需要掌握几个新的概念:物理卷,卷组,逻辑卷。对详细说明请参考参考资料中列出的内容。
构建LVM¶
简单流程:
- 使用命令 pvcreate创建PE
- 使用命令 vgcreate创建VG
- 使用命令 lvcreate创建LV
再用mkfs格式化LV,即可以使用LV存储文件数据了。
一个新的磁盘(存储器)插入到系统后会被识别为一个新的独立的文件系统,这类似于我们将一块大磁盘分割为几个小的文件系统(比如windows下经常分的C, D, E......等等分区)。如果你想将一个小的文件系统加入到LVM中,首先需要在这个小的文件系统上建立PE(physical extend),命令:pvcreate。
PV管理¶
- 相关命令有:
- pvchange pvcreate pvmove pvresize pvscan pvck pvdisplay pvremove pvs
创建¶
使用命令pvcreate创建PE,pvcreate的操作会破坏原分区(文件系统)中的数据。
pvcreate /dev/sda1 /dev/sda2 /dev/sda3
# pvcreate后接分区,即可在分区上创建PE
查看PV/PE¶
命令pvdisplay可以用来查看已创建PE的PV(物理卷)的属性,如,大小,PE大小,所属VG等等。例如:
- 默认使用选项-v,显示详细信息
pvdisplay [-v]
# Scanning for physical volume names
# --- Physical volume ---
# PV Name /dev/sda10
# VG Name vg
# PV Size 972.65 MiB / not usable 4.65 MiB
# Allocatable yes
# PE Size 4.00 MiB
# Total PE 242
# Free PE 61
# Allocated PE 181
# PV UUID fGisVN-LA7s-MPJW-F5ZI-gYqC-SS0O-UPNzPI
#
# --- Physical volume ---
# PV Name /dev/sda11
# VG Name vg
# PV Size 972.65 MiB / not usable 4.65 MiB
# Allocatable yes
# PE Size 4.00 MiB
# Total PE 242
# Free PE 223
# Allocated PE 19
# PV UUID I0HjTy-Bcjf-oZG1-4hTR-CxVq-vHF1-DTvzyn
#
# "/dev/sda9" is a new physical volume of "972.65 MiB"
# --- NEW Physical volume ---
# PV Name /dev/sda9
# VG Name
# PV Size 972.65 MiB
# Allocatable NO
# PE Size 0
# Total PE 0
# Free PE 0
# Allocated PE 0
# PV UUID dhL0cH-wS6w-dscI-PXRv-dRLS-aXaN-tzn08w
- 也可以使用选项“ -s|--short“显示精简信息。如:
pvdisplay -s
# Device "/dev/sda10" has a capacity of 244.00 MiB
# Device "/dev/sda11" has a capacity of 892.00 MiB
# Device "/dev/sda9" has a capacity of 972.65 MiB
- 也显示指定分区的信息。
pvdisplay [option] <pv_path>
增加物理卷¶
如果你存放数据的文件系统,随着数据增加,空间不够,需要增加磁盘,怎么把新的磁盘空间增加到原来的文件系统中呢?
确认*/dev*目录下可以发现新加磁盘,然后使用fdisk命令将新磁盘分区(亦可不分)。
最后用pvcreate *PhysicalVolume*在新磁盘上建立PV。
移除物理卷¶
如果需要更换某个磁盘,那怎么办呢?
卷组(VG)管理¶
- 相关命令有:
- vgcreate, vgs, vgdisplay vgreduce, vgextend, vgremove, vgexport, vgimport vgmerge, vgsplit等等
创建VG¶
当完成创建PE之后就可以在相应的分区上建立VG了。使用命令vgcreate来创建VG,如:
# 创建一个VG,其名字为vgName。
vgcreate vg-test /dev/sda9
# Volume group "vg-test" successfully created
Note
1. VG可以使用多个分区,也正是因为这样,LVM才能把多个小的分区(文件系统)联合起 来形成一个大的文件系统 2. 另外,一个分区只能属于一个VG
查看VG信息¶
与查看PV/PE信息一样,使用命令vgdisplay来查看VG的信息。例如:
vgdisplay
# --- Volume group ---
# VG Name vg
# System ID
# Format lvm2
# Metadata Areas 2
# Metadata Sequence No 26
# VG Access read/write
# VG Status resizable
# MAX LV 0
# Cur LV 5
# Open LV 1
# Max PV 0
# Cur PV 2
# Act PV 2
# VG Size 1.89 GiB
# PE Size 4.00 MiB
# Total PE 484
# Alloc PE / Size 200 / 800.00 MiB
# Free PE / Size 284 / 1.11 GiB
# VG UUID DXKStQ-rGBh-kVSa-PDy2-eFvg-FLAx-kELRZX
可以查看到卷组vg的相关信息,其中大部分都可以在创建VG时设定,不过一般我们都会使用默认值,除非你有特殊的要求。
其实查看PE, VG的信息还有其它命令pvs, vgs,这两个命令主要用于生成报告信息,便于SA了解所需的信息。
分割合并卷组¶
逻辑卷(LV)管理¶
- 相关命令:
- lvcreate, lvresize, lvextend, lvreduce, lvremove等等
逻辑卷类似于系统中的分区/dev/sda1, /dev/sda2等等,是用来存储数据的。
创建LV¶
与创建PE,VG类似,创建LV使用命令lvcreate来创建LV。创建一个分区当然要指明这个分区的大小了,还要给一个名字便于查找使用。
lvcreate -L +200M -n lv-test vg-test
上面的命令将在卷组vg-test中创建一个名为lv-test,200M大小的LV。选项*-L*后接LV的大小,单位可以是K(b), M(b), T(b), P(b), E(b);选项*-n*后接LV的名称,最后为已存在的 VG名称(即要在哪个VG上建立LV)。
查看LV属性¶
使用命令lvdisplay来查看LV的相关信息。用法与pvdisplay, vgdisplay类似。如:
lvdisplay /dev/vg/vg-test
# --- Logical volume ---
# LV Name /dev/vg/vg-test
# VG Name vg
# LV UUID DwWf1w-0UMN-61WD-rHF1-pZtM-uec5-z7mGQW
# LV Write Access read/write
# LV Status available
# # open 1
# LV Size 500.00 MiB
# Current LE 125
# Segments 1
# Allocation inherit
# Read ahead sectors auto
# - currently set to 256
# Block device 253:9
线性逻辑卷¶
条状逻辑卷¶
镜像逻辑卷¶
快照卷¶
LVM重要操作¶
使用LVM来构建系统¶
调整LV(逻辑分区)大小¶
情 境:挂载于/usr下的分区LV(逻辑分区)lv_usr空间快被消耗殆尽,怎么办?
解决步骤:
确认VG(卷组)是否有足够的剩余空间。如果剩余空间不足,可以缩小其它剩余空间较 多的LV,也可以增加新磁盘
使用命令lvresize增加lv_usr空间
lvresize -L +increaseNumber /dev/VolGroup/lv_usr
使用命令resize2fs扩大逻辑分区lv_usr上的文件系统,使其与分区大 小一致。此时系统可能提示你要先运行fsck检查一下文件系统
e2fsck -f /dev/VolGroup/lv_usr resize2fs /dev/VolGroup/lv_usr
使用命令lvs确认扩容成功。
Note
关键是:运行lvresize, resize2fs的先后顺序。扩容一定要先运行lvreize扩大分区,再运行resize2fs扩大文件系统
增加或更换磁盘¶
情境:由于某个块磁盘年代比较久远,性能较差,需要更换新的磁盘,利用LVM如何在系统 不停机的情形下更换硬盘?
现在情况为:系统中有一块磁盘/dev/sda,在其上有一个分区/dev/sda1,/dev/sda1为VG( 卷组)VGroup中的P,其中有很多LV
完成步骤:
将新的硬盘经测试后安装到系统上并进行分区(此处我们假定新磁盘为/dev/sdb1)
使用命令pvcreate将新的磁盘加入到PV(物理卷)
pvcreate /dev/sdb1
使用命令vgextend将/dev/sdb1加入到卷组VGroup中
vgextend VGroup /dev/sdb1
在线使用命令pvmove将/dev/sda1上的数据转移/dev/sdb1
pvmove /dev/sda1 /dev/sdb1
使用命令vgreduce将磁盘/dev/sda1从卷组VGroup中移除
vgreduce VGroup /dev/sda1
使用命令pvremove将磁盘/dev/sda1从PV中移除
pvremove /dev/sda1
将原磁盘拆下即可