首页 > Storage > LVM 杂记

LVM 杂记

概念

  • PV(Physical Volume) 实际的物理卷轴, 在 LVM 的世界里, 一般是具体的硬盘或者某个硬盘分区
  • VG(Volume Group) 由多个 PV 共同组成一个 VG, 负责以 PE 作为单位来给 LV 分配磁盘资源
  • LV(Logical Volume) 最终用户看到, 能直接读写的设备, 类似于传统的硬盘分区, 只不过这个 LV 的大小可以根据使用自由的扩大和缩小
  • PE(Physical Extend) 是整个 LVM 最小的存储单位, 默认是 4M, 可以在创建 VG 的时候指定

使用流程

LVM 的使用流程很简单:

  • 首先是创建 PV, 根据前面所说的, 就是把硬盘或者硬盘分区编程 LVM 中的 PV
  • 然后是创建 VG, 在创建的时候先得至少指定一个 PV, 后续的可以通过 vgextend 添加
  • 然后再创建 LV, 创建完成后就可以像普通的硬盘分区一样的格式化, 挂载, 使用了

Use case

我有四个硬盘 /dev/vd{b,c,d,e}, 分别用他们作为 PV, 然后再其上创建 VG, 然后在创建 LV, 并使用之.

首先创建 PV:

root@kvm:~# pvcreate /dev/vd{b,c,d,e}
  Writing physical volume data to disk "/dev/vdb"
  Physical volume "/dev/vdb" successfully created
  Writing physical volume data to disk "/dev/vdc"
  Physical volume "/dev/vdc" successfully created
  ......

显示 PV

root@kvm:~# pvscan 
  PV /dev/vdb   VG lvmvg           lvm2 [20.00 GiB / 20.00 GiB free]
  PV /dev/vdc   VG lvmvg           lvm2 [20.00 GiB / 20.00 GiB free]
  PV /dev/vdd                       lvm2 [20.00 GiB]
  PV /dev/vde                       lvm2 [20.00 GiB]
  Total: 4 [79.99 GiB] / in use: 2 [39.99 GiB] / in no VG: 2 [40.00 GiB]

用 vdb 创建 VG(lvmvg)

root@kvm:~# vgcreate lvmvg /dev/vdb
  Volume group "lvmvg" successfully created

把 vdc 加入到 lvmvg

root@kvm:~# vgextend lvmvg /dev/vdc   
  Volume group "lvmvg" successfully extended

创建 LV(lvmlv)

root@kvm:~# vgdisplay | grep Free
  Free  PE / Size       10238 / 39.99 GiB //10238 个 PE, 每个 4M
root@kvm:~# lvcreate -l 2000 -n lvmlv lvmvg // 创建一个 8G(2000x4M) 的 LV
  Logical volume "lvmlv" created
root@kvm:~# lvs
  LV    VG    Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  lvmlv lvmvg -wi-a--- 7.81g

像普通磁盘分区一样使用这个 LV

root@kvm:~# lvdisplay  | grep Path
  LV Path                /dev/lvmvg/lvmlv
root@kvm:~# mkfs.ext4 /dev/lvmvg/lvmlv 
root@kvm:~# mkdir /mnt/lvm
root@kvm:~# mount /dev/lvmvg/lvmlv /mnt/
root@kvm:~# df -m | grep lvm
/dev/mapper/lvmvg-lvmlv      7747    18      7329   1% /mnt

给这个分区扩容

root@kvm:~# lvextend -l+1000 /dev/lvmvg/lvmlv   //增加 4G(1000 x4) 的容量
  Extending logical volume lvmlv to 11.72 GiB
  Logical volume lvmlv successfully resized
root@kvm:~# resize2fs /dev/lvmvg/lvmlv 
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/lvmvg/lvmlv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/lvmvg/lvmlv is now 3072000 blocks long.
 
root@kvm:~# df -m | grep lvm
/dev/mapper/lvmvg-lvmlv     11685    20     11108   1% /mnt

分类: Storage 标签: