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¶
- pvcreate
VG¶
- vgcreate
LV¶
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 即可挂载该快照。 需要注意的是,如果快照空间被使用完,该快照会立即失效,所以需要确保快照卷的空间 能满足备份的需要。