当前位置: 首页 > news >正文

debian搭建ceph记录(接入libvirt)

文章目录

  • 一. 搭建集群
    • 1. 准备节点
    • 2. 安装基础包(所有节点都执行)
    • 3. 在节点1上初始化集群
  • 二. 客户端使用
    • 1. 客户端连接集群
    • 2. 挂载ceph块设备
    • 3. libvirt使用ceph块设备

一. 搭建集群

1. 准备节点

我是在kvm环境下搭建的3台虚拟机

机器名IPOS数据磁盘
ceph1192.168.22.131Debian1220GB*2
ceph2192.168.22.132Debian1220GB*2
ceph3192.168.22.133Debian1220GB*2

2. 安装基础包(所有节点都执行)

# 更换apt软件源
sed -i "s@deb.debian.org@mirrors.aliyun.com@g" /etc/apt/mirrors/debian*
apt update# 添加aliyun的ceph软件源,url中的【squid】对应cepf版本19.2.2
apt install -y gnupg software-properties-common 
wget -q -O- 'https://mirrors.aliyun.com/ceph/keys/release.asc' | sudo apt-key add -
apt-add-repository 'deb https://mirrors.aliyun.com/ceph/debian-squid/ bookworm main'# 安装包
apt install -y podman lvm2 ceph-common

3. 在节点1上初始化集群

# 安装cephadm 
apt install -y cephadm # 创建集群
cephadm bootstrap --mon-ip 192.168.22.131# 配置公钥到其他节点
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.22.132
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.22.133# 添加节点
ceph orch host add ceph2 192.168.22.132
ceph orch host add ceph3 192.168.22.133# 查看节点情况
ceph orch host ls# 添加_admin这个label后可以允许该节点运行ceph命令
ceph orch host label add ceph2 _admin
ceph orch host label add ceph3 _admin# 设置 mon 节点
ceph orch apply mon 3
ceph orch apply mon ceph1,ceph2,ceph3 # 查看 mon 详情
ceph mon dump# 列出所有节点的存储设备
ceph orch device ls# 所有可使用设备创建osd
ceph orch apply osd --all-available-devices# 创建一个pool给rbd使用
ceph osd pool create rbd_pool
rbd pool init rbd_pool# 创建用户rbd_user
ceph auth get-or-create client.rbd_user mon 'profile rbd' osd 'profile rbd pool=rbd_pool' mgr 'profile rbd pool=rbd_pool'
# 将输出内容追加到文件/etc/ceph/ceph.client.{ID}.keyring中# 创建一个10GB的镜像
rbd create --size 10240 rbd_pool/image1# 查看rbd_pool下的镜像
rbd -p rbd_pool ls

二. 客户端使用

1. 客户端连接集群

# 安装ceph-common
apt install -y ceph-common# 将ceph集群中的下面两个文件拷贝到客户端同目录
# (可以通过配置不同ceph用户来控制访问权限,这里我配置了管理员admin的key)
/etc/ceph/ceph.conf
/etc/ceph/ceph.client.admin.keyring# 查看集群状态,若返回集群信息则配置成功
ceph status

2. 挂载ceph块设备

# 将集群pool中的image映射到本地
rbd map rbd_pool/image1# 执行lsblk命令,发现新增设备/dev/rbd0
lsblk# 本地创建目录/data1
mkdir /data1# 格式化rbd0
mkfs.ext4 /dev/rbd0# 挂载到本地目录后,即可正常访问
mount /dev/rbd0 /data1

3. libvirt使用ceph块设备

准备另一台kvm机器,安装libvirt环境,下载qcow2镜像等,可参考我的另一篇文章
记录使用libvirt创建虚拟机、自定义qcow2镜像

把下载的qcow2文件转为ceph集群中的镜像(可以作为模板快速复制)

qemu-img convert -f qcow2 -O raw debian-12-genericcloud-amd64.qcow2 rbd:rbd_pool/vm1.qcow2

