为什么RDS使用LVM
针对RDS服务,我们提供LVM卷给Docker使用,这样的考虑基于如下几点:
- RDS做了双主,本身提供了高可用,底层存储不再需要再做高可用
- 使用PCIE存储卡提供超高性能的存储设备,支撑高性能mysql的需求
- 减少跨物理机访问存储的网络开销
服务器上部署LVM卷的详情
一般我们RDS服务在每个区都有单独的两台物理机提供服务,这是因为:
- 我们使用Docker而非普通
nova instance
运行trove instance
,nova-docker
和普通nova-compute
在同一台物理机上都支持有困难(nova,neutron的限制) - 两台物理机正好把RDS的双主分配到不同物理机,提高可靠性
在每台物理机上,我们支持三种类型的存储:
- 普通型 - SATA盘,使用2块4T的SATA盘(为了加快速度,会使用SSD分区做SATA盘的flashcache)
- 高性能型 - SSD盘,使用3个SSD盘的分区
- 超高性能型 - PCIE存储卡,使用1个宝存的3.2T的PCIE存储卡
如Server1上:
1 | root@Server1:/home/openstack# pvs |
配置LVM步骤
选择合适的磁盘,规划好每个磁盘的使用
创建不同类型的pv和vg
因为SATA盘的性能限制,所以这里先给SATA盘建立flashcache:
1 | flashcache_create -p back lvm-sata-cache1 /dev/sdj3 /dev/sdl |
创建SATA物理卷组:
1 | pvcreate /dev/mapper/lvm-sata-cache1 |
创建SSD物理卷组:
1 | pvcreate /dev/sdc4 |
创建PCIE物理卷组:
1 | pvcreate /dev/dfa |
创建好的vgs如下:
1 | root@Server1:/home/openstack# vgs |
cinder配置
cinder.conf做如下修改,然后重启服务
1 | # Define the names of the groups for multiple volume backends |
可能遇到的问题
问题:pvcreate命令返回失败
1 | # pvcreate /dev/dfa |
解决办法:
1 | # pvcreate -vvvv /dev/dfa 2>&1 | less |