Ubuntu CEPH快速安装
一、CEPH简介
不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。
- Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
- Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
- MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。
Ceph 把客户端数据保存为存储池内的对象。通过使用 CRUSH 算法, Ceph 可以计算出哪个归置组(PG)应该持有指定的对象(Object),然后进一步计算出哪个 OSD 守护进程持有该归置组。 CRUSH 算法使得 Ceph 存储集群能够动态地伸缩、再均衡和修复。
Ceph消除了对系统单一中心节点的依赖,从而实现可真正的无中心节点结果的设计思想,这种设计思想是其他分布式存储系统所不能相比的。
Ceph之所以能那么火,与OpenStack有莫大的关系;OpenStack是目前比较流行的开源云管理平台;OpenStack与Ceph的集成已成为开源云平台的标配。
Ceph中文文档,请参考链接:
http://docs.ceph.org.cn/start/intro/
Ceph设计思想
- 每个组件可线性扩展
- 无任何单点故障
- 解决方案必须是基于软件的、开源的、适应性强的
- 运行在现有商业硬件之上,商业硬件一般是指x86服务器
- 每个组件必须尽可能拥有自我管理和自我修复功能
高可用性指的是系统某个组件失效后,系统依然可以提供正常的服务的功能。可以采用设备部件和数据冗余来提高可靠性。在Ceph集群中可通过数据多副本、纠删码这两种方式提供数据冗余。
可线性扩展指的是可以灵活的应对集群伸缩。这里可以指两方面:
1、指集群的存储容量可以伸缩、可以任意添加、删除存储节点和存储设备;
2、指系统的性能随集群的扩充而线性增加。
Ceph应用场景
Ceph可以提供对象存储、块设备存储和文件系统存储,其对象存储可以对接网盘应用业务;其块设备可以对接IaaS云平台软件。IaaS云平台软件包括:OpenStack、CloudStack、Zstack等;其文件系统存储目前还未成熟,官方不建议在生产环境中使用。
Ceph发行版本
Ceph正处于持续开发、快速发展中。debian系列,发行了9个版本。分别是firefly,giant,hammer,infernalis,jewel,kraken,luminous,mimic,testing。
访问下载网站:
就可以到对应的版本中,下载你需要的软件包。
本文所使用的是jewel版本,也称之为候选版本!
二、环境准备
本文所用的环境和具体节点配置如下:
操作系统 | 主机名 | IP地址 | 功能 | ceph版本 |
ubuntu-16.04.5-server-amd64 | jqb-node128 | 192.168.91.128 | MDS,MON,OSDS | 10.2.10 |
ubuntu-16.04.5-server-amd64 | jqb-node129 | 192.168.91.129 | MON,OSDS | 10.2.10 |
ubuntu-16.04.5-server-amd64 | jqb-node131 | 192.168.91.131 | MON,OSDS | 10.2.10 |
由于官方要求:至少需要一个 Ceph Monitor 和两个 OSD 守护进程。
所以使用了3台服务器来安装ceph集群。
注意mds只有一台
注意:3台Ubuntu系统,需要启动root账户登录。
接下来的操作,都是以root用户执行的!
主机名
这个非常重要,决定ceph搭建成败就在这里,务必注意!!!
我踩了很多坑,说多了都是泪...!下面说具体操作!
登录3台服务器,查看主机名
cat /etc/hostname
如果输出不是上面表格中的主机名,请务必修改!
修改完成之后,必须要重启服务器才行!
由于这里并没有使用私有的DNS,所以直接用hosts文件来强制解析。
务必保证3台服务器的hosts文件有如下3条记录
192.168.91.128 jqb-node128
192.168.91.129 jqb-node129
192.168.91.131 jqb-node131
更新源
阿里云更新源
由于默认的更新源太慢了,调整为阿里云的更新源
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
ceph更新源
添加 release key
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
添加Ceph软件包源,用Ceph稳定版(如 cuttlefish 、 dumpling 、 emperor 、 firefly 等等)替换掉 {ceph-stable-release}
deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main
ceph-stable-release 我选择的是jewel版本
那么在ubuntu服务器上面执行命令
echo "deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main"
就可以得到结果:
deb http://download.ceph.com/debian-jewel/ xenial main
将这条信息写入/etc/apt/sources.list中,那么文件sources.list完整内容如下:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
deb http://download.ceph.com/debian-jewel/ xenial main
请保证3台服务器的/etc/apt/sources.list是一致的
更新系统更新源,3台服务器执行以下命令
apt-get clean
apt-get update
时间设置
务必保证3台服务器的时区是一样的,强制更改时区为上海,执行以下命令
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c "echo 'Asia/Shanghai' > /etc/timezone"
安装ntpdate
apt-get install -y ntpdate
使用阿里云的时间服务器更新
ntpdate ntp1.aliyun.com
3台服务器都执行一下,确保时间一致!
安装软件
Ceph 通过radosgw提供RESTFul HTTP API接口支持对象存储能力,radosgw本质上是一个客户端程序,提供FastCGI 服务
apt-get install -y radosgw --allow-unauthenticated
配置apt允许以 HTTPS方式拉取镜像安装
apt-get install -y apt-transport-https --allow-unauthenticated
安装ceph相关包
apt-get install -y ceph-base ceph-common ceph-fs-common ceph-fuse ceph-mds ceph-mon ceph-osd --allow-unauthenticated
以上,都是3台服务器,都需要执行的!
请确保版本为10.2.10,否则下面的步骤可能会不成功!!!
三、主节点操作
以下操作都是在jqb-node128进行的,登录到jqb-node128服务器
安装 ceph-deploy
apt-get install -y ceph-deploy --allow-unauthenticated
修改https为http
sed -i -e "28s/https/http/g" /usr/lib/python2./dist-packages/ceph_deploy/hosts/debian/install.py
ssh免密登录
生成秘钥,并写入到authorized_keys
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
节点之间的用户认证,是采用ssh方式的。务必要设置ssh免密登录!
执行以下3个命令
ssh-copy-id jqb-node128
ssh-copy-id jqb-node129
ssh-copy-id jqb-node131
它会在远程主机写入文件 ~/.ssh/authorized_keys
测试ssh免密登录
ssh jqb-node128
exit ssh jqb-node129
exit ssh jqb-node131
exit
请确保以上3个命令,不需要输入密码
创建配置文件目录
cd /opt
mkdir -p cephinstall
cd cephinstall
安装ceph节点
先定义几个常量
MDS="jqb-node128"
MON="jqb-node128 jqb-node129 jqb-node131"
OSDS="jqb-node128 jqb-node129 jqb-node131"
INST="$OSDS $MON"
INST表示要安装的节点
用 ceph-deploy 命令通过定义监控节点 ,创建一个新集群。
ceph-deploy new $MON
执行之后,它会在当前目录生成文件ceph.conf
修改配置文件ceph.conf
echo "osd pool default size = 2
osd max object name len =
osd max object namespace len =
mon_pg_warn_max_per_osd =
mon clock drift allowed =
mon clock drift warn backoff =
rbd cache writethrough until flush = false" >> ceph.conf
安装 Ceph 到所有节点
ceph-deploy install $INST
部署监控节点
ceph-deploy mon create-initial
仔细观察输出内容,请确保没有error错误!
增加 OSD 到集群
这里将/data/ceph/osd目录,用来存储数据
for i in $OSDS; do
echo $i
ssh $i 'mkdir -p /data/ceph/osd'
ssh $i 'ln -snf /data/ceph/osd /var/lib/ceph/osd'
ceph-deploy osd prepare $i:/data/ceph/osd
# success indicator: Host xxx is now ready for osd use
done
激活 OSD
for i in $OSDS; do
echo $i
ssh $i 'chown -R ceph:ceph /var/lib/ceph/'
ssh $i 'chown -R ceph:ceph /data/ceph/'
ceph-deploy osd activate $i:/data/ceph/osd
#fix problem "socket /com/ubuntu/upstart: Connection refused"
ssh $i 'dpkg-divert --local --rename --add /sbin/initctl'
ssh $i 'ln -snf /bin/true /sbin/initctl'
ssh $i 'rm -f /etc/apt/sources.list.d/ceph.list'
ssh $i 'modprobe ceph'
done
部署管理密钥到所有关联节点
ceph-deploy admin $MDS
查看节点信息
ssh $MDS "ceph osd tree"
查看验证秘钥
ssh $MDS "ceph auth get-key client.admin | base64"
ssh $MDS "mkdir -p /var/lib/ceph/mds/ceph-$MDS"
ssh $MDS "chown -R ceph:ceph /var/lib/ceph"
创建POOL
通常在创建pool之前,需要覆盖默认的pg_num
,官方推荐:
- 若少于5个OSD, 设置pg_num为128。
- 5~10个OSD,设置pg_num为512。
- 10~50个OSD,设置pg_num为4096。
- 超过50个OSD,可以参考pgcalc计算。
ssh $MDS ceph osd pool create fs_db_data
ssh $MDS ceph osd pool create fs_db_metadata
查看pool
ceph osd lspools
创建Cephfs
ssh $MDS ceph fs new cephfs fs_db_metadata fs_db_data
查看Cephfs
ssh $MDS ceph fs ls
部署MDS
ceph-deploy --overwrite-conf mds create $MDS
挂载ceph
# 挂载需要的验证秘钥
MOUNTKEY=`ssh $MDS "ceph auth get-key client.admin"`
# 节点ip
MONIP=`ssh $MDS cat /etc/ceph/ceph.conf |grep mon_host|cut -d "=" -f2|sed 's?,?:6789,?g'`
# 挂载目录
mkdir /mycephfs # 开始挂载
mount -t ceph $MONIP::/ /mycephfs -o name=admin,secret=$MOUNTKEY
查看挂载情况
root@jqb-node128:~/cephinstall# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 971M 971M % /dev
tmpfs tmpfs 199M 5.8M 193M % /run
/dev/sda1 ext4 19G .5G 11G % /
tmpfs tmpfs 992M 992M % /dev/shm
tmpfs tmpfs 5.0M 5.0M % /run/lock
tmpfs tmpfs 992M 992M % /sys/fs/cgroup
tmpfs tmpfs 199M 199M % /run/user/
192.168.91.128:,192.168.91.129:,192.168.91.131::/ ceph 56G 26G 31G % /mycephfs
注意:挂载的命令非常长,它需要所有节点的ip和端口号
如果需要往ceph中,增加文件。只需要进入/mycephfs目录,像linux一样操作文件,就可以了!
四、自动部署ceph脚本
ceph_install.sh
#/bin/bash
#前提环境
# 系统必须为ubuntu-16.04.-server-amd64,至少有3个节点
# 务必保证每台主机的hostname和下面的变量设置一致
# 保证主机相互之间能用域名访问
# 保证每台主机开启了root登录
# 务必使用root用户运行此脚本
# 请参考链接:https://www.cnblogs.com/xiao987334176/articles/9909039.html
set -e
##注意mds和admin只有一台,请设置好MDS的值
################################################################
MDS="jqb-node128"
MON="jqb-node128 jqb-node129 jqb-node131"
OSDS="jqb-node128 jqb-node129 jqb-node131"
INST="$OSDS $MON"
################################################################
echo "设置ubuntu更新源" >> /opt/ceph_install.log
# 设置ubuntu更新源
echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
deb http://download.ceph.com/debian-jewel/ xenial main" > /etc/apt/sources.list echo "设置时区以及安装软件" >> /opt/ceph_install.log
# 设置时区以及安装软件
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c "echo 'Asia/Shanghai' > /etc/timezone"
apt-get clean
apt-get update
apt-get install -y ceph-deploy --allow-unauthenticated
sed -i -e "28s/https/http/g" /usr/lib/python2./dist-packages/ceph_deploy/hosts/debian/install.py echo "生成ssh秘钥" >> /opt/ceph_install.log
# 生成ssh秘钥
if [ ! -f ~/.ssh/id_rsa ];then
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
fi echo "ssh免密登录" >> /opt/ceph_install.log
# ssh免密登录
for i in $INST; do
echo $i
ssh-copy-id $i
done echo "远程节点环境设置以及软件安装" >> /opt/ceph_install.log
# 远程节点环境设置以及软件安装
for i in $INST; do
# 更新源
ssh $i "echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
deb http://download.ceph.com/debian-jewel/ xenial main' > /etc/apt/sources.list"
# 时区设置
ssh $i ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ssh $i "echo 'Asia/Shanghai' > /etc/timezone"
ssh $i apt-get update
ssh $i apt-get install -y ntpdate
ssh $i /etc/init.d/ntp stop
ssh $i ntpdate ntp1.aliyun.com # 更新时间
# ceph相关软件安装
ssh $i apt-get install -y apt-transport-https --allow-unauthenticated
ssh $i apt-get install -y radosgw --allow-unauthenticated
ssh $i apt-get install -y "ceph-base ceph-common ceph-fs-common ceph-fuse ceph-mds ceph-mon ceph-osd" --allow-unauthenticated
done echo "创建管理目录" >> /opt/ceph_install.log
# 创建管理目录
mkdir -p /opt/cephinstall
cd /opt/cephinstall echo "过定义监控节点,创建一个新集群" >> /opt/ceph_install.log
# 过定义监控节点,创建一个新集群
ceph-deploy new $MON echo "修改配置文件" >> /opt/ceph_install.log
# 修改配置文件
echo "osd pool default size = 2
osd max object name len =
osd max object namespace len =
mon_pg_warn_max_per_osd =
mon clock drift allowed =
mon clock drift warn backoff =
rbd cache writethrough until flush = false" >> ceph.conf echo "安装 Ceph 到所有节点" >> /opt/ceph_install.log
# 安装 Ceph 到所有节点
ceph-deploy install $INST echo "部署监控节点" >> /opt/ceph_install.log
# 部署监控节点
ceph-deploy mon create-initial echo "增加 OSD 到集群" >> /opt/ceph_install.log
# 增加 OSD 到集群
# 这里将/data/ceph/osd目录,用来存储数据
for i in $OSDS; do
echo $i
ssh $i 'mkdir -p /data/ceph/osd'
ssh $i 'ln -snf /data/ceph/osd /var/lib/ceph/osd'
ceph-deploy osd prepare $i:/data/ceph/osd
# success indicator: Host xxx is now ready for osd use
done echo "激活 OSD节点" >> /opt/ceph_install.log
# 激活 OSD节点
for i in $OSDS; do
echo $i
ssh $i 'chown -R ceph:ceph /var/lib/ceph/'
ssh $i 'chown -R ceph:ceph /data/ceph/'
ceph-deploy osd activate $i:/data/ceph/osd
#fix problem "socket /com/ubuntu/upstart: Connection refused"
ssh $i 'dpkg-divert --local --rename --add /sbin/initctl'
ssh $i 'ln -snf /bin/true /sbin/initctl'
ssh $i 'rm -f /etc/apt/sources.list.d/ceph.list'
ssh $i 'modprobe ceph'
done echo "部署管理密钥到所有关联节点" >> /opt/ceph_install.log
# 部署管理密钥到所有关联节点
ceph-deploy admin $MDS # 查看节点信息
ssh $MDS "ceph osd tree" echo "查看验证秘钥" >> /opt/ceph_install.log
# 查看验证秘钥
ssh $MDS "ceph auth get-key client.admin | base64"
ssh $MDS "mkdir -p /var/lib/ceph/mds/ceph-$MDS"
ssh $MDS "chown -R ceph:ceph /var/lib/ceph" echo "创建POOL" >> /opt/ceph_install.log
# 创建POOL
ssh $MDS ceph osd pool create fs_db_data
ssh $MDS ceph osd pool create fs_db_metadata # 查看pool
ssh $MDS ceph osd lspools echo "创建Cephfs" >> /opt/ceph_install.log
# 创建Cephfs
ssh $MDS ceph fs new cephfs fs_db_metadata fs_db_data
# 查看pool
ssh $MDS ceph fs ls echo "部署MDS" >> /opt/ceph_install.log
# 部署MDS
ceph-deploy --overwrite-conf mds create $MDS echo "挂载需要的验证秘钥" >> /opt/ceph_install.log
# 挂载需要的验证秘钥
MOUNTKEY=`ssh $MDS "ceph auth get-key client.admin"`
# 节点ip
MONIP=`ssh $MDS cat /etc/ceph/ceph.conf |grep mon_host|cut -d "=" -f2|sed 's?,?:6789,?g'`
# 挂载目录
mkdir /mycephfs echo "开始挂载" >> /opt/ceph_install.log
# 开始挂载
mount -t ceph $MONIP::/ /mycephfs -o name=admin,secret=$MOUNTKEY # 查看磁盘挂载
df -hT echo "挂载完成" >> /opt/ceph_install.log
注意:执行之前,请仔细查看前置环境是否符合
执行之后,查看日志文件/opt/ceph_install.log输出:
设置ubuntu更新源
设置时区以及安装软件
生成ssh秘钥
ssh免密登录
远程节点环境设置以及软件安装
设置ubuntu更新源
设置时区以及安装软件
生成ssh秘钥
ssh免密登录
远程节点环境设置以及软件安装
创建管理目录
过定义监控节点,创建一个新集群
修改配置文件
安装 Ceph 到所有节点
部署监控节点
增加 OSD 到集群
激活 OSD节点
部署管理密钥到所有关联节点
查看验证秘钥
创建POOL
创建Cephfs
部署MDS
挂载需要的验证秘钥
开始挂载
挂载完成
以下文章,有兴趣的,可以看一下!
如何在 Ubuntu 16.04 中安装 Ceph 存储集群:
https://linux.cn/article-8182-1.html
Ceph基础知识和基础架构认识:
https://www.cnblogs.com/luohaixian/p/8087591.html
史上最全的Ceph介绍、原理、架构:
https://blog.csdn.net/uxiAD7442KMy1X86DtM3/article/details/81059215
Ubuntu CEPH快速安装的更多相关文章
- Ubuntu下快速安装LAMP server
Ubuntu下可快速安装LAMP server(Apache+MySQL+PHP5). 首先,打开Ubuntu虚拟机,Terminal打开root权限:“sudo -s”. 一.安装LAMP serv ...
- Ubuntu下快速安装php环境
今天蛋疼了一下,在Ubuntu下装了一下php的环境,也就是装了一下MySQL.PHP.Apache.话说还真是简单...不禁让我想起原来在windows下开发的时候撑死就是装不上,而且一个就是几个G ...
- Nodejs 和 Electron ubuntu下快速安装
查找时间管理软件的时候发现了superProductivity这个程序,使用electron进行开发,于是看了一下介绍,手痒了,尝试进行环境搭建,下一步慢慢补齐前端知识吧 nodejs安装 nodej ...
- ubuntu下如何安装codeblocks集成开发环境
codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦. 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如s ...
- ubuntu下一键安装pptpd
1 #!/bin/bash 2 # Quick and dirty pptp VPN install script 3 # Ubuntu 12+ or Debain 7+ 4 # Reference ...
- 在Ubuntu上使用离线方式快速安装K8S v1.11.1
在Ubuntu上使用离线方式快速安装K8S v1.11.1 0.安装包文件下载 https://pan.baidu.com/s/1nmC94Uh-lIl0slLFeA1-qw v1.11.1 文件大小 ...
- windows下用wubi快速安装ubuntu
由于开发需要,我们可能要用到ubuntu,然而又不能完全抛弃windows,于是双系统是个不错选择. wubi是一个在windows下快速安装ubuntu双系统的工具,它包含在ubuntu 12及以前 ...
- ubuntu ceph集群安装以及简单使用
ubuntu ceph安装以及使用 1.安装环境 本文主要根据官方文档使用ubuntu14.04安装ceph集群,并且简单熟悉其基本操作.整个集群包括一个admin节点(admin node,主机名为 ...
- 安装ceph (快速) 步骤一:预检
官网地址:http://docs.ceph.org.cn/start/ 预检 安装一个 ceph-deploy 管理节点和一个三节点的Ceph 存储集群来研究 Ceph 的基本特性.这篇预检会帮你准备 ...
随机推荐
- bzoj 刷题计划~_~
bzoj 2818 两个互质的数的gcd=1,所以他们同时乘一个素数那么他们的gcd=这个素数,所以枚举素数p找n/p以内有多少对互质数,用欧拉函数. bzoj 2809 可并堆,对于每一个子树显然是 ...
- error: Failed to start domain lb error: Failed to activate service 'org.freedesktop.machine1': timed out 报错的解决办法
能正常查看kvm虚拟机列表: virsh list 但在执行virsh start lb启动虚拟机时卡顿了好几秒,然后报以下错误: error: Failed to start domain lber ...
- 星号三角形 I
N = int(eval(input())) for row in range(1,N+1): if row%2 != 0: a = '*'*row print ('{}'.format(a.cent ...
- RACCommand中的信号
示例: RACSignal* textSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscri ...
- 关于Python运行代码报错:SyntaxError: Non-ASCII character '\xe5' in file的解决方法
运行python文件报错如上 解决办法: # -*- coding: UTF- -*- 或者 #coding=utf- (注:此语句一定要添加在源代码的第一行) 原因:Python默认是以ASCII作 ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- Redis实战(四)CentOS 7上Redis哨兵
什么是哨兵 顾名思义,哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程.它的功能有2个: 1. 监控主数据库和从数据库是否运行正常: 2. 主数据出现故障后自动将从数据库转化为主数据 ...
- python3学习笔记.4.turtle绘图
先放上参考 https://docs.python.org/3/library/turtle.html //********************************************** ...
- BOOST 之filesystem, path
目录[-] 使用 boost::filesystem 的第一个程序 清单 1. 用于确定某个文件的类型是否为 Directory 的代码 了解 Boost path 对象 清单 2. 创建 Boost ...
- APScheduler API -- apscheduler.triggers.interval
apscheduler.triggers.interval API Trigger alias for add_job(): interval class apscheduler.triggers.i ...