在rbd_pool中创建一个5GB的image作为数据盘

qemu-img create -f rbd rbd:rbd_pool/vm1-data 5G

生成访问ceph的key

# 创建用户rbd_user,限制只能访问rbd_pool
ceph auth get-or-create client.rbd_user mon 'profile rbd' osd 'profile rbd pool=rbd_pool' mgr 'profile rbd pool=rbd_pool'# 生成secret文件
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'><usage type='ceph'><name>client.rbd_user secret</name></usage>
</secret>
EOF# 定义secret, 返回【secret_uuid】
virsh secret-define --file secret.xml# 把用户rbd_user的key写入文件
ceph auth get-key client.rbd_user | tee client.rbd_user.key# 	设置secret的值
virsh secret-set-value --secret 【替换secret_uuid】 --base64 $(cat client.rbd_user.key) && rm client.rbd_user.key secret.xml

定义虚拟机的xml文件

<domain type='kvm'><name>vm1</name><memory unit='GiB'>1</memory><vcpu>1</vcpu><os><type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type><boot dev='hd'/></os><features><acpi/><apic/><pae/></features><devices><disk type='file' device='cdrom'><driver name='qemu' type='raw'/><source file='/data/vm1/init.iso'/><target dev='hda' bus='ide'/><readonly/></disk><disk type='network' device='disk'><source protocol='rbd' name='rbd_pool/os1'><host name='192.168.22.131' port='6789'/><host name='192.168.22.132' port='6789'/><host name='192.168.22.133' port='6789'/></source><auth username='rbd_user'><secret type='ceph' uuid='【替换secret_uuid】'/></auth><target dev='vda' bus='virtio'/></disk><disk type='network' device='disk'><source protocol='rbd' name='rbd_pool/vm1-data'><host name='192.168.22.131' port='6789'/><host name='192.168.22.132' port='6789'/><host name='192.168.22.133' port='6789'/></source><auth username='rbd_user'><secret type='ceph' uuid='【替换secret_uuid】'/></auth><target dev='vdb' bus='virtio'/></disk><interface type='bridge'><source bridge='virbr0'/><model type='virtio'/></interface><console type='pty'><target type='serial' port='0'/></console></devices>
</domain>

定义&启动&连接虚拟机

virsh define vm1.xml
virsh start vm1
virsh console vm1

https://www.cnblogs.com/gustabm/p/17663966.html
https://cloud-atlas.readthedocs.io/zh-cn/latest/ceph/rbd/compare_local_ssd_ceph_rbd.html

相关文章:

  • 了解Android studio 初学者零基础推荐(3)
  • 行贿罪案件(公安侦查阶段)询问笔录发问提纲
  • 高校外卖小程序,怎么落地实践?
  • Java内存管理:堆和栈的概念和运行原理
  • JavaScript关键字完全解析:从入门到精通
  • Oracle查看SQL执行计划的方法
  • 深入理解SummaryWriter类与TensorBoard的基本使用
  • 数据结构 -- 交换排序(冒泡排序和快速排序)
  • ES6 哈希数据结构
  • OceanBase 共享存储:云原生数据库的存储
  • 设计模式-行为型模式(详解)
  • 数据结构 -- 插入排序(直接插入排序和希尔排序)
  • 短剧系统开发与抖音生态融合:短视频时代的新风口与商业机遇
  • Vue组件化与生命周期:打造灵活高效的前端积木世界
  • 深入解析MySQL中的HAVING关键字:从入门到实战
  • vue2组件对象传参
  • Web攻防-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • OverLoCK:先概览,再聚焦。CVPR2025全新主干网络
  • 黑马点评--短信登录实现
  • 东莞做网站seo/微信引流主动被加软件
  • 网站可信/旅游推广赚佣金哪个平台好
  • 做企业营销网站/类聚seo
  • 中山市网站建站公司/南宁关键词优化软件
  • 坑人网站怎么做/杭州seo网站排名优化
  • 汽车网站建设策划书/seo快速排名案例