Linux系统之lvcreate命令使用解读

2025-07-25 20:50

本文主要是介绍Linux系统之lvcreate命令使用解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R...

lvcreate命令详解

一、命令概述

lvcreateLVM(逻辑卷管理)工具集中用于创建逻辑卷(LV) 的核心命令,支持创建多种类型的逻辑卷,包括线性卷、条带化卷、镜像卷、RAID卷、快照卷、瘦池(thin pool)及缓存池(cache pool)等。

其核心功能是从卷组(VG)中分配物理扩展(PE),为新逻辑卷分配空间,并根据指定类型配置存储策略(如条带化提升性能、RAID提供冗余),适用于灵活管理存储资源、满足不同性能和可靠性需求的场景。

二、语法格式

lvcreate 的语法根据逻辑卷类型不同而有所变化,基本结构如下:

lvcreate [选项]... 卷组名[\/逻辑卷名]

参数说明

  • 选项:控制逻辑卷的类型、大小、分配策略、激活状态等(详细选项见下文)。
  • 卷组名:目标卷组(VG)的名称,新逻辑卷将在该卷组中创建。
  • 逻辑卷名:可选,通过 -n|--name 指定,未指定时默认生成以 lvol 为前缀的名称(如 lvol0)。

三、核心功能

lvcreate 支持创建多种类型的逻辑卷,适配不同存储需求,核心类型及特点如下:

逻辑卷类型特点与用途
线性卷(linear)最基础的LV类型,空间连续分配,适用于普通存储场景。
条带化卷(striped)数据分散存储在多个物理卷(PV)上,提升读写性能,适合大文件频繁访问场景。
RAID卷(raid)支持RAID1/4/5/6/10等级别,提供数据冗余或性能优化(如RAID1镜像、RAID5奇偶校验)。
镜像卷(mirror)数据同步到多个镜像副本,提供高可用性(传统实现,推荐优先使用RAID1)。
快照卷(snapshot)基于源LV创建只读/可写快照,用于备份或测试(分为COW快照和瘦快照)。
瘦池(thin-pool)支持瘦 provisioning(按需分配空间),提高存储利用率,适合动态扩展场景。
缓存池(cache-pool)结合高速存储(如SSD)加速慢速存储(如HDD)的访问,提升读写性能。

四、选项详解

1. 基本配置选项(必选)

选项长选项说明
-L 大小--size 大小指定逻辑卷的实际大小(如 10G、500M),单位支持 k(KiB)、M(MiB)、G(GiB)等(基础2进制单位)。
-l 数量[%]--extents 数量[%]以逻辑扩展(LE)数指定大小,可搭配百分比:
- 100%VG:使用卷组全部空间;
- 50%FREE:使用卷组空闲空间的50%;
- 20%ORIGIN(快照用):使用源LV大小的20%作为COW空间。
-n 名称--name 名称指定新逻辑卷的名称(如 -n data_lv)。

2. 类型与功能选项(核心)

选项长选项说明
--type 类型-指定逻辑卷类型:
- linear:线性卷(默认);
- striped:条带化卷;
- raid1/5/6/10:RAID卷;
- mirror:镜像卷;
- snapshot:快照卷;
- thin:瘦卷;
- thin-pool:瘦池;
- cache/cache-pool:缓存卷/缓存池。
-i 数量--stripes 数量条带化卷或RAID卷的条带数(即分散的PV数量),如 -i 3 表示数据分散到3个PV。
-I 大小--stripesize 大小条带化卷或RAID卷的条带大小(如 64k),即每个PV上连续写入的数据量。
-m 数量--mirrors 数量镜像卷或RAID1的镜像副本数(不含原始数据),如 -m 1 表示1个副本(共2份数据)。
-s--snapshot创建快照卷,需指定源LV(如 lvcreate -s vg00/origin_lv)。
-V 大小--virtualsize 大小瘦卷(thin LV)的虚拟大小(实际空间按需分配),如 -V 100G 表示虚拟100GiB。
--thinpool 瘦池名-为瘦卷指定关联的瘦池(如 --thinpool tp01)。

3. 激活与分配选项

