自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 云原生学习笔记一:什么是云原生?

云原生是什么?

2022-08-06 17:51:32 222

原创 linux系统引导

Linux系统既可以以自动方式也可以以手动方式来引导。手动方式:系统先自动执行一些过程,然后到某时刻,在运行大多数脚本前,把控制权交给系统管理员。此时,计算机处于“单用户模式”,大多数系统进程还没有运行,其他用户还不能登录系统。Linux系统的加载过程如下:1) 加载并初始化内核2) 检测和配置设备3) 创建内核线程4) 操作员干预(仅限于手动引导)5) ...

2022-08-06 17:39:13 241

原创 IP路由

IP routing1)  经过物理层发送的数据报,怎样到达目的主机(网内和网外)?根据mac地址,这个涉及到数据链路层和物理层;【交换机是在数据链路层进行数据的转发】2)  知道了mac地址,那又如何传输到目标主机?数据链路层如何找到主机,使用ARP协议,在ARP缓存中匹配。3)  不在网内的主机,应用如何知道将数据先转发到router呢?IP层只知道ip地址,而mac地

2016-10-08 21:49:56 461

原创 IP协议RFC 791

概述四要素:服务类型、生存时间(超时时长)、选项和校验和(报文头的校验和);校验和:提供header内容的验证。IP协议网络接口和局域网接口(Localnetwork interface),IP协议封装报文头;局域网接口也会附加局域网包头到这些数据上;Gateway:在不同的网络间转发数据报,而路由器主要是用于不同的子网,属于内部网络设备;寻址 addressing网络

2016-10-08 21:48:40 899

原创 ceph集成测试调研

Teuthology集成测试框架,ceph社区专业的自动测试架构。线上实例:http://pulpito.ceph.com/架构:安装、部署1、安装a、teuthology要求python2.7b、ceph-qa-suitec、安装adjust-limits和daemon

2016-10-07 21:04:10 2173 5

原创 ceph测试架构

1、概述a、安装ceph-test包b、执行程序比如:测试rados 缓存池功能:ceph_test_rados_api_tier测试消息层功能:ceph_test_msgr程序分析:a、所有测试代码都在src/test目录下b、Makefile:由Makefile-client.am 和 Makefile-server.am控制

2016-10-07 20:52:10 1375 2

原创 c++单元测试gtest

Ceph工程使用gtest做单元测试https://code.google.com/p/googletest/https://code.google.com/p/googletest/wiki/Primer TEST_P 测试参数专用函数 TEST_FTEST_F宏会直接生成一个类,这个类继承自上面我们写的测试类比如,定义了TestFunc类class Test

2016-10-07 20:49:35 604

原创 linux下终端复用软件之tmux

linux下常用的终端复用软件,有screen和tmux,本人一直用tmux,总结一下常用的用法1、源码编译下载tmux-2.0wget http://downloads.sourceforge.net/tmux/tmux-2.0.tar.gztar -xzvf tmux-2.0.tar.gzcd tmux-2.0./configure && make && make

2016-10-07 20:10:38 289

原创 linux常用工具vim

主要是总结一些常用的vim快捷键和方式先来看一张图vim快捷键选定鼠标所在的字符串,然后搜索只要设置了hlsearch,就能使用’*’符合进行搜索,选定之后,然后再使用’*’切换到下一个,作用类似n键; vim 查看函数原型可以分为系统函数和自定义函数系统函数:用shift+K 如何进行批处理:比如:将10行代码全部注释掉;V之后,选择10行

2016-10-07 20:02:00 305

原创 boost库学习总结

第8章进程间通讯 Boost.Interprocess 库,它包括众多的类,这些类提供了操作系统相关的进程间通讯接口的抽象层。第9章文件系统库 Boost.Filesystem 简化了处理文件和目录的工作。 它提供了一个名为 boost::filesystem::path 的类,可以对路径进行处理。 另外,还有多个函数用于创建目录或验证某个给定文件的有效性。常见的文件、目录

2016-09-29 21:13:52 367

原创 Boost库使用总结

auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结智能指针,与引用计数相关auto_ptr: 主要为异常安全设计的,在程序正常退出或者异常终止,会调用类的析构函数,释放资源。复制\赋值是损坏性的操作,所以不能绑定到数组或者变量指针,也不能将auto_ptr对象存储在容器中。 auto_ptr a(new int(10));auto_ptr b;

