菜鸟科技网

LVM管理命令有哪些?如何创建、扩展、缩减逻辑卷?快照如何使用?

LVM 核心概念

在执行命令前,必须理解 LVM 的三个核心组件:

LVM管理命令有哪些?如何创建、扩展、缩减逻辑卷?快照如何使用?-图1
(图片来源网络,侵删)
  1. 物理卷

    • 是什么:LVM 的基本存储块,可以是整个硬盘、一个硬盘分区或一个 RAID 设备。
    • 类比:一堆砖块。
  2. 卷组

    • 是什么:由一个或多个物理卷组成的存储池,您可以将多个物理卷合并成一个大的卷组,以提供更大的连续存储空间。
    • 类比:用砖块砌成的一面墙。
  3. 逻辑卷

    • 是什么:从卷组中划分出的逻辑分区,您可以根据需要创建、调整大小或删除逻辑卷,这些逻辑卷可以被格式化并挂载为文件系统。
    • 类比:从墙上划分出的不同房间。

数据流向:物理卷 → 卷组 → 逻辑卷 → 文件系统 → 挂载点

LVM管理命令有哪些?如何创建、扩展、缩减逻辑卷?快照如何使用?-图2
(图片来源网络,侵删)

LVM 管理命令详解

以下命令将按照 LVM 的生命周期进行组织:创建 → 管理 → 扩容/缩容 → 删除

(一) 创建 LVM 环境

目标:将新的硬盘或分区转换为 LVM 可用的结构。

  1. 准备物理设备

    • 确保您有一块新的、未分区的硬盘(/dev/sdb),或者一个未格式化的分区(/dev/sdb1)。
    • 使用 fdiskparted 进行分区(如果需要)。
      # 使用 fdisk 为 /dev/sdb 创建一个全盘分区
      fdisk /dev/sdb
      # 在 fdisk 中,按 'n' 创建新分区,按 'p' 选择主分区,按 '1' 分区号,
      # 然后按两次回车使用默认的起始和结束扇区,最后按 'w' 保存。
  2. 创建物理卷

    LVM管理命令有哪些?如何创建、扩展、缩减逻辑卷?快照如何使用?-图3
    (图片来源网络,侵删)
    • 使用 pvcreate 命令将设备初始化为物理卷。
      # 对整个硬盘 /dev/sdb 创建 PV
      sudo pvcreate /dev/sdb

    对分区 /dev/sdb1 创建 PV

    sudo pvcreate /dev/sdb1

  3. 创建卷组

    • 使用 vgcreate 命令创建一个新的卷组,并将一个或多个 PV 加入其中。
      # 创建名为 myvg 的卷组,使用 /dev/sdb
      sudo vgcreate myvg /dev/sdb

    创建名为 myvg 的卷组,使用多个 PV

    sudo vgcreate myvg /dev/sdb1 /dev/sdc1

  4. 创建逻辑卷

    • 使用 lvcreate 命令从卷组中创建逻辑卷。
      # 在 myvg 中创建一个名为 mylv 的逻辑卷,大小为 10G
      sudo lvcreate -L 10G -n mylv myvg

    在 myvg 中创建一个名为 mydata 的逻辑卷,使用 50% 的卷组空间

    sudo lvcreate -l 50%FREE -n mydata myvg

    在 myvg 中创建一个名为 mycache 的逻辑卷,大小为 500M

    sudo lvcreate -L 500M -n mycache myvg

    
    *   **常用选项**:
        *   `-L` 或 `--size`: 指定逻辑卷的大小,单位可以是 K, M, G, T。
        *   `-l` 或 `--extents`: 指定逻辑卷的大小,使用 PE(Physical Extent)的数量。
        *   `-n` 或 `--name`: 指定逻辑卷的名称。
  5. 格式化并挂载

    • 创建逻辑卷后,它会被创建为块设备,路径通常为 /dev/<卷组名>/<逻辑卷名>/dev/myvg/mylv
    • 使用 mkfs 命令格式化该设备。
      # 格式化为 ext4 文件系统
      sudo mkfs.ext4 /dev/myvg/mylv
    • 创建挂载点并挂载。
      # 创建挂载点
      sudo mkdir /mnt/mydata

    挂载逻辑卷

    sudo mount /dev/myvg/mylv /mnt/mydata

    查看挂载情况

    df -h

  6. 开机自动挂载

    • 为了让系统重启后自动挂载,需要编辑 /etc/fstab 文件。
      # 获取逻辑卷的 UUID
      sudo blkid /dev/myvg/mylv

    编辑 fstab

    sudo vim /etc/fstab

    添加以下行 (请替换为实际的 UUID)

    UUID= /mnt/mydata ext4 defaults 0 2


(二) 查看 LVM 信息