选项长选项说明
-a y|n|ay--activate y|n|ay控制新LV的激活状态:
- y:创建后立即激活(默认);
- n:不激活;
- ay:自动激活(仅匹配 lvm.conf 配置的LV)。
--alloc 策略-物理扩展(PE)的分配策略:
- normal:默认策略(避免条带在同一PV);
- contiguous:连续分配;
- anywhere:允许任意分配(可能降低性能)。

4. 高级选项(特定场景)

选项长选项说明
-c 大小--chunksize 大小快照、瘦池或缓存池China编程的块大小(如 64k),影响空间分配粒度。
--mirrorlog core|disk-镜像卷的日志类型:
- disk:持久化日志(需额外PV);
- core:内存日志(重启后需重新同步)。
--nosync-创建RAID或镜像卷时跳过初始同步(加快创建速度,适用于空卷)。
-Z y|n--zero y|n是否清零LV的前4KiB空间(默认 y,避免挂载时系统挂起)。

五、使用示例

1. 创建逻辑卷(LV)

1.1 创建线性逻辑卷

lvcreate -L <Size> -n <LVName> <VG>

功能:创建线性逻辑卷(数据按顺序存储)。

参数

  • -L|--size <Size>:指定逻辑卷的大小(单位:k/m/g/t)。
  • -n|--name <LVName>:指定逻辑卷的名称。
  • <VG>:指定卷组名称。

示例

lvcreate -L 10G -n my_lv vg0

1.2 创建条带化(Striped)逻辑卷

lvcreate -i <Stripes> -I <StripeSize> -L <Size> -n <LVName> <VG>

功能:创建条带化逻辑卷(数据跨多个物理卷分布)。

参数

  • -i|--stripes <Stripes>:指定条带数量(使用的物理卷数)。
  • -I|--stripesize <StripeSize>:指定条带大小(单位:k)。

示例

lvcreate -i 3 -I 64k -L 50G -n striped_lv vg0

1.3 创建镜像(Mirror)或 RAID1 逻辑卷

lvcreate --type mirror -m <Mirrors> -L <Size> -n <LVName> <VG>
# 或
lvcreate --type raid1 -m <Mirrors> -L <Size> -n <LVName> <VG>

功能:创建镜像(mirror)或 RAID1 逻辑卷。

参数

  • -m|--mirrors <Mirrors>:指定镜像副本数(如 1 表示两副本)。
  • --type mirror/raid1:指定逻辑卷类型。

示例

lvcreate --type mirror -m 1 -L 20G -n mirror_lv vg0

1.4 创建 RAID 逻辑卷(RAID5/RAID6/RAID10)

lvcreate --type raid5 -i <Stripes> -I <StripeSize> -L <Size> -n <LVName> <VG>
lvcrpythoneate --type raid6 -i <Stripes> -I <StripeSize> -L <Size> -n <LVName> <VG>
lvcreate --type raid10 -i <Stripes> -m <Mirrors> -L <Size> -n <LVName> <VG>

功能:创建 RAID5、RAID6 或 RAID10 逻辑卷。

参数

  • -i|--stripes <Stripes>:指定数据条带数(RAID5/RAID6 需满足设备数要求)。
  • -m|--mirrors <Mirrors>:指定镜像副本数(RAID10 使用)。

示例

lvcreate --type raid5 -i 3 -I 64k -L 100G -n raid5_lv vg0

1.5 创建快照(Snapshot)

1.5.1 创建 COW 快照
lvcreate --snapshot -s -L <Size> -n <SnapName> <OriginLV>

功能:创建基于原卷的 Copy-on-Write 快照。

参数

  • -s|--snapshot:指定快照类型。
  • -L|--size <Size>:快照预留空间大小。
  • <OriginLV>:原逻辑卷路径(如 vg0/origin_lv)。

示例

lvcreate --snapshot -s -L 10G -n snap_lv vg0/origin_lv
1.5.2 创建稀疏快照(Sparse Snapshot)
lvcreate --snapshot -s -V <VirtualSize> -L <Size> -n <SnapName> <VG>

功能:创建稀疏快照(虚拟空间与实js际空间分离)。

参数

  • -V|--virtualsize <VirtualSize>:虚拟空间大小。

示例

