ceph-mgr 进程
mgr 是一个 active/standby 系统,通过心跳与 mon 保活,同一时刻所有的 mgr 进程中只有一个为 active 状态的 mgr 进程提供服务,mgr 进程运行在 public 网络上,它不
2019-02-25   schedule 21 min 6 s  
font-family
Using @font-face https://css-tricks.com/snippets/css/using-font-face/ 如何优雅的选择字体(font-family) https://segmentfault.com/a/1190000006110417 Guidelines for Using Noto https://www.google.com/get/noto/help/guidelines/ NPM packages for Open Source typefaces https://github.com/KyleAMathews/typefaces
2019-02-24   schedule 10 s  
Ceph 的命令行参数处理
ceph 不管是客户端 lib 库、命令行,还是服务端守护进程都支持大量的配置参数,与大多数软件一致,ceph 的配置同样支持多个级别的配
2019-02-23   schedule 23 min 30 s  
为 CRA 工程增加 styled-jsx 支持
当前比较流行的 CSS-in-JS 项目有 styled-jsx 和 styled-components 两个,说实话 styled-jsx 可以通过插件支持 PostCSS 差不多已经完美,使用 styled-components 的话开发思路需要一些转变,相对 styled-jsx 来说有
2019-02-23   schedule 5 min 0 s  
librados watch/notify 机制
watch 与 notify 机制是 ceph 客户端之间通信的一种方式,librbd 在 image 共享访问、rbd-mirror 的协同工作等地方大量使用了这种机制
2019-02-21   schedule 26 min 44 s  
RBD C++ API
其中 scope_guard 类似 golang 的 defer 关键字,命令行处理库 CLI11 类似于 golang 的 cobra 命令行框架。 #include <rados/librados.hpp> #include <rados/buffer.h> #include <rbd/librbd.hpp> #include <string> #include <vector> #include <iostream> #include <chrono> #include <thread> #include <atomic> #include <regex> #include <csignal> #include <string.h> // https://github.com/ricab/scope_guard.git #include "./scope_guard.hpp" //
2019-02-20   schedule 3 min 5 s  
RBD Python API
#!/usr/bin/env python import rbd import rados import json conf = {'keyring': './keyring'} with rados.Rados(conffile='./ceph.conf', conf=conf) as cluster: out = cluster.mgr_command( [json.dumps({ "prefix": "pg ls-by-pool", "poolstr": "rbd", "target": ["mgr", ""], "format": "json", })], '', 0 ) print(out) pool_name = 'rbd' image_name = 'i1' with rados.Rados(conffile='./ceph.conf', conf=conf) as cluster: with cluster.open_ioctx(pool_name) as ioctx: with rbd.Image(ioctx, image_name) as image: image.write('abc', 0)
2019-02-20   schedule 15 s  
librbd 内部运行机制
运行驱动 librbd 是一个将 block io ([off, len])转换成 rados object io ([oid, off, len])的中间层。为了支持高性能 io 处理,其内部维
2019-02-19   schedule 17 min 40 s  
本地运行 rbd 测试用例
首先构建 ceph 代码: $ pwd /home/runsisi/src/ceph/build ## 适用于 Luminous 版本 $ cmake3 .. -DWITH_PYTHON2=ON -DWITH_LTTNG=OFF -DWITH_BABELTRACE=OFF -DWITH_RDMA=OFF -DWITH_LEVELDB=OFF -DWITH_LZ4=OFF -DWITH_TESTS=ON ## 适用于 Nautilus 版本 $ cmake3 .. -DWITH_PYTHON3=3.6 -DWITH_MGR_DASHBOARD_FRONTEND=OFF -DWITH_PYTHON2=ON -DMGR_PYTHON_VERSION=3 -DWITH_LTTNG=OFF -DWITH_BABELTRACE=OFF -DWITH_RDMA=OFF -DWITH_LEVELDB=OFF -DWITH_LZ4=OFF -DWITH_GRAFANA=OFF -DWITH_RADOSGW_AMQP_ENDPOINT=OFF -DWITH_TESTS=ON 然后 export 环境变量如下(
2019-02-18   schedule 2 min 38 s  
logrotate 与 ceph 日志打包
以 CentOS 7.x 为例,其他发行版可能会有所差异,比如 Ubuntu 16.04 下 cron 守护进程是 cron,而 CentOS 7.x 下是 crond,默认的 /etc/cron.daily/logrotate 任务脚本在不同发行版
2019-02-15   schedule 13 min 11 s