LVM
think
个人认为LVM的强大之处在于存储空间的可伸缩性(在线)。
我可以把多块硬盘 看作一块硬盘。
如果我想改变其容量 只需要一些命令即可。整个过程可以保持业务不中断。
结构和术语介绍
物理卷 (PV)
一个可供存储LVM的块设备. 例如: 一块硬盘, 一个MBR或GPT分区, 一个回环文件, 一个被内核映射的设备 (例如 dm-crypt.它包含一个特殊的LVM头。
卷组 (VG)
物理卷的一个组,作为存放逻辑卷的容器。 PEs are allocated from a VG for a LV.
逻辑卷 (LV)
“虚拟/逻辑卷”存放在一个卷组中并由物理块组成。是一个类似于物理设备的块设备,例如,你可以直接在它上面创建一个文件系统文件系统。
物理块 (PE)
一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。
逻辑结构大概像是这个样子
|----------| |----------|
| 逻辑卷 LV | | 逻辑卷...|
|----------| |----------|
| |
\ /
|-----------|
| 卷组 VG |
|-----------|
/ \
| |
|----------| |----------|
| 物理卷 PV | | 物理卷...|
|----------| |----------|
graph TB
A(逻辑卷 LV) --> B(卷组 VG)
C(逻辑卷...) --> B
B --> D(物理卷 PV)
B --> E(物理卷...)
我们并不需要太过关心PE
记好这三层的缩写 我们待会要把这三层定义和创建出来。
使用LVM
在继续配置LVM前,必须对设备进行分区。
这里假设有两个硬盘 两个分区
并且会同时演示如何拓展空间 所以有些命令不是最佳路径
- /dev/sdb1
- /dev/sdc1
创建物理卷(PV)
pvcreate /dev/sdb1
pvcreate /dev/sdc1
查看创建好的物理卷
pvdisplay
创建卷组(VG)
vgcreate vg_demo /dev/sdb1
这里vg_demo是你的卷组名
后面的分区可以为多个 这里用一个方便后续演示扩容
查看已创建好的卷组
vgdisplay
创建逻辑卷
lvcreate -L 10G vg_demo -n lv_demo
创建一个大小为10G,名字为lv_demo,所属vg_demo的逻辑卷。
查看已创建的逻辑卷
lvdisplay
格式化并挂载逻辑卷
# 查看逻辑卷挂载位置
vgscan
# 格式化逻辑卷
mkfs -t ext4 /dev/vg_demo/lv_demo
# 创建待挂载目录
mkdir /demo
# 挂载
mount /dev/vg_demo/lv_demo /demo
用df -hl
就可以看到已经挂载的存储空间了
接下来我们进行扩容
对VG增加PV
首先 需要创建好PV
步骤在上面 不再重复写了
vgextend vg_demo /dev/sdc1
调整LV大小
lvresize -l 102398 /dev/vg_demo/lv_demo
#or
lvresize -L +20G /dev/vg_demo/lv_demo
102398是扩容后的PE总大小
PE大小通过pvdisplay查看
调整分区大小
resize2fs /dev/vg_demo/lv_demo
至此 就大功告成了。
TIPS
预告:接下来会有一个ZFS的存储池讲解,将会介绍一个家庭用安全可靠且低成本的大容量存储的解决方案。
Q:看起来和RAID0有些相似 区别在哪里?
A://TODO 稍后补充。