- 博客(63)
- 资源 (7)
- 收藏
- 关注

原创 PureFlash存储系统介绍与上手指南
PureFlash是一个开源的分布式存储系统,项目起始于2016年。本文介绍将介绍PureFlash系统的主要特点,以及基于容器的快速上手体验。PureFlash的开源项目位置:https://github.com/cocalele/PureFlash一、PureFlash整体介绍PureFlash是一个开源的ServeSAN实现,也就是通过大量的通用服务器,加上PureFlash的软件系统,构造出一套能满足企业各种业务需求的分布式SAN存储。PureFlash是为全闪存时代而设计的存储系.
2021-03-06 21:05:10
1562
6

原创 分布式存储系统设计的若干问题(三)
问题9:网络连接问题10: 线程模型问题11: multipath与failover,load balance问题12:内部探针其他功能:audit, log
2021-01-08 23:08:19
513

原创 分布式存储系统设计的若干问题(二)
问题5:快照实现方案一个现代的存储系统,快照已经成为了必选项。快照除了直接用于保存系统的中间状态(比如VM的中间状态),还是其他功能包括克隆,备份,容灾功能的基础。快照就是的功能就是给存储拍一个照片,记住某个时刻的数据内容以备随时提取和回退。后面无论对数据再做读写操作,快照的内容总是保持不变。从这个原理上讲,如果在用户发出做快照命令时,迅速把某个volume的数据复制一份,这就是做了快照了,这个基本的做法就是SNIA定义的Split mirror。然而一个存储系统的实现往往不能采取这么简单粗暴的方法,一
2020-09-01 23:34:00
383

