-
在 RDO 中部署 Openstack Icehouse(0) – 环境描述
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org前面 说过, 用 Redhat的 packstack工具部署 openstack 非常方便, 半年过去了, OpenStack 已经进入 J版本的开发了, 并且 Icehouse 也已经很成熟了, 新的项目和模块不断的被大家所接收, 这个系列试图描述在 RDO 上完整的部署一个可用的openstack.我的基本环境如下: 基本系统: CentOS 7.0 packstack 版本: ...…
-
oVirt 中的 cloudinit 体验
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org为了解决云平台中的初始化问题, 开发者们设计了cloudinit,它驻留在虚拟机中, 随机启动, 根据配置文件和云平台提供的 userdata进行相关配置. oVirt 从很早 的版本就有了 cloudinit 的支持. 下面我在oVirt-3.4 中简单的体验一下 cloudinit 的功能.首先, 得有一个支持 cloudinit 的虚拟机, 为了方便, 我们从内置的ovirt-im...…
-
ovirt 新版本中的 glance 仓库
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org在 oVirt 3.4 中, 内建了一个默认的外部供应商: ovirt-image-repository,该仓库其实 是提供 OpenStack 的 glance 镜像服务, 目前里面有 fodora,centos 等的虚拟机模板镜像.但是在使用中会有一个问题, 由于该镜像存放在 ovirt.org 中,在中国大陆(你懂得)访问速度 相当慢, 为了能更方便地使用这些镜像,最好把这些镜像导...…
-
QEMU 使用 API 直接访问各种存储后端中的镜像
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org现在的虚拟化(云计算)环境的存储技术越来越复杂, 各种存储协议层出不穷,从古老的 NFS, 到最近流行的 Ceph, GlusterFS 等. QEMU/KVM作为开源虚拟机的事实标准, 发展是相当地与时俱进, 对大部分存储协议,他都有相对应的驱动直接和这些后端存储通信.使用这些驱动来访问存储具有很多好处:包括绕过用户空间和内核空间的数据传输层(FUSE) 提高 I/O 性能, 使得非 ...…
-
ovirt-shell 使用
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgIntroductionoVirt 项目的用户接口有 GUI 方式的, rest API 方式的,SDK 方式, 甚至也有 命令行方式的, 也就是本文要介绍的 ovirt-shell.本文介绍在 OSX(这么牛逼)环境下, 从头建立一个数据中心, 集群, 存储域,并且基于 此创建一个虚拟机并对其完成生命周期管理.Install从功能来讲, ovirt-shell 只是一个控制 oVirt...…
-
oVirt 使用 glance
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgoVirt 导入支持第三方的模块, 比如 forman, OpenStack 中的模块(e.g. glance,neutron),添加 glance首先, 需要搭建好 OpenStack 环境, 网上有很多文档, 自行 google.注意: 由于该功能还在早期的试验阶段, 少许配置稍微有点麻烦, 用户需要手动用engine-config 配置 keystone 的认证地址:# engin...…
-
SSD 中的 TRIM 指令
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgSSD 写数据的原理在机械硬盘中, 写入新数据的时候可以直接覆盖原数据, 但是在 SSD 中,情况发生 了变化. SSD 并不能直接覆盖原来的数据,必须先要把旧的数据先擦除然后才可以 把新的数据写入.从物理结构上讲, SSD 被分为许多 block, 每个 block 又可以 再往下划分为pages. 数据可以直接以页面为单位写入, 但是要想删除数据却需要以 块为单位.因此在删除数据的时...…
-
使用 gitstatus 生成项目的图标统计信息
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org最近老板要统计一下团队中各个开发人员的工作情况, 比如写的代码行数之类的.由于我们 团队是用 git 来做代码管理工具的,所以很自然地我需要从 git 本身挖掘这些信息.当然我可以使用 git log 加上各种文本处理工具(e.g. grep)来达到我的目的,但是这种 方式太麻烦, 生成图表更不容易. 为了不重复发明轮子,我放狗搜索了一下, 找到了 gitstat这个工具完美实现我的要求...…
-
使用 `O_DIRECT` 需要注意的地方
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org在之前的 open 使用标记里面, 我提到了O_DIRECT 标志的使用, 使用 DMA 的方式, 数据不经过内核空间,直接在用户空间和设备之间传输. 在文章的测试例子里面我放了一个 小错误,在使用这个标志时读写文件时没有对相关的参数对齐.实际上, 使用 O_DIRECT 打开的文件要求读写的 buffer 和 buffer_size和读写偏移 都要做 I/O 对齐, 对齐的单位为 lo...…
-
简单计算 PI 的方法
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org这几天搞一个虚拟机自动迁移的测试, 为了满足在特定 CPU条件下触发迁移的条件, 需要有进程不断的在消耗 CPU 资源,这类程序当然可以随便乱写, 来个 for (;;;) 之类的就可以完全满足. 但是,本着专业的精神, 我决定用计算π 来达到消耗CPU 资源的目的.学过一点级数展开的都知道下面这个著名的 π的莱布尼茨公式:下面是直接用这个代码的 C++ 测试程序, 当然,由于我用一个浮...…
-
Ceph 中的网络配置
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgCeph 是分布式的文件系统, 由于它是网络文件系统,它的性能不仅仅受限于物理磁盘的 读写带宽(IOPS), 好的网络架构对发挥 Ceph的性能也至关重要.在这里, 我不去详细探讨 Ceph 内部的架构细节(在另外文章我会详细分析),仅仅通过 Ceph 的配置文件和一些测试来简单研究一下 Ceph 的网络配置.Ceph 里的数据同步Ceph 里面的数据同步包括 Monitor 之间的增量...…
-
Emacs 中默认使用空格来缩进
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org我讨厌 TAB, 在 QEMU 的开发中, python 代码的编写,在和别人共同完成的项目中, 等等, 用 TAB 缩进就是一场灾难.每次开始接触一种新语言的时候, 都要设置类似一堆(add-hook 'ruby-mode-hook (lambda () (setq indent-tabs-mode nil)))今天无意中在一个 e...…
-
pNFS 介绍
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org简介顾名思义, pNFS(Parallel NFS) 是NFS的并行实现, 它弥补了传统 NFS 协议在设计 上的不足, 把传统 NFS的性能提高了好几个数量级.可以通过”布局”, 向上提供基于文件, 对象, 甚至是块设备的访问方式.传统 NFS 遇到的挑战下图是传统 NFS 协议的简单架构图: 从图中可以看出, NFS 文件的读写操作和元数据的相关操作, 都需要从客户机传到NFS 服务...…
-
用 Puppet 部署 CEPH
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org相比其他分布式系统(e.g. glusterfs), Ceph 的复杂毋庸置疑,甚至在部署上也稍显 麻烦, 目前主流的部署方式主要有以下几种: ceph-deploy: 取代之前的 mkcephfs, 不推荐在生产环节使用 chef: 官方推荐的部署工具 puppet: 大家部署这些服务最喜欢的方式 XXX: 自己从底层定制, 比如我这里写的ceph-aio本文主要介绍用 pup...…
-
Docker 初体验
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgIntroductionDocker 是基于 LXC 的应用程序容器技术, 最近一年在虚拟化, 云计算领域非常的流行, 它不但使得应用程序的自动化部署大大方便了, 甚至可以和 openstack这样的 IaaS 平台整合, OMG!以下以 ubuntu 系统来体验以下 docker.Install安装 docker# apt-get install linux-image-extra-`...…
-
RDO 初体验
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org无数的实践证明, Openstack 的搭建不是一个技术活, 纯粹是体力活,所以有了各种 各样的搭建工具, e.g. puppet, chef. 理论上在 ubuntu 等平台用puppet 搭建 相对已经 很简单了, 但是还有其他的问题, 需要去简单熟悉 puppet的语法, 修改类似于 ruby 的 配置文件. 但是 RDO 这货,虽然是基于 puppet 来构建 openstack...…
-
重启 Mac OSX 的声卡驱动
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org最近不知道怎么回事, 我的 air总是碰到声卡突然不能工作的情况(虽然概率很小, 但是已经碰到两次了),每次都需要重启才能工作. 之前用 linux 的时候, 碰到各种 硬件不工作的时候,都是 “卸载模块 && 加载模块” 来 work around 的, 按理说 OSX是混合内核的系统, 是比 linux 还要接近微内核架构的牛逼内核,至少这种方式也能在 OSX 上工作...…
-
Rados API 的使用
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgRados 介绍Rados 是 Ceph 最底层的组件, 基于对象存储模型, 向上提供 object, filesystem, block 的存储方式. 这里我主要关注 rados block storage: rbdrbd 用两种方式提供的客户端访问, 一种方式是是把客户端操作集成在内核中,用户 只需要像使用其他文件系统一样挂载就可以直接使用了, 我在 CEPH初体验 里面有 简单的提...…
-
从错误状态恢复虚拟机
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org我的 openstack 整个环境被我不小心重启了,重启计算节点出了问题没有启动起来, 我于是想 stop 这个实例, 但是 stop 后,虚拟机异常了, 如下:# nova list+--------------------------------------+--------------+--------+--------------+-------------+----------...…
-
整合 Openstack 和 Ceph
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org环境 Hostname IP Address Roles ceph1 192.168.176.30 ceph-monitor/admin ceph2 192.168.176.31 ceph-osd ceph3 1...…