LVM

@2013-12-09 新版功能: 新建

在 @2019-02-15 版更改: 增加命令汇总以及 stripes

参考 LVM Howto

PV,VG,LV 以及文件系统的关系如下:

#    hda1   hdc1      (PV:s on partitions or whole disks)
#       \   /
#        \ /
#       diskvg        (VG)
#       /  |  \
#      /   |   \
#  usrlv rootlv varlv (LV:s)
#    |      |     |
# ext4  reiserfs  xfs (filesystems)

命令

命令汇总:查看/创建/删除/改名/扩容/扫描/报告信息

  • (pv|vg|lv)(display|create|remove|change|scan|s)
  • (pv|lv)resize
  • (vg|lv)(rename|extend|reduce|convert)
  • pv(ck|move)
  • vg(ck|export|import|merge|mknodes|split)
  • vgcfg(backup|restore)

lvm

lvmetad

PV

  1. pvcreate

VG

  1. vgcreate

LV

  1. lvcreate

    • --stripes 条带化,将读写操作分散到多个底层存储上。

    • snapshot/快照

      • 建立快照

        lvcreate -s -n lv-20190215 -L5T /dev/mapper/vg-lv

      • 取消快照

        lvconvert --merge foo/snap

示例

最好不要将整个物理硬盘创建为 PV,而是先建立一个单独的分区(MSDOS 方式设置分区 格式为 8e, GPT 方式设置标记为 lvm),然后将该分区创建为 PV。

假设存储设备为 /dev/sdd1 和 /dev/sde1。

创建 PV:pvcreate /dev/sdd1 /dev/sde1

扫描 PV:pvscan

创建 VG:vgcreate vg_test /dev/sdd1

激活 VG:vgchange -a y vg_test

退激活 VG:vgchange -a n vg_test

删除 VG:vgremove vg_test

扩展 PV 到 VG:vgextend vg_test /dev/sde1

移除 PV 从 VG:vgreduce vg_test /dev/sde1,操作前先使用 pvmove 将数据从 要删除的 PV 移出。

显示 VG 信息:vgdisplay -v vg_test

扫描 VG:vgscan

创建 LV:lvcreate -L1500 -nlv_test vg_test 创建大小为 1500MB 的 LV。 lvcreate -l 100%VG -nlv_test vg_test 创建占用所有 VG 的 LV。

扩展 LV: lvextend -L+1G /dev/vg_test/lv_test 增加 1G 空间。调用文件系统 相关的命令让文件系统匹配新的空间。其他用法: lvextend -l +100%FREE /dev/mapper/vg_data-lv_home 将卷组里的未使用空间按 百分数分配给 LV。

缩小 LV: lvreduce -L-1G /dev/vg_test/lv_test 减小 1G 空间。注意操作之前 需要先调用文件系统相关的命令调整文件系统大小,否则会导致数据丢失。 参考 怎样调整文件系统大小

删除 LV: lvremove /dev/vg_test/lv_test 注意数据备份。

扫描 LV:lvscan

创建快照 LV:lvcreate -L500M -s -n lv_test-backup /dev/vg_test/lv_test,创建 lv_test 的快照,大小为 500M。通过 /dev/vg_test/lv_test-backup 即可挂载该快照。 需要注意的是,如果快照空间被使用完,该快照会立即失效,所以需要确保快照卷的空间 能满足备份的需要。