「PVE」- 常见问题处理

… proxy detected vanished client connection …
Proxy detected vanished client connection – Proxmox error resolved
在界面中,提示 Connection Failure 错误; 查看 pveproxy 日志,提示 proxy detected vanished client connection 错误;
服务重启

systemctl restart corosync
systemctl restart pvedaemon
systemctl restart pvestatd
systemctl restart pve-cluster
systemctl restart pveproxy

某个已删除的节点,仍旧在 Web 界面中显示
问题描述 我们未正确处理节点的 Ceph OSD 便尝试删除节点,导致被删除的节点仍旧显示在 Web 界面中。
解决方案 mv /etc/pve/nodes/<node-name> /tmp
登录失败
[SOLVED] – Proxmox VE – Login failed. Please try again. | Page 3 | Proxmox Support Forum [Proxmox VE] 修復 cluster 發生的 no quorum 錯誤 | 小信豬的原始部落 Proxmox VE 2.0 Cluster – Proxmox VE
问题描述
用户界面登录失败,登录接口 401 authentication failure 错误,查看日志:

# journalctl -f -u pvedaemon.service

Apr 08 03:23:11 pve-01 pvedaemon[1175]: authentication failure; rhost=::ffff:172.31.255.3 user=root@pam msg=cfs-lock ‘file-priv_tfa_cfg’ error: no quorum!
Apr 08 03:24:08 pve-01 pvedaemon[1173]: authentication failure; rhost=::ffff:172.31.255.3 user=root@pam msg=cfs-lock ‘file-priv_tfa_cfg’ error: no quorum!
Apr 08 03:25:54 pve-01 pvedaemon[1174]: authentication failure; rhost=::ffff:172[……]

READ MORE

「VMware」

内容简介
本部分内容与VMware相关,包括进行ESXi安装、配置、虚拟机管理等等。[……]

READ MORE

「VMware」- 基本概念及架构知识

内容简介
本部分将整理在VMware中常见的概念及术语。
相关链接
Virtual Disk Thin Provisioning[……]

READ MORE

「VMware」- 常用软件整理

问题描述
在 VMware 中,涉及众多产品,包含多种组件,用于多种场景,解决多种问题。这自然也引入众多产品名称,部分产品还涉及名称变更,而有些产品名称并不能直接解释产品的作用。所以了解这些产品的作用是必要的,否则将无法得知何时应该使用何种产品。
该笔记将记录:我们在工作中用到的 VMware 软件产品,并记录这些产品的作用。
注意事项
由于我们的目的是了解某些产品的作用,因此只对这些产品进行简单介绍。部分内容可能不够精准、完善,详细介绍可以参考对应版本的官方 VMware vSphere Basics 手册。
VMware Docs VMware vSphere Components and Features
# vSphere
在数据中心产品下的“一套软件”,是 VMware 公司推出的一套服务器虚拟化解决方案。
VMware ESXi – A Hypervisor
虚拟化服务。所有的虚拟机都是运行在「ESXi」服务上面,它的作用就等同于KVM虚拟机管理程序,只不过是不同的产品。
ESX(Elastic Sky X) => After version 4.1 (released in 2010) => ESXi(a more closely integrated OS). ESXi is the primary component in the VMware Infrastructure software suite. In September 2004, the replacement for ESX was internally called VMvisor, but later changed to ESXi.
VMware vCenter Server
提供了一个可伸缩、可扩展的平台,为虚拟化管理奠定了基础。它是一个中心化的管理应用,可以通过它管理「所有的虚拟机」和「运行ESXi的物理机」。
VMware vSphere Client
它可以通过访问「vCenter Server」来管理「ESXi」服务器。实际上「vSphere Client」也允许管理员直接访问「ESXi」服务,并管理虚拟机。
最后总结
简单说可以这么理解:「vSphere Client」=>「vCenter Server」=>「ESXi」
实际上vSphere还包含了很多其他的产品,这里并没有全部列举,详细可以参考「VMware vSphere」一文。
参考文献
vmware/Products/vSphere/OVERVIEW vSphere,ESXi和vCenter 的区别 百度百科/Vcenter What Is vSphere[……]

READ MORE

「ESXi」- 制作USB启动(源自官方文档)

