Ceph RBD 命令详解
RBD(RADOS Block Device)是 Ceph 提供的块存储服务,允许用户创建和管理块设备镜像。这些块设备可以映射到客户端系统,就像本地硬盘一样使用,常用于虚拟机磁盘、数据库存储等场景。
RBD 基础命令
1. 镜像管理
# 列出存储池中的所有镜像
rbd ls <pool_name>
# 创建块设备镜像
rbd create <pool_name>/<image_name> --size <size>
# 删除块设备镜像
rbd rm <pool_name>/<image_name>
# 查看镜像信息
rbd info <pool_name>/<image_name>
2. 镜像操作
# 调整镜像大小
rbd resize <pool_name>/<image_name> --size <new_size>
# 重命名镜像
rbd rename <pool_name>/<old_image_name> <pool_name>/<new_image_name>
# 复制镜像
rbd cp <pool_name>/<source_image> <pool_name>/<dest_image>
# 查看镜像映射状态
rbd showmapped
RBD 快照管理
1. 快照操作
# 创建快照
rbd snap create <pool_name>/<image_name>@<snap_name>
# 列出镜像的所有快照
rbd snap ls <pool_name>/<image_name>
# 删除快照
rbd snap rm <pool_name>/<image_name>@<snap_name>
# 回滚到快照
rbd snap rollback <pool_name>/<image_name>@<snap_name>
# 清理快照(删除所有快照)
rbd snap purge <pool_name>/<image_name>
2. 快照保护
# 保护快照(防止意外删除)
rbd snap protect <pool_name>/<image_name>@<snap_name>
# 取消快照保护
rbd snap unprotect <pool_name>/<image_name>@<snap_name>
# 查看快照保护状态
rbd snap ls <pool_name>/<image_name>
RBD 克隆和分层
1. 克隆操作
# 从受保护的快照创建克隆
rbd clone <pool_name>/<parent_image>@<snap_name> <pool_name>/<child_image>
# 展开克隆(断开与父镜像的链接)
rbd flatten <pool_name>/<child_image>
# 查看镜像父子关系
rbd children <pool_name>/<image_name>@<snap_name>
2. 分层管理
# 查看镜像分层信息
rbd diff <pool_name>/<image_name>
# 查看镜像使用的对象
rbd du <pool_name>/<image_name>
RBD 映射和使用
1. 映射操作
# 映射镜像到本地块设备
rbd map <pool_name>/<image_name>
# 取消映射
rbd unmap <pool_name>/<image_name>
# 取消所有映射
rbd unmap --all
# 映射时指定只读模式
rbd map <pool_name>/<image_name> --read-only
2. 文件系统操作
映射后可在操作系统层面进行常规操作:
# 创建文件系统(首次使用)
sudo mkfs.ext4 /dev/rbd/<pool_name>/<image_name>
# 挂载文件系统
sudo mkdir /mnt/mydisk
sudo mount /dev/rbd/<pool_name>/<image_name> /mnt/mydisk
# 卸载文件系统
sudo umount /mnt/mydisk
RBD 高级功能
1. 镜像导出和导入
# 导出镜像到文件
rbd export <pool_name>/<image_name> <file_path>
# 从文件导入镜像
rbd import <file_path> <pool_name>/<image_name>
# 导出快照
rbd export <pool_name>/<image_name>@<snap_name> <file_path>
# 从标准输入导入
cat <file_path> | rbd import - <pool_name>/<image_name>
2. 镜像属性配置
# 设置镜像格式
rbd create <pool_name>/<image_name> --size <size> --image-format 2
# 设置对象大小
rbd create <pool_name>/<image_name> --size <size> --object-size 4M
# 设置特性
rbd create <pool_name>/<image_name> --size <size> --image-feature layering,exclusive-lock
# 查看支持的特性
rbd feature ls
3. QoS 配置
# 设置 IOPS 限制
rbd qos iops-limit set <pool_name>/<image_name> --limit <iops_value>
# 设置带宽限制
rbd qos bps-limit set <pool_name>/<image_name> --limit <bps_value>
# 查看 QoS 配置
rbd qos iops-limit get <pool_name>/<image_name>
常用 RBD 管理场景
场景 1:为虚拟机创建磁盘
为 KVM 虚拟机创建一块 10GB 的磁盘:
# 1. 创建存储池(如果没有)
ceph osd pool create vms 128
# 2. 创建块设备镜像
rbd create vms/vm-disk-1 --size 10G
# 3. 映射镜像到本地
rbd map vms/vm-disk-1
# 4. 创建文件系统
sudo mkfs.ext4 /dev/rbd/vms/vm-disk-1
# 5. 挂载使用
sudo mkdir /mnt/vm-disk
sudo mount /dev/rbd/vms/vm-disk-1 /mnt/vm-disk
场景 2:创建快照和备份
为重要数据创建快照和备份:
# 1. 创建快照
rbd snap create vms/data-volume@backup-20231201
# 2. 保护快照
rbd snap protect vms/data-volume@backup-20231201
# 3. 从快照创建克隆用于备份
rbd clone vms/data-volume@backup-20231201 vms/data-backup-20231201
# 4. 导出备份到外部存储
rbd export vms/data-backup-20231201 /backup/data-backup-20231201.img
场景 3:扩展磁盘空间
扩展现有镜像的空间:
# 1. 查看当前镜像大小
rbd info vms/vm-disk-1
# 2. 扩展镜像大小到 20GB
rbd resize vms/vm-disk-1 --size 20G
# 3. 在操作系统层面扩展文件系统
# 对于 ext4 文件系统:
sudo resize2fs /dev/rbd/vms/vm-disk-1
# 对于 xfs 文件系统:
sudo xfs_growfs /mnt/vm-disk
RBD 相关配置参数
| 参数名 | 含义 | 默认值 | 建议值 |
|---|---|---|---|
| rbd_default_features | 默认镜像特性 | 61 | 根据需求调整 |
| rbd_default_order | 默认对象大小 (2^order) | 22 (4MB) | 22 |
| rbd_cache | 是否启用客户端缓存 | true | true |
| rbd_cache_size | 客户端缓存大小 | 32MB | 32MB-256MB |
| rbd_concurrent_management_ops | 并发管理操作数 | 10 | 10-20 |
RBD 最佳实践
1. 镜像管理
- 命名规范:使用有意义的镜像命名约定
- 大小规划:合理预估和分配镜像大小
- 定期清理:及时删除不需要的快照和镜像
2. 性能优化
- 特性选择:根据使用场景选择合适的镜像特性
- 对象大小:根据 IO 模式选择合适的对象大小
- 缓存配置:合理配置客户端缓存参数
3. 数据保护
- 快照策略:制定定期快照策略
- 快照保护:对需要保留的快照进行保护
- 备份机制:建立定期备份机制
注意事项
- 权限要求:大部分 RBD 命令需要适当的权限才能执行
- 内核支持:使用 RBD 映射功能需要内核支持 RBD 模块
- 网络连接:确保客户端能够访问 Ceph 集群
- 数据一致性:在取消映射前确保文件系统已正确卸载
总结
RBD 是 Ceph 提供的强大块存储服务,具备快照、克隆、QoS 等丰富功能。通过合理使用 RBD 命令,可以为虚拟机、数据库等应用提供高性能、高可用的块存储服务。在实际使用中,应根据具体需求选择合适的功能和配置参数。
评论区