自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vsock 框架介绍

vsock 被广泛应用于qemu、以及kata container等云计算场景下。

2025-04-24 10:34:34 535

原创 openvswitch 常用命令参考

nw_tosnw_ecnnw_ttldl_vlanip_fragarp_shaarp_thaipv6_srcipv6_dstportset field其中,TABLE名支持bridgecontrollerinterfacemirrornetflowportqosqueuessl,sflow。

2025-04-23 09:53:08 960

原创 openvswitch trace排查虚机网络

远程管理功能,它能通过网络策略实现更多控制。它是XenServer的“波士顿”计划Xen云平台的默认交换机,并且还支持Xen,KVM,Proxmox VE和VirtualBox。虚拟化sdn 基于openvswitch实现,基于ovs trace排查流量路径,查看某虚机 172.16.12.7 (mac fa:16:3e:51:97:cc) 到 172.16.12.10 的路径。Open vSwitch是一种开源软件,专门管理多租赁公共云计算环境,为网络管理员提供虚拟VM之间和之内的流量可见性和控制。

2025-04-23 09:50:48 153

原创 kubernetes-使用ceph-rbd-csi

Ceph是开源的,它使许多供应商能够提供基于Ceph的软件去定义合适的存储系统。因各个项目集群在部署时对存储的需求各有差异,使用Ceph作为统一储存,则在确保可靠性的同时又能具备相应的灵活性,将计算与存储解耦与K8s灵活的部署方式相得益彰。Ceph提供统一的横向扩展存储,带有自我修复和智能预测故障的功能,已经成为软件定义存储的事实上的标准之一。配置cephx的账号和密码(ceph auth 的账号和密码在ceph侧自行生成即可,当然如果不开启cephx的情况下,这里userID和userKey随便填就行)

2025-04-18 19:48:43 868

原创 kubernetes-高频率使用命令

【代码】kubernetes-高频率使用命令。

2025-04-17 14:50:08 99

原创 Linux-最大线程数问题排查

于是通过 top 以及 top -H 查看系统进程数 300+ 和线程数 4100+,发现top -H 发现用户启动了过多的线程,由此定位到了原因。这是因为在Linux内核中,线程是通过轻量级进程(LWP)实现的,每个线程会占用一个进程号(PID),因此会被计入。发现系统默认除了root 用户默认最多的进程+线程总数最大是4096,所以是不是用户启动了过多进程或线程呢。最近有用户反馈登录CentOS 7系统后,执行任意命令,报错。看到这个怀疑是系统ulimit 限制导致的。

2025-04-15 13:59:18 268

原创 go-开发谚语

你应该了解的go语言的谚语,开发箴言,有利于日常开发。

2025-04-15 09:29:26 237

原创 Kubenetes-基于kubespray 部署集群

kubespray 是一个部署生产级别的kubernetes集群的github 开源项目,基于ansible-playbook实现自动化部署。github地址: https://github.com/kubernetes-sigs/kubespray,具体支持的比如OS以及插件等功能详见github。#这里kubestrap 将ssh ip和cluster 通信的ip 在inventory里面区分开了,这块设计的挺好。PS:上面主机全部都能翻墙国外下载docker镜像,部署完成,在线部署还是很顺利的~

2025-04-14 17:51:47 375

原创 Kubernetes-如何进入某POD中

工作中需要进入pod中查询比如pod 网络等问题。

2025-04-09 17:40:53 559

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

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

2025-03-21 15:38:17 171

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

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

2025-03-18 11:57:01 174

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

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

2025-03-04 19:50:26 265

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

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

2025-02-25 20:31:58 648

原创 C语言读写文件

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

2025-02-19 14:17:30 333

原创 搭建openstack可以这么简单

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

2025-02-19 12:50:58 345

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

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

2025-02-08 19:19:40 528

原创 deepseek+kimi自动生成ppt

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

2025-02-08 08:56:46 4773

原创 anolis 8 安装KVM

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

2025-01-21 18:36:38 174

原创 tcpdump 精准分析vxlan网络

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

2025-01-21 18:33:22 1453

原创 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 440

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

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

2025-01-20 14:04:57 576

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

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

2025-01-17 15:07:11 63

原创 tcp粘包原理和解决

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

2025-01-16 15:44:23 909

原创 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 981

原创 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 2087

原创 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 984

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

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

2024-09-10 11:18:45 487

原创 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 374 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 711

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

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

2024-09-02 09:37:59 1194

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

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

2024-08-29 10:01:12 548

原创 一次bad udp checksum故障

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

2024-08-28 14:11:40 1145

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

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

2024-08-28 13:54:41 708

原创 ethtool 了解网卡参数

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

2024-08-28 11:54:46 1897

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

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

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

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

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

2024-08-27 09:57:23 344

原创 CentOS 7 部署iscsid 存储服务

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

2024-08-22 09:43:03 591

原创 cinder配置使用本地lvm

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

2024-08-16 14:57:42 371

原创 掌握一致性哈希算法

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

2024-08-16 14:25:21 977

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

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

2024-08-14 10:43:28 494

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关注的人

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