自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (4)
  • 收藏
  • 关注

原创 代码调试-使用gdb调试libvirtd

​ 想知道libvirtd在执行具体函数时,函数的具体传参以及局部变量信息。想调试libvirt 输出某函数执行的过程中的详细信息。client 连接测试。

2025-03-21 15:38:17 158

原创 Linux下使用cgroup限制进程IO

​ 这里涉及到磁盘IO以及网络IO,网络IO依靠rsync 的bwlimit限制接口,对于磁盘IO,考虑使用cgroup实现。​ 在给用户通过rsync 传输数据时,为了避免对线上业务造成IO压力,考虑对进程限制磁盘IO以及网络IO吞吐。系统是centos 6 ,下面配置一下。

2025-03-18 11:57:01 144

原创 Kolla-Ansible deploy部署报错 KeyError: \\‘KernelMemory

解决办法:降低docker版本至docker-ce-20.10.9。

2025-03-04 19:50:26 259

原创 openstack ironic ipa 以及用户镜像制作

中的centos和ubuntu操作系统的镜像可以直接从社区直接下载下来使用,但是总是感觉有问题,cloud-init初始化程序是通用的,启动速度很慢,查了一下相关信息,发现是cloud-init进程会去访问外网一个地址,感觉使用起来用户体验很差。手工制作镜像是最符合实际使用需求的,想定制什么样的镜像都可以,但是有些费时费力。目标是建立一个拥有Nova所需的所有组件的镜像,如trove所需的数据库镜像,ironic所需的支持硬件裸机的镜像。最终成功了,这真的是够费劲的,遇到各种问题,各种改脚本兼容。

2025-02-25 20:31:58 617

原创 C语言读写文件

的安全版本,它接受一个额外的参数来指定文件路径的缓冲区大小。这样做的好处是可以防止恶意代码通过修改文件路径来攻击你的程序。函数被视为不安全,因为它可能容易受到缓冲区溢出攻击。为了解决这个问题,推荐使用。在打开文件失败时,会返回一个非零值,而不是NULL,这使得错误处理更加明确。函数打开文件时,你可能会遇到编译警告C4996,提示这个函数或变量可能不。这是因为在某些编译器(如Microsoft的Visual C++)中,在C语言编程中,文件操作是常见且重要的任务。

2025-02-19 14:17:30 327

原创 搭建openstack可以这么简单

基于kolla-ansible 部署openstack Yoga版本用于开发测试,本文绝对是目前为止最简单部署的了,请看完全文。

2025-02-19 12:50:58 328

原创 CentOS虚机在线扩容系统盘数据盘

最近在制作Openstack下的镜像,用户需要CentOS6以及CentOS7的虚机镜像,遇到了些关于系统盘以及数据盘在线扩容的问题,故此整理一下。所以,假如虚机镜像大小20G,创建系统盘大小是50G的虚机时,默认情况下cloud-init会调用growpart以及resize2fs扩容系统盘。​ 如果是centos7的系统镜像,虚机开机过程中cloud-init调用growpart和resize2fs即可直接在线扩容系统盘。如果没有LVM逻辑卷的情况下,则可以考虑使用growpart命令。

2025-02-08 19:19:40 513

原创 deepseek+kimi自动生成ppt

打开deepseek官网,输入详细的需求,让他生成个ppt。打开kimi粘贴刚才deepseek生成的内容。接着deepseek开始思考生成了。可以一键生成啦,下载编辑使用吧。接着复制生成了的内容。

2025-02-08 08:56:46 4648

原创 anolis 8 安装KVM

上面virsh 命令能运行就代表livirt正常。基于anolis 8.8 x86_64。

2025-01-21 18:36:38 166

原创 tcpdump 精准分析vxlan网络

VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上,可以方便地通信。我们知道,在云计算中,大部分overlay网络都是基于vxlan实现的,在一般云网络运维场景下,外层报文的三层头都是物理机(宿主机)的 ip 地址,虚拟机实际通信的源/目的 ip 地址都是被封装到了内层报文中,所以需要弄明白虚机的流量路径,所以抓包分析一下。

2025-01-21 18:33:22 1403

原创 tcpdump抓包length为何超过MTU大小

上述三个功能很类似,都是网卡驱动层提供的流分组重组技术,用于减轻CPU负载。比如内核可以发送一个14K的长包,驱动层就会给长包分成10个小于1514的包,发送出去。接收过程也一样,网卡驱动在收到多个同一会话的包后,组合成一个超过1514的长包,发送给内核。巨型帧,是指有效负载超过IEEE 802.3标准所限制的1500字节的以太网帧。这里的GRO选项开启后,网卡收到的TCP数据流,可以在发送给内核之前,进行流重组,生成大于MTU值的数据包。2,TSO,GRO,GSO数据流分组重组。这里有几种可能的情况。

