参考:
- Cinder LVM配置
https://www.cnblogs.com/sammyliu/p/4159147.html - Configure and use volume number weigher
https://docs.openstack.org/cinder/queens/admin/blockstorage-volume-number-weigher.html
一、知识:
cinder lvm配置(/etc/cinder/cinder.conf)
[lvmdriver-1]
volume_group = stack-volumes-lvmdriver-1
volume_driver = cinder.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name = lvmdriver-1
- volume_group:指定cinder使用的volume group。可以通过vgs查看
- volume_driver: 指定驱动类型
- volume_backend_name:指定backend name。当有多个volume backend时,需要创建volume type,它会绑定一个或者多个backend。用户在创建volume时需要选择某个volume type,相当于选择了某个volume backend。要这个参数的原因是因为一个openstack环境中可能有多个 cinder-volume 存储节点,此时就有多个 volume backend,此时就需要给每个backend 一个 name 来区分。
- 只有一个backend的时候,除了配置volume group外,不需要添加别的配置信息,创建volume的时候不需要选择volume type
- 当有多个backend的时候,需要使用volume-type来将volume创建到指定的backend中
- 一个volume-type可以有多个backend,the capacity scheduler会自动选择合适的backend来创建volume
- 如果定义了volume type,但在cinder.conf中没有定义volume backend,那么cinder scheduler将找不到有效的host来创建volume
二、操作:
2.1 将新的硬盘直接扩展到已有卷组
- 查看系统磁盘分区情况(lsblk)
- 创建分区(/dev/sdb)
fdisk /dev/sdb
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): Enter
First sector (2048-4294967295, default 2048): Enter
Last sector, +sectors or +size{K,M,G} (2048-4294967294, default 4294967294): Enter
Command (m for help): t
Hex code (type L to list all codes): 8e
Command (m for help): w
- 将物理硬盘分区/dev/sdb1初始化为物理卷(PV)
pvcreate /dev/sdb1
报错:需修改/etc/cinder/cinder.conf如下,然后从新执行pvcreate /dev/sdb1
过滤规则: (a)|sdb1| : 允许sdb1设备;(r)|.*| : 禁止dir=/dev下的所有设备
- 查看当前卷组(VG)
vgs
- 将/dev/sdb1添加到VG(stack-volumes-lvmdriver-1)
vgextend stack-volumes-lvmdriver-1 /dev/sdb1
vgs查看VG(stack-volumes-lvmdriver-1)的大小增加了20G
注意: 如果立即创建逻辑卷的话,可能会失败,需要稍等半分钟,待cinder-scheduler检测到卷组(stack-volumes-lvmdriver-1)发生变化。
- 如果想从VG(stack-volumes-lvmdriver-1)中移除/dev/sdb1设备,以缩小VG的大小
6.1 先把要缩小的PV文件搬到其他PV中
6.2 把vg中的pv(/dev/sdb1)移除pvmove /dev/sdb1 /dev/loop1 (将/dev/sdb1的内容搬到 /dev/loop1) 或者 pvmove /dev/sdb1 (让lvm决定/dev/sdb1的内容搬到哪个设备下)
vgreduce vg_name /dev/sdb1
2.2 创建新的LVM backend,新的卷组
说明:
创建的卷组(VG): stack-volumes-extend-1
volume driver: cinder.volume.drivers.lvm.LVMVolumeDriver
backend name: lvmdriver-2
volume type: lvmdriver-2
1-4步骤,同上
- 创建新卷组(stack-volumes-extend-1)
vgcreate stack-volumes-extend-1 /dev/sdb1
- 激活卷组,这样可以不需要重启系统就可以立即使用
vgchange -ay stack-volumes-extend-1
- 创建volume type
openstack volume type create lvmdriver-2
报错:没有指定用户
source /home/devstack/openrc admin admin
openstack volume type create lvmdriver-2
- 查看volume type
openstack volume type list
- volume type 和 volume_backend_name绑定
openstack volume type set lvmdriver-2 --property volume_backend_name=lvmdriver-2
10.修改/etc/cinder/cinder.conf文件
[DEFAULT]
enabled_backends = lvmdriver-1,lvmdriver-2
[lvmdriver-2]
volume_group = stack-volumes-extend-1
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name = lvmdriver-2
- 重启cinder-scheduler和cinder-volume服务
11.1 杀死进程
kill -9 13068 13078 13088 13090
11.2 启动cinder-scheduler服务
/usr/local/bin/cinder-scheduler --config-file /etc/cinder/cinder.conf &> /opt/stack/logs/cinder-scheduler.log &
11.3 启动cinder-volume服务
/usr/local/bin/cinder-volume --config-file /etc/cinder/cinder.conf &> /opt/stack/logs/cinder-volume.log &
```