目标:了解当前 LVM 的状态和配置。

  1. 查看所有物理卷

    sudo pvdisplay
    # 或者使用更简洁的命令
    sudo pvs
  2. 查看所有卷组

    sudo vgdisplay
    # 或者使用更简洁的命令
    sudo vgs
  3. 查看所有逻辑卷

    sudo lvdisplay
    # 或者使用更简洁的命令
    sudo lvs
  4. 查看 LVM 的整体结构

    # 以树状图形式显示 PV, VG, LV 的关系
    sudo pvscan
    sudo vgscan
    sudo lvscan
    # 一个非常强大的综合查看命令
    sudo lvs -o +vg_name,lv_path,lv_size,lv_tags

(三) 扩容 LVM

目标:为逻辑卷增加空间。

重要:扩容分为两步:

  1. 扩容 LVM 层:增大逻辑卷的大小。

  2. 扩容文件系统层:让文件系统识别并使用新增的空间。

  3. 扩容逻辑卷

    • 假设我们要将 /dev/myvg/mylv 从 10G 扩容到 20G。
      # 增加 10G 空间
      sudo lvextend -L +10G /dev/myvg/mylv

    或者直接指定最终大小为 20G

    sudo lvextend -L 20G /dev/myvg/mylv

  4. 扩容文件系统

    • 对于 ext2/ext3/ext4 文件系统:

      # 检查文件系统
      sudo e2fsck -f /dev/myvg/mylv
      # 调整文件系统大小以填满逻辑卷
      sudo resize2fs /dev/myvg/mylv
    • 对于 XFS 文件系统:

      # XFS 文件系统在线扩容非常方便,无需卸载
      sudo xfs_growfs /mnt/mydata
      # 或者指定设备路径
      # sudo xfs_growfs /dev/myvg/mylv
  5. 验证扩容结果

    df -h

(四) 缩容 LVM

目标:减小逻辑卷的大小。

⚠️ 警告:缩容操作有风险,可能导致数据丢失!请务必提前备份所有重要数据!

重要:缩容的顺序与扩容相反:

  1. 缩容文件系统层:先缩小文件系统的大小。

  2. 缩容 LVM 层:再缩小逻辑卷本身。

  3. 卸载逻辑卷

    • 在缩容文件系统之前,必须先卸载它。
      sudo umount /mnt/mydata
  4. 缩容文件系统

    • 对于 ext2/ext3/ext4 文件系统:

      # 检查文件系统
      sudo e2fsck -f /dev/myvg/mylv
      # 缩小文件系统大小到 5G (必须小于等于当前逻辑卷大小)
      sudo resize2fs /dev/myvg/mylv 5G
    • 对于 XFS 文件系统:

      • XFS 文件系统不支持在线缩容,通常的做法是创建一个新的、小一点的逻辑卷,将数据复制过去,然后删除旧的逻辑卷。
  5. 缩容逻辑卷

    • 在文件系统缩容完成后,现在可以安全地缩小逻辑卷了。
      # 将逻辑卷大小缩小到 5G
      sudo lvreduce -L 5G /dev/myvg/mylv
      # 系统会提示确认,输入 'y' 继续
  6. 重新挂载并验证

    sudo mount /dev/myvg/mylv /mnt/mydata
    df -h

(五) 删除 LVM 环境

目标:彻底移除 LVM 配置,释放物理空间。

  1. 卸载并删除文件系统

    • 确保逻辑卷已卸载。
      sudo umount /mnt/mydata
  2. 删除逻辑卷

    sudo lvremove /dev/myvg/mylv
    # 系统会提示确认,输入 'y' 继续
  3. 删除卷组

    • 确保卷组中已经没有任何逻辑卷。
      sudo vgremove myvg
  4. 删除物理卷

    sudo pvremove /dev/sdb
    # 或者删除分区
    # sudo pvremove /dev/sdb1

高级操作

  1. 添加物理卷到卷组

    # 假设新硬盘是 /dev/sdd
    sudo pvcreate /dev/sdd
    sudo vgextend myvg /dev/sdd
  2. 从卷组中移除物理卷

    # 首先确保 VG 中有足够的空闲空间,或者可以迁移数据
    # 使用 pvmove 将 /dev/sdd 上的数据迁移到 VG 的其他 PV 上
    sudo pvmove /dev/sdd
    # 然后从 VG 中移除该 PV
    sudo vgreduce myvg /dev/sdd
    # 最后删除该 PV
    sudo pvremove /dev/sdd
  3. 快照

    • 快照是某个逻辑卷在特定时间点的只读副本,非常适合用于备份。
      # 为 mylv 创建一个 2G 大小的快照,名为 mylv_snap
      sudo lvcreate -L 2G -s -n mylv_snap /dev/myvg/mylv
  4. 重命名

    • 重命名逻辑卷:
      sudo lvrename myvg/mylv myvg/newlv_name
    • 重命名卷组:
      sudo vgrename old_vg_name new_vg_name

希望这份详细的 LVM 命令指南能对您有所帮助!在生产环境中执行任何修改操作前,请务必备份数据。

分享:
扫描分享到社交APP
上一篇
下一篇