自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 裁剪内核和新内核available差异大原因分析

host内核裁剪时会进行收益的比较,比如裁剪前用5.10最新内核得出内存数据,然后和裁剪后的内存数据进行对比。

2023-07-19 13:48:29 401

原创 guest内核不响应导致磁盘卸载问题排查

客户报障磁盘卸载不了,而且是经常出现卸载不了的情况,客户比较着急,同时PDD也是大客户。

2023-07-03 16:01:08 255

原创 pcie设备卸载没有响应

客户报障磁盘卸载不了,客户反馈他们这个镜像是从阿里云拿过来的,在其他云可以卸载,在我们的云上一直卸载不了。用户用这个镜像创建了不少机器,都出现了卸载磁盘失败的报警,导致收到不少报警。只要qemu收到卸载请求了,如果没有卸载成功,基本都是guest内部没有响应,可是这个用户反馈这个镜像在阿里云可以正常卸载。 /var/log/messages 日志里没有找到卸载磁盘相关的日志,说明虚拟机完全没有响应卸载磁盘的请求。Jan 10 02:41:40 instance-2ro0jdws kernel

2022-06-10 11:31:50 1288

原创 libvirt numatune 原理

目录numatune是什么线上现状numatune memorylibvirt内核numatune memnodeqemu内核alloc page结论numatune是什么numatune是libvirt的一个参数,可以用在numa架构的虚拟机上,用来控制虚拟机内存访问的亲合性。使用方法如下:xml: <domain> ... <numatune> <memory mode="stric..

2021-08-03 09:56:33 1141

原创 基于diagnose-tools 学习字符设备

基于diagnose-tools 学习字符设备1、设备模型分析 关键数据结构 字符设备模型组件 devices 组件 subsystem 内核对象子系统 classes 组件2、字符设备驱动开发 字符设备驱动关键数据结构 字符设备驱动的组成部分代码流程分析...

2020-12-30 14:13:30 800

原创 systemd 托管的进程热升级中,systemd的一些坑

问题在我们对某些进程做升级时,并且这些进程是被systemd托管的,比如ovs热升级后发现有新ovs进程起来后又退出了,并且退出后,并没有被systemd重新拉起,这个比较严重,热升级后进程退出,还没有重新拉起,会导致虚拟机网络中断时间过长。分析分析退出原因:1、首先分析什么原因退出的,分析 ovs 日志,并没有发现有报错。2、手动起ovs进程,然后进行热升级,发现进程状态正常,但是用systemd起的ovs进程,只要热升级就退出。3、查看日志,systemctl status ov

2020-11-26 16:42:32 1914

转载 ARM64的内核栈、用户栈、寄存器上下文【转】

非常好的一篇文章,转载:https://www.cnblogs.com/zengjianrong/p/11974351.html1.内核栈的分配,即thread_info的分配,是在do_fork->dup_task_struct中分配(默认为2个pages),并赋值给task_struct->stack;2. 用户栈的分配分两种:  一是pthread create会事先mmap分配好用户栈,传给do_fork->copy_thread:用户栈起始地址会赋值给pt_reg..

2020-11-14 19:17:58 880

原创 qcow2 和 rbd qemu侧流程

qcow2的读写更多的是借助qemu本身的协程机制实现并发,在读写文件的时候,使用的是write read的同步阻塞机制,读写完才会继续走下面的流程,没有回调这一说法。但是在write read时,当前协程会被挂起,切换到另一个协程处理。当调度到之前那个读写协程后,再继续往下面走。rbd的读写借助于librbd的异步回调来实现,同样写不会因为write read阻塞当前线程。当读写io完成后,...

2020-10-30 16:43:17 796

原创 librbd 简单学习例子

去年写了个librbd的读写demo,今天找了好久才找到,写到博客里记录下熟悉librbd的接口,从一个demo 开始是个不错的选择/* 注释就不详细写了,代码比较简单 */#include <rados/librados.h>#include <rbd/librbd.h>#include <stdio.h>#include <stdlib.h>rados_t init_rados() { // we will use a.

2020-10-23 17:58:57 508

原创 qemu 信号线程化