问题描述
本文将介绍如何制作ESXi的USB启动盘。
注意事项
本文内容源自对官方文档的整理,具体细节请参考官方「Format a USB Flash Drive to Boot the ESXi Installation or Upgrade」文档。
在用于引导的U盘中,不能包含ks.cfg文件(该文件包含安装脚本)。
前提条件
1)、具有root权限的Linux主机(我们使用Debian发行版)。 2)、可以被Linux主机识别的USB启动盘。 3)、ESXi的ISO镜像,VMware-VMvisor-Installer-6.0.0-2494585.x86_64.iso,该镜像包含了isolinux.cfg文件 4)、在Linux中已安装syslinux包。
开始制作
# 找到USB存储设备
将U盘插入Linux主机中,并找到该U盘。在我们的场景中是/dev/sdc设备。
# 删除旧分区,创建新分区
该步骤的主要目的是删除所有旧分区,创建一个新分区,将类型设置为FAT32文件系统,将active标志设置为1即可,最后保存。
如果使用fdisk命令,则大致操作过程如下(不再详细展开):

# fdisk /dev/sdc
Enter 「d」 to delete partitions until they are all deleted.
Enter 「n」 to create a primary partition 1 that extends over the entire disk.
Enter 「t」 to set the type to an appropriate setting for the FAT32 file system, such as c.
Enter 「a」 to set the active flag on partition 1.
Enter 「p」 to print the partition table.
Enter 「w」 to write the partition table and exit the program.

# 创建新文件系统

#!/bin/sh

mkfs.vfat -F 32 -n VMWARE-VMVISOR-INSTALLER-6.0 /dev/sdc1

# 写入syslinux引导程序

#!/bin/sh

syslinux /dev/sdc1
cat /usr/lib/SYSLINUX/mbr.bin > /dev/sdc

# 我们使用Debian发行版,如果使用CentOS发行版,则上述命令可能会有所不同。

# 复制安装文件到USB驱动[……]

READ MORE

「ESXi」- 制作USB启动(其他途经)

问题描述
本文将介绍制作 ESXi 的 USB 启动盘的其他办法。
使用Rufus工具
#1 官网下载
Rufus – Create bootable USB drives the easy way
#2 制作启动盘
基本步骤:选择设备 => 选择镜像 => 分区方案/目标系统,其他的选项基本不需要修改
下面截图是官方,把 Ubuntu 替换成 Esxi 即可:

附加说明
不要使用UltraISO工具。使用UltraISO制作的启动盘安装ESXI时,会一直卡在Lonading /lsi_mr3.v00阶段。
也不要使用UNetbootin工具。至少我没成功。最后阶段一直出于「处理中」状态。而且官方也没说支持ESXi镜像。
参考文献
CSDN/制作VM-ESXI6.5启动盘 Install VMware ESXi 6.0 from USB stick[……]

READ MORE

「VMware」- vCenter Server,安装,卸载

问题描述
本部分整理与 vCenter 有关的内容。我们所使用的vCenter为6.0版本。
卸载 VMware vCenter Server 服务
VMware vSphere Product Documentation 6.0/Uninstall vCenter Server
在原先安装中,存在问题(在安装的最后一步提示失败)。虽然使用vSphere Client能够连接,但是我们还是决定重新安装。
注意事项
1)如果使用嵌入的PostgreSQL数据库,则在卸载时,数据库将被删除,数据自然也会丢失。 2)具有管理员权限才可以进行卸载动作。 3)如果要卸载vCenter Server系统,请从「主机和群集」(Hosts and Clusters)资源清单中删除主机。
卸载过程
系统环境:VMware vCenter Server 6.0
1)Start > Control Panel > Programs and Features 2)VMware vCenter Server => Remove 3)Reboot[……]

READ MORE

「ESXi」- 常见问题处理

问题描述
本部分整理与VMware有关的内容。
相关链接
官方文档:VMware vSphere Documentation
开机自启动虚拟机
-「vSphere 配置开机自启动虚拟机」 选择主机 -> 配置 -> 虚拟机启动/关机 -> 属性
显示ESXi版本
-「Determining the build number of VMware ESX/ESXi and VMware vCenter Server (1022196)」
其他文章
# 迁移类型:V2P、V2V、P2V Convert a Physical Linux Server to a VMware VM
# iSCSI
「HOSTS」 => Configuration => Storage Adapters => iSCSI Software Adapter => properties => Network Configuration / Dynamic Discovery
在 vCenter Server 中,无法创建资源池
无法在 vCenter Server 群集中创建资源池 (1004098)
集群 => 右键 => 编辑设置 => 集群功能 => 打开 vSphere DRS 功能[……]

READ MORE

「VMware ESXi」- 关于USB设备直通

