自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (7)
  • 收藏
  • 关注

原创 TiKV集群部署

注:如果/home/tikv/.ssh/目录下有不正确的id_rsa文件,会导致鉴权失败,请删除~/.ssh/id_rsa*;将中控机.ssh/id_rsa.pub内容追加到各部署机的/home/tikv/.ssh/authorized_keys文件末尾,没有.ssh目录则先手动创建.ssh目录。注:如果要输入密码,统一输入tikv(保证统一),其它现象直接默认,如果密码输错了,可以用sudo userdel tikv重来。注:如果这一步没有成功,可以重新执行下,确保没有Fail,才能执行下一步。

2024-07-19 14:12:05 360

原创 juicefs部署实践

注:如果是CephRados作为对象存储后端,则需要将ceph.conf和ceph.client.admin.keyring拷贝到/etc/ceph/目录下,然后执行format, juicefs.ceph format --storage ceph --bucket ceph://juicefs_data --access-key ceph --secret-key client.admin。如:juicefs format --storage s3 --bucket。注:如果是研测环境,url换成"

2024-07-19 14:09:43 814

原创 juicefs 一致性

内核元数据缓存时间受到mount参数控制(只有过期失效),open时默认会绕过内核的文件属性缓存,到达juicefs客户端,如果--opem-cache为false(默认是false),则会绕过客户端内存的文件属性缓存,去元数据服务器同步文件属性。对于跨chunk的不同机器client的并发写,juicefs本身是不提供原子保证的,需应用自己调用SetLk接口来实现互斥。对于同一个chunk不可机器client的并发写,后写的会覆盖之前写的;元数据更新是事务更新,数据更新是写时复制(不覆盖)

2024-07-19 14:07:11 187

原创 ceph log内容解析

dout和ldout类似,也是带前缀的dout_impl,只有个别模块有使用,如src/mds/MDBalancer.cc中。分别表示 时间戳 线程id 日志等级 子模块 内容实体。定义在src/common/dout.h中。定义在src/log/entry.h中。ldout是带前缀的dout_impl。每条log都是由一个Entry构成。如osd的一条log。

2024-07-19 14:03:32 388

原创 ceph osd写流程

2024-07-19 13:54:24 255

原创 ceph进程网卡绑定逻辑

->pick_addresses() // 会读取"cluster_network_interface"和"public_network_interface"这两个配置项来过滤ip。main() //如osd进程,是ceph_osd.cc文件的main函数;mon进程,是ceph_mon.cc文件的main函数。

2024-07-19 13:53:23 521

原创 ceph条带化原理

数据按照ChunkSize进行布局,不满一个StripeWidth的,后面的StripeUnit进行padding (不满一个条带的按照一个条带对齐,牺牲空间换取性能)

2024-07-19 13:52:47 92

原创 cephfs journal模块

fs元数据更新时,MDS执行journal_and_reply,首先封装成log_event,通过submit_mdlog_entry提交到pending_events中,然后submit_thread将journal flush到metadata pool的rados object(200.XXXXXXXX)中,后续在trime_mdlog时,将dirty inode写到metadata pool的rados object(inodeNum.XXXXXXXX)中。

2024-07-19 13:51:51 112

原创 cephrbd常用命令

拷贝ceph.client.{username}.keyring到/etc/ceph/目录。applicationname是rbd、rgw、cephfs中其中一项。(默认用户id=admin,如果不需要创建新用户则可跳过此步)如果不输入poolname,默认poolname为 "rbd"确认内核DYNAMIC_DEBUG属性开启。该步骤执行后会输出该用户对应的key。登录client机器。

2024-07-19 13:50:53 237

原创 cephfs revoke caps逻辑

即重新执行handle_client_mkdir。client侧经过Client::ms_dispatch2() -> Client::handle_caps() -> Client::handle_cap_grant() -> check_caps() -> send_cap() 发送CEPH_CAP_OP_UPDATE操作(CEPH_MSG_CLIENT_CAPS消息)给server。

2024-07-19 13:48:48 288

原创 cephfs client读写流程

fuse_ll_read() -> ll_read() -> Client::_read() -> _read_async() (带缓存) -> ObjectCacher::file_read() -> readx() -> _readx() -> bh_read() -> read_trunc() -> op_submit() -> _op_submit_with_budget() -> _op_submit() -> _send_op() -> send_message()以cephfuse为例。

2024-07-19 11:31:46 401

原创 osd挂掉对业务的影响

对于读请求,如果是主osd挂掉了,需要Peering完之后,client收到最新osdmap后重试新的pg主osd读,所以也是约20s。结论:一个osd挂掉,按照默认配置,当时的写请求约卡顿20s;

