首页 > 其他分享 >将虚拟机跑在ceph之中

将虚拟机跑在ceph之中

时间:2024-07-14 20:52:33浏览次数:16  
标签:pool 虚拟机 nova ceph 之中 cinder root kolla

目录

openStack对接ceph

在前面,我们只是将glance对接到了ceph,也就是只有镜像的存储在ceph上的,如果nova的计算节点挂掉了,那么运行在这个上面的虚拟机的数据也就随之丢失了,所以我们也可以将nova虚拟机的数据也存储在ceph上,包括cinder提供的卷也是可以对接的,接下来我们就来看看如何操作

1. cinder对接ceph

配置cinder与ceph集成,需要同步配置nova与ceph集成,使用cinder相同的ceph帐号,否则nova无权限访问cinder在ceph上创建的卷

由于我们之前使用kolla安装openstack的时候并没有让他安装cinder组件,所以我们现在需要修改配置文件,来让他部署cinder组件,并且ceph需要创建存储池

1.1 ceph创建存储池

在ceph上操作,由于我们需要开启cinder的卷备份,所以我们需要2个存储池,一个是数据池volumes,另一个是备份池backups

[root@ceph ~]# ceph osd pool create volumes
pool 'volumes' created
[root@ceph ~]# ceph osd pool application enable volumes rbd
enabled application 'rbd' on pool 'volumes'
[root@ceph ~]# ceph osd pool create backups
pool 'backups' created
[root@ceph ~]# ceph osd pool application enable backups rbd
enabled application 'rbd' on pool 'backups'
[root@ceph ~]# rbd pool init volumes
[root@ceph ~]# rbd pool init backups

1.2 ceph授权

因为是2个池,所以我们需要给到2个用户来操作,不要使用一个用户能够直接操作这2个池

[root@ceph ceph]# ceph auth get-or-create client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes' -o /etc/ceph/ceph.client.cinder.keyring
[root@ceph ceph]# ceph auth get-or-create client.cinder-backups mon 'profile rbd' osd 'profile rbd pool=backups' -o /etc/ceph/ceph.client.cinder-backups.keyring

1.3 下发ceph文件

我们需要将ceph的配置文件以及用户的认证文件发送到部署节点,部署节点必须提前创建好目录

# 部署节点创建目录
[root@openstack01 ~]# mkdir /etc/kolla/config/cinder/{cinder-backup,cinder-volume} -p

在部署节点上的目录结构是这样的

[root@openstack01 cinder]# tree
.
├── cinder-backup
│   ├── ceph.client.cinder-backups.keyring
│   ├── ceph.client.cinder.keyring
│   └── ceph.conf
└── cinder-volume
    ├── ceph.client.cinder.keyring
    └── ceph.conf

注意,一定要将这些文件里面的缩进给删掉或者替换成空格,不然会报错!

ceph的工作就做完了,接下来我们回到部署节点

1.4 修改globals文件

[root@openstack01 ~]# vim /etc/kolla/globals.yml 
ceph_cinder_user: "cinder"
ceph_cinder_keyring: "client.{{ ceph_cinder_user }}.keyring"
ceph_cinder_pool_name: "volumes"
ceph_cinder_backup_user: "cinder-backup"
ceph_cinder_backup_keyring: "client.{{ ceph_cinder_backup_user }}.keyring"
ceph_cinder_backup_pool_name: "backups"
enable_cinder: "yes"
enable_cinder_backup: "yes"
cinder_backend_ceph: "yes"
cinder_backup_driver: "ceph"

1.5 部署cinder

(kolla) [root@openstack01 ~]# kolla-ansible -i /etc/kolla/multinode -t cinder deploy

因为我们之前没有部署cinder,所以这里的指令是cinder,如果已经部署了要修改配置文件,那么这里就是upgrade,接下来等待cinder部署完毕

1.6 创建卷

(kolla) [root@openstack01 ~]# openstack volume create --size 10 volume01
(kolla) [root@openstack01 ~]# openstack volume list
+-------------------------------+----------+-----------+------+-------------+
| ID                            | Name     | Status    | Size | Attached to |
+-------------------------------+----------+-----------+------+-------------+
| c1983d42-8897-4cef-           | volume01 | available |   10 |             |
| bf53-02bdc57b5855             |          |           |      |             |
+-------------------------------+----------+-----------+------+-------------

卷可以正常创建,但是创建出来的卷不可以被nova的虚拟机挂载,因为nova并没有访问ceph的权限,所以我们现在需新用户的权限,需要说明的是,nova组件与cinder组件使用的是同一个用户,所以我们并不用新创建用户,只需要对cinder的用户重新授权就可以了

2. nova对接ceph

因为nova目前无法使用卷,我们现在开始用nova对接ceph,一并让虚拟机的数据直接存储在ceph上,并且可以使用卷

2.1 创建卷

[root@ceph ~]# ceph osd pool create vms
pool 'vms' created
[root@ceph ~]# ceph osd pool application enable vms rbd
enabled application 'rbd' on pool 'vms'
[root@ceph ~]# rbd pool init vms

2.2 更新cinder权限

nova与cinder使用同一个用户

[root@ceph ~]# ceph auth caps  client.cinder  mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms'

直接更新就可以了,不用将认证文件传过去,因为key并没有变,只是权限变了而已

2.3 修改globals文件

(kolla) [root@openstack01 ~]# vim /etc/kolla/globals.yml
ceph_nova_keyring: "{{ ceph_cinder_keyring }}"
ceph_nova_user: "{{ ceph_cinder_user }}"
ceph_nova_pool_name: "vms"
nova_backend_ceph: "yes"

2.4 创建目录

(kolla) [root@openstack01 ~]# mkdir /etc/kolla/config/nova
(kolla) [root@openstack01 ~]# cd /etc/kolla/config/nova
(kolla) [root@openstack01 nova]# scp ../cinder/cinder-volume/* .

2.5 升级nova

(kolla) [root@openstack01 nova]# kolla-ansible -i /etc/kolla/multinode -t nova upgrade 

等待他完成部署

3. 验证nova

3.1 检查存储池

现在我们来验证nova虚拟机的根磁盘文件是否存储在ceph的vms池上

[root@ceph ~]# rbd ls vms
[root@ceph ~]# 

现在在ceph上是没有数据在vms池的,接下来我们创建虚拟机

3.2 创建虚拟机

(kolla) [root@openstack01 ~]# openstack server create ecs01 --flavor m1.tiny --image cirros --network demo-net
(kolla) [root@openstack01 ~]# openstack server list
+-------------------+-------+--------+-------------------+--------+---------+
| ID                | Name  | Status | Networks          | Image  | Flavor  |
+-------------------+-------+--------+-------------------+--------+---------+
| a2d3bfaf-62f8-435 | ecs01 | ACTIVE | demo-             | cirros | m1.tiny |
| a-b9bc-35979de58e |       |        | net=10.0.0.112    |        |         |
| 00                |       |        |                   |        |         |
+-------------------+-------+--------+-------------------+--------+---------

现在虚拟机已经正常运行了,接下来回到ceph节点查看池

[root@ceph ~]# rbd ls vms
a2d3bfaf-62f8-435a-b9bc-35979de58e00_disk

看到了吗?咱们刚刚创建的虚拟机的ID是a2d3啥的,现在ceph的vms存储池里面就有一个这样的数据,后缀是disk,接下来我们创建一个卷并挂载给虚拟机

3.3 创建卷

(kolla) [root@openstack01 ~]# openstack volume create --size 5 volume02

卷创建出来之后我们将他挂载给ecs01

3.4 虚拟机挂载卷

(kolla) [root@openstack01 ~]# openstack server add volume ecs01 volume02
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| ID                    | 79bb70bf-1cb4-42fc-8d9a-99c9cf940dd2 |
| Server ID             | a2d3bfaf-62f8-435a-b9bc-35979de58e00 |
| Volume ID             | 79bb70bf-1cb4-42fc-8d9a-99c9cf940dd2 |
| Device                | /dev/vdb                             |
| Tag                   | None                                 |
| Delete On Termination | False                                |
+-----------------------+--------------------------------------+

通过他的回显,我们可以得知他将volume映射到了ecs的/dev/vdb,我们来到图形界面看看是不是有这么一个设备了

现在我们的open stack的数据基本上已经全部存储到了ceph集群中,这样就不会担心openstack单点故障导致虚拟机数据丢失了

标签:pool,虚拟机,nova,ceph,之中,cinder,root,kolla
From: https://www.cnblogs.com/fsdstudy/p/18301989

相关文章

  • CentOS 7.9虚拟机无法主机之间copy文件
    问题:将文件从主机复制到虚拟机时报错:Errorwhengettinginformationforfile“//tmp/VMwareDnD/***/.”:Nosuchfileordirectory解决方法:重新安装VMwaretools查看并卸载预装的“open-vm-tools”包yumlistinstalled|grepopen-vm-*yumremoveopen-vm-toolsre......
  • MacBook m1使用Qemu搭建Ubuntu虚拟机
    虽然macOS和Linux类似,但毕竟不同。学习Linux,就需要一个真实的Linux环境,思来想去,决定用qemu装一个Ubuntu虚拟机。liheng@~$sw_versProductName: macOSProductVersion: 14.5BuildVersion: 23F79安装brewhttps://brew.idayer.com/guide/m1/安装qemubrewinstallqemul......
  • VMware workstation pro17虚拟机的安装|最新地址
    最近在学习Linux系统,需要下载VMwareworkstationpro17,由于VMware被收购,网传的大部分地址已经失效,分享一下最新地址,需要注册博通帐号即可:ProductDownloads-SupportPortal-Broadcomsupportportal安装过程参考:新手教程|2024年最新Vmware17安装教程及许可证(详细图......
  • VMware Workstation Pro 17 与 虚拟机 ——【安装操作】
    选项卡页面切换一、安装准备环境要求介质准备二、步骤安装VMwareWorkstationPro17创建虚拟机(Windowsserver2016)三、常见问题1.许可证问题一、安装准备环境要求内存:16.0GB(15.8GB可用)硬件版本:Windows11家庭中文版版本号:23H2小版本:22631.3......
  • 基于windows虚拟机项目部署
    这里写自定义目录标题一、安装虚拟机二、配置jdk三、安装tomcat四、安装mysqlMySQL安装NavicatPremium12软件安装五、部署项目jforum项目部署jforum安装时可能遇到的问题一、安装虚拟机请看上一篇文章二、配置jdk双击点击jdk安装下载,官网:https://www.oracle.......
  • 虚拟机 VMware - 安装详细步骤
    目录虚拟化概念VMwareWorkstation简介一、安装准备1.安装环境2.软件下载二、常见问题1.虚拟机的【默认位置】会在C盘,盘符内存不够的建议改为D盘或别的盘符2.验证许可证是否密钥是否成功。进入虚拟机点击【帮助】下的关于VMwareWorkstation(A)可以查看验证许可证......
  • Ceph块存储系统RDB接口
    目录1.创建Ceph块存储系统RBD接口1.1创建一个名为rbd-xy101的专门用于RBD的存储池1.2创建镜像1.3 查看镜像1.4 修改镜像大小1.5 删除镜像1.6 临时删除镜像2.Linux客户端使用2.1在管理节点创建并授权一个用户可访问指定的RBD存储池2.2 修改RBD镜像......
  • 使用vscode远端连接虚拟机
    主要是需要使用虚拟机ubuntu上的cmake环境,但是为了GUI又不想搞WSL,在虚拟机上再装一个vscode又有点卡,所以用了这招。基本上网上的方法照着来就行了。几个简单的小步骤稍微记录一下。给虚拟机安装一下openssh并修改配置开放22端口(就很简单的跟着[1]来就行了)虚拟机ifconfig一......
  • Hyper-V在Windows 11部署本地Ubuntu虚拟机
        挣扎在生信泥潭的兄弟们都知道,目前生信分析所用的大部分软件/package/环境/pipline都是基于Linux系统建立的,因此跳入生信泥潭的第一步便是建立一个Linux环境并开始学习。鉴于本人的谨慎(怕搞乱实验室LinuxServer且Serveroffline)、懒惰(懒得在自己的电脑上安装双系统)以......
  • VMware出现虚拟机似乎正在使用,但就是无法打开
    如果电脑上的VMware还在运行虚拟机时电脑突然关机,再次打开电脑会发现之前运行的虚拟机突然无法打开了,点击运行时会出现该虚拟机似乎还在运行中,请按“获取所有权(T)”按钮获取它的所有权。这个时候千万不要慌,先点取消,千万不能以为是虚拟机坏了,然后直接选择从磁盘中删除。 点击......