内容简介
关于向在ESXi中的虚拟机直通USB设备的问题。
问题描述
添加USB设备之后,可以识别设备(以验证,可识别),但是虚拟机启动时,无法从USB设备引导。
问题原因
根据「USB support in ESXi/ESX 4.1, ESXi 5.x, and ESXi 6.x (1022290)」与「Boot ESXi Virtual Machine From Passthrough USB」的描述,结合我的场景。推测可能原因是USB的文件系统问题。
文档中提出「The USB should be ext3 or FAT32 formatted」要求,而我的USB是NTFS文件系统。
解决办法
未解决……
已经更换问题处理方式。
参考文献
USB support in ESXi/ESX 4.1, ESXi 5.x, and ESXi 6.x (1022290) Boot ESXi Virtual Machine From Passthrough USB[……]

READ MORE

「ESXi」- 修改或重置密码

修改帐号的密码
Configuring the VMware vCenter Server Appliance
进入 网页控制台 界面 => 点击右上角用户名 => 点击修改密码u选项。
目前(04/17/2020)我们还没有找到在 vSphere Client 中修改密码的方法。
重置 administrator@vsphere.local 密码
How to reset admin password for vCenter
Windows and vCenter Server 6.0
在安装目录下,执行 vdcadmintool 命令,按照提示操作即可:

C:\Program Files\VMware\vCenter Server\vmdird\vdcadmintool > vdcadmintool[……]

READ MORE

「VMware vSphere Client」- 杂记及常用设置

问题描述
该笔记将记录:与 VMware vSphere Client 有关内容,涉及安装、配置、使用、问题处理等等。
常见错误
VMRC 控制台的连接已断开..正在尝试重新连接
CSDN/VMRC控制台的连接已断开..正在尝试重新连接
能够运行vSphere Client程序,并连接vCenter Server服务器。但是在打开虚拟机控制台时,提示「VMRC控制台的连接已断开…正在尝试重新连接」消息。
在系统重装之后出现该问题,当时还挺高兴(重装以后依旧能够运行)。肯能是应为重新安装,导致某些服务及配置丢失。
找到vSphere Client安装包,重新安装程序即可。
使用英文语言界面
Forcing a localized vSphere Client or vSphere Web Client installation to launch in a localized language/English (1016403)
为什么不使用中文? 1)因为大多数文档为英语,当时你使用中文去搜索可能一无所获。 2)在界面中某个输入框为中文,如果想了解它的含义,当你在官方文档搜索中文时,你可能一无所获。
只需要在启动 vSphere Client 时指定 -locale en_US 选项。
或者,修改“快捷方式”中的「目标」字段,将其设置为”C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe” -locale en_US即可。[……]

READ MORE

「ESXi」- 常见错误汇总

PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无法连接 解决问题: (1)在服务列表中,检查 VMware vSphere Profile-Driven Storage Service 服务状态,启动后即可解决问题。 (2)如果做完第一步之后发现还是不能进行迁移或者克隆,重启VMware Inventory Service即可。[……]

READ MORE

「VMware ESXi」- 虚拟机版本与主机“x.x.x.x”的版本不兼容

问题描述
在迁移虚拟机到其他主机中,在「选择目标」步骤时,被选中主机提示「虚拟机版本与主机“x.x.x.x”的版本不兼容」错误。
本文将介绍如何处理该迁移错误。
原因分析
运行在ESXi中的每台虚拟机,都有一个「硬件版本号」。在vSphere Client中,显示为「虚拟机版本」:
目标主机运行「ESXi 5.5」版本,能支持的最大硬件版本为「10」。而虚拟机所在的主机运行「ESXi 6.0」版本,所创建的虚拟机硬件版本为「11」。
因此,在迁移的过程中会提示「虚拟机版本与主机“x.x.x.x”的版本不兼容」错误。
解决办法
注意事项
下面有两种做法:官方推荐;强行迁移。
我们自然使用「官方推荐」方法。当然,在特殊情况下,我们也可以使用「强行迁移」方法。最开始我们并没有发现「官方推荐」方法,直到在强行迁移一台虚拟机之后,我们才发现「官方推荐」方法。虽然强行迁移的虚拟机能够正常运行,但是我们依旧建议「官方推荐」方法。
方法一、强行迁移
1)在vSphere Client中,关闭虚拟机。 2)从主机清单中移除虚拟机。注意,是「从清单中移除」,而不是「从磁盘中删除」。 3)在在vSphere Client中,浏览对应的数据存储,找到「.vmx」文件,然后下载到本地。 4)使用编辑器打开.vmx文件,将virtualHW.version = “x”修改为virtualHW.version = “y”后,保存并退出编辑器(通常在第三行中)。 5)将修改后的文件上传到并覆盖原文件。 6)上传之后,在文件上单击右键,选择「添加到清单」项即可。 7)上述操作完成后,可以正式开始迁移操作。
方法二、官方推荐
Downgrading the virtual machine hardware version in ESX/ESXi (1028019)」
官方推荐三种方案,当然这三种方案都要求关闭虚拟机: 1)在目标主机上创建虚拟机,然后将已经存在的虚拟磁盘文件(.vmdk)添加到虚拟机上。 2)使用VMware vCenter Converter Standalone工具,该工具可以选择硬件版本。(该工具类似于复制虚拟机,而不是直接迁移) 3)回退到在升级硬件版本前创建的快照。然而,我们通常都没有做快照 🙂
官方给出的做法更更简单,更容易操作,因此这里不再详细展开介绍。方法(2)我们已经用过了,暂时没有遇到问题。
附加说明
1)迁移动作并不会导致「虚拟机版本」发生变化。
相关链接
通过下面的链接,可以了解ESXi与硬件版本的兼容性,并确定自己需要使用的硬件版本: ESXi/ESX hosts and compatible virtual mach[……]