2024-07-19 11:29:48 198

原创 rados localize read

获取自己节点的crush_location,然后在localize read时,拿pg的每个osd和自己的crush_location进行公共祖先最短距离比较。首先,任何节点在启动时会通过main()->global_init()->crush_location.init_on_startup()根据crushmap进行距离打分。根据crushmap进行距离打分。

2024-07-19 11:27:39 157

原创 cephrgw lifecycle理解

看代码是WriteOP)3,cls_rgw_lc_get_entry 获取entry,因为entry的状态是processing。3,cls_rgw_lc_get_entry 获取entry,成功,但是为empty。2,cls_rgw_lc_get_head 获取对象的head,成功。2,cls_rgw_lc_get_head 获取对象的head,成功。2,cls_rgw_lc_get_head 获取对象的head,成功。3,cls_rgw_lc_get_entry 获取entry,成功。

2024-07-19 11:23:57 412

原创 cephrgw元数据和数据布局

提示:每个rados object有如下几个组成部分,分别是omap(omapheader、omapkey、omapval)、xattr、data,相关的CLI command。如storage_class、mtime、size、etag、content_type、存放的pool。part、stripe(每个part最大15MB,每个stripe最大4MB,stripe是基本单元)[4MB, 15MB]的对象,有head、tail radosobject。bucket中对象的布局信息。

2024-07-19 11:16:08 496

原创 linux lvm使用

lv:logic volume, 是逻辑单元vg:volume group, 是逻辑桶pv:physical volume,是物理单元一个vg是有一个或者多个pv组成的逻辑桶;用户可以在vg里创建lv。

2024-07-11 21:09:07 167

原创 MySQL常用命令

如: ALTER TABLE testdatabase.testtable ADD COLUMN testword varchar(255) DEFAULT ‘’ COMMENT ‘’;

2024-07-11 21:03:56 475

原创 vscode编译环境配置-golang

如果单测函数上方不显示run test | debug test,需要安装Code Debugger(因为以前的go Test Explorer不再被维护了)

2024-07-11 20:53:56 266

原创 vscode编译环境配置-c++

1. 支持跳转安装c/c++扩展安装后即可支持跳转

2024-07-11 20:28:28 202

原创 git实用命令

【代码】git实用命令。

2024-07-11 20:08:18 290

原创 限制机器上core文件大小防止打爆磁盘

首先,先编写cleanup_core_files.sh脚本(假设只需要保留最近的3个core文件),然后在机器上设置crontab定时任务,如1分钟运行一次。

2024-07-11 16:22:50 125

原创 cephfs fuse预读机制

ceph-fuse->ceph ceph-fuse会检测是否是顺序读,根据顺序程度动态调整预读大小128K - 16M之间(client_readahead_min=131072 client_readahead_max_periods=4),实际情况(按照4k顺序读一个大文件)我们抓取到,33%没有预读,23%预读了128K,21%预读了384K,8%预读了1M,剩下的预读范围在[128K, 16M]之间。

2024-07-11 15:36:18 201

原创 统计目录下子目录占用大小

当我们收到硬盘容量告警的时候,首先想要知道的是到底哪个目录占用了大头,du可以解决。

2024-07-11 11:11:21 369

原创 指定版本ceph-common安装

如,安装15.2.13的ceph-common。

2024-07-05 17:21:54 444

原创 ubuntu ceph部署

参考文档:http://docs.ceph.org.cn/start/

2024-07-05 16:34:22 615

原创 跨机拷贝数据工具

会将src目录下的内容(不包括src目录)全部同步到dst目录下。

2024-06-07 15:01:07 171

原创 查询出公网出口ip

【代码】查询出公网出口ip。

2024-06-07 14:57:39 93

原创 开机自动挂载块设备

只有格式化之后的块设备才有uuid。1. 查看块设备uuid。3. 设置开机自动挂载。

2024-06-07 14:57:00 189

原创 查看所有块设备的uuid

sudo blkid。

2024-06-07 14:54:40 101

原创 关于crontab 环境变量

默认crontab执行的时候不会执行类似bashrc这样的环境脚本(也就是不加载用户的环境变量),所以在执行非默认路径 (/usr/bin)下的二进制的时候,需要写绝对路径。

2024-06-07 14:48:06 166

原创 查看机器功耗

ipmitool sdr list | grep -i watt

2024-06-07 14:45:23 125

原创 linux 删除磁盘分区

如果报target is busy,说明有进程在访问挂载点,通过fuser命令查看哪些进程在访问,(确保可删除后)删掉对应进程即可。

2024-06-07 14:35:21 476

原创 linux查看磁盘raid情况