2025-01-20 16:48:09 405

原创 记一次虚机上传过慢问题排查

最近线上虚机有个特殊的用户反馈,用户反馈虚机从A服务器下载文件特别慢,于是scpA服务器数据到本地client,发现只有几十K的流量。当时第一反应怀疑是虚机负载压力比较大,但是查看虚机IO以及负载都很低。。。。然后tcpdump抓包发现有大量重传,虚机A,但是抓包存在length1466的包都重传了,理应分片为啥不分片呢?所以还是哪块网络有问题。

2025-01-20 14:04:57 561

转载 动图图解!既然IP层会分片,为什么TCP层也还要分段?

byte 数据需要发送,需要分片才能完成发送,分片后的 IP Header ID 相同,同时为了分片后能在接收端把切片组装起来,还需要在分片后的IP包里加上各种信息。首先,虽然我们平时用的网络感觉挺稳定的,但其实这是因为TCP在背地里做了各种重传等保证了传输的可靠,其实背地里线路是动不动就丢包的,而越大的包,发生丢包的概率就越大。因此,就算TCP分段过后,在链路上的其他节点的IP层也是有可能再分片的,而且哪怕数据被第一次IP分片过了,也是有可能被其他机器的IP层进行二次、三次、四次…

2025-01-17 15:07:11 34

原创 tcp粘包原理和解决

举个例子:有三个数据包,大小分别为2k、4k、6k,如果采用UDP发送的话,不管接受方的接收缓存有多大,我们必须要进行至少三次以上的发送才能把数据包发送完,但是使用TCP协议发送的话,我们只需要接受方的接收缓存有12k的大小,就可以一次把这3个数据包全部发送完毕。TCP为了保证可靠传输并减少额外的开销(每次发包都要验证),采用了基于流的传输,基于流的传输不认为消息是一条一条的,是无保护消息边界的(保护消息边界:指传输协议把数据当做一条独立的消息在网上传输,接收端一次只能接受一条独立的消息)。

2025-01-16 15:44:23 894

原创 centos下nvme over rdma 环境配置

RDMA(全称:Remote Direct Memory Access)是一种远程直接内存访问技术,通过在硬件中实现传输层协议,将内存/消息原语接口暴露至用户空间,通过绕过CPU和内核网络协议栈来实现高吞吐和低延迟的网络。RoCE(RDMA over Converged Ethernet)是一种允许通过以太网使用远程直接内存访问(RDMA)的网络协议。关于什么是NVMe over Fabrics,什么是NVMe over RDMA,本文就不做介绍了,网上资料一大堆。

2024-09-13 18:12:26 940

原创 CentOS 7下CX5-RDMA网络测试

RDMA(Remote Direct Memory Access) 全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA 通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和 CPU 周期用于改进应用系统性能。RDMA需要智能网卡支持,这里使用的是Mellanox cx5。基于CentOS 7.8 x86_64。

2024-09-13 15:01:56 1960

原创 SPDK 部署NVMe over TCP

SPDK NVMe over Fabrics Target是一个用户空间应用程序,通过以太网,Infiniband或光纤通道等结构呈现块设备,SPDK目前支持RDMA和TCP传输。默认TCP transport就支持了,如果要走RDMA需要spdk编译时加相关参数开启。前文讲到基于 Anolis OS release 8.6 kernel 5.10.134-13.an8.x86_64 安装了spdk 22.0。

2024-09-10 11:44:13 974

原创 SPDK绑定nvme磁盘失败报错

如下在spdk 接管设备时,报错Active devices: data@nvme0n1, so not binding PCI dev。于是查看磁盘信息, 原因是曾经被我格式化过了。此时需要使用dd 将文件系统信息擦除。

2024-09-10 11:18:45 453

原创 anolis 8 安装部署spdk

SPDK的部署可以参考官方 https://github.com/spdk/spdk 有文档这里记录一下,基于 Anolis OS release 8.6 kernel 5.10.134-13.an8.x86_64v 下的部署以及遇到的问题使用 v22 版本 , 这里会git clone github项目,国内访问github会失败,建议自行GG解决github访问过慢问题哈。

2024-09-09 18:20:27 365 1

原创 Anolis 8 NVME over TCP 配置使用

NVMe over TCP,简单来说就是使用TCP协议下发NVMe命令给远端的NVMe设备。NVMe over TCP环境搭建时,发送NVMe命令的叫做host端,接收NVMe命令的叫target端。host 端挂载target端的磁盘到本地使用。基于 Anolis OS release 8.6 kernel 5.10.134-13.an8.x86_64。

2024-09-09 17:47:53 701