READ MORE

「Cloud Computing」- 公有云服务

问题描述
该部分笔记将记录:与公有云服务有关的内容,以及相关问题的解决方案。
编程相关
fog – The Ruby cloud services library (Cloud API 抽象)
国外云商
BandwagonHost VPS: https://bandwagonhost.com Linode: https://www.linode.com https://www.jianshu.com/p/0c8e5e6447bd https://aws.amazon.com/cn[……]

READ MORE

「Alibaba Cloud」- 杂记

问题描述
该笔记将记录:与阿里云有关的内容,以及相关问题的解决方案。
关闭阿里云盾
-「centos 关闭AliYunDun」

#!/bin/sh

service aegis stop #停止服务
chkconfig –del aegis # 删除服务

卸载阿里云盾
-「[分享]阿里云实例暂停或者卸载云盾教程」 -「强制卸载 AliYunDun 安骑士」

#!/bin/sh

wget http://update.aegis.aliyun.com/download/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh

wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
chmod +x quartz_uninstall.sh
./quartz_uninstall.sh

# pkill aliyun-service
systemctl stop aliyun-service
systemctl disable aliyun-service
# rm -fr /etc/init.d/agentwatch /usr/sbin/aliyun-service
# rm -rf /usr/local/aegis*[……]

READ MORE

「BandwagonHost VPS」

问题描述
该笔记将记录:与 BandwagonHost VPS 有关的内容,以及相关问题的解决办法。
# 检测IP地址是否被封
(1)首先登录「KiwiVM Control Panel」,从「Services/My Services」或者其他地方都可以。 (2)然后访问「Block List Check」地址。
虽然测试结果不是百分百准确,但是多次检测之后,可以改观定论盖棺定论了。
据说可以免费换IP地址,但是要满足条件。如果满足条件,前面「Block List Check」的会出现「Replace Main IP」按钮。
如果不满足条件,可以“付费更换IP地址”。访问「Request IP Change」,登录,选择被替换的IP地址,生成账单,付款即可。
# 数据中心网络测试
参考「搬瓦工所有数据中心测试IP」文章
参考文献
搬瓦工迁移机房失败提示“Migration backend is currently not available for this VPS. (734152)”的原因和方法 [重磅] 搬瓦工每 5 周可免费更换一次被封 IP 搬瓦工换IP方法总结:免费换IP / 付费换IP方法 搬瓦工IP被封后,后台自助付费更换新IP教程(仅需8美元) 搬瓦工VPS迁移机房时可能遇到的问题及解决方案[……]

READ MORE

「Learning」- 电子科学与技术

电子科学与技术(Electronic Science and Technology) 1)相对于会偏硬件一些,学习硬件中的芯片设计,芯片制造,电子元件基本原理等,相对电子信息更底层,所以学习起来课程也会比较难; 2)专业课程设:固体物理,凝聚态物理,芯片设计,数学物理方程,半导体,单片机,DSP 3)就业方向:京东方,紫光国微,中芯国际,华为海思,紫光展锐
专业知识
专业知识课程应包括光通信技术、光电子器件、天线与电波传播、集成电路原理与设计、激光技术、红外技术、光纤技术、微电子器件、微电子机械系统、集成电路工艺、固态电子元器件、传感技术、电子材料、现代材料分析技术等知识领域,可根据学校情况进行选取和适当补充。
依据上述核心知识领域的内容组合成核心课程,核心课程的名称、学分、学时和教学要求以及课程顺序等由各高校自主确定。以下为核心课程体系示例(括号内数字为建议学时数):
示例一:模拟电路基础课组(96)、数字电路基础课组(96)、计算机基础课组(96)、信号与系统(64)、量子与统计(64)、固体物理基础(48)、电动力学(48)、激光原理(48)、物理光学(48)、固态电子与光电子(48);
示例二:电路分析基础(64)、信号与系统(64)、模拟电子技术(64)、数字电子技术(48)、电磁场与电磁波(48)、量子力学(48)、固体物理(48)、半导体物理(48)、物理光学与应用光学(80)、电子材料(48)、固态电子器件(80)、光电子技术(48)、激光原理与技术(48)、电介质物理(48)、电子元器件(48);
示例三:电路分析基础(48)、信号与系统(64)、模拟电子技术(64)、数字电子技术(64)、量子物理(64)、电磁场理论(32)、激光原理(48)、固体电子导论(64)、物理光学(48)、光电子学(48)、半导体器件物理(48)。[……]

READ MORE

「Learning」- 微电子科学与工程

080704,Microelectronics Science and Engineering,微电子科学与工程
专业知识
专业知识课程应包括集成电路原理与设计、电子设计自动化、半导体材料、电力电子器件、光电器件、微波器件与电路、微电子机械系统、片上系统、射频集成电路、专用集成电路等知识领域,可根据学校情况进行选取和适当补充;
依据上述核心知识领域的内容组合成核心课程,核心课程的名称、学分、学时和教学要求以及课程顺序等由各高校自主确定;
以下为核心课程体系示例(括号内数字为建议学时数):
示例一:电路分析基础(48)、信号与系统(48)、半导体物理(64)、模拟电子技术(48)、数字电子技术(48)、数字集成电路设计(48)、集成电路工艺原理(48)、半导体器件物理(48)、数字集成电路原理(64)、电子系统设计(64)、集成电路计算机辅助设计(48);
示例二:电路分析基础(48)、电磁场理论(48)、模拟电子技术(64)、数字电子技术(64)、信号与系统(64)、固体物理学(64)、半导体物理学(64)、集成电路原理与设计(64)、半导体器件物理(64)、微电子制造原理(48);
示例三:电路分析基础(48)、模拟电子技术(48)、数字电子技术(48)、固体物理(48)、半导体物理(48)、半导体器件物理(64)、半导体工艺(48)、集成电路原理与设计(32)、集成电路 CAD(32)、集成电路工艺设计(32)、半导体光电材料(32)、半导体光电器件原理(32)、半导体光电器件工艺(32);
发展前景
考研方向
可以报考电子电气通信类相关专业的研究生;
就业方向
学生毕业后可以在电子信息类的相关企业中,从事电子产品的生产、经营与技术管理和开发工作。主要面向集成电相关的生产企业和经营单位,从事集成电路的设计、开发、调试、检测等工作;
中国芯科技新锐企业 50 榜[……]

READ MORE

「Computer Science and Technology」- 计算机科学与技术

计算机科学(Computer Science,简称 CS),是研究如何用计算机设备处理、储存数据的学科,偏重于理论研究;
计算机科学与技术(Computer Science and Technology),其专业属于工学类; 1)学习内容:计算机科学与技术主要学习的是计算机的体系结构,需要学习计算机的一些原理和组成。主要是偏软件层面一些; 2)专业课程:操作系统,编译原理,计算机组成原理,C 语言,数据结构,计算机网络,离散数学 3)就业方向:阿里,腾讯,小米,百度,京东,网易
计算机科学的研究领域
Wikipedia/Computer science/Fields Indeed.com/15 Computer Science Fields
Theoretical Computer Science
1 Theory of computation 2 Information and coding theory 3 Data Structures and Algorithms 4 Programming Language Theory and Formal Methods
Applied Computer Science
1 Computer graphics and visualization 2 Image and sound processing 3 Computational science, finance and engineering 4 Social computing and human–computer interaction 5 Software Engineering 6 Artificial Intelligence
Computer Systems
1 Computer Architecture and Organization 2 Concurrent, Parallel and Distributed Computing 3 Computer Networks 4 Computer Security and Cryptography 5 Databases and Data Mining
计算机科学与技术专业主要课程
计算机科学与技术本科专业有哪些核心课程?应该如何安排学习顺序?各个课程推荐哪些经典教材? – 知乎 计算机科学与技术专业主要课程有哪些? 计算机科学与技术都有哪些课程? – 知乎 计算机科学与技术学的课程有哪些? – 知乎 计算机科学与技术专业本科都学了什么?(按学年) – 知乎
计算机科学与技术专业主要培养具有良好的科学素养,系统地、较好地掌握计算机科学与技术包括计算机硬件、软件与应用的基本理论、基本知识和基本技能与方法,能在科研部门、教育[……]

