Linux系统中如何创建逻辑卷(LV)?详细操作步骤是怎样的?

在Linux系统中,逻辑卷(Logical Volume,LV)是LVM(Logical Volume Manager,逻辑卷管理器)的核心组件之一,它允许用户灵活地管理磁盘空间,突破传统分区的限制,实现动态扩容、缩减等操作,创建LV的过程涉及物理卷(PV)、卷组(VG)和逻辑卷(LV)的层层管理,下面将详细介绍完整的操作步骤及相关注意事项。

linux如何建lv

LVM基础概念

在创建LV之前,需先理解LVM的核心组件及其关系:

  • 物理卷(Physical Volume,PV):底层物理存储设备,可以是磁盘分区、整块磁盘或LUN(逻辑单元号),PV通过初始化加入LVM管理,其空间会被划分为多个物理扩展(Physical Extent,PE),默认PE大小为4MB(可自定义)。
  • 卷组(Volume Group,VG):由一个或多个PV组成,类似一个“存储池”,将分散的物理空间整合为统一的逻辑资源,VG中的PE会统一编号和管理。
  • 逻辑卷(Logical Volume,LV):从VG中划分出的逻辑设备,用户可直接格式化并挂载使用,LV的大小由若干PE组成,可根据需求动态调整。

创建LV的完整步骤

准备物理设备

创建LV前需先准备物理设备,可以是未分区的整块磁盘或磁盘分区(类型需为“Linux LVM”,ID为8e),以/dev/sdb整块磁盘为例(若使用分区,如/dev/sdb1,操作类似):

# 查看磁盘信息(确认磁盘未挂载且无重要数据)
fdisk -l | grep /dev/sdb
# 若磁盘已有分区,需先删除(注意:操作会清空数据!)
fdisk /dev/sdb
# 进入fdisk交互界面,输入'd'删除分区,'w'保存退出

创建物理卷(PV)

使用pvcreate命令将物理设备初始化为PV:

pvcreate /dev/sdb

执行后可通过以下命令验证PV创建结果:

pvdisplay  # 显示PV详细信息
pvscan      # 扫描系统中的PV

创建卷组(VG)

使用vgcreate命令将一个或多个PV组成VG,需指定VG名称和PV路径,可自定义PE大小(默认4MB,通过-s参数调整):

# 基本语法:vgcreate [VG名称] [PV路径]
vgcreate myvg /dev/sdb
# 自定义PE大小(如8MB)
vgcreate -s 8M myvg /dev/sdb

验证VG创建结果:

linux如何建lv

vgdisplay  # 显示VG详细信息(如PE大小、总PE数等)
vgscan      # 扫描系统中的VG

创建逻辑卷(LV)

使用lvcreate命令从VG中划分LV,需指定LV名称、大小(-L指定绝对大小,-l指定PE数)及所属VG:

# 基本语法:lvcreate -n [LV名称] -L [大小] [VG名称]
# 示例1:创建10GB的LV(名称:mylv)
lvcreate -n mylv -L 10G myvg
# 示例2:基于PE数创建(假设VG的PE大小为8MB,100个PE=800MB)
lvcreate -n mylv -l 100 myvg
# 创建精简逻辑卷(Thin Provisioning,适用于超分配场景)
# 先创建精简池(Thin Pool),再从池中创建精简LV
lvcreate -n mypool -L 20G myvg  # 创建20GB精简池
lvcreate -n mythinlv -V 5G -T myvg/mypool  # 从精简池创建5GB精简LV

验证LV创建结果:

lvdisplay  # 显示LV详细信息(如路径:/dev/myvg/mylv)
lvscan      # 扫描系统中的LV

格式化LV

创建的LV是空白设备,需格式化文件系统才能使用,常用文件系统为ext4或xfs:

# 格式化为ext4
mkfs.ext4 /dev/myvg/mylv
# 格式化为xfs(支持在线扩容,无需调整文件系统)
mkfs.xfs /dev/myvg/mylv

挂载LV并设置开机挂载

创建挂载点并挂载LV,同时配置/etc/fstab实现开机自动挂载:

# 创建挂载点
mkdir /data
# 挂载LV
mount /dev/myvg/mylv /data
# 验证挂载(df -h)
df -h | grep /data
# 配置开机挂载(编辑/etc/fstab)
echo "/dev/myvg/mylv /data ext4 defaults 0 0" >> /etc/fstab
# 若为xfs文件系统,替换为:"/dev/myvg/mylv /data xfs defaults 0 0"

LV管理操作(扩容与缩减)

扩容LV

扩容需分两步:先扩容LV本身,再扩容文件系统(ext4需手动调整,xfs支持在线调整)。

  • 扩容LV

    linux如何建lv

    # 增加容量(如+5GB)
    lvextend -L +5G /dev/myvg/mylv
  • 扩容文件系统

    # ext4文件系统(需先卸载或在线挂载时使用-L参数)
    resize2fs /dev/myvg/mylv  # 或在线扩容:resize2fs -L +5G /dev/myvg/mylv
    # xfs文件系统(支持在线扩容)
    xfs_growfs /data  # 挂载点路径

缩减LV

注意:缩减LV有数据丢失风险,操作前务必备份! 需先卸载LV,检查文件系统,再缩减LV和文件系统(仅ext4支持缩减,xfs不支持在线缩减且操作复杂)。

