自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (8)
  • 收藏
  • 关注

原创 pip相关操作

【代码】pip相关操作。

2023-11-17 10:54:04 78

原创 libvirt问题排查---vnc界面键盘无法输入

构造该字段的代码位于:nova.virt.libvirt.driver.LibvirtDriver._guest_add_keyboard_device。就会出现登录vnc无法登录的情况,去掉就可以了。

2023-10-16 18:15:01 315

原创 oslo_VersionedObject-openstack对象管理库

在RPC调用的时候,在请求端需要将对象模型转换成字典进行传输,在接收端需要将字典转换成相应的模型实例,因此出现了oslo.versionedobject基础库。将对象实例转换成字典,是序列化(serializer)的操作,本质上调用的是oslo_versionedobjects.base.VersionedObject.obj_to_primitive方法;

2023-09-28 09:21:42 130

原创 cinder的配额参数说明

cinder quota解析

2023-08-30 15:10:09 221

原创 openstack taskflow参数解析

openstack taskflow使用详解

2023-08-29 10:09:42 119

原创 oslo_messaging学习系列之二《OpenStack中使用消息队列》

rabbitmq系列

2022-09-29 15:02:07 1167 1

原创 Compute通过Conductor访问数据库方法

OpenStack组件通过oslo_messaging使用rabbitmq系列解析

2022-09-29 09:46:58 418

原创 OpenStack调试方法总结

OpenStack代码调试方法

2022-09-27 10:21:07 204

转载 【无标题】

2022-07-19 11:33:13 76

原创 libvirt线程模型分析

libvirtd启动之后,会创建一系列线程,本文就是针对libvirtd进程创建的线程进行分析:libvirtd:是libvirt的daemon进程rpc-worker:是libvirtd接收客户端发送的命令处理的线程pri-rpc-workerqemu-event:udev-event:vm-instance-000:线程,这个线程比较奇怪,每启动一个虚拟机,就会多出一个这样的线程,看名字明显是和VM的名字相关,原因是线程设定的名字只能是15个字符,所以会出现名字相同的情况。但..

2022-04-13 14:07:15 460

原创 关于qemu进程的一些思考

1. VM中的进程和线程是如何在物理机(宿主机)上体现的?在Qemu进程中,通过对每个vCPU创建线程,然后调用ioctl_kvm系统调用陷入VMEntry,进入到non-root模式,去执行Guest操作系统代码。从物理机视角,对每个vCPU都是一个物理机上的线程,并且在qemu的进程中。但从Guest的角度来看,进入到锈迹中之后,仍然可以创建很多进程和线程,这些进程和线程在宿主机上是如何表现的?即若虚拟机中创建一个进程,宿主机上的qemu进程中的线程数量会增加吗?答案是否定的,因为在宿主

2022-04-12 17:57:03 2191

原创 libvirt初始化流程分析

libvirtd daemon初始化流程比较复杂,本文对代码流程进行初步分析,可能有不对的地方,随时会进行更新和补充。总体代码流程main{remote/remote_deamon.c} | |--daemonConfigLoadFile{读取libvid.conf配置项} | |--Decided on pid file path '/usr/local/var/run/libvirtd.pid' | |--virDaemonUnixSocketPaths{获取unix对应的sock

2022-04-01 17:29:10 908 2

原创 Libvirt的job机制3--基本原理

在Job机制简介中介绍了在libvirt中调用接口时如何使用Job机制;在条件变量基本原理中介绍了条件变量的一些基本原理,这个是Job机制的基础。本文主要介绍Job机制中用到的一些函数、结构体等变量,分析其具体的原理和用法。在Job机制简介中已经介绍了Job中condition的类型:分别是asynchronous, agent and normal.参数变量定义:qemuDomainJobtypedef enum { QEMU_JOB_NONE = 0, /* Alwa

2022-01-22 22:06:35 706 2

原创 Libvirt的job机制2--条件变量基本原理

上篇介绍了libvirt中的job机制是如何使用的,在介绍job机制的原理之前,需要介绍条件变量是如何使用的,因为在libvirt中使用的job机制,是基于条件变量的。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待“条件变量的条件成立”;另一个线程使得“条件成立”(即发出条件变量)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。条件变量创建int pthread_cond_init(pthread_cond_t *cond, pthread_co

2022-01-22 16:12:24 538

原创 Libvirt的job机制1--Job机制简介

本文章针对libvirt job机制做了一些说明和介绍,后续会随着认识的不断增加,更新该内容!Job机制简介QEMU driver 使用三种job conditions: asynchronous, agent and normal.Async job 条件变量(condition)用于长时间运行的jobs(eg:migration),通常包含多个monitor command,允许在这些jobs运行时调用有限的monitor command sets。 这允许客户端,例如,查询统计数据(que

2022-01-21 17:52:46 687

原创 libvirt save接口扩展

背景想让libvirt在执行save之后,能够处于paused状态,而不是直接关机;对接口进行扩展,增加flags位,实现该功能。代码实现需要支持python API调用和virsh 命令执行,改变的文件如下: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory

2022-01-19 09:21:56 312

原创 Centos8开启大页内存方法

在计算节点上修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX中加上:hugepagesz=<pagesize>hugepages=<pagenumber> default_hugepagesz=< pagesize >保存退出;然后执行grub2-mkconfig -o /boot/grub2/grub.cfg若是efi启动执行grub2-mkconfig -o /boot/efi/EFI/centos/gr

2022-01-12 10:50:59 1917 4

原创 虚拟化问题定位--无法热挂载和热卸载磁盘

问题背景:在环境中执行磁盘添加和卸载的命令时,发现会报出如下的错误:virsh detach-disk vm1 vdberror: Failed to detach diskerror: internal error: unable to execute QEMU command 'device_del': Bus 'pci.0' does not support hotplugging原因是在虚拟机的xml文件中缺少features的属性: <features>

2022-01-03 16:05:30 1042

原创 虚拟化问题定位--存在持续IO的情况无法卸载云硬盘

问题背景介绍:虚拟机操作系统centos挂载数据盘vdb(将数据盘进行格式化,并挂载到文件中)执行命令数据copy命令:time dd if=/dev/zero of=vdb/test bs=1M count=100000 通过命令卸载云硬盘发现卸载不成功,命令如下:virsh detach-disk domain vdb --livevirsh qemu-monitor-command domain --hmp info block代码分析virDomainDeta

2021-12-24 15:09:53 412

原创 虚拟化问题定位--内存恢复之后无法挂卸载ISO文件

问题背景:对虚拟机执行save和restore,或者managedsave之后,再start,则系统起来之后,无法挂载ISO文件,报出的错误是:libvirtError:internal error:unable to execute QEMU command ‘blockdev-remove-medium’:Tray of device 'ide0-1-0' is not open。挂载ISO和卸载ISO的命令是:domain.updateDeviceFlags(device_xml, f

2021-11-19 14:47:50 1478

原创 OpenStack--虚拟机操作(挂起、暂停和搁置)

1 OpenStack虚拟机三种操作1.1 挂起和恢复(suspend和resume)挂起:openstack中的挂起(suspend)操作是将虚拟机的内存保存到磁盘中,会释放虚拟机在宿主机中的资源。调用libvirt中的方法是managedSave(0)方法,会将虚拟机的内存信息保存到/var/lib/libvirt/qemu/save/目录下。如果虚拟机再次启动的时候,会自动从该目录下,用内存文件启动;启动完成之后,该文件会自动消失。恢复:openstack中对挂起的虚拟机进行恢复.

2021-08-25 17:56:56 5287 2

原创 Openstack创建虚拟机--网卡创建过程

这个是一个渐进过程,现在还在整理过程中......一些基本的数据结构在创建虚拟机的时候,生成InstancePCIRequests对象,InstancePCIRequests对象是一个列表,这个列表中的元素是一组InstancePCIRequest,每个SRIOV端口都会对应一个InstancePCIRequest,会为每个SRIOV port都生成一个InstancePCIRequestInstancePCIRequests.requests.InstancePCIReq..

2021-08-25 16:33:25 637 1

原创 oslo_messaging学习系列之一《rabbitmq基本概念》

本地Ubuntu虚拟机,用devstack搭建的OpenStack环境。1. 无法进入rabbitmq web界面原因:没有打开rabbitmq_management插件,需要执行命令rabbitmq-plugins enable rabbitmq_management2. 查看/etc/nova/nova.conf中的配置文件(rabbit://stackrabbit:[email protected]:5672),将用户名(stackrabbit..

2021-06-30 15:47:33 275

原创 如何通过网页直接修改gerrit上面的代码

原因是:在用git 提交代码的时候,报错误:是因为HTTP密码的原因,但是生成界面的时候,一直无法生成密码:导致一直无法用git 提及提交代码,因此本次介绍一下如何通过网页来提交代码:S1: 找到相应的代码库S2: 找到要修改的库文件之后S3: 填写必要的信息S4: 点击CREATE,开启创建分支,点击EDIT,编辑文件S5: 点击ADD,选择要修改的文件,然后修改,publish,进行发布,即可完成...

2021-04-27 09:49:27 1508 2

翻译 Openstack之定时任务

periodic_taskclass olso_service.periodic_task.PeriodicTasks(conf)Bases:objectadd_periodic_task(task)Add a periodic task to the list of periodic tasks(添加周期性任务到列表中).The task should already be decorated by @periodic_taskrun_perodic_tasks(con..

2021-04-19 18:23:53 442

原创 openstack nova和neutron之间的event通信机制

1 前言在看openstack中的nova代码的时候,创建虚拟机和热迁移的时候,nova侧会创建event时间机制,然后会wait阻塞,直至neutron发送相应的通知消息。代码如下: def _create_guest_with_network(self, context, xml, instance, network_info, block_device_info, power_on=True,

2021-04-15 10:53:04 832

原创 OpenStack云平台开启网卡多队列和多队列缓存功

开启网卡多队列功能来源为镜像的虚拟机,需要设置镜像元数据hw_vif_multiqueue_enabled=“yes” 来源为云硬盘的虚拟机,在创建系统盘时需要设置镜像的元数据hw_vif_multiqueue_enabled=“yes” 创建虚拟机成功之后,可以在XML文件中看到<interface> … queues='XXX' ….</interface>XXX是网卡多队列的个数,一般和虚...

2021-02-04 15:06:52 1874

原创 Centos8.2版本中安装sasl出现问题

在centos8,2版本中,将sasl进行安装,安装过程如下:MECH已经配置成shadow方式但是在执行命令:出现认证失败的现象,现在还不知道怎么处理在centos7中没有这种问题

2020-11-16 15:04:36 736

原创 openstack--添加数据库表

https://blog.csdn.net/gzhouc/article/details/69757993?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_pa

2020-10-12 15:52:51 287

原创 oslo_mesaage值RPC相关配置项设置

参考:https://docs.openstack.org/oslo.messaging/ussuri/configuration/opts.html#oslo-messaging-amqphttp://10.7.77.203:8090/pages/viewpage.action?pageId=22849740

2020-10-10 09:56:02 124

原创 python之with...as...以及在openstack中的应用详解

with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的清理工作,来释放资源,比如文件使用后自动关闭,县城中锁的自动获取和释放等。with相关的术语:要是用with语句,首先要明白上下文管理器这一概念。有了上下文管理器,with语句才能工作。下面是一组与上下文管理器和with语句相关的概念。上下文管理协议(Context Managerment Protocol):包含enter()和exit()方法,支持该协议的对象要实现这两个方法。上下文管理器(Co.

2020-08-26 11:38:02 179

转载 物理CPU (physical CPU)、 逻辑CPU(logical CPU)、虚拟CPU(virtual CPU)、核数(core)、线程数(thread)、颗数(socket)

https://www.cnblogs.com/zh1164/p/9883852.html

2020-08-17 09:33:48 1997

原创 openstack常用知识点

1. XML文件存放的位置:/etc/libvirt/qemu/

2020-08-05 11:19:08 162 1

原创 linux 命令学习总结:

记录一些常用的linux命令:1.awk -F ':',以冒号为分隔符awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割#cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'root .

2020-08-05 10:24:51 100

原创 kolla部署的openstack环境中,调试支持SASL的调试记录

一、开启SASL认证memcached服务的方式:1. 在节点上安装memcached服务,yum list |grep memcached查找memcached安装包 yum install memcached.x86_64 ps -ef |grep memcached查看memcached服务是否开启2. 查看sasl服务是否开启 rpm -qa |grep sasl ps aux |grep saslauthd yum search sasl yum...

2020-08-03 10:29:14 252

原创 nova-重启云主机实例

1. nova/api/openstack/compute/servers.py文件中 def _action_reboot(self, req, id, body): reboot_type = body['reboot']['type'].upper() context = req.environ['nova.context'] instance = self._get_server(context, req, id) con

2020-08-02 17:44:23 784

原创 nova--关闭云主机实例

1. /nova/api/openstack/compute/servers.py def _stop_server(self, req, id, body): """Stop an instance.""" context = req.environ['nova.context'] instance = self._get_instance(context, id) context.can(server_policies.SERV

2020-08-02 15:43:03 841

原创 openstack源码解析---开启云主机

位于nova/virt/libvirt/driver.py def power_on(self, context, instance, network_info, block_device_info=None, accel_info=None):

2020-07-30 15:28:00 390

原创 Openstack之object文件夹专题说明——一

在逐渐接触openstack的过程中,意识到数据库的操作是整个应用程序的核心内容,因此,想专门针对obejct文件夹下面的各个类文件进行详细的介绍。同时介绍一些python的高级用法;openstack项目也是将python语言用的最纯火炉青的一个project,在阅读代码的过程中,感觉自己以前学习的python是那么的肤浅。...

2020-07-22 15:44:20 497 1

原创 openstack提交代码

参考文档:https://www.cnblogs.com/Security-Darren/p/4383838.html

2020-07-21 18:59:39 118

oslo_cache增加SASL安全认证代码

修改oslo_cache中的代码,支持SASL安全认证功能 在原来代码的基础上,适当修改代码,支持SASL安全认证

2020-06-28

remote_pdb-2.0.0-py2.py3-none-any.whl

remote_pdb用于python调试 调试方法: from remote_pdb import RemotePdb;RemotePdb('127.0.0.1',4441).set_trace() 在另一个界面上输入: telnet 127.0.0.1 4444

2020-05-22

Makefile的编写与使用

makefile工具的编写和使用,可以在linux系统中编写相应的C++文件

2019-01-09

SDL 规范说明与描述语言

SDL有图形表示法(GR)和文字短语表示法(PR)两种。GR用一系列的符号和图形来描述系统,非常直观;PR用语句来描述系统,便于计算机处理。这两种表示方法在语义上是等效的,它们之间可以互相转换。图中是SDL对系统行为描述的片断,其中GR和PR是等效的。

2018-09-04

规范说明与描述语言SDL

规范说明与描述语言SDL SDL有图形表示法(GR)和文字短语表示法(PR)两种。GR用一系列的符号和图形来描述系统,非常直观;PR用语句来描述系统,便于计算机处理。这两种表示方法在语义上是等效的,它们之间可以互相转换。图中是SDL对系统行为描述的片断,其中GR和PR是等效的。

2018-09-04

滑模变结构控制MATLAB仿真(第3版):基本理论与设计方法 仿真程序

刘金坤 滑模变结构控制MATLAB仿真(第3版):基本理论与设计方法 仿真程序;是第三本相应的程序,可以供初学者仿真使用。

2017-09-04

控制系统设计-王广雄(08版)

这是哈工大王广雄老师08年写的控制系统设计

2017-06-24

基于MATLAB卫星姿态建模自适应PID仿真

首先建立卫星动力学和运动学方程;其次基于自适应PID控制方法,实现卫星姿态的渐进稳定控制。

2016-11-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除