【代码】linux查看磁盘raid情况。

2024-06-07 14:27:12 182

原创 shell 多行合并到一行

如果需要将文本每两行合并成一行,并以空格分开。利用awk的NR变量实现。

2024-06-07 14:19:50 218

原创 shell中while read line读取文件执行ssh时只读了一行内容

原因:while循环时,文件内容已经缓存到buffer区,ssh默认以stdin作为输入读取了后面的全部内容,所以导致看上去while里只执行了一行。

2024-06-07 14:14:51 134

原创 ceph ec 一致性原理

简单说来,使用了pglog来实现分片间的一致性,不仅记录了redo信息,而且记录了undo,当primary osd向所有secondary发送写请求时,各个分片写入pglog,并在pginfo中更新自己的last_update(pglog和pginfo以及数据、元数据一起作为一个transaction queue到objectstore),当primary osd收到全部ack后,标记刚才写入的pglog不可回滚(undo信息可以删除,释放空间)更新自身pginfo的last_complete。

2024-05-31 22:16:19 192

原创 正确安装指定版本程序包

从APT源获取最新的软件包列表以确保可以知道软件包的最新可用版本。1,设置软件包管理公钥(以确保后续下载的软件包的可靠性)以ubuntu上安装15.2.13的ceph软件包为例。3,更新本地软件包列表(不下载更新实际的软件包)4,查看对应包的可用版本。

2024-05-28 11:17:50 139

原创 系统运维常用技巧

1,十进制 十六进制互转。

2024-05-24 11:20:59 285

原创 vscode通过跳板机远程登录服务器配置

b,当vscode在本地ssh到跳板机时,需要找到特定路径的的私有密钥文件,vscode的ssh配置文件在特定的路径,如c:>Users>Administrator>.ssh>config,每次执行ssh时,vscode会读取这个config的配置,每个配置Unit是有特定的格式,如需要配置Host HostName Port User IdentityFile ProxyCommand(如果是xshell,xshell可以配置xagent进行身份验证,xagent记录了IdentifyFile路径)

2024-05-23 19:32:16 549 2

原创 cpu top指标的理解

sys:cpu在处理内核态(不包括硬中断和软中断)进程的任务。(往往是系统调用陷入内核执行,如spinlock)user: cpu在处理用户态(没有配置nice)进程的任务。nice: cpu在处理设置有nice的用户态进程的任务。wait:cpu闲置(至少有一个进程在等待IO)idle:cpu闲置(且没有进程在等待IO)cpu所处的状态细分为这么几种。hi:cpu处理硬中断。si:cpu处理软中断。

2024-04-25 20:45:29 215 1

飞思卡尔单片机高效C语言编程(中文)

飞思卡尔(freescale)半导体公司,就是原来的 Motorola公司半导体产品部。于2004年从Motorola分离出来,更名为freescale!freescale系列单片机采用哈佛结构和流 水线指令结构,在许多领域内都表现出低成本,高性能的的特点,它的体系结构为产品的开发节省了大量时间。此外freescale提供了多种集成模块和总线 接口,可以在不同的系统中更灵活的发挥作用,本教程手把手教你用c语言实现。

2013-12-18

wifi技术培训

以无线信道作传输媒介的计算机局域网,是有线联网方式的重要补充和延伸,并逐渐成为计算机网络中一个至关重要的组成部分,广泛适用于需要可移动数据处理或无法进行物理传输介质布线的领域。随着IEEE802.11无线网络标准的制定与发展,使无线网络技术更加成熟与完善

2013-12-16

如何学好网络编程

要想精通网络编程,那么首先要明白,网络编程实际上是两个概念,一个是网络,一个是编程。很多人只是学会了所谓了socket接口,知道了什么recv的参数,知道了XYsockopt,就说自己精通网络编程,实际上他只是知道了编程,而可能对网络一窍不通

2013-11-10

it人士必读

中国缺少什么样的电子工程师?中国缺少满嘴胡须的电子工程师;中国缺少坐轮椅的电子工程师;中国缺少在一个行业专注几十年的资深电子技术专家;中国缺少知 识全面,做事精密细致的电子系统架构师。中国有多少工作很多年的电子工程师;中国每年有多少电子新手需要开始全新的技术生涯;他们有什么困惑需要去解开; 他们最关心的问题是什么?他们对未来的期待是什么?

2013-11-10

qt教程详解

qt是一个编程、软件开发的良好平台,容易上手!界面友好,编译链接简单,查找bug方便迅速

2013-04-05

保障Qos的实时Linux系统设计

保障Qos的实时Linux系统设计 保证多媒体数据优先级传输

2012-10-22

空空如也

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

TA关注的人

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