# 1. 卸载LV
umount /dev/myvg/mylv
# 2. 检查文件系统(ext4)
e2fsck -f /dev/myvg/mylv
# 3. 缩减文件系统(如缩减到8GB)
resize2fs /dev/myvg/mylv 8G
# 4. 缩减LV
lvreduce -L 8G /dev/myvg/mylv
# 5. 重新挂载并验证
mount /dev/myvg/mylv /data
df -h | grep /data

常用LVM命令速查表

命令 功能描述 示例
pvcreate 初始化物理卷 pvcreate /dev/sdb
pvdisplay 显示PV详细信息 pvdisplay /dev/sdb
vgcreate 创建卷组 vgcreate myvg /dev/sdb
vgdisplay 显示VG详细信息 vgdisplay myvg
lvcreate 创建逻辑卷 lvcreate -n mylv -L 10G myvg
lvdisplay 显示LV详细信息 lvdisplay /dev/myvg/mylv
lvextend 扩容LV lvextend -L +5G /dev/myvg/mylv
lvreduce 缩容LV lvreduce -L 8G /dev/myvg/mylv
pvremove 删除物理卷(需先从VG移除) pvremove /dev/sdb
vgreduce 从VG中移除PV vgreduce myvg /dev/sdb
vgremove 删除卷组(需先删除所有LV) vgremove myvg
lvremove 删除逻辑卷 lvremove /dev/myvg/mylv

注意事项

  1. 数据备份:LVM操作(尤其是缩减、删除)可能导致数据丢失,操作前务必备份重要数据。
  2. 文件系统兼容性:ext4支持在线扩容和缩减(需卸载),xfs仅支持在线扩容,不支持缩减。
  3. PE大小选择:PE大小影响LV的最小分配粒度和VG空间利用率,默认4MB适用于大多数场景,大容量存储可适当增大(如16M)。
  4. 精简逻辑卷:精简池允许分配超过实际物理容量的空间,但需监控使用率,避免因空间耗尽导致数据损坏。

相关问答FAQs

问题1:创建LV时提示“Failed to find physical volume “/dev/sdb””,如何解决?
解答:该错误通常是因为物理设备未初始化为PV,需先执行pvcreate /dev/sdb创建PV,再创建VG和LV,若设备正在使用(如已挂载),需先卸载:umount /dev/sdb(若为分区,则卸载对应分区)。

问题2:LV扩容后,文件系统大小未变化(df -h显示未扩容),如何处理?
解答:这是因为LV扩容后仅增加了逻辑空间,文件系统未同步调整,需根据文件系统类型执行对应命令:

  • ext4resize2fs /dev/myvg/mylv(若在线挂载,可加-L指定新大小);
  • xfsxfs_growfs /data(挂载点路径,支持在线扩容)。
    若仍无变化,检查VG是否有足够剩余空间(vgdisplay myvg查看“Free PE”),若不足需先扩容VG(添加新PV并vgextend)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38239.html

(0)
酷番叔酷番叔
上一篇 2025年10月8日 09:43
下一篇 2025年10月8日 09:59

相关推荐

  • 为什么你努力却失败,别人轻松成功?

    在Linux系统中配置互信(SSH无密码登录)是管理多台服务器、实现自动化运维的关键技术,以下为详细操作指南,严格遵循OpenSSH官方规范,兼顾安全性与实用性:互信原理通过非对称加密实现身份验证:私钥(~/.ssh/id_rsa):本地保留,需严格保密公钥(~/.ssh/id_rsa.pub):分发到目标服务……

    2025年6月13日
    6800
  • Linux中如何修改GRUB配置文件?

    在Linux系统中,GRUB(Grand Unified Bootloader)是广泛使用的引导加载程序,负责在系统启动时加载内核并初始化系统,修改GRUB配置文件可以自定义启动选项、默认启动项、超时时间等,满足个性化或故障排查需求,本文将详细介绍Linux中修改GRUB配置文件的完整流程,包括配置文件位置、关……

    2025年9月21日
    3900
  • Linux中如何设置环境变量的具体步骤与方法?

    在Linux系统中,环境变量是操作系统和运行程序用来存储配置信息的关键机制,它们定义了 shell 和进程的运行环境,比如命令搜索路径、默认编辑器、系统语言等,正确设置环境变量能帮助用户定制个性化工作环境,优化程序运行效率,本文将详细介绍Linux中设置环境变量的方法,包括临时设置、用户级持久化设置和系统级全局……

    2025年9月25日
    3900
  • Linux中如何获取文件夹?具体操作方法有哪些?

    在Linux系统中,“获取文件夹”通常涉及多种操作场景,如查看文件夹基本信息、列出内容、获取权限属性、统计大小,或从远程服务器下载文件夹等,本文将详细讲解不同场景下的具体命令和用法,帮助用户高效完成文件夹信息的获取与管理,本地文件夹信息获取查看文件夹基本属性要获取文件夹本身的元数据(如权限、所有者、大小、修改时……

    2025年9月27日
    3400
  • 占用TCP端口8080如何终止?

    端口占用的原理端口分类0-1023:系统特权端口(需root权限),如HTTP(80)、SSH(22),1024-49151:用户端口,供普通应用程序使用,49152-65535:动态/私有端口,占用本质进程通过调用bind()系统调用绑定IP和端口,再通过listen()进入监听状态,手动占用端口的步骤方法1……

    2025年6月22日
    7500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信