READ MORE

「LINUX-PERFORMANCE-TUNING」- 网络高带宽

我们发现笔记本风扇转速较高;

=> 通过资源监视器,我们发现 CPU 较高使用率

=> top,我们发现如下两个进程的 CPU 占用较高:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1603 root -51 0 0.0m 0.0m 0.0m S 15.8 0.0 150:17.59 [irq/18-ens32]
606245 root 0 -20 0.0m 0.0m 0.0m I 13.2 0.0 0:30.36 [kworker/u13:2-xprtiod]

=> iftop,我们发现 Network 占用较高:
172.31.252.20 => 172.31.252.200 5.74Mb 5.49Mb 5.49Mb
<= 85.4Mb 81.8Mb 81.8Mb
172.31.252.20 => public2.alidns.com 1.14Kb 1.27Kb 1.27K

=> nethogs,我们发现是 NFS 的带宽比较高:
PID USER PROGRAM DEV SENT RECEIVED
? root 172.31.252.20:957-172.31.252.200:2049 93.216 1328.494 KB/sec

=> pidstat,查找读取较高的进程:
Average: UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
Average: 1000 1894838 10796.67 119.70 0.00 80 python

=> ps,查找该进程的详细信息:
# ps -p 1894838 -o comm,args=ARGS
COMMAND ARGS
python /home/k4nz/.virtualenvs/zim-desktop-wiki@py3.9/bin/python /srv/http/ORG000-D3RM/TEAM-COMMON/z[……]

READ MORE

「网络」- 网络性能优化思路

确定优化目标
网络性能优化的目标是什么?即观察到的网络性能指标,要达到多少才合适呢?整体目标是降低网络延迟(如 RTT)和提高吞吐量(如 BPS 和 PPS),但具体到不同应用中,每个指标的优化标准可能会不同,优先级顺序也大相径庭。因此网络性能优化的目标需要依应用程序而定。
第一步、我们首先应该明确优化的标准,即要针对特定系统和应用程序进行基准测试,得到网络协议栈各层的基准性能。

对于 NAT 网关,通常需要达到或接近线性转发,也就是说, PPS 是最主要的性能目标。

对于 数据库、缓存等等 系统,快速完成网络收发,即低延迟是主要的性能目标。

对于 Web 服务,需要同时兼顾吞吐量和延迟

第二步、在进行基准测试时,我们就可以按照协议栈的每一层来测试。底层性能决定高层性能(底层性能是极限性能),我们从下到上进行测试。

首先是网络接口层和网络层,每秒可处理的网络包数 PPS,就是它们最重要的性能指标(特别是在小包的情况下)。可以用内核自带的发包工具 pktgen 来测试 PPS 的性能。

再向上到传输层的 TCP 和 UDP,它们主要负责网络传输。对它们而言,吞吐量(BPS)、连接数、延迟,就是最重要的性能指标。可以用 iperf 或 netperf 来测试传输层的性能。不过要注意,网络包的大小会直接影响这些指标的值。所以需要测试一系列不同大小网络包的性能。

应用层,最需要关注的是吞吐量(BPS)、每秒请求数以及延迟等指标。你可以用 wrk、ab 等工具,来测试应用程序的性能。

注意,测试场景要尽量模拟生产环境,这样的测试才更有价值。比如,你可以到生产环境中,录制实际的请求情况,再到测试中回放。
网络性能工具
Linux网络管理,网络状态查看,NetHogs,Iptraf,lsof,netstat等工具的使用及博客;
从网络性能指标出发
吞吐量(BPS):sar nethogs iftop 分别可以查看网络接口、进程以及IP地址的网络吞吐量
PPS:sar /proc/net/dev 查看网络接口的PPS
连接数:netstat ss 查看网络连接数
延迟:ping hping3 通过 ICMP、TCP 等测试网络延迟
连接跟踪数:conntrack 查看和管理连接跟踪状况
路由:mtr route traceroute 查看路由并测试链路信息
DNS:dig nslookup 排查DNS解析问题
防火墙和NAT:iptables 配置和管理防火墙及NAT规则
网卡功能:et[……]

