开源版Ceph分布式存储

Similar documents
安装命令参数详解

管理节点灾难恢复

Spice协议 使用指南

嵌套虚拟化配置指南

数据中心部署实践-高性能

升级教程

嵌套虚拟化配置指南

HTTPS方式登录UI 使用说明

Ubuntu系统 模板封装教程

升级教程

untitled

untitled

CentOS 6系统 模板封装教程

Ubuntu系统 模板封装教程

AD/LDAP 配置教程

私有云 部署教程

快速安装使用教程

快速安装使用教程

企业版特性概览

版权所有 上海云轴信息科技有限公司 2017 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不 得以任何形式传播 商标说明 和其他云轴商标均为上海云轴信息科技有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意您购买的产品

本文由筱驀釹贡献

Windows 2003R2系统

OCFS2 共享存储 实践指南

Microsoft Word - PS2_linux_guide_cn.doc

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

ssh-keygen -t rsa

Microsoft Word - PD1013-Mevoco-Product-Doc-Amazon EC2 classic EIP zone(Virtual Router)-2.0.docx

ST2001-OCFS2共享存储实践指南-iSCSI存储

ZStack 使用 Spice 协议指南 版本 1.10 日期

A9RF716.tmp

Unix®t Œ fi z.PDF

Microsoft Word - linux命令及建议.doc

Linux服务器构建与运维管理

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

SP5 user guide.PDF

投影片 1

Windows 2000 Server for T100

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD University of California UNIX X/Open Company, Ltd.

Microsoft PowerPoint - 03.IPv6_Linux.ppt [相容模式]

深圳市亚可信息技术有限公司 NetWeaver 7.3 EhP1 ABAP on Redhat Enterprise Linux Server 62 for Oracle112 High Availability System Installation Created by


目录 1 简介 1 2 配置前提 1 3 配置环境 服务器 软件 1 4 配置指导 组网拓扑 操作步骤 Red Hat Enterprise Linux Server Red Hat Enterprise Lin

Windows 2000 Server for T100

Chapter #

untitled

简易 Linux Server 部署教程系列之 06 使用 Samba 实现文件共享服务 ( 作者信息 : 阮晓龙投稿时间 :2018 年 5 月 4 日 ) 一 需求描述 1 需求说明支持 Windows Linux Unix Mac 等操作系统支持 Android ios 等移动平台支持计算机

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

スライド 1

05_資源分享-NFS及NIS.doc

ebook70-21

2

ebook35-2

会计9

Abstract arm linux tool-chain root NET-Start! 2

SL2511 SR Plus 操作手冊_單面.doc

ebook140-9

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun

AL-M200 Series

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

標準 BIG 中文字型碼表 A 0 9 B C D E F 一 乙 丁 七 乃 九 了 二 人 儿 入 八 几 刀 刁 力 匕 十 卜 又 三 下 丈 上 丫 丸 凡 久 么 也 乞 于 亡 兀 刃 勺 千 叉 口 土 士 夕 大 女 子 孑 孓 寸 小 尢 尸 山 川 工 己 已 巳 巾 干 廾

版权所有 上海云轴信息科技有限公司 2016 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标说明 和其他云轴商标均为上海云轴信息科技有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意您购买的产品 服

PowerPoint 演示文稿

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

第1題:答案D

AL-MX200 Series

スライド 1

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce.

实践课堂成都站-0609.key

& ($ ) * +!"", &#!""#! +$ ) ( * +!"", - ($ ) * + % ($ ) * + * ), ($ ( # *$ ) ( + ) (. ($ / ($ ) ( * + &/ )! $!%

自由軟體教學平台

像 客 样 使 命令行 徐 东

.. 3 N

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1

09 Linux Linux Linux Linux 009.indd /9/4 下午 12:11:10

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( )

Paratune用户手册

版权所有 上海云轴信息科技有限公司 2016 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标说明 和其他云轴商标均为上海云轴信息科技有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意您购买的产品 服

untitled

untitled

SA-DK2-U3Rユーザーズマニュアル

附件9 电梯运行安全监测管理信息平台技术规范 第11部分:系统信息安全技术规范(征求意见稿)

版权所有 上海云轴信息科技有限公司 2016 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标说明 和其他云轴商标均为上海云轴信息技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意您购买的产品 服

ebook140-8

ebook70-5

恶意代码分析技术及相关工具 郑辉 清华大学网络中心 CERNET Computer Emergency Response Team

迅闪2009帮助手册(xshelp)

Visualize CMap