原创 uniapp 支持复制当前文本内容

uniapp 小程序上面有时需要支持复制功能,如下代码即可。(注意小程序隐私协议需要打开剪切板功能)

2024-09-02 09:37:59 1182

原创 etcd v2/v3 最全常用命令差异

命令可以查看ETCD集群的成员状态。这将列出集群中所有节点的信息,包括节点ID、名称、客户端URLs和peerURLs等。系统,广泛应用于配置共享、服务发现、分布式锁等多个领域。下面整理了v2/v3版本中命令的使用差异。命令可以监视ETCD集群中键值对的变化。当指定键的值发生变化时,该命令将输出新的键值对。命令可以获取ETCD集群中的键值对。命令可以设置键的TTL,即键在多长时间后自动删除。使用etcdctl 查看etcd 整个目录树结构。命令可以删除ETCD集群中的键值对。命令可以设置或更新键值对。

2024-08-29 10:01:12 534

原创 一次bad udp checksum故障

用户反馈 client 访问某服务 的 udp 端口 1107 访问异常,使用tcpdump在服务端抓包时发现,客户端发给服务端的udp报文可以接收到,但服务端发给客户端的udp报文会报错bad udp cksum。发现是打开了,关闭了再抓包就发现正常了,这可能和宿主机网卡有某些关系吧。服务跑在虚拟机上,查询虚机 tx checksumming 参数。

2024-08-28 14:11:40 1104

转载 Linux 网卡特性配置 ethtool 详解 网卡Offload

网络中校验和比较本文说明了网卡,IP层,TCP层,UDP层的校验和功能,以及异同点。网卡校验和高级的网卡(e1000e等千M网卡)的接收,发送的校验和的计算方法是CRC32。

2024-08-28 13:54:41 649

原创 ethtool 了解网卡参数

通过 ethtool 工具深入了解你的网卡。

2024-08-28 11:54:46 1762

原创 uniapp 小程序支持打开手机相册和摄像头

开发uniapp 时,有时需要让用户上传手机相册或者拍摄图片,对图片进行处理,下面提供了一个method,支持打开摄像头拍照和相册功能,完成后,对图片做base64处理。这里我使用该功能,开发了个自动识别图片的功能,支持动植物,人物,物体解析功能,可以扫码体验一下,给些建议~相对应的button 设置click到该函数即可。

2024-08-27 10:03:31 1036 2

原创 uniapp 小程序页面支持微信QQ分享功能

uniapp开发小程序时候,希望能够分享当前小程序给微信好友,朋友圈,QQ群功能,可以在onload中加载参数。

2024-08-27 09:57:23 333

原创 CentOS 7 部署iscsid 存储服务

我们已经创建了逻辑卷并准备使用LUN,现在我们在目标器配置中定义target 以及LUN设备,只有这样做它才能用在客户机中(发起程序)。

2024-08-22 09:43:03 581

原创 cinder配置使用本地lvm

cinder-volume 默认使用 LVM 驱动,该驱动当前的实现需要在主机上事先用 LVM 命令创建一个的卷组 , 当该主机接受到创建卷请求的时候,cinder-volume 在该卷组 上创建一个逻辑卷, 并且用 openiscsi 将这个卷当作一个 iscsi tgt 给输出.还可以将若干主机的本地存储用 sheepdog 虚拟成一个共享存储,然后使用 sheepdog 驱动。

2024-08-16 14:57:42 360

原创 掌握一致性哈希算法

不同的负载均衡算法适用的业务场景也不同的。轮训这类的策略只能适用与每个节点的数据都是相同的场景,访问任意节点都能请求到数据。但是不适用分布式系统,因为分布式系统意味着数据水平切分到了不同的节点上,访问数据的时候,一定要寻址存储该数据的节点。哈希算法虽然能建立数据和节点的映射关系,但是每次在节点数量发生变化的时候,最坏情况下所有数据都需要迁移,这样太麻烦了,所以不适用节点数量变化的场景。为了减少迁移的数据量,就出现了一致性哈希算法。

2024-08-16 14:25:21 972

原创 基于python 开发调试rabbitmq - 2

基于python 3 pika 调试 openstack rabbitmq创建工作队列,类比一个大的工作,需要发送多个小任务到队列中,让多个消费者消费。

2024-08-14 10:43:28 492

原创 基于python 开发调试rabbitmq - 1

基于python 3 pika 调试 openstack rabbitmq测试基于固定的队列,发送hello world 简单发送接收参考解读官网:https://www.rabbitmq.com/tutorials/tutorial-one-pythonproducerqueueconsumer。

2024-08-14 09:46:29 607

原创 neutron服务启动源码分析(四)