READ MORE

「Learning Linux Kernel」- 初识内核源码

学习路线
我们的首个解决方法
我们准备好《操作系统原理》《计算机组成原理》《TCP/IP 详解》,做好计划,开始学习。
很显然,这个方案是不可行的。之所以不可行,不是学习内容的问题,而是意志力和知识储备的问题。说到意志力,这几本书可不是随随便便坚持几个月就能看完的。说到知识储备,这基本书又会牵扯比如算法数据结构等等方面的知识。根本就不适合我们这种外行。(历史总是在重演嘛,我们不止一次拿起经典著作,看个几页后就放在一边)
简单可行的解决方案
我们从简单的开始,学习简单的操作系统知识,对操作系统有个初步的认识。正巧我们手里有本《30天自制操作系统》,我们可以先写个简单的操作系统,达到对操作系统有个初步的认识,掌握操作系统的基础简单知识。
但是在学习《30天自制操作系统》的过程中,我们发现,需要准备汇编语言的知识,不然看这本书的时候就之剩下抄代码了。所以我们开始看汇编语言的知识《汇编语言(第 3 版)》、《x86 汇编语言 从实模式到保护模式》、《32 位汇编语言程序设计(第 2 版)》,好在这些书中都提及硬件工作的基本原理(汇编语言本来就是用于操作硬件,如果没有书中没有介绍硬件,那八成不是什么好的汇编教学),因此我们不用再单独去看硬件方面的书籍。
如果相对硬件的原理有个基本的了解,可以阅读《穿越计算机的迷雾(第 2 版)》。
# 注意事项 # 该方案中介绍的书籍只是用于简单入门,之后依旧阅读《操作系统原理》、《计算机组成原理》、《TCP/IP 详解》、《Linux 内核设计与实现》等等书籍
所以,根据该解决方案,产生以下笔记内容: 1)Assembly Language / Intel 80×86 2)Writing a Simple Operating System
获取内核源码
make kernelversion

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
git pull

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/linux-2.4.0.tar.gz

# 查看当前内核版本
make kernelversion

源码阅读工具
Is it possible to develop linux kernel module in CLion? | Newbedev
Solution: Yes, It is. But you will need to write make file for building kernel module. Update 1: I r[……]

READ MORE

「LINUX」- 命令行、终端

忽略重复的历史命令
How do I prevent commands from showing up in Bash history? – Stack Overflow
在执行命令的过程中,我们通常会使用 [↑] 来选择我们执行过的命令;
但是当执行多次后,我们想找到更久之前的命令,就需要通过 [↑] 来翻过很多重复命令;
通过 export HISTCONTROL=ignoredups 变量,能够控制 Bash History 忽略重复命令;[……]

READ MORE

「Linux」- update-alternatives

update-alternatives https://stackoverflow.com/questions/7832892/how-to-change-the-default-gcc-compiler-in-ubuntu
# 添加新的选项(以Zabbix为例):

#!/bin/sh

# 命令格式:alternatives –install <link> <name> <path> <priority>
update-alternatives –install \
/usr/share/zabbix/fonts/graphfont.ttf \
zabbix-web-font \
/usr/share/fonts/wqy-microhei/wqy-microhei.ttc \
20

# 查看所有 Debian: update-alternatives –get-selections CentOS: update-alternatives –list
参考文献
How to change the default GCC compiler in Ubuntu? What exactly does `update-alternatives` do? Is there a way to list all configurable `alternatives` (symlinks for similar commands) on the system?[……]

READ MORE

「Database」- 技术书籍

《Beginning Database Design》:数据库设计方面的知识。
《Relational Database Index Design and the Optimizers》:关系数据库索引设计与优化。
《SQL and Relational Theory》
《MySQL Stored Procedure Programming》:MySQL存储过程编程
《大数据之路:阿里巴巴大数据实践》
《High Performance MySQL》:高性能MySQL 宁海元(翻译) 电子工业出版社
《深入浅出MySQL》 唐汉明,翟振兴,关宝军,王洪权,黄潇 人民邮电出版社出版
《MySQL运维内参》 周彦伟 电子工业出版社
《MySQL 技术内幕》 Paul DuBois 人民邮电出版社
《MySQL DBA修炼之道》 机械工业出版社
《分布式数据库架构及企业实践》 电子工业出版社
《MySQL技术精粹》 张工厂 清华大学出版社
《MySQL管理之道:性能调优、高可用与监控(第2版)》 贺春旸
《MySQL排错指南》 O’REILLY
《MySQL5.7从入门到精通》
刘增杰 清华大学出版社 面向新人的书。
简介:http://blog.csdn.net/brucexia/article/details/53738596 源码及相关资料的下载地址:http://pan.baidu.com/s/1bFF1c6
《MySQL必知必会》
新手入门必备。
注意:此书写作时,MySQL最新的稳定版本为5.1。所以是一本比较旧的书了。
Homepage:http://www.forta.com/books/0672327120 相关资料:http://www.forta.com/books/0672327120/#footer[……]