2016-09-29 21:07:05 5145 1

原创 c语言EXPORT_SYMBOL

EXPORT_SYMBOL模块可以使用如下宏导出符号到内核符号表:EXPORT_SYMBOL(符号名);   EXPORT_SYMBOL_GPL(符号名)  EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。导出的符号可以被其他模块使用,不过使用之前一定要extern声明一下。

2016-09-29 21:04:58 2878 1

原创 c语言结构体对齐

访问N字节的指令,需要访问的内存地址为N的整数倍比如:Int a = 4;该指令占4字节,就需要内存地址为4的整数倍;若不为整数倍,则需要填充(padding)在gcc中提供语法,可以消除结构体中的填充字节,比如struct { char a; int c; char d;} __attribute__((packed

2016-09-29 21:03:17 274

原创 LXR( Linux超文本交叉代码检索工具)

Linux超文本交叉代码检索工具LXR(Linux Cross Reference),是由挪威奥斯陆大学数学系Arne Georg Gleditsch和Per Kristian Gjermshus编写的。这个工具实际上运行在Linux或者UNIX平台下,通过对源代码中的所有符号建立索引,从而可以方便的检索任何一个符号,包括函数、外部变量、文件名、宏定义等等。不仅仅是针对Linux源代码,对于C语言

2016-09-29 20:18:30 4605

原创 设计模式

创建型设计模式单例模式它允许一个类有且仅有一个实例 单例模式的优点:在内存中只有一个对象,节省内存空间。避免频繁的创建销毁对象,可以提高性能。避免对共享资源的多重占用。可以全局访问。适用场景:由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我总结了一下我所知道的适合使用单例模式的场景:需要频繁实例化然后销毁的对象。创建对象时耗时过多或者

2016-09-28 22:20:53 303

原创 分布式理论

CAP理论Consistency AvaiablityPartition tolerance(分区容错性)系统无法放弃一致性,如果放弃了,说明数据不可信牺牲一致性,是说不使用强一致性,而是弱一致性分布式系统的数据复制需求:A、 可用性将数据复制到多个主机上,消除单点故障B、 性能将数据分片,分布到多台主机上,可以提高并发度,从而提高系统性能强一致

2016-09-28 22:18:26 309

原创 DKMS介绍

概述DKMS是基于动态内核模块支持的可以让开发者无需使用最新的内核版本而对某个单一的内核模块做升级(比如说是修复bug)DKMS设计目标1 实现的是机制(如何更新单一的内核模块并且跟踪)而不是策略(何时应该更新一个单一的内核模块),目的在于将两者隔开2 允许系统管理员清楚地知道哪个模块、哪个版本为哪个内核以什么样的状态使用3 让模块的源码保持是在顶层的内核树在kernel.

2016-09-28 22:03:24 7160

原创 LVS介绍

初识LVS什么是LVS?Linux Virtual Server,linux虚拟服务器LVS的目标?该项目的任务是:使用集群技术为linux建立一个高性能和高可用性的服务器,可以提供很好的扩展性、可靠性和服务可行性。LVS的主要内容?项目主要是开发先进的IP负载均衡软件(IPVS)、应用层负载均衡软件(KTCPVS)和集群管理组件。(对于大规模的TCP链接请求进行均衡,说到

2016-09-28 21:57:11 264

原创 虚拟文件系统proc

/proc 文件系统是 GNU/Linux 特有的。它是一个虚拟的文件系统,因此在该目录中的所有文件都不会消耗磁盘空间。通过它能够非常简便地了解系统信息,尤其是其中的大部分文件是人类可阅读的(不过还是需要一些帮助)。许多程序实际上只是从 /proc 的文件中收集信息,然后按照它们自己的格式组织后显示出来。有一些显示进程信息的程序(top、ps 等)就是这么作的。/proc 还是

2016-09-28 21:49:16 350

原创 Linux IO调度算法

查看磁盘IO调度算法$cat /sys/block/sdX/queue/schedulerI/O 调度器决定 I/O 操作何时运行在存储设备上以及运行多久。它也被称为 I/O elevator(I/O 升降机、I/O电梯)。红帽企业版 Linux 7 提供三种 I/O 调度器。⁠deadline为除了SATA盘外所有块设备的默认 I/O 调度器。Deadline 尝试为指向

2016-09-28 21:22:22 449

原创 用户管理和工作管理

集群管理工具http://bbs.chinaunix.net/thread-2002080-1-1.htmlPdsh:Atp-get install pdsh用法:Pdsh –w ssh:[email protected] hostnamelinux IO重定向ls /dev/ 1> filename 将标准输出重定向到文件filename中ls -sss /dev

2016-09-28 21:15:56 271

原创 包管理系统总结

Debian/Ubuntu使用apt-get、aptitude、dpkgrhel/Centos使用yum/rpm安装生成rpm包需要的依赖包yum-builddep,前提是依赖包在Yum的仓库中,或者本地rpm文件,例如安装ceph在oracle linux下的依赖时: sudo yum-builddep –y /tmp/ceph.spec/tmp/ceph.s

2016-09-28 21:11:18 321

原创 ssh服务相关问题

1、在脚本中使用ssh命令,报如下错误:ssh: Could notresolve hostname T02-OSD101: Name or service not knownlost connection但是,在shell下使用ssh 到同一主机名,却没有报错;原因是什么?使用telnet连接该机器,被拒绝了:huangjun:/bsdocfs/shell-script#te

2016-09-28 20:54:39 464

原创 常见系统调用总结

fcntl操作文件描述符#include #include Int fcntl(int fd, int cmd, …);主要的三种用途:A、 复制文件描述符 F_DUPFD(long),返回新的文件描述符B、 文件描述符标记位目前唯一被操作的标记是FD_CLOEXECF_GETFD(void)F_SETFD(long)C、 文件状态标记通过ope

2016-09-28 20:52:52 796

原创 正则表达式reg

通配符 wildchar*^$\d匹配一个数字字符。等价于[0-9]。\w匹配包括下划线的任何单词字符。等价于「[A-Za-z0-9_]」+匹配前面的子表达式一次或多次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」。+等价于{1,}。 要表示一个模式

2016-09-28 20:49:21 1220

原创 linux下帮助文档汇总

概述linux下有丰富的文档资料,在日常运维和开发过程中,经常会用到。三种基本方式man、info、LINUX howto 编程的时候需要查阅许多资料:包括数据结构的定义、函数的使用说明、参数列表等,都是可以使用man命令来获取的;安装posix接口的manpage:$ apt-get install manpages-posix$ apt-get i

2016-09-28 20:32:31 530

转载 linux下的内存管理

概述linux内存管理基础知识,反复看深入理解linux内核内存分区 •位于最低端的 ZONE_DMA 内存区域是为 ISA 设备保留的,这些设备仅有 16MB的 DMA 寻址能力。• ZONE_NORMAL 中的页面具有 1:1 线性映射的物理地址和逻辑地址。运行在内核态的代码可以方便和高效地访问,内核中大部分数据结构的内存对象都使用这个区中的内存。• Z

2016-09-28 20:14:56 763

原创 分布式文件系统基础

分布式文件系统基础技术A、 fstrim/discard调用 TRIM整理 NAND 上的碎片有两种方法,一是挂载 ext4分区时加上 discard选项,二是使用 fstrim命令。Android 4.3中的 TRIM 是用 fstrim 实现的,但一般 Linux发行版并不建议使用 fstrim的方法,而是使用 mount ext4分区时加上 d

2016-09-27 22:11:02 2473

原创 本地文件系统基础知识

本地文件系统Btrfs多设备管理当前Linux系统,如果你想创建一个RAID-0或者RAID-1或者其他RAID级别,然后在这些设备用上LVM,你可能需要使用硬件RAID卡或者软RAID(md)来做到把多个设备合成一个虚拟的设备。而btrfs则把对多设备(RAID)的支持内嵌到文件系统里了。当前,btrfs可以做RAID-0,RAID-1,RAID-10(以后应该会增加系统RAID级别

2016-09-27 22:06:42 1969

原创 网络文件系统基础

说到网络文件系统,我们大家比较熟悉的有2种:cifs和nfs先了解下nfsNFSSun RPC远程过程调用流程:A、 服务器启动,注册端口B、 客户端启动,通过端口映射器获取port,获取服务器文件系统的本地fdC、  进行数据读写时,客户端的操作会被内核识别为NFS,然后通过RPC完成。 NFS的一些操作是幂等的:read,getattr,statfs

2016-09-27 22:04:39 215

原创 linux信号

综述信号是软中断,大多数的重要的应用程序需要处理信号。信号为处理异步事件提供看方法:用户在终端键入中断键,来停止一个程序,或者说是下一个的程序在管道中过早地终止。POSIX标准提供了可靠的规则,我们将要讨论的是这种情况。先熟悉一般的信号和每个信号的作用。随后,我们将了解早期实现中出现的错误。信号的概念所有的信号都有一个以SIG开头的名称,比如说:SIGABRT是中断信号,当一个程序调用

2016-09-27 21:49:12 215

原创 多线程编程基础

线程值得参考:http://www.csc.villanova.edu/~mdamian/threads/posixthreads.html线程控制创建线程#include int pthread_create(thread_id, attr, func, arg)其中func表示该线程需要执行的代码地址终止线程从线程代码处returnpthread_canc

2016-09-27 21:45:39 224

原创 linux进程控制

daemon守护进程    守护进程就是没有控制终端,在后台运行。在系统自举时开始运行,直到系统停止运行。    那么守护进程的处理结构?怎样写一个守护进程并且如何知晓在系统出现错误的时候能及时的报告状态。    可能是因为daemons调用了setsid导致用户层的daemons没有控制终端。    所有的用户层的daemons是进程组的leader、sessionleader和

2016-09-27 21:31:21 285

原创 Socket通信基础

Socket通信简介Pipe、FIFO、消息队列、semaphores和shared memory等经典的IPC方法。这些方法只是允许同一机器上的不同进程间进行通信。本节,我们将会介绍不同机器上运行的进程间的通信机制(与同一网络连接):网络IPC。本章将描述socket 网络IPC的接口,进程可以使用这些接口来和另外的进程进行通信,不管是在同一机器还是在不同的机器上。这也是socket

2016-09-27 21:12:41 348

原创 编程获取linux系统配置

获取系统当前的内核信息#include int uname(struct utsname *buf); 运行时获取配置信息#include long sysconf(int name);比如,要获取当前的页大小sysconf(_SC_PAGESIZE);后面继续更新

2016-09-27 21:10:24 183

原创 linux 下的文件I/O方式

标准访问文件的方式Linux 中,这种访问文件的方式是通过两个系统调用实现的:read()和 write()。当应用程序调用 read()系统调用读取一块数据的时候,如果该块数据已经在内存中了,那么就直接从内存中读出该数据并返回给应用程序;如果该块数据不在内存中,那么数据会被从磁盘上读到页高缓存中去,然后再从页缓存中拷贝到用户地址空间中去。如果一个进程读取某个文件,那么其他进程就都

2016-09-27 20:59:50 268

原创 linux内核设计与实现:系统调用

1) 函数声明中都有asmlinkage限定词,用于通知编译器仅从栈中提取该函数的参数。2) 系统调用getXXX()在内核中被定义为sys_getXXX()。这是Linux中所有系统调用都应该遵守的命名规则。        系统调用号:在linux中,每个系统调用都赋予一个系统调用号,通过这个独一无二的号就可以关联系统调用。当用户空间的进程执行一个系统调用的时候,这个系统调用号就被用来指

2016-09-27 20:56:37 339

原创 Linux下压缩与解压以及打包与解包

平常在工作过程中,会与各种压缩文件打交道有些是常用的(tar.gz,zip等),有些不常用(rar)总结归纳,不断更新.tar解包: tar xvfFileName.tar打包:tar cvfFileName.tar DirName(注:tar是打包,不是压缩!).gz解压1:gunzipFileName.gz解压2:gzip -dFileName.gz

2016-09-27 20:48:17 938

原创 linux:a protable operating system

linux:a protableoperating systemlinus大神的硕士论文(2011.06阅读)设计思路:简便性、高效性和移植性具体实现微内核microkernel:微内核是内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口,如UNIX、DOS、Windows、Workplace OS、Workp1ace UNIX等。IB

2016-09-27 20:46:37 386

原创 常见的编译错误

以下是在平常的实践中出现的编译错误1、undefined reference问题总结a、 链接时缺失了相关目标文件(.o)b、 链接时缺少相关的库文件(.a/.so)c、链接的库文件中又使用了另一个库文件同样,如果我们的库或者程序中引用了第三方库(如pthread.a)则同样在链接的时候需要给出第三方库的路径和库文件,否则就会得到undefinedreference的错误。

2016-09-27 20:36:24 1041

空空如也

空空如也

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

TA关注的人

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