RAID RAID 0 RAID 1 RAID 5 RAID * (-1)* (/ 2)* No Yes Yes Yes SATA A. B. BIOS SATA C. RAID BIOS RAID ( ) D. RAID/AHCI ( ) S ATA S S D ( ) (

IP505SM_manual_cn.doc

2782_OME_KM_Cover.qxd

lect03.ppt

请 先 阅 读 本 节! 表 示 安 全 信 息 警 告 : 为 了 减 少 火 灾 或 电 击 的 危 险, 不 要 让 本 机 受 到 雨 淋 或 放 置 在 潮 湿 的 地 方 为 减 少 火 患 或 电 击 的 危 险, 本 设 备 应 避 开 一 切 使 用 液 体 的 场 合, 并 只


Transcription:

开源版 Ceph 分布式存储 部署教程 产品版本 :ZStack 2.4.0 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 版权声明 版权声明 版权所有 上海云轴信息科技有限公司 2018 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标说明 ZStack 商标和其他云轴商标均为上海云轴信息科技有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意您购买的产品 服务或特性等应受上海云轴公司商业合同和条款的约束, 本文档中描述的全部或部分产品 服务或特性可能不在您的购买或使用范围之内 除非合同另有约定, 上海云轴公司对本文档内容不做任何明示或暗示的声明或保证 由于产品版本升级或其他原因, 本文档内容会不定期进行更新 除非另有约定, 本文档仅作为使用指导, 本文档中的所有陈述 信息和建议不构成任何明示或暗示的担保 文档版本 :V2.4.0 I

开源版 Ceph 分布式存储 / 目录 目录 版权声明. I 1 基于 CentOS 7.2 Ceph 分布式存储实践指南. 1 1.1 部署实践 1 1.1.1 基础环境准备.1 1.1.2 磁盘初始化. 3 1.1.3 安装 Ceph.6 1.2 运维管理 9 1.2.1 删除 OSD. 9 1.2.2 增加 OSD. 9 1.2.3 删除 MON..10 1.2.4 增加 MON..10 2 基于 CentOS 7.4 Ceph 分布式存储实践指南.. 11 2.1 部署实践. 11 2.1.1 基础环境准备..11 2.1.2 磁盘初始化.. 13 2.1.3 安装 Ceph..15 2.1.4 配置单独的 SSD 存储池.. 19 2.2 运维管理. 20 2.2.1 删除 OSD.. 20 2.2.2 增加 OSD.. 20 2.2.3 删除 MON..20 2.2.4 增加 MON..21 2.2.5 删除默认 pool.. 21 2.2.6 环境清理 21 术语表.. 23 II 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 1.1 部署实践 Ceph 是开源的分布式存储解决方案, 支持对象存储 块存储和文件存储访问类型 2014 年 4 月,Redhat 收购 Inktank Ceph 成为 Redhat 的开源项目, 并提供商业支持服务 Ceph 开源项目发布遵循 GPL 和 LGPL 协议 1.1.1 基础环境准备 操作步骤 1. ISO 及实施环境准备 目前,ZStack 定制版 ISO 集成 Ceph 社区版 Hammer 0.94.9( 具体版本依据官网而定 ) 本文假设以下实施环境 : 服务器 硬件配置 IP 地址 数据磁盘 固态硬盘 : /dev/vdb ceph-1 4 核 4G 内存 172.20.12.154 机械硬盘 : /dev/vdc, /dev/vdd 固态硬盘 : /dev/vdb ceph-2 4 核 4G 内存 172.20.12.99 机械硬盘 : /dev/vdc,/ dev/vdd 固态硬盘 : /dev/vdb ceph-3 4 核 4G 内存 172.20.12.21 机械硬盘 : /dev/vdc, /dev/vdd 其中, 每个节点配置 1 块固态硬盘 40GB 存储日志, 配置 2 块机械硬盘 200G 存储数据 2. 配置节点 通过 ZStack 基于 CentOS 7.2 定制版 ISO 安装 3 个节点操作系统 网络的配置方式如下 : 如果网卡名称为 eth0 eth1 格式, 建议先做归一化成 em01 格式, 以下示例为主备模式 的 bond 配置, 并配置网桥 : zs-change-nic -c eth0 em01 文档版本 :V2.4.0 1

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 zs-bond-ab -c bond0 zs-nic-to-bond -a bond0 em01 zs-network-setting -b bond0 172.20.12.21 255.255.0.0 172.20.0.1 其中 : bond0: 网卡 bond 的模式 172.20.12.21:IP 地址 255.255.0.0: 掩码 172.20.0.1: 网关 配置 3 个节点的网络信息 : [root@ceph-1 ~]# zs-network-setting -b bond0 172.20.12.154 255.255.0.0 172.20.0.1 [root@ceph-2 ~]# zs-network-setting -b bond0 172.20.12.99 255.255.0.0 172.20.0.1 [root@ceph-3 ~]# zs-network-setting -b bond0 172.20.12.21 255.255.0.0 172.20.0.1 设置主机解析 : [root@ceph-1 ~]# vim /etc/hosts 172.20.12.154 ceph-1 172.20.12.99 ceph-2 172.20.12.21 ceph-3 将以下脚本保存成 ceph.sh, 在第一台节点执行以下脚本 例如, 在 172.20.12.21 上 执行 bash ceph.sh 172.20.12.21 172.20.12.99 172.20.12.154 其 中 172.20.12.21,172.20.12.99,172.20.12.154 分别代表三台节点的存储 IP 地址 即可配 置 ceph-1 ceph-2 和 ceph-3 免密码登陆 : #!/bin/bash set -x export PS4='+[#$LINENO ${FUNCNAME[0]}() $BASH_SOURCE] ' declare -a IP IP[0]=$1 IP[1]=$2 IP[2]=$3 host_name=$4 auto_ssh_copy_id () { } expect -c "set timeout -1; spawn ssh-copy-id $2; expect { *(yes/no)* {send -- yes\r;exp_continue;} *assword:* {send -- $1\r;exp_continue;} eof {exit 0;} }"; 2 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 gen_ssh_keys(){ ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys chmod go-rwx /root/.ssh/authorized_keys } 无密码配置完成后, 传输 /etc/hosts 文件 : [root@ceph-1 ~]# scp /etc/hosts ceph-2:/etc/ [root@ceph-1 ~]# scp /etc/hosts ceph-3:/etc/ 配置 3 个节点的主机名以及 ceph-1 ceph-2 和 ceph-3 防火墙, 允许互相访问 : ssh ceph-1 "hostnamectl set-hostname ceph-1 && export HOSTNAME=ceph-1 && iptables -F \ && service iptables save" ssh ceph-2 "hostnamectl set-hostname ceph-2 && export HOSTNAME=ceph-2 && iptables -F \ && service iptables save" ssh ceph-3 "hostnamectl set-hostname ceph-3 && export HOSTNAME=ceph-3 && iptables -F \ && service iptables save" 配置 ceph-1 ceph-2 和 ceph-3 时间同步 : [root@ceph-1 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp [root@ceph-1 ~]# systemctl restart ntpd [root@ceph-1 ~]# systemctl enable ntpd.service [root@ceph-2 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp [root@ceph-2 ~]# systemctl restart ntpd [root@ceph-2 ~]# systemctl enable ntpd.service [root@ceph-3 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp [root@ceph-3 ~]# systemctl restart ntpd [root@ceph-3 ~]# systemctl enable ntpd.service 至此,3 个节点的主机名与网络配置完成 1.1.2 磁盘初始化 操作步骤 1. 固态磁盘分区 根据上一节服务器环境描述, 每个节点配置 1 块固态硬盘和 2 块机械硬盘, 所以对固态硬盘执行 分区, 分 2 个日志分区 操作如下 : [root@ceph-1 ~]# parted /dev/vdb mklabel gpt [root@ceph-1 ~]# parted /dev/vdb mkpart journal-1 10% 40% [root@ceph-1 ~]# parted /dev/vdb mkpart journal-2 60% 90% [root@ceph-2 ~]# parted /dev/vdb mklabel gpt [root@ceph-2 ~]# parted /dev/vdb mkpart journal-1 10% 40% 文档版本 :V2.4.0 3

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 [root@ceph-2 ~]# parted /dev/vdb mkpart journal-2 60% 90% [root@ceph-3 ~]# parted /dev/vdb mklabel gpt [root@ceph-3 ~]# parted /dev/vdb mkpart journal-1 10% 40% [root@ceph-3 ~]# parted /dev/vdb mkpart journal-2 60% 90% 2. 机械硬盘格式化操作 对 ceph-1 节点的机械硬盘格式化操作如下 : [root@ceph-1 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdc [root@ceph-1 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdd [root@ceph-1 ~]# mkdir -p /data/disk1/ [root@ceph-1 ~]# mkdir -p /data/disk2/ # 查看机械硬盘的 UUID [root@ceph-1 ~]# ll /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e - >../../vda2 lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 - >../../vda1 lrwxrwxrwx 1 root root 9 May 5 13:56 9bdfeb51-95c2-4018-93dc-69256ab789f3 ->../../ vdd lrwxrwxrwx 1 root root 9 May 5 13:55 da461bde-2aef-4f49-8634-89564317559e ->../../ vdc # 通过 UUID 挂载数据目录,/dev/vdc 挂载 /data/disk1, 依次类推 [root@ceph-1 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/da461bde-2aef-4f49-8634-89564317559e /data/disk1 [root@ceph-1 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/9bdfeb51-95c2-4018-93dc-69256ab789f3 /data/disk2 对 ceph-2 节点的机械硬盘操作格式化操作如下 : [root@ceph-2 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdc [root@ceph-2 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdd [root@ceph-2 ~]# mkdir -p /data/disk1/ [root@ceph-2 ~]# mkdir -p /data/disk2/ # 查看机械硬盘的 UUID [root@ceph-2 ~]# ll /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 9 May 5 14:03 62996e0d-0f7f-4e10-99fa-f87686cc0c05 ->../../vdc lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e - >../../vda2 lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 - >../../vda1 lrwxrwxrwx 1 root root 9 May 5 14:03 ba29e5ea-81af-4ae9-859a-cdeae84ba466 - >../../vdd # 通过 UUID 挂载数据目录,/dev/vdc 挂载 /data/disk1, 依次类推 [root@ceph-2 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/62996e0d-0f7f-4e10-99fa-f87686cc0c05 /data/disk1 [root@ceph-2 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \ 4 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 /dev/disk/by-uuid/ba29e5ea-81af-4ae9-859a-cdeae84ba466 /data/disk2 对 ceph-3 节点的机械硬盘操作格式化操作如下 : [root@ceph-3 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdc [root@ceph-3 ~]# mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/vdd [root@ceph-3 ~]# mkdir -p /data/disk1/ [root@ceph-3 ~]# mkdir -p /data/disk2/ # 查看机械硬盘的 UUID [root@ceph-3 ~]# ll /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 9 May 5 14:17 1efee887-ed2f-4c3e-8e77-717f15b19662 ->../../vdd lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e - >../../vda2 lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 - >../../vda1 lrwxrwxrwx 1 root root 9 May 5 14:17 cb07fe55-afba-4ce6-aae1-a65c596d8899 ->../../ vdc # 通过 UUID 挂载数据目录,/dev/vdc 挂载 /data/disk1, 依次类推 [root@ceph-3 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/cb07fe55-afba-4ce6-aae1-a65c596d8899 /data/disk1 [root@ceph-3 ~]# mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/1efee887-ed2f-4c3e-8e77-717f15b19662 /data/disk2 注 : 对于机械硬盘通过手动挂载, 服务器重启后将会失去的情况, 建议放到 /etc/rc.local : root@ceph-1 ~]# chmod +x /etc/rc.local [root@ceph-1 ~]# vim /etc/rc.local mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/da461bde-2aef-4f49-8634-89564317559e /data/disk1 mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/9bdfeb51-95c2-4018-93dc-69256ab789f3 /data/disk2 [root@ceph-2 ~]# chmod +x /etc/rc.local [root@ceph-2 ~]# vim /etc/rc.local mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/62996e0d-0f7f-4e10-99fa-f87686cc0c05 /data/disk1 mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/ba29e5ea-81af-4ae9-859a-cdeae84ba466 /data/disk2 [root@ceph-3 ~]# chmod +x /etc/rc.local [root@ceph-3 ~]# vim /etc/rc.local mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/cb07fe55-afba-4ce6-aae1-a65c596d8899 /data/disk1 mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/1efee887-ed2f-4c3e-8e77-717f15b19662 /data/disk2 至此,3 个节点的磁盘初始化完成 文档版本 :V2.4.0 5

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 1.1.3 安装 Ceph 操作步骤 1. 安装 Ceph Hammer 基于 CentOS 7.2 的 ISO 中在 ceph-1 ceph-2 和 ceph-3 节点安装 Ceph Hammer 0.94.9( 具体版 本依照官网而定 ): [root@ceph-1 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ceph cephdeploy [root@ceph-2 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ceph [root@ceph-3 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ceph 2. 创建 Ceph 集群 在 ceph-1 节点安装 ceph-deploy, 用于自动化部署 在 ceph-1 创建 Ceph 集群 : [root@ceph-1 ~]# mkdir ceph-config [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# ceph-deploy new ceph-1 ceph-2 ceph-3 # 修改 ceph.conf 文件 [root@ceph-1 ceph-config]# vim ceph.conf [global] fsid = 392106b4-e3ab-4f51-ac0e-a4e26c8abd82 mon_initial_members = ceph-1, ceph-2, ceph-3 mon_host = 172.20.12.154,172.20.12.99,172.20.12.21 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx filestore_xattr_use_omap = true osd_pool_default_size = 3 osd_pool_default_min_size = 2 osd_pool_default_pg_num = 128 osd_pool_default_pgp_num = 128 osd_max_backfills = 1 osd_recovery_max_active = 1 osd crush update on start = 0 debug_ms = 0 debug_osd = 0 osd_recovery_max_single_start = 1 filestore_max_sync_interval = 15 filestore_min_sync_interval = 10 filestore_queue_max_ops = 65536 filestore_queue_max_bytes = 536870912 filestore_queue_committing_max_bytes = 536870912 filestore_queue_committing_max_ops = 65536 filestore_wbthrottle_xfs_bytes_start_flusher = 419430400 filestore_wbthrottle_xfs_bytes_hard_limit = 4194304000 6 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 filestore_wbthrottle_xfs_ios_start_flusher = 5000 filestore_wbthrottle_xfs_ios_hard_limit = 50000 filestore_wbthrottle_xfs_inodes_start_flusher = 5000 filestore_wbthrottle_xfs_inodes_hard_limit = 50000 journal_max_write_bytes = 1073714824 journal_max_write_entries = 5000 journal_queue_max_ops = 65536 journal_queue_max_bytes = 536870912 osd_client_message_cap = 65536 osd_client_message_size_cap = 524288000 ms_dispatch_throttle_bytes = 536870912 filestore_fd_cache_size = 4096 osd_op_threads = 10 osd_disk_threads = 2 filestore_op_threads = 6 osd_client_op_priority = 100 osd_recovery_op_priority = 5 rbd_default_format = 2 修改 ceph.conf 后保存, 执行以下操作 : [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf mon create ceph-1 \ ceph-2 ceph-3 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 [root@ceph-1 ceph-config]# ceph-deploy gatherkeys ceph-1 ceph-2 ceph-3 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf osd create \ ceph-1:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-1:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-2:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-2:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-3:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf osd activate \ ceph-1:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-1:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-2:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-2:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-3:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 3. 查看集群情况 Ceph 集群初始化结束后, 看查看当且运行状态 : [root@ceph-1 ceph-config]# ceph -s cluster 392106b4-e3ab-4f51-ac0e-a4e26c8abd82 文档版本 :V2.4.0 7

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 health HEALTH_WARN 64 pgs stuck inactive 64 pgs stuck unclean too few PGs per OSD (10 < min 30) monmap e1:3 mons at {ceph-1=172.20.12.154:6789/0,ceph- 2=172.20.12.99:6789/0,ceph-3=172.20.12.21:6789/0} election epoch 4, quorum 0,1,2 ceph-3,ceph-2,ceph-1 osdmap e13: 6 osds: 6 up, 6 in pgmap v25: 64 pgs, 1 pools, 0 bytes data, 0 objects 195 MB used, 1199 GB / 1199 GB avail 64 creating [root@ceph-1 ceph-config]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0 root default 0 0 osd.0 up 1.00000 1.00000 1 0 osd.1 up 1.00000 1.00000 2 0 osd.2 up 1.00000 1.00000 3 0 osd.3 up 1.00000 1.00000 4 0 osd.4 up 1.00000 1.00000 5 0 osd.5 up 1.00000 1.00000 查看 OSD ID 号 : # 查看 OSD ID [root@ceph-1 ~]# cat /data/disk[1-2]/whoami 0 1 [root@ceph-2 ~]# cat /data/disk[1-2]/whoami 2 3 [root@ceph-3 ~]# cat /data/disk[1-2]/whoami 4 5 4. 建立 CRUSH 结构树 根据 OSD ID 号, 建立 CRUSH 结构树 : [root@ceph-1 ~]# ceph osd crush add-bucket ceph-1 host [root@ceph-1 ~]# ceph osd crush add-bucket ceph-2 host [root@ceph-1 ~]# ceph osd crush add-bucket ceph-3 host [root@ceph-1 ~]# ceph osd crush move ceph-1 root=default [root@ceph-1 ~]# ceph osd crush move ceph-2 root=default [root@ceph-1 ~]# ceph osd crush move ceph-3 root=default [root@ceph-1 ~]# ceph osd crush create-or-move osd.0 0.2 root=default host=ceph-1 [root@ceph-1 ~]# ceph osd crush create-or-move osd.1 0.2 root=default host=ceph-1 [root@ceph-1 ~]# ceph osd crush create-or-move osd.2 0.2 root=default host=ceph-2 [root@ceph-1 ~]# ceph osd crush create-or-move osd.3 0.2 root=default host=ceph-2 [root@ceph-1 ~]# ceph osd crush create-or-move osd.4 0.2 root=default host=ceph-3 [root@ceph-1 ~]# ceph osd crush create-or-move osd.5 0.2 root=default host=ceph-3 创建后,CRUSH 结构树如下 : [root@ceph-1 ~]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 1.19998 root default -2 0.39999 host ceph-1 0 0.20000 osd.0 up 1.00000 1.00000 8 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 1.2 运维管理 1 0.20000 osd.1 up 1.00000 1.00000-3 0.39999 host ceph-2 2 0.20000 osd.2 up 1.00000 1.00000 3 0.20000 osd.3 up 1.00000 1.00000-4 0.39999 host ceph-3 4 0.20000 osd.4 up 1.00000 1.00000 5 0.20000 osd.5 up 1.00000 1.00000 # 查看 Ceph 集群状态 [root@ceph-1 ~]# ceph -s cluster 392106b4-e3ab-4f51-ac0e-a4e26c8abd82 health HEALTH_OK monmap e1: 3 mons at {ceph-1=172.20.12.154:6789/0,ceph-2=172.20.12.99:6789/0,ceph-3=172.20.12.21:6789/0} election epoch 4, quorum 0,1,2 ceph-3,ceph-2,ceph-1 osdmap e29: 6 osds: 6 up, 6 in pgmap v53: 64 pgs, 1 pools, 0 bytes data, 0 objects 197 MB used, 1199 GB / 1199 GB avail 至此,Ceph 集群初始化结束 通过 ZStack 企业版初始化界面, 在主存储和备份存储步骤 中, 添加 Ceph 集群 MON 节点 1.2.1 删除 OSD 例如, 需要移除故障的数据盘 OSD.5, 执行以下步骤 : [root@ceph-1 ~]# ceph osd out 5 # 登陆到 OSD.5 的服务器, 关闭 OSD.5 服务 [root@ceph-3 ~]# service ceph stop osd.5 [root@ceph-1 ~]# ceph osd crush remove osd.5 [root@ceph-1 ~]# ceph auth del osd.5 [root@ceph-1 ~]# ceph osd rm 5 # 进入 ceph-config 目录 [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 1.2.2 增加 OSD 例如, 需要增加 ceph-3 节点的 /data/disk2/( 必须为纯净目录 ), 执行以下步骤 : # 进入 cluster 目录 [root@ceph-1 ~]# cd cluster [root@ceph-1 cluster]# ceph-deploy --overwrite-conf osd create \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 cluster]# ceph-deploy --overwrite-conf osd activate \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 cluster]# ceph-deploy --overwrite-conf config push ceph-1 \ 文档版本 :V2.4.0 9

开源版 Ceph 分布式存储 / 1 基于 CentOS 7.2 Ceph 分布式存储实践指南 ceph-2 ceph-3 1.2.3 删除 MON 例如, 需要删除 ceph-3 节点的 MON 服务 : # 登陆 ceph-3 节点, 停止 MON 服务 [root@ceph-3 ~]# service ceph stop mon.ceph-3 [root@ceph-3 ~]# ceph mon remove ceph-3 # 修改 ceph.conf 文件, 删除 ceph-3 的 MON 信息 [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# vim ceph.conf mon_initial_members = ceph-1, ceph-2 mon_host = 172.20.12.154,172.20.12.99 # 推送全局信息 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 ceph-2 1.2.4 增加 MON 例如, 增加 ceph-3 节点作为 MON 服务 : # 查看当前 MON 状态 [root@ceph-1 ~]# ceph mon dump # 添加 MON 节点 [root@ceph-3 ~]# ceph mon add ceph-3 172.20.12.21:6789 # 增加 MON 信息 [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf mon create ceph-3 # 修改 ceph.conf 文件 [root@ceph-1 ceph-config]# vim ceph.conf mon_initial_members = ceph-1, ceph-2, ceph-3 mon_host = 172.20.12.154,172.20.12.99,172.20.12.21 # 推送全局信息 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 10 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 2.1 部署实践 Ceph 是开源的分布式存储解决方案, 支持对象存储 块存储和文件存储访问类型 2014 年 4 月,Redhat 收购 Inktank Ceph 成为 Redhat 的开源项目, 并提供商业支持服务 Ceph 开源项目发布遵循 GPL 和 LGPL 协议 2.1.1 基础环境准备 操作步骤 1. ISO 及实施环境准备 目前,ZStack 定制版 ISO 基于 CentOS 7.4 深度定制的 ISO 集成 Ceph 社区版 J 版源 本文假设以下实施环境 : 服务器 硬件配置 IP 地址 数据磁盘 固态硬盘 : /dev/vdb ceph-1 4 核 4G 内存 172.20.58.150 机械硬盘 : /dev/vdc, /dev/vdd 固态硬盘 : /dev/vdb ceph-2 4 核 4G 内存 172.20.58.151 机械硬盘 : /dev/vdc,/ dev/vdd 固态硬盘 : /dev/vdb ceph-3 4 核 4G 内存 172.20.58.152 机械硬盘 : /dev/vdc, /dev/vdd 其中, 每个节点配置 1 块固态硬盘 40GB 存储日志, 配置 2 块机械硬盘 200G 存储数据 2. 配置节点 通过 ZStack 基于 CentOS 7.4 定制版 ISO 安装 3 个节点操作系统 网络的配置方式如下 : 如果网卡名称为 eth0 eth1 格式, 建议先做归一化成 em01 格式, 以下示例为主备模式 的 bond 配置, 并配置网桥 : zs-change-nic -c eth0 em01 文档版本 :V2.4.0 11

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 zs-bond-ab -c bond0 zs-nic-to-bond -a bond0 em01 zs-network-setting -b bond0 172.20.58.150 255.255.0.0 172.20.0.1 其中 : bond0: 网卡 bond 的模式 172.20.58.150:IP 地址 255.255.0.0: 掩码 172.20.0.1: 网关 配置 3 个节点的网络信息 : [root@ceph-1 ~]# zs-network-setting -b bond0 172.20.58.150 255.255.0.0 172.20.0.1 [root@ceph-2 ~]# zs-network-setting -b bond0 172.20.58.151 255.255.0.0 172.20.0.1 [root@ceph-3 ~]# zs-network-setting -b bond0 172.20.58.152 255.255.0.0 172.20.0.1 在 ceph-1 节点设置主机解析 : [root@ceph-1 ~]# vim /etc/hosts 172.20.12.154 ceph-1 172.20.12.99 ceph-2 172.20.12.21 ceph-3 将以下脚本保存成 ceph.sh, 在第一台节点执行以下脚本 例如, 在 172.20.58.150 上 执行 bash ceph.sh 172.20.58.150 172.20.58.151 172.20.58.152 其 中 172.20.58.150,172.20.58.151,172.20.58.152 分别代表三台节点的存储 IP 地址 即可 配置 ceph-1 ceph-2 和 ceph-3 免密码登陆 : #!/bin/bash set -x export PS4='+[#$LINENO ${FUNCNAME[0]}() $BASH_SOURCE] ' declare -a IP IP[0]=$1 IP[1]=$2 IP[2]=$3 host_name=$4 auto_ssh_copy_id () { } expect -c "set timeout -1; spawn ssh-copy-id $2; expect { *(yes/no)* {send -- yes\r;exp_continue;} *assword:* {send -- $1\r;exp_continue;} eof {exit 0;} }"; 12 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 gen_ssh_keys(){ ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys chmod go-rwx /root/.ssh/authorized_keys } 无密码配置完成后, 传输 /etc/hosts 文件 : [root@ceph-1 ~]# scp /etc/hosts ceph-2:/etc/ [root@ceph-1 ~]# scp /etc/hosts ceph-3:/etc/ 配置 3 个节点的主机名以及 ceph-1 ceph-2 和 ceph-3 防火墙, 允许互相访问 : ssh ceph-1 "hostnamectl set-hostname ceph-1 && export HOSTNAME=ceph-1 && iptables -F \ && service iptables save" ssh ceph-2 "hostnamectl set-hostname ceph-2 && export HOSTNAME=ceph-2 && iptables -F \ && service iptables save" ssh ceph-3 "hostnamectl set-hostname ceph-3 && export HOSTNAME=ceph-3 && iptables -F \ && service iptables save" 配置 ceph-1 ceph-2 和 ceph-3 时间同步 : [root@ceph-1 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp [root@ceph-1 ~]# systemctl restart ntpd [root@ceph-1 ~]# systemctl enable ntpd.service [root@ceph-2 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp [root@ceph-2 ~]# systemctl restart ntpd [root@ceph-2 ~]# systemctl enable ntpd.service [root@ceph-3 ~]# yum --disablerepo=* --enablerepo=zstack-local,ceph install ntp [root@ceph-3 ~]# systemctl restart ntpd [root@ceph-3 ~]# systemctl enable ntpd.service 至此,3 个节点的主机名与网络配置完成 2.1.2 磁盘初始化 操作步骤 1. 固态磁盘分区 根据上一节服务器环境描述, 每个节点配置 1 块固态硬盘和 2 块机械硬盘, 所以对固态硬盘 执行分区, 分 2 个日志分区 sda 为 480G 的固态磁盘, sdb sdc 为 2T 的机械盘,sdd 为另一 块 480G 的固态磁盘 如果盘符不一致, 可以参考以下配置调整盘符 : parted -s /dev/sda mklabel gpt parted -s /dev/sda mkpart journal-1 10% 40% parted -s /dev/sda mkpart journal-2 60% 90% 文档版本 :V2.4.0 13

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 ssh ceph-2 "parted -s /dev/sda mklabel gpt" ssh ceph-2 "parted -s /dev/sda mkpart journal-1 10% 40%" ssh ceph-2 "parted -s /dev/sda mkpart journal-2 60% 90%" ssh ceph-3 "parted -s /dev/sda mklabel gpt" ssh ceph-3 "parted -s /dev/sda mkpart journal-1 10% 40%" ssh ceph-3 "parted -s /dev/sda mkpart journal-2 60% 90%" 注 : 为保证固态磁盘寿命, 预留空间并保证性能, 当前环境预留了 40% 的容量 2. 机械硬盘格式化操作 三台机器分区在 ceph-1 中操作如下 : mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/sdb mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/sdc mkdir -p /data/disk1/ && mkdir -p /data/disk2/ ssh ceph-2 "mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/sdb" ssh ceph-2 "mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/sdc" ssh ceph-2 "mkdir -p /data/disk1/ && mkdir -p /data/disk2/" ssh ceph-3 "mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/sdb" ssh ceph-3 "mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 /dev/sdc" ssh ceph-3 "mkdir -p /data/disk1/ && mkdir -p /data/disk2/" 三个物理主机上挂载 OSD 在 ceph-1 中建议放到 /etc/rc.local, 避免出现手动挂载机械硬盘 时, 服务器重启后将会失去的情况 具体操作如下 : echo mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/`ls /dev/disk/by-uuid/ -l awk '/sdb/ {print $9}'` /data/disk1 >>/etc/rc.local echo mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/`ls /dev/disk/by-uuid/ -l awk '/sdc/ {print $9}'` /data/disk2 >>/etc/rc.local chmod +x /etc/rc.local && /etc/rc.local ssh ceph-2 "echo mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/`ls /dev/disk/by-uuid/ -l awk '/sdb/ {print $9}'` /data/disk1 >>/etc/rc.local" ssh ceph-2 "echo mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/`ls /dev/disk/by-uuid/ -l awk '/sdc/ {print $9}'` /data/disk2 >>/etc/rc.local" ssh ceph-2 "chmod +x /etc/rc.local && /etc/rc.local" ssh ceph-3 "echo mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/`ls /dev/disk/by-uuid/ -l awk '/sdb/ {print $9}'` /data/disk1 >>/etc/rc.local" ssh ceph-3 "echo mount -t xfs -o noatime,nodiratime,nobarrier \ /dev/disk/by-uuid/`ls /dev/disk/by-uuid/ -l awk '/sdc/ {print $9}'` /data/disk2 >>/etc/rc.local" ssh ceph-3 "chmod +x /etc/rc.local && /etc/rc.local" 查看机械硬盘的 UUID 操作如下 : # [root@ceph-1 ~]# ll /dev/disk/by-uuid/ 14 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 total 0 lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e - >../../vda2 lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 - >../../vda1 lrwxrwxrwx 1 root root 9 May 5 13:56 9bdfeb51-95c2-4018-93dc-69256ab789f3 ->../../ vdd lrwxrwxrwx 1 root root 9 May 5 13:55 da461bde-2aef-4f49-8634-89564317559e ->../../ vdc [root@ceph-2 ~]# ll /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 9 May 5 14:03 62996e0d-0f7f-4e10-99fa-f87686cc0c05 ->../../ vdc lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e - >../../vda2 lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 - >../../vda1 lrwxrwxrwx 1 root root 9 May 5 14:03 ba29e5ea-81af-4ae9-859a-cdeae84ba466 - >../../vdd [root@ceph-3 ~]# ll /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 9 May 5 14:17 1efee887-ed2f-4c3e-8e77-717f15b19662 ->../../ vdd lrwxrwxrwx 1 root root 10 May 5 13:10 7ea42029-e99a-4d8a-a837-d27c647ff74e - >../../vda2 lrwxrwxrwx 1 root root 10 May 5 13:10 84d27c03-98b6-4fc4-8126-eac83015d786 - >../../vda1 lrwxrwxrwx 1 root root 9 May 5 14:17 cb07fe55-afba-4ce6-aae1-a65c596d8899 ->../../ vdc 至此,3 个节点的磁盘初始化完成 2.1.3 安装 Ceph 操作步骤 1. 安装 Ceph J 版源 基于 CentOS 7.4 的 ISO 中在 ceph-1 ceph-2 和 ceph-3 节点安装 Ceph J 版源 : yum --disablerepo=* --enablerepo=zstack-local,ceph install ceph ceph-deploy rdate cephradosgw ssh ceph-2 "yum --disablerepo=* --enablerepo=zstack-local,ceph install ceph ceph-deploy rdate ceph-radosgw" ssh ceph-3 "yum --disablerepo=* --enablerepo=zstack-local,ceph install ceph ceph-deploy rdate ceph-radosgw" 注 : 可运行以下命令来查看 ceph 的版本号 : [root@ceph-1 ~]# ceph -v 文档版本 :V2.4.0 15

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 2. 创建 Ceph 集群 ceph version 10.2.10 (5dc1e4c05cb68dbf62ae6fce3f0700e4654fdbbe) 在 ceph-1 节点安装 ceph-deploy, 用于自动化部署 在 ceph-1 创建 Ceph 集群 : mkdir cluster cd cluster/ ceph-deploy new ceph-1 ceph-2 ceph-3 # 可选, 配置 Mon IP 段 cat >> ceph.conf << EOF osd_pool_default_size = 3 osd_pool_default_min_size = 2 osd_pool_default_pg_num = 128 osd_pool_default_pgp_num = 128 osd_max_backfills = 1 osd_recovery_max_active = 1 osd crush update on start = 0 rbd_default_format = 2 debug_ms = 0 debug_osd = 0 osd_recovery_max_single_start = 1 filestore_max_sync_interval = 15 filestore_min_sync_interval = 10 filestore_queue_max_ops = 65536 filestore_queue_max_bytes = 536870912 filestore_queue_committing_max_bytes = 536870912 filestore_queue_committing_max_ops = 65536 filestore_wbthrottle_xfs_bytes_start_flusher = 419430400 filestore_wbthrottle_xfs_bytes_hard_limit = 4194304000 filestore_wbthrottle_xfs_ios_start_flusher = 5000 filestore_wbthrottle_xfs_ios_hard_limit = 50000 filestore_wbthrottle_xfs_inodes_start_flusher = 5000 filestore_wbthrottle_xfs_inodes_hard_limit = 50000 journal_max_write_bytes = 1073714824 journal_max_write_entries = 5000 journal_queue_max_ops = 65536 journal_queue_max_bytes = 536870912 osd_client_message_cap = 65536 osd_client_message_size_cap = 524288000 ms_dispatch_throttle_bytes = 536870912 filestore_fd_cache_size = 4096 osd_op_threads = 10 osd_disk_threads = 2 filestore_op_threads = 6 osd_client_op_priority = 100 osd_recovery_op_priority = 5 osd crush chooseleaf type = 0 mon_clock_drift_allowed = 2 16 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 filestore_xattr_use_omap = true EOF 修改 ceph.conf 后保存, 在第一节点中执行以下操作 : ceph-deploy --overwrite-conf mon create ceph-1 ceph-2 ceph-3 ceph-deploy --overwrite-conf config push ceph-1 ceph-2 ceph-3 ceph-deploy gatherkeys ceph-1 ceph-2 ceph-3 ceph-deploy --overwrite-conf osd create \ ceph-1:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-1:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-2:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-2:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-3:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 # 提供 ceph 所有者权限 chown -R ceph:ceph /data/disk1 /dev/disk/by-partlabel/journal-1 /data/disk2 \ /dev/disk/by-partlabel/journal-2 /dev/sda1 /dev/sda2 ssh ceph-2 'chown -R ceph:ceph /data/disk1 /dev/disk/by-partlabel/journal-1 \ /data/disk2 /dev/disk/by-partlabel/journal-2 /dev/sda1 /dev/sda2' ssh ceph-3 'chown -R ceph:ceph /data/disk1 /dev/disk/by-partlabel/journal-1 \ /data/disk2 /dev/disk/by-partlabel/journal-2 /dev/sda1 /dev/sda2' ceph-deploy --overwrite-conf osd activate \ ceph-1:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-1:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-2:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-2:/data/disk2:/dev/disk/by-partlabel/journal-2 \ ceph-3:/data/disk1:/dev/disk/by-partlabel/journal-1 \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 cluster]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 3. 查看集群情况 Ceph 集群初始化结束后, 看查看当且运行状态 : [root@ceph-1 cluster]# ceph -s cluster 392106b4-e3ab-4f51-ac0e-a4e26c8abd82 health HEALTH_WARN 64 pgs stuck inactive 64 pgs stuck unclean too few PGs per OSD (10 < min 30) monmap e1:3 mons at {ceph-1=172.20.12.154:6789/0,ceph- 2=172.20.12.99:6789/0,ceph-3=172.20.12.21:6789/0} election epoch 4, quorum 0,1,2 ceph-3,ceph-2,ceph-1 osdmap e13: 6 osds: 6 up, 6 in pgmap v25: 64 pgs, 1 pools, 0 bytes data, 0 objects 195 MB used, 1199 GB / 1199 GB avail 64 creating [root@ceph-1 ceph-cluster]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0 root default 0 0 osd.0 up 1.00000 1.00000 1 0 osd.1 up 1.00000 1.00000 2 0 osd.2 up 1.00000 1.00000 文档版本 :V2.4.0 17

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 3 0 osd.3 up 1.00000 1.00000 4 0 osd.4 up 1.00000 1.00000 5 0 osd.5 up 1.00000 1.00000 查看 OSD ID 号 : # 查看 OSD ID [root@ceph-1 ~]# cat /data/disk[1-2]/whoami 0 1 [root@ceph-2 ~]# cat /data/disk[1-2]/whoami 2 3 [root@ceph-3 ~]# cat /data/disk[1-2]/whoami 4 5 4. 建立 CRUSH 结构树 根据 OSD ID 号, 建立 CRUSH 结构树 : ceph osd crush add-bucket ceph-1 host ceph osd crush add-bucket ceph-2 host ceph osd crush add-bucket ceph-3 host ceph osd crush move ceph-1 root=default ceph osd crush move ceph-2 root=default ceph osd crush move ceph-3 root=default ceph osd crush create-or-move osd.0 0.4 root=default host=ceph-1 ceph osd crush create-or-move osd.1 0.4 root=default host=ceph-1 ceph osd crush create-or-move osd.2 0.4 root=default host=ceph-2 ceph osd crush create-or-move osd.3 0.4 root=default host=ceph-2 ceph osd crush create-or-move osd.4 0.4 root=default host=ceph-3 ceph osd crush create-or-move osd.5 0.4 root=default host=ceph-3 创建后,CRUSH 结构树如下 : [root@ceph-1 ~]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 1.19998 root default -2 0.39999 host ceph-1 0 0.20000 osd.0 up 1.00000 1.00000 1 0.20000 osd.1 up 1.00000 1.00000-3 0.39999 host ceph-2 2 0.20000 osd.2 up 1.00000 1.00000 3 0.20000 osd.3 up 1.00000 1.00000-4 0.39999 host ceph-3 4 0.20000 osd.4 up 1.00000 1.00000 5 0.20000 osd.5 up 1.00000 1.00000 # 查看 Ceph 集群状态 [root@ceph-1 ~]# ceph -s cluster 392106b4-e3ab-4f51-ac0e-a4e26c8abd82 health HEALTH_OK monmap e1: 3 mons at {ceph-1=172.20.12.154:6789/0,ceph-2=172.20.12.99:6789/0,ceph-3=172.20.12.21:6789/0} election epoch 4, quorum 0,1,2 ceph-3,ceph-2,ceph-1 osdmap e29: 6 osds: 6 up, 6 in 18 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 pgmap v53: 64 pgs, 1 pools, 0 bytes data, 0 objects 197 MB used, 1199 GB / 1199 GB avail 至此,Ceph 集群初始化结束 通过 ZStack 企业版初始化界面, 在主存储和备份存储步骤 中, 添加 Ceph 集群 MON 节点 2.1.4 配置单独的 SSD 存储池 操作步骤 1. 配置 SSD OSD parted -s /dev/sdd mklabel gpt ssh ceph-2 "parted -s /dev/sdd mklabel gpt" ssh ceph-3 "parted -s /dev/sdd mklabel gpt" ceph-deploy --overwrite-conf osd create ceph-1:/dev/sdd ceph-2:/dev/sdd ceph-3:/dev/sdd ceph-deploy --overwrite-conf osd activate ceph-1:/dev/sdd1:/dev/sdd2 ceph-2:/dev/sdd1:/ dev/sdd2 \ ceph-3:/dev/sdd1:/dev/sdd2 2. 创建 crushmap ceph osd crush add-bucket root-ssd root ceph osd crush add-bucket ceph-1-ssd host ceph osd crush add-bucket ceph-2-ssd host ceph osd crush add-bucket ceph-3-ssd host ceph osd crush move ceph-1-ssd root=root-ssd ceph osd crush move ceph-2-ssd root=root-ssd ceph osd crush move ceph-3-ssd root=root-ssd ceph osd crush add osd.6 0.4 host=ceph-1-ssd ceph osd crush add osd.7 0.4 host=ceph-2-ssd ceph osd crush add osd.8 0.4 host=ceph-3-ssd 3. 导出并修改 crush_ruleset ceph osd getcrushmap -o /tmp/crush crushtool -d /tmp/crush -o /tmp/crush.txt rule rule-ssd { # 修改 rule 名称 ruleset 1 # 增加 rule 编号 type replicated min_size 1 max_size 10 step take root-ssd # 改成图中 SSD 的 root 名 step chooseleaf firstn 0 type host step emit } crushtool -c /tmp/crush.txt -o /tmp/crush.bin 文档版本 :V2.4.0 19

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 2.2 运维管理 2.2.1 删除 OSD ceph osd setcrushmap -i /tmp/crush.bin 例如, 需要移除故障的数据盘 OSD.5, 执行以下步骤 : [root@ceph-1 ~]# ceph osd out 5 # 登陆到 OSD.5 的服务器, 关闭 OSD.5 服务 [root@ceph-3 ~]# service ceph stop osd.5 [root@ceph-1 ~]# ceph osd crush remove osd.5 [root@ceph-1 ~]# ceph auth del osd.5 [root@ceph-1 ~]# ceph osd rm 5 # 进入 ceph-config 目录 [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 2.2.2 增加 OSD 例如, 需要增加 ceph-3 节点的 /data/disk2/( 必须为纯净目录 ), 执行以下步骤 : # 进入 cluster 目录 [root@ceph-1 ~]# cd cluster [root@ceph-1 cluster]# ceph-deploy --overwrite-conf osd create \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 cluster]# ceph-deploy --overwrite-conf osd activate \ ceph-3:/data/disk2:/dev/disk/by-partlabel/journal-2 [root@ceph-1 cluster]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 2.2.3 删除 MON 例如, 需要删除 ceph-3 节点的 MON 服务 : # 登陆 ceph-3 节点, 停止 MON 服务 [root@ceph-3 ~]# service ceph stop mon.ceph-3 [root@ceph-3 ~]# ceph mon remove ceph-3 # 修改 ceph.conf 文件, 删除 ceph-3 的 MON 信息 [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# vim ceph.conf mon_initial_members = ceph-1, ceph-2 mon_host = 172.20.12.154,172.20.12.99 # 推送全局信息 20 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 ceph-2 2.2.4 增加 MON 例如, 增加 ceph-3 节点作为 MON 服务 : # 查看当前 MON 状态 [root@ceph-1 ~]# ceph mon dump # 添加 MON 节点 [root@ceph-3 ~]# ceph mon add ceph-3 172.20.12.21:6789 # 增加 MON 信息 [root@ceph-1 ~]# cd ceph-config [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf mon create ceph-3 # 修改 ceph.conf 文件 [root@ceph-1 ceph-config]# vim ceph.conf mon_initial_members = ceph-1, ceph-2, ceph-3 mon_host = 172.20.12.154,172.20.12.99,172.20.12.21 # 推送全局信息 [root@ceph-1 ceph-config]# ceph-deploy --overwrite-conf config push ceph-1 \ ceph-2 ceph-3 2.2.5 删除默认 pool ceph osd pool delete rbd rbd --yes-i-really-really-mean-it ceph osd pool create ssd 256 256 ceph osd pool create zstack 256 256 # 设置 crush_ruleset ceph osd pool set zstack crush_ruleset 0 ceph osd pool set ssd crush_ruleset 1 2.2.6 环境清理 ps aux grep ceph awk '{print $2}' xargs kill -9 ps -ef grep ceph 注 : 请确保此时所有 ceph 进程都已经关闭 如果没有关闭, 请多执行几次 umount /var/lib/ceph/osd/* rm -rf /var/lib/ceph/osd/* rm -rf /var/lib/ceph/mon/* rm -rf /var/lib/ceph/mds/* rm -rf /var/lib/ceph/bootstrap-mds/* rm -rf /var/lib/ceph/bootstrap-osd/* rm -rf /var/lib/ceph/bootstrap-rgw/* rm -rf /var/lib/ceph/tmp/* rm -rf /etc/ceph/* 文档版本 :V2.4.0 21

开源版 Ceph 分布式存储 / 2 基于 CentOS 7.4 Ceph 分布式存储实践指南 rm -rf /var/run/ceph/* 22 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 术语表 术语表 区域 (Zone) ZStack 中最大的一个资源定义, 包括集群 二层网络 主存储等资源 集群 (Cluster) 一个集群是类似物理主机 (Host) 组成的逻辑组 在同一个集群中的物理主机必须安装相同的操作系统 ( 虚拟机管理程序,Hypervisor), 拥有相同的二层网络连接, 可以访问相同的主存储 在实际的数据中心, 一个集群通常对应一个机架 (Rack) 管理节点 (Management Node) 安装系统的物理主机, 提供 UI 管理 云平台部署功能 计算节点 (Compute Node) 也称之为物理主机 ( 或物理机 ), 为云主机实例提供计算 网络 存储等资源的物理主机 主存储 (Primary Storage) 用于存储云主机磁盘文件的存储服务器 支持本地存储 NFS Ceph FusionStor Shared Mount Point 等类型 镜像服务器 (Backup Storage) 也称之为备份存储服务器, 主要用于保存镜像模板文件 建议单独部署镜像服务器 镜像仓库 (Image Store) 镜像服务器的一种类型, 可以为正在运行的云主机快速创建镜像, 高效管理云主机镜像的版本变迁以及发布, 实现快速上传 下载镜像, 镜像快照, 以及导出镜像的操作 云主机 (VM Instance) 运行在物理机上的虚拟机实例, 具有独立的 IP 地址, 可以访问公共网络, 运行应用服务 镜像 (Image) 云主机或云盘使用的镜像模板文件, 镜像模板包括系统云盘镜像和数据云盘镜像 文档版本 :V2.4.0 23

开源版 Ceph 分布式存储 / 术语表 云盘 (Volume) 云主机的数据盘, 给云主机提供额外的存储空间, 共享云盘可挂载到一个或多个云主机共同使用 计算规格 (Instance Offering) 启动云主机涉及到的 CPU 数量 内存 网络设置等规格定义 云盘规格 (Disk Offering) 创建云盘容量大小的规格定义 二层网络 (L2 Network) 二层网络对应于一个二层广播域, 进行二层相关的隔离 一般用物理网络的设备名称标识 三层网络 (L3 Network) 云主机使用的网络配置, 包括 IP 地址范围 网关 DNS 等 公有网络 (Public Network) 由因特网信息中心分配的公有 IP 地址或者可以连接到外部互联网的 IP 地址 私有网络 (Private Network) 云主机连接和使用的内部网络 L2NoVlanNetwork 物理主机的网络连接不采用 Vlan 设置 L2VlanNetwork 物理主机节点的网络连接采用 Vlan 设置,Vlan 需要在交换机端提前进行设置 VXLAN 网络池 (VXLAN Network Pool) VXLAN 网络中的 Underlay 网络, 一个 VXLAN 网络池可以创建多个 VXLAN Overlay 网络 ( 即 VXLAN 网络 ), 这些 Overlay 网络运行在同一组 Underlay 网络设施上 VXLAN 网络 (VXLAN) 使用 VXLAN 协议封装的二层网络, 单个 VXLAN 网络需从属于一个大的 VXLAN 网络池, 不同 VXLAN 网络间相互二层隔离 24 文档版本 :V2.4.0

开源版 Ceph 分布式存储 / 术语表 云路由 (vrouter) 云路由通过定制的 Linux 云主机来实现的多种网络服务 安全组 (Security Group) 针对云主机进行第三层网络的防火墙控制, 对 IP 地址 网络包类型或网络包流向等可以设置不同的安全规则 弹性 IP(EIP) 公有网络接入到私有网络的 IP 地址 快照 (Snapshot) 某一个时间点上某一个磁盘的数据备份 包括自动快照和手动快照两种类型 文档版本 :V2.4.0 25