lvcreate --snapshot -s -V 1T -L 100M -n sparse_snap vg0

1.6 创建薄配置(Thin Provisioning)

1.6.1 创建薄池(Thin Pool)
lvcreate --type thin-pool -L <PoolSize> -n <PoolName> <VG>

功能:创建薄池(用于管理薄逻辑卷)。

参数

  • --type thin-pool:指定薄池类型。

示例

lvcreate --type thin-pool -L 100G -n thin_pool vg0
1.6.2 创建薄逻辑卷
lvcreate --type thin -V <VirtualSize> --thinpool <PoolName> -n <ThinLVName> <VG>

功能:基于薄池创建薄逻辑卷。

参数

  • --type thin:指定薄逻辑卷类型。
  • --thinpool <PoolName>:关联的薄池名称。

示例

lvcreate --type thin -V 50G --thinpool thin_pool -n thin_lv vg0

1.7 创建缓存(Cache)逻辑卷

1.7.1 创建缓存池(Cache Pool)
lvcreate --type cache-pool -L <CacheSize> -n <CachePoolName> <VG>

功能:创建缓存池(用于加速逻辑卷性能)。

参数

  • --type cache-pool:指定缓存池类型。

示例

lvcreate --type cache-pool -L 10G -n cache_pool vg0
1.7.2 创建缓存逻辑卷
lvcreate --type cache -L <Size> --cachepool <CachePoolName> -n <CacheLVName> <VG>

功能:将缓存池与标准逻辑卷结合,创建缓存逻辑卷。

参数

  • --type cache:指定缓存逻辑卷类型。
  • --cachepool <CachePoolName>:关联的缓存池名称。

示例

lvcreate --type cache -L 50G --cachepool cache_pool -n cache_lv vg0

2. 高级选项

2.1 指定分配策略

lvcreate --alloc <Policy> <其他参数>

功能:控制物理卷分配策略。

参数

  • <Policy>:可选值为 normal(默认)、contiguous(连续分配)、anywhere(任意分配)等。

示例

lvcreate --alloc anywhere -L 10G -n any_lv vg0

2.2 设置读取超前(Read Ahead)

lvcreate -r <ReadAheadSize> <其他参数>

功能:设置逻辑卷的读取超前大小。

参数

  • -r|--readahhttp://www.chinasem.cnead <ReadAheadSize>:指定读取超前大小(单位:扇区)。

示例

lvcreate -r 128 -L 10G -n readahead_lv vg0

2.3 设置 RAID 同步区域大小

lvcreate -R <RegionSize> <其他参数>

功能:调整 RAID 同步区域的大小。

参数

  • -R|--regionsize <RegionSize>:指定同步区域大小(单位:m)。

示例

lvcreate -R 512k --type raid1 -L 20G -n raid1_lv vg0

3. 常见操作示例

3.1 创建 RAID5 逻辑卷

lvcreate --type raid5 -i 3 -I 64k -L 100G -n raid5_lv vg0
  • 说明:创建 3 条带、64k 条带大小的 RAID5 卷。

3.2 创建薄快照

lvcreate --type thin -V 50G --thinpool thin_pool -n thin_snap vg0
  • 说明:基于薄池 thin_pool 创建 50G 虚拟空间的薄快照。

3.3 创建缓存逻辑卷

lvcreate --type cache -L 50G --cachepool cache_pool -n cache_lv vg0
  • 说明:将缓存池 cache_pool 与 50G 逻辑卷结合,创建缓存卷。

六、注意事项

  1. 空间分配:创建LV前需确保卷组(VG)有足够空闲空间,可通过 vgs 命令检查。
  2. RAID要求:不同RAID级别需特定数量的PV(如RAID5需至少3个PV,含1个奇偶校验)。
  3. 快照管理:COW快照的大小需根据源LV的预期写入量设置,空间不足时会失效(可通过 lvextend 扩展)。
  4. 瘦池特性:瘦卷的虚拟大小可远大于实际分配空间,但需监控瘦池使用率,避免满空间导致I/O错误。
  5. 性能权衡:条带化提升并行读写性能,但增加PV负载;RAID提供冗余但消耗额外空间。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于Linux系统之lvcreate命令使用解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155487

相关文章

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l