READ MORE

「DBMS」- 概念术语

系统分类
分为两类: 1)共享文件系统,诸如 Access、SQLite 等等; 2)Client/Server 架构,诸如 MySQL、SQL Server 等等;
常见术语(Terms)
表(table)
某种特定类型数据的结构化清单;
模式(schema)
关于数据库和表的布局及特征的信息;
模式和数据库有时候会被用作是同义词;
子句(clause)
SQL 语句是由多个子句构成的,有些子句是必须的,有些子句是可选的;[……]

READ MORE

「DBMS」- 在我们工作中,常用数据库系统

TiDB – 分布式 NewSQL 数据库
遇见 TiDB
TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景,还适合 OLAP 场景的混合数据库;
InfluxDB – 时间序列数据库
InfluxDB 介绍
Neo4j – 图形数据库
图形数据库 Neo4J 简介 https://neo4j.com/
Firefird
Firebird: The true open source database for Windows, Linux, Mac OS X and more
GDBM(GNU dbm)
http://directory.fsf.org/project/gdbm/
其为 dbm 和 ndbm 库的替代品。 GNU dbm 是一组使用了可扩展哈希并且工作方式类似于 UNIX dbm 例程的数据库例程集合。GDBM 还提供了用于 Unix 中 dbm 和 ndbm 调用的可选兼容层;[……]

READ MORE

「QDBM」- Quick Database Manager

QDBM 是用于管理数据库的库。目的在于以下三点:更高的处理速度,更小的数据库文件大小、更简单的 API;
参考文献
QDBM: Quick DataBase Manager:https://sourceforge.net/projects/qdbm/[……]

READ MORE

「数据库」- 相关类库

FreeTDS
FreeTDS – Makeing the leap to SQL Server dpkg -L freetds-common freetds-dev freetds-bin | grep ‘/bin/’ | awk -F ‘/’ ‘{print $4}’
FreeTDS 是 Unix 和 Linux 中的库,用于访问连接 SQL Server 和 Sybase 数据库。
技术上讲「FreeTDS」是「TDS」协议的开源实现。
从仓库中安装

# Kali GNU/Linux Rolling
apt-get install freetds-common freetds-dev freetds-bin

安装的可执行程序
bsqldb bsqlodbc datacopy defncopy fisql freebcp osql tdspool tsql,用于测试FreeTDS连接和查询的实用程序。
ODBC(Open Database Connectivity)
ODBC – Open Database Connectivity
In computing, Open Database Connectivity (ODBC) is a standard application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. An application written using ODBC can be ported to other platforms, both on the client and server side, with few changes to the data access code.
简单说,ODBC 是对各种数据库的抽象,目的是提供统一的访问接口,以增强应用程序的可移植性;
unixODBC
The unixODBC Project home page
是 ODBC 的开源实现;[……]

READ MORE

「SQLite」- 安装部署

on Kubernetes
keinos/sqlite3 – Docker Image | Docker Hub

kubectl apply -f – <<EOF

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: sqlite-debugging
spec:
storageClassName: alibabacloud-cnfs-nas
accessModes:
– ReadWriteMany
resources:
requests:
storage: 100Mi

apiVersion: v1
kind: Pod
metadata:
name: sqlite-debugging
spec:
volumes:
– name: sqlite-debugging
persistentVolumeClaim:
claimName: sqlite-debugging
containers:
– name: sqlite-debugging
image: keinos/sqlite3
command: [“sleep”, “infinity”]
volumeMounts:
– mountPath: “/srv/sqlite-debugging/”
name: sqlite-debugging
EOF

参考文献
SQLite:http://www.sqlite.org/ BLFS / SQLite-3.14.1:http://www.linuxfromscratch.org/blfs/view/7.10/server/sqlite.html[……]

READ MORE