Linux操作系统-逻辑卷管理LVM
Linux操作系统-逻辑卷管理LVM逻辑卷管理LVM Linux系统中随着数据量的不断增长单个物理硬盘或单个磁盘分区因磁盘空间有限可能无法满足数据存储需求。为解决磁盘空间不足问题Linux引入了逻辑卷管理LVM技术允许用户灵活地管理和扩展存储资源。逻辑卷管理 LVMLogical Volume Manager是Linux系统下的一个逻辑卷管理工具它提供了一个抽象层允许用户对物理硬盘进行更灵活的管理。LVM通过将物理硬盘或磁盘分区转换为物理卷PV然后将物理卷组合成卷组VG最后在卷组上创建逻辑卷LV来实现对存储资源的灵活管理。一、LVM术语物理卷PV, Physical Volume 物理卷就是指磁盘、磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID)是LVM的基本存储逻辑块但和基本的物理存储介质如分区、磁盘等比较却包含有和LVM相关的管理参数。 比如你新添加了一块磁盘 /dev/sdb, 那么你可以将整块磁盘/dev/sdb 标记成一个PV也可以先对/dev/sdb 分区如分了两个主分区/dev/sdb1 和 /dev/sdb2 然后将这两个分区/dev/sdb1 和 /dev/sdb2 分别标记成一个PV。卷组VG, Volume Group LVM卷组类似于非LVM系统中的物理硬盘其由物理卷组成相当于磁盘容量总和的一个存储池。能在卷组上创建一个或多个“LVM分区”逻辑卷LVM卷组由一个或多个物理卷组成。逻辑卷LV, Logical VolumeLVM的逻辑卷类似于非LVM系统中的硬盘分区在逻辑卷之上能建立文件系统(比如/tmp或/var等)。PEphysical extent) 每一个物理卷被划分为称为PE(Physical Extents)的基本单元具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的默认为4MB。LElogical extent 逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中LE的大小和PE是相同的并且一一对应。总的来说 使用LVM 机制创建一个LV 的过程是一块硬盘物理存储介质被格式化为物理卷**physical volume)**其内部被分成若干个默认大小为4M的PEphysical extent然后在PV的基础上创建卷组Volume Group可以把一个或者多个PV加到VG中VG就好像一个空间池有多少个PVVG就有多大的容量最后基于VG创建逻辑卷logical volume 一个逻辑卷就是若干个PE然后将LV格式化再挂载将LV当成传统磁盘划分里面的磁盘分区)。二、LVM卷类型 在 LVM 中您可以选择使用线性逻辑卷Linear LV或条带逻辑卷Striped LV来管理存储空间。这两种方式在磁盘资源的利用和性能方面有所不同。线性逻辑卷Linear LV 线性逻辑卷是 LVM 中的一种基本形式它将物理卷上的数据按照线性顺序进行存储。换句话说数据从一个物理卷的末尾延伸到下一个物理卷的开始依次类推直到所有物理卷都被使用完毕。特点数据按照线性顺序存储从一个物理卷延伸到下一个物理卷。简单直观易于管理。适用于小型环境或者对数据读取顺序要求不高的场景。条带逻辑卷Striped LV 条带逻辑卷是一种高级形式的逻辑卷它将数据分布在多个物理卷之间以提高读写性能和并发能力数据被分成固定大小的条带或块依次存储在不同的物理卷上。特点数据被分割成条带并分布在多个物理卷上增加了读写并发能力和性能。更好地利用了磁盘资源提高了磁盘IO适用于对性能要求较高、需要大量并发读写操作的场景。数据安全性对比 线性逻辑卷和条带逻辑卷在数据安全性上差异显著主要体现在故障影响范围和数据恢复可能性上。线性卷在磁盘故障时仍有望恢复部分数据而条带卷一旦有一块磁盘损坏则可能导致卷内所有数据的丢失。特性维度线性逻辑卷 (Linear Logical Volume)条带逻辑卷 (Striped Logical Volume)基本原理数据按顺序写入磁盘写满第一个才写入第二个数据被分割成小块条带并行写入多个磁盘类似RAID 0主要目标方便地聚合多个磁盘的存储空间追求极致I/O性能通过并行读写提升吞吐量数据安全性提供有限的数据恢复可能性灾难性数据丢失风险极高故障影响单个磁盘故障仅损失该磁盘上的数据单个磁盘故障可能导致整个卷的数据都不可访问或损坏数据恢复有机会恢复幸存的、未被损坏的文件几乎所有文件都会丢失恢复难度极大应用场景通用存储、文件服务器对性能要求不高高性能计算、数据库日志、临时数据单点故障影响小的场景 综上不过是线性卷还是条带卷都不适合存储对数据安全性要求高的数据只适合存储一些对容量要求较高对数据安全性风险要求低或可有可无的数据如应用日志。三、LVM操作硬盘分区 首先使用fdisk、parted等工具检测系统中的新硬盘并对其进行分区根据需要选择合适的分区类型和大小不分区也可用整块磁盘创建物理卷所以分区不是必选项看实际情况而定。创建物理卷 使用pvcreate命令将新硬盘的分区转换成物理卷PV。例如假设新硬盘的设备路径为/dev/sdc和/dev/sde执行以下命令将其转换为物理卷pvcreate /dev/sdc /dev/sde创建卷组 使用vgcreate命令将创建好的物理卷处理成卷组VG。例如创建一个名为testvg的卷组包含/dev/sdc和/dev/sde这两个物理卷vgcreate testvg /dev/sdc /dev/sde创建逻辑卷 使用lvcreate命令将卷组分成若干个逻辑卷LV。例如在myvg卷组上创建一个名为mylv的逻辑卷大小为10GBlvcreate -L 10G -n testlv testvg格式化逻辑卷 使用mkfs命令对逻辑卷进行格式化以便存储数据。例如将testlv逻辑卷格式化为ext4文件系统mkfs.ext4 /dev/testvg/testlv挂载逻辑卷 创建一个目录作为逻辑卷的挂载点然后使用mount命令将逻辑卷挂载到该目录。例如将testlv逻辑卷挂载到/testdir目录mkdir /testdir echo /dev/testvg/testlv /testdir ext4 defaults 0 0 /etc/fstab mount -adf -h现在新硬盘已经成功挂载到Linux系统中并且可以通过LVM进行灵活的管理和扩展。四、LVM扩容操作 当需要扩展逻辑卷的大小时可以使用lvextend命令进行扩容。例如将testlv逻辑卷的大小扩展为20GBlvextend -L 20G /dev/testvg/testlv 扩容后需要更新文件系统的容量以识别新的空间。对于ext2、ext3、ext4文件系统可以使用resize2fs命令对于xfs文件系统可以使用xfs_growfs命令。例如更新testlv逻辑卷上的ext4文件系统resize2fs /dev/testvg/testlvtestlv逻辑卷的大小已经成功扩展为20GB并且文件系统已经更新了容量。若LV使用的是xfs文件系统例如更新testlv2逻辑卷上的xfs文件系统则执行以下命令进行更新xfs_growfs /dev/testvg/testlv2完成以上步骤后testlv2逻辑卷的大小已经成功扩展为20GB并且文件系统已经更新了容量。五、LVM常用命令pvdisplay #显示物理卷的属性信息vgdisplay [卷组名] #显示卷组的属性信息lvdisplay #查看逻辑卷属性信息pvs #查看卷组lvs #查看逻辑卷pvcreate #创建物理卷vgcreate 卷组名 物理卷全路径名[物理卷全路径名] #创建卷组lvcreate #创建逻辑卷vgrename 原卷组名 新卷组名 #卷组重命名vgcfgbackup [卷组名] #把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件vgcfgrestore -n 卷组名 物理卷全路命名 #从备份文件中必得指定物理卷的信息卷组的建立与删除命令vgremove 卷组名 #删除卷组vgextend 卷组名 物理卷全路径名[物理卷全路径名] #将物理卷加入卷组vgreduce 卷组名 物理卷全路径名[物理卷全路径名] #将物理卷从卷组中移除lvremove #删除逻辑卷lvextend -L|–size 逻辑卷大小增量 逻辑卷全路径名lvreduce q -L|–size 逻辑卷减小量 逻辑卷全路径名pvremove #移除物理卷lvscan #扫描逻辑卷pvmove /dev/sdb /dev/sdd #迁移pv,可以不停机检修