在看qemu_init_main_loop 函数的时候发现 qemu_signal_init 里竟然会调用qemu_set_fd_handler 添加 ctx的io_handlers, 设置 fd对应的处理函数,于是看了下qemu_signal_init ,原来是 信号线程化的,使信号可重入,使信号处理函数可以更复杂。同时这里还使用了 signal_fd,原来现在内核里已实现了信号fd,以前都是用管道,用户态实现通知,qemu为了兼容,两种都实现了,下面分析代码:qemu_init_mai...

2020-10-20 09:17:14 522

原创 信号处理,信号队列

最近几天在看信号,对实时信号的实时性不是很理解,今天看了下 __dequeue_signal 差不多理解了,一个实时信号可以有多个实时队列,在signal集合里一个signal可能有多个signal队列。信号,有信号队列,有信号集sigpending是信号pending的结构体,里面有sigqueue的链表,和signal的一个集合,这个集合,实际是一个 unsigned long 64位的类型的值,所以也可以这个也限制了信号的数据,也只能支持64个信号。typedef unsigned lo

2020-09-22 20:59:18 461

原创 virtio_vring_index里的guest_index和host_index分析

virtio_vring_index. 获取 vring queue里的guest_index和host_index,初一看是不清楚 什么是 guest_index和host_index。void virtio_vring_index(VirtQueue *vq, NetVringIndex *index){ index->guest_index = vring_g...

2020-04-05 17:47:21 350

原创 进程guesttime的统计计算流程

主要流程是qemu调用kvm_vcpu_ioctl(cpu, KVM_RUN, 0)后陷入内核态,然后kvm模块会进入vcpu_run,等待被调度,如果被调度成功,则会进入kvm_guest_enter,并把进程task_struct current->flags |= PF_VCPU;,标识进入guest运行。当时间片执行完成后会执行kvm_guest_exit,删除之前设置的PF_...

2020-03-16 21:25:05 564 1

原创 内存Available 是怎么计算的

前段时间在看/proc/meminfo,计算内核态内存,用户态内存,还有X内存。在看这些的时候发现个问题就是 MemAvailable 竟然大于 Buffers + Cached + MemFree,因为在我印象里一直认为Available会少于buff + cache + free的。于是扒代码分析:...

2020-03-04 15:57:27 3166 2

原创 Centos7 内核调试

一、部署编辑文件 /etc/default/grub添加参数 ‘crashkernel=<Reserved_size_of_RAM>‘ 在 ‘GRUB_CMDLINE_LINUX‘ 后面。GRUB_CMDLINE_LINUX="crashkernel=auto crashkernel=128M"执行:grub2-mkconfig -o /boo...

2020-03-04 10:54:56 679

原创 windows虚拟内存和SYN攻击

前段时间处理了两个windows的问题,感觉有点意义,记录一下,一个是虚拟机扩容后,C盘可用空间变小,一个是3389端口被少量syn后,mstsc 连接不上windows.一、虚拟机扩容后,C盘可用空间变小。这是由于机器内存增加,windows系统自动增大了虚拟内存的体积造成的,有以下两个原因:1、内存大小和休眠文件大小有直接关系,一般休眠文件等于内存大小 hiberfil.sy...

2020-03-04 09:42:11 834

原创 oom详解

目录oom_adj是什么oom_score_adj是什么oom_adj和oom_score_adj关系为什么写入的oom_adj和获取的oom_adj不一致:进程如何打分oom怎么判断oom_adj是什么oom_adj 是一个打分因子, 取值范围 -17到 15。 取值 -17 这个进程就永远杀不掉了oom_score_adj是什么oom_score_...

2020-01-09 21:35:09 3237

原创 腾讯windows开机启动服务

腾讯windows云主机里有一个开机启动的windows任务计划程序timesync,同步时间,还有三个开机启动服务cloudbase-init,其它二个应该有可能是安全agent和类似自研的cloudbase-init。当这些程序被360禁止开机启动后,windows就很多功能做不了,比如在控制台重置密码。...

2019-11-19 15:34:46 176

原创 时间管理好难

时间管理好难啊。总会被一些感兴趣的事情,但是没有意义的事情浪费太多时间,这几天在下象棋,浪费大量时间,喜欢看新闻也浪费大量时间。要改变兴趣,把兴趣转到更有意义的事情上来。 改变好难,但是一定要改变。...

2019-10-16 11:11:06 111

转载 【转】理解LINUX的MEMORY OVERCOMMIT

Memory Overcommit的意思是操作系统承诺给进程的内存大小超过了实际可用的内存。一个保守的操作系统不会允许memory overcommit,有多少就分配多少,再申请就没有了,这其实有些浪费内存,因为进程实际使用到的内存往往比申请的内存要少,比如某个进程malloc()了200MB内存,但实际上只用到了100MB,按照UNIX/Linux的算法,物理内存页的分配发生在使用的瞬间,...

2019-09-23 17:06:24 248

原创 计算内核泄漏内存值

最近看物理机有些内存不知道去哪里了,于是总结了下:通过/proc/meminfo 统计内核泄漏值,用总内存(MemTotal) 减去未使用的内存和内核以及用户态程序所使用的内存 (MemFree + MemKernel + MemLru)。这样就能统计出不明去向的内存值,也可以是说是内核内存泄漏了吧。未使用的内存: MemFree = cat /proc/meminfo | grep ...

2019-09-20 14:23:34 308

原创 librbd 使用学习

qemu、rbd-nbd等客户端都是使用librbd进行cephrbd卷的IO访问,如果要深入理解librbd,那么自己写一个client来访问rbd卷(控制操作、IO操作),肯定是个不错的学习方法。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <rad...

2019-09-14 22:09:10 1677 1

原创 linux c open direct 方式写入,memalign

前段时间准备以direct方式写入文件,结果一直写不进去内容,后面发现必须要512字节对齐才可以。使用new或者malloc分配的内存是无法在O_DIRECT选项下工作的,必须使用posix_memalign(或valloc, memalign,这两个函数已经被标记为废弃)。读写操作的传输数据大小和缓冲区地址都需要按照一定的规则对齐:Linux下,对于不同的文件系统和内核版本,需要的...

2019-09-12 12:57:31 819

原创 getrlimit setrlimit 解析

有时间详细写下。先标记下

2019-09-03 09:26:01 117

原创 libguestfs是如何获取操作系统及arch和文件系统以及MBR

arch: 64还是32使用的是file. windows: file system32/windows/cmd.exelinux: file /bin/ls 如果不存在会继续遍历其它可执行文件。MBR:sfdisk --print-id /dev/sda 1文件系统:blkid -c /dev/null -o "value" -s TYPE ...

2019-08-28 16:36:32 659

原创 linux file 命令原理

大概原理就是读取一个文件的前面1024个字节,然后根据magic (/etc/magic 或者 /usr/share/misc/magic) 里对应的规则分析出文件头,并打印输出,下面列出了 linux ELF, windows可执行文件, qcow2文件。linux:# ELF#0 string ELF ELF0 string \177ELF ELF>4 by...

2019-08-26 17:32:08 1541

原创 硬盘分区 MBR和GPT的区别

目录 GPT和MBR的用途是什么? MBR的不足 GPT的优势 兼容性 GPT和MBR如何互相转换 在我们使用windows添加一块的磁盘的时候,都会被提示使用哪个分区类型, MBR(Master Boot Record) 还是GPT(GUID Partition Table)。 ...

2019-08-25 21:46:17 2651

原创 怎么drop掉arp包

先写个标题,后面补上。

2019-08-15 09:41:20 238

原创 arp 相关知识

arp -a 或者arp -e列出所有arp清除某一条 arp 信息 arp -d ip/mac清除某一个网卡上的所有arp : ip neigh flush dev eth0 最后的eth0是网卡名字。ping telnet curl wget 等基本所有的网络请求在没有找到arp表项的时候,都会发arp广播。如何用命令主动去产生arp请求了:arpin...

2019-08-11 17:07:23 234

原创 openstack热插拔cpu ram

争取写一篇详细的细节介绍,还是比较能学到不少知识。

2019-08-07 13:16:15 357

原创 libvirt event注册,poll触发 流程和代码讲解。

poll 大概会注册以下event事件的回调virEventPollHandleWakeup #addEvent updateEvent rmoveEvent。所以一般都是第一个.这个用到管道,fd是管道。virNetDaemonSignalEvent #注册信息处理的,使用管道。fd是管道。virNetSocketEventHandle #所以和libvirtd建...

2019-08-06 22:14:31 1117

原创 虚拟机迁移pause状态,后续迁移pause疑惑

今天有人在测试虚拟机迁移,说pause状态了,我马上上去看,一看确实是pause状态,马上去/var/log/libvirt/qemu里看qemu的日志,可是发现qemu日志里竟然没有任何报错。 同时报警群里报了个error,说迁移的时候没有触发suspend事件。这个就比较严重了,如果没有触发suspend事件,可能会导致其它依赖这个事件的一些操作没有完成。好在我们...

2019-08-05 21:33:21 1194

转载 云计算底层技术-虚拟网络设备(tun/tap,veth)

OpenStack一般分为计算,存储,网络三部分。考虑构建一个灵活的可扩展的云网络环境,而物理网络架构一般是固定和难于扩展的,因此虚拟网络将更有优势。Linux平台上实现了各种不同功能的虚拟网络设备,包括Bridge,Vlan,tun/tap,veth pair,vxlan/gre,...,这些虚拟设备就像一个个积木块一样,被OpenStack组合用于构建虚拟网络。 还有火热的Docker,doc...

2019-07-26 12:35:58 1795

原创 qmp hmp 热插拔 设备

{"execute":"__com.redhat_drive_add","arguments":{"file":"/tmp/test.img","format":"raw","id":"drive-virtio-disk1","cache":"none","aio":"threads"},"id":"libvirt-13”}{"execute":"device_add","argumen...

2019-07-11 13:15:35 669

原创 drive_add -n 6 if=none,file=/tmp/test.img,format=raw,id=disk11

drive_add -n 6 if=none,file=/tmp/test.img,format=raw,id=disk11 { .name = "drive_add", .args_type = "node:-n,pci_addr:s,opts:s", .params = "[-n] [[<doma...

2019-07-08 22:12:33 288

原创 windows sysprep

简单写下吧,之前探究的windows sysprep。发现有些忘了,这个还是很重要的,不能忘。简单记录下,还有其它的代码需要分析,太忙了。sysprep是用来清理镜像的,保证每个根据这个镜像起来的虚拟机是干净的,并且拥有不同的sid。直接用sysprep命令,会弹出个框,来进行简单的设置,但是那样太简单了,会导致新起来的虚拟机需要进行各种手工设置,很影响用户体验。所以需要用以下命令行...

2019-06-20 17:02:01 1383

原创 libvirt job 锁机制分析

libvirt 到后面 driver。每个方法里都有很多相同的,比如 qemuDomObjFromDomain qemuDomainObjBeginJob qemuDomainObjEnterMonitor qemuDomainObjExitMonitor qemuDomainObjEndJob virDomainObjEndAPI。这些都是后面对应方法必须写的,保证同一个vm只能有一...

2019-05-30 11:47:30 748

原创 服务进程启动 supervisor、 init、systemctl.

服务进程启动 supervisor、 init、systemctl.最近有同事在问写了个服务启动的时候为什么用init启动一直卡住,ssh远程启动为什么也一直卡住,systemctl启动为什么启动不了。这个需要要熟悉进程原理,和init. systemctl supervisor这些工作的使用。 还是有不少人知道进程原理和daemon方式,哈哈。基础很重要。init,启动进...

2019-05-14 11:46:12 1763

原创 定个每天时间线的安排吧

总是感叹时间不够用,很有可能就是时间管理不好。每天早上没有安排这一天的事情,晚上也没有总结,然后接下来又是这样反复的一天天,不断的消磨时间。时间有限,要高效利用时间,做个简单的日程表吧6点起床6点20前洗簌好6点20到8点学习英语或者看书。8点去公司,8点半到公司食堂,在车上可以学习英语8点半到9点吃饭9点制定一天的工作和学习规划下午3点到4点锻炼至少半小...

2019-05-13 11:37:19 435

转载 【转】QEMU/KVM磁盘在线备份

QEMU/KVM磁盘的在线完整及增量备份,是“打包”方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复。转载的文章,看了之后,对这个理解更深了,但是应用到生产还是需要有些改动的,比如迁移时迁移bitmap的优化,bitmap持久化,磁盘扩容清除bitmap这些,libvirt 和上层管理端还是需要好好配合下。1. 本文缘由在虚拟化底...

2019-04-02 21:15:58 688

空空如也

空空如也

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

TA关注的人

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