Skip to content

CAS 存储虚拟化

存储架构概览

CAS 支持多种存储后端,通过统一的存储抽象层向 VM 提供虚拟磁盘:

VM(看到的是虚拟磁盘 /dev/vda)

CAS 存储抽象层
    ├── Ceph RBD(推荐,分布式)
    ├── FC SAN(高性能,传统企业)
    ├── iSCSI(IP SAN)
    ├── NFS(文件共享)
    └── 本地存储(测试/边缘)

Ceph 集成

Ceph 是 CAS 推荐的存储后端,提供块存储(RBD)、对象存储(RGW)和文件系统(CephFS)。

Ceph 架构

Ceph 集群
├── MON(Monitor)× 3:维护集群状态,奇数个
├── MGR(Manager)× 2:监控、均衡、插件
├── OSD(Object Storage Daemon)× N:实际存储数据
│   每块磁盘对应一个 OSD 进程
└── MDS(Metadata Server):仅 CephFS 需要

Ceph 与 CAS 集成配置

bash
# 1. 在 Ceph 中创建存储池
ceph osd pool create vms 128 128
ceph osd pool create volumes 128 128
ceph osd pool create images 128 128

# 2. 初始化 RBD
rbd pool init vms
rbd pool init volumes
rbd pool init images

# 3. 创建 CAS 访问账号
ceph auth get-or-create client.cas \
  mon 'profile rbd' \
  osd 'profile rbd pool=vms, profile rbd pool=volumes, profile rbd pool=images' \
  mgr 'profile rbd' \
  > /etc/ceph/ceph.client.cas.keyring

# 4. 在 CAS 中配置 Ceph 存储
# CVM 控制台 → 存储管理 → 添加存储 → Ceph
# 填写:MON 地址、用户名(cas)、keyring

Ceph 性能调优

bash
# 查看存储池 IOPS
ceph osd pool stats

# 调整副本数(生产环境建议 3 副本)
ceph osd pool set vms size 3
ceph osd pool set vms min_size 2

# 开启 SSD 缓存层(提升 HDD 池性能)
# 创建 SSD 缓存池
ceph osd pool create ssd-cache 64 64
ceph osd tier add vms ssd-cache
ceph osd tier cache-mode ssd-cache writeback
ceph osd tier set-overlay vms ssd-cache

FC SAN 集成

FC SAN 适合对存储性能要求极高的场景(如核心数据库)。

FC 连接架构

服务器(宿主机)
    ↓ HBA 卡(Host Bus Adapter)
FC 交换机(Brocade/H3C)
    ↓ FC 光纤
H3C 全闪存储(G5500/G3500)

多路径配置

bash
# 安装多路径软件
yum install -y device-mapper-multipath

# 配置多路径(/etc/multipath.conf)
defaults {
    user_friendly_names yes
    find_multipaths yes
}

blacklist {
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z]"
}

# 启动多路径服务
systemctl enable multipathd
systemctl start multipathd

# 查看多路径设备
multipath -ll

存储 QoS

CAS 支持对虚拟磁盘设置 QoS 限制:

xml
<!-- libvirt XML 配置:限制磁盘 IOPS -->
<disk type='network' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source protocol='rbd' name='vms/vm-disk-001'>
    <host name='ceph-mon1' port='6789'/>
  </source>
  <target dev='vda' bus='virtio'/>
  <iotune>
    <total_iops_sec>5000</total_iops_sec>
    <total_bytes_sec>524288000</total_bytes_sec>  <!-- 500MB/s -->
    <read_iops_sec>3000</read_iops_sec>
    <write_iops_sec>2000</write_iops_sec>
  </iotune>
</disk>

存储迁移

在线存储迁移(Storage Live Migration)

将 VM 磁盘从一个存储后端迁移到另一个,VM 不停机:

bash
# 将 VM 磁盘从 NFS 迁移到 Ceph
virsh blockcopy <vm-name> vda \
  --dest rbd:vms/new-disk:auth_supported=cephx:keyring=/etc/ceph/ceph.client.cas.keyring \
  --format raw \
  --wait \
  --verbose

# 完成后切换到新磁盘
virsh blockjob <vm-name> vda --pivot

存储监控

bash
# 监控 Ceph 集群状态
watch -n 5 ceph status

# 查看 OSD 延迟
ceph osd perf

# 查看存储池使用率
ceph df detail

# 查看 RBD 镜像信息
rbd info vms/vm-disk-001
rbd du vms/vm-disk-001  # 实际占用空间(含快照)

褚成志的云与计算笔记