原创 分布式存储系统设计的若干问题(一)
本文要讨论的分布式存储系统是指狭义存储系统,即提供块存储,文件存储和对象存储的分布式系统。进一步对分布式的限定,我们这里讨论的是部署在同一个机房内的,由商用服务器构成的分布式存储系统。跨机房,跨地域的分布式系统暂不讨论。作为第一篇,我们先罗列定义问题,并说明这些问题对整个系统的意义。每个问题都有不同的答案并各有优缺点,本篇并不讨论具体的优缺点以及该如何进行选择。问题1: 集中式元数据管理vs分布式元数据集中式元数据管理的典型例子就是HDFS的NameServer,所有数据在集群中的分布信息集中在Name
2020-08-25 00:44:13
1260
原创 ViveNAS性能调试笔记(一)
ViveNAS是一个开源的NAS文件服务软件,有一套独立自创的架构。基于PureFlahs, rocksdb, ganesha。本文是开发过程的性能调试与分析记录,方便开发者了解项目的状态,以及调试思路。
2024-03-31 20:59:08
815
原创 PureFlash云原生存储部署方法
介绍在K8S环境中部署PureFlash云原生存储的方法步骤。PureFlash是一个开源的云存储系统,能提供超过100万IOPS每节点的高性能。
2023-10-24 23:08:30
2311
原创 CXL内存池化应用模型
CXL互连技术这两年比较火热,是自从NAND SSD发明以来计算机硬件技术最大的变革。但是CXL的技术落地恐怕要比SSD艰难的多。前者只是一个部件的代替,后者需要大量架构的适配。本文罗列了一些我自己的思考点,也有一些业界的状态汇总。
2023-08-19 23:46:35
817
原创 使用qemu模拟CXL.mem设备
CXL可以说是自PCIe技术诞生几十年以来最具变革性的新技术了。可以想象有了CXL以后机箱的边界将被彻底打破,服务器互相使用对方的内存,网卡,GPU。整个机架甚至跨机架的超级资源池化成为可能,云计算也将进入一个新的时代。当前Intel, AMD 目前最新CPU型号也都已经支持CXL接口,三星也有支持CXL的内存模组提供,但是普及性还是非常低,可能只有极个别的研究人员才能拿到真正的物理设备。作为不那么有实力的普通IT从业者如何才能体验这一最前沿的科技成果呢?使用模拟器便是最方便的选择。
2023-05-27 10:23:13
3999
14
原创 ViveNAS - 一个基于LSM tree的文件存储实现 (一)
正如libvivefs在图中的位置,他的下层是LSM tree, 在当前的实现里面我直接选用了rocksdb。区别与以hash算法为基础的分布式系统,PureFlash的数据分布是完全人为可控的,这提供了企业存储在运行时所需的稳定能力,因为数据分布的掌控权最终在“人”而不在“机器”。PureFlash是一个分布式的ServerSAN存储系统,他的核心思想继承自NetBRIC S5,一个以全FPGA硬件实现的全闪存储系统,因此PureFlash拥有一个极度简单的IO栈,最小的IO开销。
2023-05-01 17:29:57
955
原创 RDMA编程-2 client端流程
RDMA编程client端流程与实例RDMA编程时的client端和socket编程也是大体类似的,只是有一些跟设备相关的细节,包括地址解析,queue pair, memory region 等要自己显式处理。 rdma_getaddrinfo retrieve address information of the destination rdma_create_event_channel creat
2022-10-11 23:04:52
1234
原创 利用RocksDB 的plugin机制对接ServerSAN
本文示例了一个rocksdb plugin的开发,包括编码过程与编译方法。本文示例的了rocksdb跳过文件系统与ServerSAN进行直接对接的方法。
2022-03-07 23:26:59
2777
翻译 io_uring异步IO框架介绍与示例
https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework
2021-06-20 23:29:22
2049
原创 ServerSAN前端接口设计
前端接口从大的概念分可以分为标准接口和私有接口。标准接口也就是业界广为接受,并且被内置在操作系统里的接口。对于SAN存储也就是SCSI/iSCSI, 以及未来可能出现的NVMe over Fabric(NoF)
2021-06-05 09:51:36
390
转载 NetBRIC S5:“另类”设计的全闪存阵列
NetBRIC S5:“另类”设计的全闪存阵列转自:https://aijishu.com/a/1060000000131182自从开启《企业存储技术》这个公众号以来,我写了不少PCIe SSD闪存组件的东西,这次也来写一篇闪存系统方面的。应该有不少同行朋友听说了,今年的Facebook OCP峰会上有一家中国公司做了演讲,主题为“the ALL-FLASH Software Defined Storage for CLOUD”——所指的产品就是NetBRIC S5。软件定义这个词,似乎总是
2021-04-18 23:35:32
543
原创 ServerSAN的数据一致性设计
这一篇我们来谈一下ServerSAN的数据一致性。就一致性这个概念而言,从工程可理解的角度可以分为三个类型,严格一致性,强一致性,弱一致性。**严格一致性:**对于数据项x的任何读操作将返回最近一次对x进行的写操作的结果所对应的值。严格一致性中存在的问题是它依赖于绝对的全局时间。对于所有的进程来说,所有写操作都是瞬间可见的,系统维持着一个绝对的全局时间顺序。举个例子来说,住在新疆的阿凡提给北京的康熙火车托运箱葡萄干,立刻又给康熙打了个电话说:‘我给你托运了箱葡萄干,快去接站’。康熙马上到火车站一看真就
2021-02-24 23:44:38
437
1
原创 ServerSAN系统元数据管理设计
本文首先就ServerSAN系统的元数据管理做一般的探讨,然后重点以PureFlash为例说明元数据管理的实践。元数据,也就是数据的说明书。当一块硬盘插到电脑上,电脑就看到一个块设备,这个块设备从LBA 0开始到LBA N,顺序编址,无比平滑。然而我们知道在物理上HDD实际是按Cylinder(柱面),Header(磁头), Sector(扇区),SSD则可能更复杂,哪个Chip, 哪个die, 哪个Block, 哪个Page。记录这些物理规格信息(CHS)以及逻辑信息与之的对应关系就是元数据。对于
2021-02-06 19:55:19
738
2
翻译 C++ 异常使用须知
本文翻译自 https://dzone.com/articles/some-useful-facts-to-know-when-using-c-exceptions
2019-11-07 00:22:14
796
原创 Ragel学习笔记(一)
Ragel是一个状态机编译器,类似Lex, 主要是用来处理字符输入,用于语法解析。简单的文本处理工作一般用正则表达式,或者用awk/sed这些工具就可以处理。之所以用Ragel是为了这样的场景,你的代码的核心任务是解析文本,而且需要高效的处理,比如一个SMTP引擎, HTTP引擎。那么Ragel可以按你定义好的语法,生成一个状态机嵌入到你的代码中。因为这个状态机是专门针对你预定义的语法,且以你的原...
2019-04-06 22:13:03
6348
原创 ceph rados ls命令卡死不返回
在测试ceph故障时,发现如果osd节点故障,那么 rados ls命令将长时间hang住,一直不返回。测试是这样进行的,搭建一个由1个monitor, 3个OSD组成的集群。创建一个pool tp, size=3,关闭osd2, osd3运行命令rados -p tp ls ,会发现命令一直不返回。从ceph的bug库里面看到一个类似的记录: http://tracker.cep...
2018-11-29 23:39:58
4185
原创 IPFS尝试
安装IPFS# go get github.com/jbenet/go-ipfs/cmd/ipfs# wget https://dist.ipfs.io/go-ipfs/v0.4.13/go-ipfs_v0.4.13_linux-amd64.tar.gztar xfz go-ipfs_v0.4.13_linux-amd64.tar.gzcd go-ipfs ./install.sh...
2018-01-29 21:47:16
3743
原创 两个host上的qemu VM使用bridge互通
两个host上的qemu VM网络如何互通?两个host上的qemu VM网络使用bridge互通,要使两个VM互通,必须使两个VM暴露在外部网络上,而不能仅仅在host内部。因此需要使用网桥。网桥是一个二层设备,和二层交换机是一个意思。 bridge作为一个二层交换机,是不需要IP地址的,然而网桥在使用时总是配置一个IP地址,更像一个普通的linux网卡。这是为什么?
2017-03-26 00:26:48
2524
原创 Mellanox RoCE卡调试笔记
拿到3块mellanox 的XC3卡,装到3个服务器上,开始RDMA调试。代码都是我自己的,使用rdma_cm库进行开发。Mellanox的RDMA是基于ROCE协议的,因此需要物理层保证可靠传输,不能丢包。为此交换机需要支持DCB, PFC等流控技术。这样子系统一下子就复杂了,为了简化系统,决定不使用交换机,把服务器之间用光纤直连。好在我只有3台服务器,刚好可以连起来,1台对2台即可。ubuntu
2016-09-24 22:20:29
17189
原创 MySQL batch 命令与transcation
1. 如果是自动提交,batch命令中个别语句错误,其他语句仍正常执行,并提交。2. 如果是手动提交,个别语句错误,rollback,则全部语句都被回滚;commit,正确的语句被提交,错误的不产生结果。
2012-02-03 12:29:04
1018
原创 找到一个在Android上创建阻塞式模态对话框的方法
给个例子好了import android.app.Activity;import android.app.Dialog;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.text.method.PasswordTransformationMethod...
2011-03-23 00:47:00
17195
2
原创 关于Windows消息队列的几个问题
<br />1.是否所有的消息都是以WM_开头?<br /> 否,还有<br />PrefixMessage categoryDocumentationABM and ABNApplication desktop toolbarShell Messages and NotificationsACM and ACNAnimation controlAnimation Control Messages and Animation Control NotificationsBCM, BCN, BM, and
2011-01-31 23:27:00
1482
原创 活动窗口(active),焦点窗口(focused),前台窗口(foreground)的区别
<br />搞了十几年的Windows开发,今天才发现这几个概念一直没有彻底的弄明白,今天终于仔细理了理<br />Active Window,字面意思就是活动窗口,其实就是Windows上面标题栏高亮的那个窗口。关键就在标题栏高亮。活动窗口必须是顶层窗口。<br />Focused Window,就是拥有键盘输入的窗口。可以是活动窗口里面的一个控件<br />Foreground Window,一般就是活动窗口。但有例外,当一个窗口处于ALWAYS ON TOP时,活动窗口可能是别的,但Always on
2011-01-31 19:58:00
5678
原创 .NET中获得hInstance的几个方法
<br />1. 只在PC平台上工作<br /> this.GetType().Module.ModuleHandle<br />2. 在WinCE和PC上都工作<br /> GetModuleHandle(NULL)<br />3. 只在PC平台上工作<br /> GetWindowLongPtr( hwndApp, GWLP_HINSTANCE )<br />4. 在WinCE和PC上都工作<br />BOOL GetClassInfo( <br />HINSTANC
2010-11-01 11:27:00
1515
原创 MSVC与GCC的差异(收集中)
1. 变长数组的支持. void f(int len) { char buf[len]; } GCC支持,MSVC不支持 2. 临时变量作为函数参数传递 f(const QString& s);g(QString& s); f("abc"); //MSVC通过,GCC不通过g("abc"); //MSVC和GCC都通过 3
2010-05-21 18:00:00
4724
原创 sed 技巧
只替换符合上下文环境的pattern, 比如:如果c后面紧跟的不是字母A,就将c换成becho "c.cAcf" | sed s/c/([^A]/)/b/1/g输出 b.cAbf 在符合规则的行前面,插入一个特定字符 echo "abcef" | sed /ab/ s/^/#/ 其中/ab/是正则表达式,用来匹配某一行,s/^/#/ 命令是替换, ^表示
2010-04-28 18:13:00
1565
原创 eVC4编的程序不能在emulator上运行
eVC4里面用配置STANDARDSDK, Win32(WCE emulator) Debug, STANDARDSDK Emulator编译出来的程序下载到emulator上不能运行,提示不是有效的Win32程序,我用的是emulator v3, WM6 professional发现要把eVC的配置改成STANDARDSDK, Win32(WCE ARMV4I) Debug, STANDAR
2010-04-16 23:39:00
989
转载 如何让自己的网站快速被搜索引擎找到
摘录自http://topic.youkuaiyun.com/u/20100207/20/a491faef-7151-474c-8498-6f64c88d0479.html我的网站淘引擎http://www.taoyinqing.com终于被搜索引擎收录了,现在总结一下经验,给各位新开站的站长做个参考。一. 选好关键字。关键字是搜索引擎找到我们的网站的关键。
2010-04-01 00:25:00
3440
原创 cygwin下面用mysql client连接服务器的问题
mysql -h localhost -u root -p就有这个问题, mysql -h 127.0.0.1 -u root -p就能正常用
2010-04-01 00:24:00
1080
原创 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mysql -h localhost -u root -p就有这个问题, mysql -h 127.0.0.1 -u root -p就能正常用
2010-03-02 12:31:00
767
原创 find 查找不同扩展名的文件
每次用到都要找半天资料,这次把它记下来两个方法 find . -regex .*/./(cpp/|h/) find . -name "*.cpp" -or -name "*.h"
2009-12-21 18:57:00
2345
原创 WinCE 下 ListCtl virtual mode的使用
调试了几天才把ListCtrl弄好,一个小问题困扰了半天。 把LIST_VIEW设置成REPORT View和Owner Data模式,也就是工作在virtual data模式下。然后去处理LVN_GETDISPINFO消息。好久以前是用过的,不过是在Windows + VC6下面,这次是在WinCE + EVC下面。先后犯了几个错误 1) 用ClassWizard添加消息响应函数
2009-10-08 22:38:00
916
转载 调试中的虚变量和格式化字符
Pseudo VariablesProbably the most common pseudo variable is $err, which displays the last error value set with the function SetLastError. The value that is displayed represents what would be returne
2009-06-02 11:02:00
755
Putty支持快捷键重连和自动重连
2017-09-23
将bmp转成C数组,用于生成WinCE启动画面需要的数据
2008-11-10
C++垃圾回收器
2007-10-21
用.Net和C 写的在XP时钟区显示股票价格 源代码
2007-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人