初始化neutron agent, 创建br-int 交换机,启用tunnel则创建br-tun交换机以及流表, agent侧开启rpc,如果启用dvr则下发dvr流表,初始化firewall (目前是 基于iptables 的 neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver)调用了OVSNeutronAgentOSKenApp的start方法。这里初始了配置,import 了native的module。

2024-01-05 15:36:26 659 1

原创 经纬度的作用

了解并正确使用经纬度对于我们来说是非常有益的,它不仅可以满足我们对于地理位置的好奇心,还能够帮助我们更好地理解和探索我们生活的这个地球。随着科技的发展,如今我们的手机、平板电脑甚至手表等设备都内置了全球定位系统(GPS)功能,可以随时获取当前位置的经纬度。这为我们的生活带来了很大的便利,无论是出行导航还是外卖送餐,都离不开经纬度的精确定位。通过知道一个地点的经纬度,我们可以在地图上准确地找到该地点的位置。当我们在手机上使用导航软件或者在网上查找地址时,经常会发现一个选项,就是显示当前位置的经纬度。

2024-01-05 10:04:59 1029

原创 neutron 安全组代码实现(二)

由前面安全组代码实现一中,我们知道,最终执行了ML2 plugin的create_security_group_rule 方法,由类继承我们知道最终执行了 SecurityGroupServerNotifierRpcMixin.create_security_group_rule, 函数中执行了父类sg_db.SecurityGroupDbMixin 中的create_security_group_rule。最终执行了refresh_firewall , 最终调用firewall driver更新。

2024-01-05 09:58:25 681

原创 neutron 安全组代码实现(一)

安全组创建create请求由controller处理,调用create函数,self._notifier.info 这里先init 了neutron-lib库中的rpc.py中的NOTIFIER,然后调用oslo_message发送了一个info的通知 security_group.create.start, 调用。因为event是events.BEFORE_RESPONSE,所以最终执行了self._notify_loop,最终执行了callback。最终发送cast广播出去了。

2024-01-05 09:57:14 1213

原创 openstack计算节点上iptables安全组分析

由上面可以看出,neutron-openvswi-INPUT链中将来自是 tap323ef4ca-8a和 tapa937d188-d6的流入转给了neutron-openvswi-o323ef4ca-8和 neutron-openvswi-oa937d188-d 两个安全组子链,再看下这俩安全组子链。之前介绍过neutron 安全组基于iptables 和 ct 实现,分析一下计算节点上面的neutron 安全组的iptables,加深一下理解iptables以及安全组的实现。FORWARD 链先跳到。

2023-11-09 16:27:19 620

原创 程序员的护城河有哪些

综上所述,程序员的“护城河”是一种综合能力,包括技术能力、经验、项目和作品集、开源社区贡献、持续学习和适应能力、解决问题的能力、团队合作能力、时间管理和情绪管理等多个方面。通过展示自己的学习能力和对新技术的掌握,程序员可以在竞争中保持优势。通过在开源项目中积极参与并提交代码,程序员可以展示他们的技术能力、合作能力和对技术社区的价值贡献。:程序员可以通过他们参与过的项目和作品集来展示他们的实际能力和成就。:程序员需要具备解决问题的能力,这包括分析问题、提出解决方案、实施解决方案和测试解决方案的能力。

2023-11-09 16:25:25 152

原创 Linux vim 报错 E437

方法2:要下一劳永逸,将上述命令写入 /etc/bashrc或者/etc/profile 文件确保永久生效,切记保存后顺手执行 source /etc/bashrc。方法1:要是偷懒,那直接执行命令 export TERM=linux 或者 export TERM=xterm。或者将export TERM=xterm 添加至/etc/profile文件中即可。这个错误一般是环境变量TERM没有配置或者配置错误所致。执行export TERM=xterm;

2023-11-08 12:59:31 896

原创 Linux-源码安装go

使用go 1.14 版本。

2023-11-08 12:56:30 435

Openstack-在京东的应用实践

Openstack_在京东的应用实践

2023-07-20

开源力量之两小时玩转openstack

开源力量之两小时玩转openstack

2023-07-20

Neutron 网络之负载均衡 - UnitedStack

UnitedStack公司之详细讲解Neutron 网络之负载均衡

2023-07-20

TIDB-K8S的实践

架构师大会,TiDB的实践分享,在K8S微服务的实战经验分享

2019-02-11

滴滴NOSQL之Fusion的演进之路

滴滴分布式NoSQL数据库Fusion的演进之路,海量存储,大数据

2019-02-11

业务驱动的技术架构

云计算,业务,技术架构,大神著作,必看经典,

2019-02-11

rsync+innotify数据同步

innotify数据同步,rsync+innotify

2013-10-11

空空如也

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

TA关注的人

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