02-01 ceph集群安装配置文档

简介:

Ceph 是统一分布式存储系统,具有优异的性能、可靠性、可扩展性。Ceph 的底层是 RADOS(可靠、自动、分布式对象存储),可以通过 LIBRADOS 直接访问到 RADOS 的对象存储系统。RBD(块设备接口)、RADOS Gateway(对象存储接口)、Ceph File System(POSIX 接口)都是基于 RADOS 的。


一:安装配置环境介绍

1:系统版本:
more /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

2:内核版本:
uname –a
Linux nc3 3.10.0-229.11.1.el7.x86_64 #1 SMP Thu Aug 6 01:06:18 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

3:ceph 版本:
ceph -v
ceph version 0.94.3

网络拓扑图

设备位置图

4:ceph-deploy 版本:

[root@nc1 ~]# ceph-deploy --version 1.5.28

业务系统核心交换9303

Storage-public VLAN102 172.16.6.1

Storage-Cluster VLAN103

Config

IPMI VLAN15

S-manager01 172.16.15.251

OS安装配置10.20.0.200

IPMI管理主机172.16.15.25
5 服务器配置信息及运行服务统计






二:系统软件基础包初始化:

1:安装 EPEL 软件源:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm yum -y update
yum -y upgrade

2:常用软件包、常用工具等(非必须、推荐安装)

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \ zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs \ e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap- clients \
openldap-servers libxslt-devel libevent-devel ntp	libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz
\
kernel-devel kernel-headers pam-devel Tcl/Tk	cmake	ncurses-devel bison setuptool popt-devel net-snmp screen perl- devel \
pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo idconfig git system-config-network-tui bind-utils update \
arpscan tmux elinks numactl iftop	bwm-ng net-tools

三:集群主机系统初始化准备

所有 Ceph 集群节点采用 CentOS 7.1 版本(CentOS-7-x86_64-Minimal-1503-01.iso),所有文件系统采用 Ceph
官方推荐的 xfs,所有节点的操作系统都装在 RAID1 上Ptm,ind C其eph 他Clust的er 安硬装配盘置文档单独--康建用华 ,不做任何 RAID。安装完 CentOS 后我们需要在每个节点上(包括 ceph-deploy)做以下配置:

1:规范系统主机名;
centos 使用以下命令:

hostnamectl set-hostname 主机名

2:添加 hosts 文件实现集群主机名与主机名之间相互能够解析
(host 文件添加主机名不要使用 fqdn 方式)

[root@nc1 ~]# vim /etc/hosts

172.16.6.154 cs
127.0.0.1	localhost localhost.localdomain localhost4 localhost4.localdomain4
::1	localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.6.151 nc1 ceph-deploy
172.16.6.152nc2
172.16.6.153nc3
172.16.6.154cs1
172.16.6.155cs2
172.16.6.156cs3
172.16.6.157cs4
172.16.6.158cs5
172.16.6.159cs6
172.16.6.160cs7
172.16.6.161cs8
172.16.6.162cs9

3:每台 ssh-copy-id 完成这些服务器之间免 ssh 密码登录;

ssh-copy-id	node###

4:关闭防火墙或者开放 6789/6800~6900 端口、关闭 SELINUX;

关闭 SELINUX

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

setenforce 0

打开 Ceph 需要的端口

firewall-cmd --zone=public --add-port=6789/tcp --permanent firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent firewall-cmd --reload

5:关闭防火墙及开机启动

systemctl stop firewalld.service systemctl disable firewalld.service

5:配置 ntp 服务,保证集群服务器时间统一;
安装 ntp 同步时间

yum -y install ntp ntpdate ntp-doc systemctl enable ntpd.service systemctl start ntpd.service

或者添加 crontab ,执行自动时间同步;

cat >>/etc/crontab<<EOF
20 */1 * * * root ntpdate 172.16.5.100 && --systohc EOF

6:系统优化类

#set max user processes
sed -i 's/4096/102400/' /etc/security/limits.d/20-nproc.conf

#set ulimit
cat /etc/rc.local | grep "ulimit -SHn 102400" || echo "ulimit -SHn 102400" >> /etc/rc.local

修改最大打开文件句柄数

cat /etc/security/limits.conf | grep "^* - sigpending 256612" || cat >>/etc/security/limits.conf<<EOF

- soft	nofile	102400
- hard	nofile	102400
- soft	nproc	102400
- hard	nproc	102400
- - sigpending 256612 EOF

四:集群优化配置

1:优化前提

Processor
ceph-osd 进程在运行过程中会消耗 CPU 资源,所以一般会为每一个 ceph-osd 进程绑定一个 CPU 核上。当然如

果你使用 EC 方式,可能需要更多的 CPU 资源。
ceph-mon 进程并不十分消耗 CPU 资源,所以不必为 ceph-mon 进程预留过多的 CPU 资源。
ceph-msd 也是非常消耗 CPU 资源的,所以需要提供更多的 CPU 资源。内存
ceph-mon 和 ceph-mds 需要 2G 内存,每个 ceph-osd 进程需要 1G 内存,当然 2G 更好。
2: 开启 VT 和 HT
Hyper-Threading(HT)
基本做云平台的,VT 和 HT 打开都是必须的,超线程技术(HT)就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了 CPU 的闲置时间,提高的 CPU 的运行效率。

3:关闭 CPU 节能
关闭节能后,对性能还是有所提升的,所以坚决调整成性能型(Performance)。当然也可以在操作系统级别进行 调整,详细的调整过程请自行谷歌。Dellr720xd bios 配置截图如下:

也可以在系统层面进行设置,配置方法如下:

for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done

4:关闭 NUMA
简单来说,NUMA 思路就是将内存和 CPU 分割为多Pt个mind 区Ceph域Clus,ter每安装个配置文区档 域--康叫建华做 NODE,然后将 NODE 高速互联。 node
内 cpu 与内存访问速度快于访问其他 node 的内存, NUMA 可能会在某些情况下影响 ceph-osd 。解决的方案,一种是通过 BIOS 关闭 NUMA,配置(dellr720xd)截图如下:

“Node Interleaving(节点交错)”这项设置是针对 CPU 内部集成的内存控制器,笔者对它开始有所了解大约是在 AMD 当年推出第一代 K8 架构的 Opteron 处理器。由于整合内存控制器的 DP/MP 系统中每个 CPU 都可以直接控制一部分内存,因此访问模式分为 NUMA(非一致性内存访问)和 Node Interleaving 两种。根据我们以往的理解, 前者具有更好的 OS/应用兼容性,而后者在单一处理器访问内存时可以提供更高的性能(跨 CPU 节点并发访问)。

另外一种就是通过 cgroup 将 ceph-osd 进程与某一个 CPU Core 以及同一 NODE 下的内存进行绑定。但是第二种看起来更麻烦,所以一般部署的时候可以在系统层面关闭 NUMA。CentOS 系统下,通过修改/etc/grub.conf 文件,添加 numa=off 来关闭 NUMA。

Centos 6 版本系统配置方法:

kernel /vmlinuz-2.6.32-504.12.2.el6.x86_64 ro root=UUID=870d47f8-0357-4a32-909f-74173a9f0633 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0 numa=off

Centos7 版本系统配置方法:
修改 kernel(centos7)

运行命令 grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成 GRUB 配置并更新内核参数。

重启服务器

5:网络优化
万兆网络现在基本上是跑 Ceph 必备的,网络规划上,也尽量考虑分离 cilent 和 cluster 网络。
修改网络 MTU 值,需要交换机端需要支持该 Jumbo frames 特性,另外科普一下万兆交换机端口默认的设置的 mtu 是 9216 不需要设置,千兆交换机的 mtu 值默认是 1600。我们使用的是华为的 6700 万兆交换,查看端口详细信息如下图:

服务器需要设置一下服务器 ceph 集群使用的网卡,临时修改使用 ifconfig eth0 mtu 9000,持久生效修改方法如下:
nc 节点

echo "MTU=9000" | tee -a /etc/sysconfig/network-scripts/ifcfg-p3p*
/etc/init.d/networking restart

cs 节点

echo "MTU=9000" | tee -a /etc/sysconfig/network-scripts/ifcfg-p4p*
/etc/init.d/networking restart

6:修改 read_ahead
read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,查看默认值

cat /sys/block/sda/queue/read_ahead_kb 128

根据一些 Ceph 的公开分享,8192 是比较理想的值。

echo "8192" > /sys/block/sda/queue/read_ahead_kb

批量修改(注意 a b c d e f g h i j 是 osd 分区):

for i in a b c d e f g h i j; do echo ---sd$i----; echo "8192" > /sys/block/sd$i/queue/read_ahead_kb;done

查看验证

for i in a b c d e f g h i j; do echo ---sd$i----; cat	/sys/block/sd$i/queue/read_ahead_kb;done

这个参数服务器重启后会自动重置回默认,推荐加入开机启动脚本
chmod +x /etc/rc.d/rc.local #centos7 默认 rc.local 没有执行权限,开机无法执行脚本;

echo	'for	i	in	a	b	c	d	e	f	g	h	i	j;	do	echo	---sd$i----;	echo	"8192"	>

/sys/block/sd$i/queue/read_ahead_kb;done' >>/etc/rc.d/rc.local

验证

more /etc/rc.d/rc.local

7:关闭 swap
swappiness, 主要控制系统对 swap 的使用,这个参数的调整最先见于 UnitedStack 公开的文档中,猜测调整的原因主要是使用 swap 会影响系统的性能。

echo "vm.swappiness = 0" | tee -a /etc/sysctl.conf

8:调整 Kernel pid max
允许更多的 PIDs (减少滚动翻转问题);
默认是 more /proc/sys/kernel/pid_max
49152
调整为:

echo 4194303 > /proc/sys/kernel/pid_max

永久生效

echo "kernel.pid_max= 4194303" | tee -a /etc/sysctl.conf

9:修改 I/O Scheduler
I/O Scheduler,关于 I/O Scheculder 的调整网上已经有很多资料,这里不再赘述,简单说 SSD 要用 noop,SATA/SAS
使用 deadline。默认:

[root@cs1 ceph]# more /sys/block/sdb/queue/scheduler noop [deadline] cfq

修改:

echo "deadline" > /sys/block/sd[x]/queue/scheduler echo "noop" > /sys/block/sd[x]/queue/scheduler

我们的集群情况
每台存储服务器有 2 块 SSD 盘,盘符为 SSDS=/dev/k| l"用做 journal 的 SSD;10 块 sata 机械盘为 DISKS=/dev/
a| b| c| d| e| f| g| h| i| j
Sata 盘修改方式如下:

for i in a b c d e f g h i j; do echo "deadline" > /sys/block/sd$i/queue/scheduler;done

验证

for i in a b c d e f g h i j; do cat /sys/block/sd$i/queue/schePdtmuindleCerp;hdClousntere安装配置文档

ssd 盘修改方式如下:

for i in k l; do echo "noop" > /sys/block/sd$i/queue/scheduler;done

验证

for i in k l; do cat /sys/block/sd$i/queue/scheduler;done

五:安装部署主机(ceph-deploy)安装环境准备

1:建立主机列表

mkdir -p /workspace/ceph

cat >/workspace/ceph/cephlist.txt <<EOF nc1
nc2 nc3 cs1 cs2 cs3 cs4 cs5 cs6 cs7 cs8 cs9 EOF

2:为所有集群主机创建一个 ceph 工作目录
以后的操作都在这个目录下面进行:

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p	/etc/ceph ;done

3:同步 hosts 文件

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/hosts	$ip:/etc/;done

4:测试主机名解析

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh $ip ping -c3 ceph-deploy;done

5:ceph-deploy 安装

cephdeploy 节点执行,在/etc/ceph/目录下面进行

1:安装 ceph-deploy

cd /etc/ceph/
yum install ceph-deploy -y

注:以下操作除特殊说明之外,均在 ceph-deploy\nc1 节点上操作。

六:创建 mon 节点

1:安装部署集群软件包:
在所有节点安装 ceph 软件包 ceph-deploy install{ceph-node}[{ceph-node}...]
(注:如果已经用 yum 在每台机器上安装了 ceph,这步可省略)

ceph-deploy install nc{1..3} cs{1..9}

2:在安装部署节使用 ceph-deploy 创建,生成 MON 信息:

命令格式:
2:初始化集群,告诉 ceph-deploy 哪些节点是监控节点,命令成功执行后会在 ceps-cluster 目录下生成 ceph.conf, ceph.log, ceph.mon.keyring 等相关文件:

cd /etc/ceph/
ceph-deploy new nc1 nc2 nc3

执行成功后该目录下会增加三个文件

[root@nc1 ceph]# ll total 12
-rw-r--r-- 1 root root 261 Sep 16 16:07 ceph.conf
-rw-r--r-- 1 root root 3430 Sep 16 16:07 ceph.log
-rw------- 1 root root 73 Sep 16 16:07 ceph.mon.keyring

3:添加初始 monitor 节点和收集秘钥

ceph-deploy mon create-initial

在本地目录下可看到如下密钥环文件:

1.{cluster-name}.client.admin.keyring
2.{cluster-name}.bootstrap-osd.keyring
3.{cluster-name}.bootstrap-mds.keyring

4:验证集群 mon 节点安装成功

[root@nc1 ceph]# ceph -s
cluster 973482fb-acf2-4a39-a691-3f810120b013 health HEALTH_ERR
64 pgs stuck inactive 64 pgs stuck unclean no osds
monmap e1: 3 mons at {nc1=172.16.6.151:6789/0,nc2=172.16.6.152:6789/0,nc3=172.16.6.153:6789/0}
election epoch 4, quorum 0,1,2 nc1,nc2,nc3
osdmap e1: 0 osds: 0 up, 0 in
pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
0 kB used, 0 kB / 0 kB avail
64 creating

[root@nc1 ceph]# ceph mon_status
{"name":"nc1","rank":0,"state":"leader","election_epoch":6,"quorum":[0,1,2],"outside_quorum":[],"extra_probe_peers":[
"172.16.6.152:6789\/0","172.16.6.153:6789\/0"],"sync_provider":[],"monmap":{"epoch":1,"fsid":"179b040c-d2a2-448e- 813c-
111e0fb17e91","modified":"0.000000","created":"0.000000","mons":[{"rank":0,"name":"nc1","addr":"172.16.6.151:6789
\/0"},{"rank":1,"name":"nc2","addr":"172.16.6.152:6789\/0"},{"rank":2,"name":"nc3","addr":"172.16.6.153:6789\/0"}]}}
[root@nc1 ceph]# ll

七:安装集群 osd 服务

1:查看一下 Ceph 存储节点的硬盘情况:

ceph-deploy disk list cs{1..9}

返回信息如下:
[cs9][DEBUG ] /dev/sda : [cs9][DEBUG ] /dev/sda1 other, xfs [cs9][DEBUG ] /dev/sdb : [cs9][DEBUG ] /dev/sdb1 other, xfs [cs9][DEBUG ] /dev/sdc : [cs9][DEBUG ] /dev/sdc1 other, xfs

[cs9][DEBUG ] /dev/sdd : [cs9][DEBUG ] /dev/sdd1 other, xfs [cs9][DEBUG ] /dev/sde : [cs9][DEBUG ] /dev/sde1 other, xfs [cs9][DEBUG ] /dev/sdf : [cs9][DEBUG ] /dev/sdf1 other, xfs [cs9][DEBUG ] /dev/sdg : [cs9][DEBUG ] /dev/sdg1 other, xfs [cs9][DEBUG ] /dev/sdh : [cs9][DEBUG ] /dev/sdh1 other, xfs [cs9][DEBUG ] /dev/sdi : [cs9][DEBUG ] /dev/sdi1 other, xfs [cs9][DEBUG ] /dev/sdj : [cs9][DEBUG ] /dev/sdj1 other, xfs [cs9][DEBUG ] /dev/sdk : [cs9][DEBUG ] /dev/sdk1 other [cs9][DEBUG ] /dev/sdk2 other [cs9][DEBUG ] /dev/sdk3 other [cs9][DEBUG ] /dev/sdk4 other [cs9][DEBUG ] /dev/sdk5 other [cs9][DEBUG ] /dev/sdl : [cs9][DEBUG ] /dev/sdl1 other [cs9][DEBUG ] /dev/sdl2 other [cs9][DEBUG ] /dev/sdl3 other [cs9][DEBUG ] /dev/sdl4 other [cs9][DEBUG ] /dev/sdl5 other [cs9][DEBUG ] /dev/sdm :
[cs9][DEBUG ] /dev/sdm1 other, xfs, mounted on /boot [cs9][DEBUG ] /dev/sdm2 swap, swap
[cs9][DEBUG ] /dev/sdm3 other, xfs, mounted on /

2:批量格式化磁盘
每台存储服务器有 2 块 SSD 盘,盘符为 SSDS=/dev/k| l"用做 journal 的 SSD;10 块 sata 机械盘为 DISKS=/dev/ a| b| c| d| e| f| g| h| i| j

如果集群服务器磁盘是旧盘有分区,推荐对又有磁盘进行格式化,都是新磁盘可以忽略此步骤。服务器磁盘较多推荐使用该脚本格式化,批量格式化硬盘脚本内容如下:(按需使用)

vi parted.sh
#!/bin/bash

set -e
if [ ! -x "/sbin/parted" ]; then
echo "This script requires /sbin/parted to run!" >&2 exit 1

fi

DISKS="a b c d e f g h i j " for i in ${DISKS}; do
echo "Creating partitions on /dev/sd${i} ..."
parted -a optimal --script /dev/sd${i} -- mktable gpt
parted -a optimal --script /dev/sd${i} -- mkpart primary xfs 0% 100% sleep 1
#echo "Formatting /dev/sd${i}1 ..." mkfs.xfs -f /dev/sd${i}1 &
done

SSDS="k l"
for i in ${SSDS}; do
parted -s /dev/sd${i} mklabel gpt
parted -s /dev/sd${i} mkpart primary 0% 20% parted -s /dev/sd${i} mkpart primary 21% 40% parted -s /dev/sd${i} mkpart primary 41% 60% parted -s /dev/sd${i} mkpart primary 61% 80% parted -s /dev/sd${i} mkpart primary 81% 100%
done

将脚本传输到集群 osd 节点服务器,执行脚本批量初始化磁盘。

传输

for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;rsync -avp /workspace root@$ip:/ ;done

#执行(osd 节点服务器)
[root@nc1 ceph]# pwd
/workspace/ceph

[root@nc1 ceph]# more cephosd.txt cs1
cs2 cs3 cs4 cs5 cs6 cs7 cs8 cs9

for ip in $(cat /workspace/ceph/cephosd.txt);do echo ----$Pitpmi-n-d -C-ep-h--Cl-u-s-te-r;安s装sh配置r文o档ot-@-康ip sh /workspace/parted.sh;done

3:执行 osd 初始化命令
初始化 Ceph 硬盘,然后创建 osd 存储节点,存储节点:单个硬盘:对应的 journal 分区,一一对应:

for ip in $(cat /workspace/ceph/cephosd.txt);do echo ----$ip-----------; ceph-deploy --overwrite-conf osd prepare
$ip:sda1:/dev/sdk1  $ip:sdb1:/dev/sdk2  $ip:sdc1:/dev/sdk3  $ip:sdd1:/dev/sdk4  $ip:sde1:/dev/sdk5 $ip:sdf1:/dev/sdl1
$ip:sdg1:/dev/sdl2 $ip:sdh1:/dev/sdl3 $ip:sdi1:/dev/sdl4 $ip:sdj1:/dev/sdl5;done

激活 OSD
for ip in $(cat /workspace/ceph/cephosd.txt);do echo ----$ip-----------;ceph-deploy osd activate $ip:sda1:/dev/sdk1
$ip:sdb1:/dev/sdk2  $ip:sdc1:/dev/sdk3  $ip:sdd1:/dev/sdk4  $ip:sde1:/dev/sdk5  $ip:sdf1:/dev/sdl1  $ip:sdg1:/dev/sdl2
$ip:sdh1:/dev/sdl3 $ip:sdi1:/dev/sdl4 $ip:sdj1:/dev/sdl5;done

或者执行
Activate all tagged OSD partitions ceph-disk	activate-all

4:验证日志写入位置在 ssd 硬盘分区成功

[root@cs1 ~]# cd /var/lib/ceph/osd/ceph-0/ [root@cs1 ceph-0]# ll
。。。。。。。。。。。。。。。。。。。。。。。
-rw-r--r--	1 root root	37 Sep 16 18:42 fsid
-rw-------	1 root root	56 Sep 16 18:46 keyring
。。。。。。。。。。。。。。

5:验证 osd 启动状态
确保各个服务器存储磁盘都加入集群,状态为 UP。

[root@nc1 ~]# ceph osd tree

ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 159.02930 root default
-2 16.60992 host cs1

0 1.81999 osd.0 up 1.00000 1.00000
1 1.81999 osd.1 up 1.00000 1.00000
2 1.81999 osd.2 up 1.00000 1.00000
3 1.81999 osd.3 up 1.00000 1.00000
4 1.81999 osd.4 up 1.00000 1.00000
5 1.81999 osd.5 up 1.00000 1.00000
6 1.81999 osd.6 up 1.00000 1.00000

host cs2 ~~~~~ cs9 省略
或者登陆一台存储服务器执行命令如下,查看 osd 磁盘挂在情况
[root@cs1 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part /var/lib/ceph/osd/ceph-0
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part /var/lib/ceph/osd/ceph-1
sdc 8:32 0 1.8T 0 disk
└─sdc1 8:33 0 1.8T 0 part /var/lib/ceph/osd/ceph-2
sdd 8:48 0 1.8T 0 disk
└─sdd1 8:49 0 1.8T 0 part /var/lib/ceph/osd/ceph-3
sde 8:64 0 1.8T 0 disk
└─sde1 8:65 0 1.8T 0 part /var/lib/ceph/osd/ceph-4
sdf 8:80 0 1.8T 0 disk
└─sdf1 8:81 0 1.8T 0 part /var/lib/ceph/osd/ceph-5
sdg 8:96 0 1.8T 0 disk
└─sdg1 8:97 0 1.8T 0 part /var/lib/ceph/osd/ceph-6
sdh 8:112 0 1.8T 0 disk
└─sdh1 8:113 0 1.8T 0 part /var/lib/ceph/osd/ceph-7
sdi 8:128 0 1.8T 0 disk
└─sdi1 8:129 0 1.8T 0 part /var/lib/ceph/osd/ceph-8
sdj 8:144 0 232.9G 0 disk
└─sdj1 8:145 0 232.9G 0 part /var/lib/ceph/osd/ceph-9

6:PGs per OSD (2 < min 30)报错解决:
Osd 添加完成后执行 ceph health 报错如下:
ceph health
HEALTH_WARN too few PGs per OSD (2 < min 30)

解决办法:
增加 PG 数目,根据 Total PGs = (#OSDs * 100) / pool size 公式来决定 pg_num(pgp_num 应该设成和 pg_num
一样),所以我们集群的设置多少合适那? 注意 pgp_num 、pg_num 值设置应一样 ,公式如下:

910(osd 数量) * 100/3 (副本数)=90100/3 =3000(最大可设置)
3000 是 2 的倍数,可以直接使用。
Ceph 官方推荐取最接近 2 的指数倍,不能整除的可以稍微加点。如果顺利的话,就应该可以看到 HEALTH_OK
了:
另外 pgp_num 、pg_num 不能一次设置的较大,过大会报错。

[root@nc1 ~]#	ceph osd pool set rbd pg_num 3000
Error E2BIG: specified pg_num 3000 is too large (creating 2936 new PGs on ~64 OSDs exceeds per-OSD max of 32)

本次集群设置为 1024 ,具体设置多少比较合适,需要根据性能测试慢慢调试。修改前查看数量

[root@nc1 ~]# ceph osd dump|grep rbd
pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 flags hashpspool stripe_width 0

修改配置:

ceph osd pool set rbd pg_num 2048 ceph osd pool set rbd pgp_num 2048

验证:

[root@nc1 ~]# ceph osd dump |grep rbd
pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 1024 pgp_num 1024 last_change 382 flags hashpspool stripe_width 0

7:官方推荐 pg 计算公式

详细信息:http://ceph.com/pgcalc/#userconsent#

八:添加元数据服务器

1:添加元数据服务器

cd /etc/ceph
ceph-deploy --overwrite-conf mds create nc{1..3}

2:验证 mds 服务

[root@nc1 ceph]# ceph mds stat e1: 0/0/0 up

1:状态查看。还没有创建时候的状态。
对于一个刚创建的 MDS 服务,虽然服务是运行的,但是它的状态直到创建 pools 以及文件系统的时候才会变为
Active.

[root@nc1 ~]# ceph mds dump dumped mdsmap epoch 1
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
modified	2015-09-16 17:50:47.819163
tableserver	0
root	0

session_timeout 0
session_autoclose	0
max_file_size	0
last_failure	0
last_failure_osd_epoch	0
compat	compat={},rocompat={},incompat={} max_mds 0

。。。。。。。。。。。。。。。。。。。。。。
metadata_pool		0 inline_data	disabled

2:通过下面的操作创建 Filesystem

[root@nc1 ~]# ceph osd pool create cephfs_data 3048 pool 'cephfs_data' created

[root@nc1 ~]# ceph osd pool create cephfs_metadata 3048 pool 'cephfs_metadata' created

[root@nc1 ~]# ceph fs new leadorfs cephfs_metadata cephfs_data new fs with metadata pool 3 and data pool 2

3:成功创建后,mds stat 的状态如下

[root@nc1 ~]# ceph mds stat
e6: 1/1/1 up {0=nc3=up:active}, 2 up:standby

4:ceph mds dump 状态如下

[root@nc1 ~]# ceph mds dump dumped mdsmap epoch 6 epoch	6
flags	0
created 2015-09-17 12:42:58.682991
modified	2015-09-17 12:43:01.863274
tableserver	0
root	0
session_timeout 60
session_autoclose	300
max_file_size	1099511627776
last_failure	0
last_failure_osd_epoch	0
compat	compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table}
max_mds 1
in	0
up	{0=4598}
failed stopped

data_pools	2
metadata_pool	3
inline_data	disabled

3:删除 mds 节点
如果你不需要 cephfs,MDS 就成了多余的,或者配置过多的 mds 服务,为了提高性能,可以把 MDS 卸载掉。关闭 mds 服务

/etc/init.d/ceph stop mds.cs7

删除 mds 节点

ceph mds rm 1 mds.cs7

卸载

Yum  remove  ceph-fuse  ceph-mds  libcephfs1  -y

4:同步集群配置文件
把生成的配置文件从 ceph-deploy 同步部署到其他几个节点,使得每个节点的 ceph 配置一致:

usage: ceph-deploy
admin	Push configuration and client.admin key to a remote host.
config	Copy ceph.conf to/from remote host(s)

同步配置文件和 client.admin key

ceph-deploy --overwrite-conf admin	nc{1..3} cs{1..9}

单独同步配置文件

ceph-deploy --overwrite-conf config push	nc{1..3} cs{1..9}

九:crush 规则配置

1:ceph crush 规则介绍

Crush 规则支持类型如下; # types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 region
type 10 root
配置细节参照官网文章, 参考链接:

http://docs.openfans.org/ceph/ceph4e2d658765876863/ceph-1/ceph-storage-

cluster3010ceph5b5850a896c67fa43011/operations301064cd4f5c3011/crush-maps3010crush66205c043011

2:集群 crush 规则配置
根据业务集群服务器所在位置计划设置规则如下:3 个 rack,然后 rack1(cs1\cs2\cs3)、rack2(cs4\cs5\cs6)、rack3
(cs7\cs8\cs9)
1:创建 rack

[root@nc1 ~]# ceph osd crush add-bucket RACKA01 rack	#返回结果、后面省略
[root@nc1 ~]# ceph osd crush add-bucket RACKA02 rack [root@nc1 ~]# ceph osd crush add-bucket RACKA03 rack

2:将 host 加入到 rack

[root@nc1 ~]# ceph osd crush move cs1 rack=RACKA01
moved item id -2 name 'cs1' to location {rack=RACKA01}	in crush map	#返回结果、后面省略[root@nc1 ~]# ceph osd crush move cs2 rack=RACKA01
[root@nc1 ~]# ceph osd crush move cs3 rack=RACKA01

[root@nc1 ~]# ceph osd crush move cs4 rack=RACKA02 [root@nc1 ~]# ceph osd crush move cs5 rack=RACKA02 [root@nc1 ~]# ceph osd crush move cs6 rack=RACKA02

[root@nc1 ~]# ceph osd crush move cs7 rack=RACKA03 [root@nc1 ~]# ceph osd crush move cs8 rack=RACKA03 [root@nc1 ~]# ceph osd crush move cs9 rack=RACKA03

验 证 host 加 入 rack: [root@nc1 ~]# ceph osd tree
ID	WEIGHT	TYPE NAME	UP/DOWN REWEIGHT PRIMARY-AFFINITY
-13 54.59976 rack RACKA03
-8 18.19992      host cs7
60	1.81999	osd.60	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
69	1.81999	osd.69	up	1.00000	1.00000
-9 18.19992 host cs8
70	1.81999	osd.70	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
79	1.81999	osd.79	up	1.00000	1.00000
-10 18.19992	host cs9
Ptmind Ceph Cluster 安装配置文档  --康建华
80	1.81999	osd.80	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
89	1.81999	osd.89	up	1.00000	1.00000
-12 54.59976 rack RACKA02
-5 18.19992	host cs4
30	1.81999	osd.30	up	1.00000	1.00000

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
39	1.81999	osd.39	up	1.00000	1.00000
-6 18.19992	host cs5		
40	1.81999	osd.40	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
49	1.81999	osd.49	up	1.00000	1.00000
-7 18.19992	host cs6
50	1.81999	osd.50	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
59	1.81999	osd.59	up	1.00000	1.00000

-11 49.82977 rack
-2 16.60992	host cs1
0	1.81999	osd.0	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
9	0.23000	osd.9	up	1.00000	1.00000
-3 16.60992	host cs2
10	1.81999	osd.10	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
19	0.23000	osd.19	up	1.00000	1.00000
-4 16.60992	host cs3		
20	1.81999	osd.20	up	1.00000	1.00000
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
29	0.23000	osd.29	up	1.00000	1.00000
-1	0 root default

注意:手动安装的集群 osd 可能都在 host1 里面,需要先创建 host 然后,把 osd 加入到个 host,然后在加入吧 host
加入 rack。
创建 host 操作如下:

ceph osd crush add-bucket	host
added bucket host01 type host to crush map	#返回结果

将 osd 加入 host

ceph osd crush add osd.0 1.0 host=host01
add item id 0 name 'osd.0' weight 1 at location {host=host01} to crush map	#返回结果

加入前是否需要关闭 osd,然后初始化需要验证一下。

touch /var/lib/ceph/osd/ceph-0/sysvinit
/etc/init.d/ceph start osd.0

3:修改 crushmap 信息

对于比较熟的 crush 配置比较熟悉的老手推荐使用,在线业务集群慎用。
1:把 ceph 的 crush map 导出并转换为文本格式, 先把 crush map 以二进制的形式导入到 test 文本。

ceph osd getcrushmap -o test

2:转换为可读格式:
用 crushtool 工具把 test 里的二进制数据转换成文本形式保存到 test1 文档里。

crushtool -d test -o test1

3:把重新写的 ceph crush 导入 ceph 集群把 test1 转换成二进制形式

crushtool -c test1 -o test2

把 test2 导入集群、

ceph osd setcrushmap -i test2

十:集群配置清理

##################以下操作在 ceph-deploy 节点操作:###########
部署过程中如果出现任何奇怪的问题无法解决,可以简单的删除一切从头再来:
sudo stop ceph-all 停止所有 ceph 进程
ceph-deploy uninstall [{ceph-node}] 卸载所有 ceph 程序
ceph-deploy purge [[ceph-node} [{ceph-node}] 删除 ceph 相关的包
ceph-deploy purgedata {ceph-node} [{ceph-node}] 删除 ceph 集群所有数据
ceph-deploy forgetkeys 删除 key
详细如下:
1:清理软件包

remove Ceph packages from remote hosts and purge all data. ceph-deploy purge nc{1..3} cs{1..9}

2:卸载之前挂载的 osd 磁盘
非系统使用的会被卸载(生产环境慎用)

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip /usr/bin/umount -a;done

3:将写入分区表的分区挂载

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip /usr/bin/mount -a;done

4:查看一下状态,仅剩余系统盘

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip df -h;done

5:清理残余 key 文件和残余目录

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip rm -rf /var/lib/ceph;done

6:新建安装目录

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p /etc/ceph;done
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p /var/lib/ceph/;done
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p mkdir -p /var/lib/ceph/bootstrap- mds	bootstrap-osd	bootstrap-rgw	mds	mon	osd	tmp;done

7:重新部署集群

在所有节点安装 ceph 软件包 ceph-deploy install{ceph-node}[{ceph-node}...]
(注:如果已经用 yum 在每台机器上安装了 ceph,这步可省略)

ceph-deploy install nc{1..3} cs{1..9}

或者

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip yum -y install ceph ceph-radosgw ;done yum -y install ceph ceph-radosgw

十一:集群配置参数优化

1:配置参数优化

fsid = 973482fb-acf2-4a39-a691-3f810120b013 mon_initial_members = nc1, nc2, nc3
mon_host = 172.16.6.151,172.16.6.152,172.16.6.153
auth_cluster_required = cephx auth_service_required = cephx

auth_client_required = cephx

数据副本数,手动设置等同于 ceph osd pool set {pool-name} size {size}。osd pool default size = 3

数据最小副本数,以向客户端确认写操作。如果未达到最小值, Ceph 就不会向客户端回复已写确认。

osd pool default min size = 1

当 Ceph 存储集群开始时,Ceph 在 OS 等级(比如, 文件描述符最大的)设置 max open fds 。它帮助阻止 Ceph OSD 守护进程在文件描述符之外运行。

max open files= 131072

集群公共网络

public network = 172.16.6.0/24

集群私有网络

cluster network = 10.10.1.0/24

OSD filestore

扩展属性(XATTRs),为 XATTRS 使用 object map,EXT4 文件系统时使用,XFS 或者 btrfs 也可以使用默认:false

为 XATTR 使用对象图,使用 ext4 文件系统的时候要设置。

filestore xattr use omap = true

在一个 CRUSH 规则内用于 chooseleaf 的桶类型。用序列号而不是名字

osd crush chooseleaf type = 1

[mon]

时钟偏移

mon clock drift allowed = .50

十一:OSD 宕机后数据开始恢复时间

mon osd down out interval = 900

MON-OSD 满比,在被 OSD 进程使用之前一个硬盘可用空间大于%20,认为状态良好。

mon osd full ratio = .80

MON-OSD nearfull 率,在被 OSD 进程使用之前一个硬盘的剩余空间大于%30,认为状态良好,另集群总空间使用率大于%70,系统会告警。

mon osd nearfull ratio = .70

[osd]

osd 格式化磁盘的分区格式 xfs osd mkfs type = xfs

强制格式化

osd mkfs options xfs = -f

每个存储池默认 pg 数

osd pool default pg num = 3000

每个存储池默认 pgp 数

osd pool default pgp num = 3000

同步间隔

从日志到数据盘最大同步间隔间隔秒数,默认:5

filestore max sync interval = 15

从日志到数据盘最小同步间隔秒数,默认 0.1 filestore min sync interval = 10

队列

数据盘最大接受的操作数,超过此设置的请求会被拒绝。默认:500

filestore queue max ops = 25000

数据盘一次操作最大字节数(bytes)默认:100 << 20 filestore queue max bytes = 10485760

数据盘能够 commit 的最大操作数默认:500

filestore queue committing max ops = 5000

数据盘能够 commit 的最大字节数(bytes)100 << 20 filestore queue committing max bytes = 10485760000

最大并行文件系统操作线程数,默认 2;

filestore op threads = 32

osd journal #注意,Ceph OSD 进程在往数据盘上刷数据的过程中,是停止写操作的。

OSD 日志大小(MB)默认 5120,推荐 20000,使用 ssd 块存储日志,可以设置为 0,使用整个块。

osd journal size = 10000 #从 v0.54 起,如果日志文件是块设备,这个选项会被忽略,且使用整个块设备。

一次性写入的最大字节数(bytes)默认:10 << 20

journal max write bytes = 1073714824

journal 一次写入日志的最大数量,默认:100 journal max write entries = 10000

journal 一次性最大在队列中的操作数,默认 500

journal queue max ops = 50000

journal 一次性最大在队列中的字节数(bytes),默认:10 << 20 journal queue max bytes = 10485760000

OSD 通讯

注意:增加 osd op threads 和 disk threads 会带来额外的 CPU 开销

OSD 一次可写入的最大值(MB),默认:90

osd max write size = 512

客户端允许在内存中的最大数据(bytes),默认:500MB 默认 500 * 1024L * 1024L =524288000 osd client message size cap = 2147483648

在 Deep Scrub 时候允许读取的字节数(bytes),默认:524288

osd deep scrub stride = 131072

OSD 进程操作的线程数,设置为 0 来禁用它。增加的数量可能会增加请求的处理速率。默认:2 osd op threads = 8

OSD 密集型操作例如恢复和 Scrubbing 时的线程,默认:1

osd disk threads = 5

OSD 映射

保留 OSD Map 的缓存(MB),默认:500

osd map cache size = 1024

OSD 进程在内存中的 OSD Map 缓存(MB),默认:50 osd map cache bl size = 128

Ceph OSD xfs Mount 选项默认:rw,noatime,inode64

osd mount options xfs = rw,noexec,nodev,noatime,nodiratime,nobarrier

OSD recovery

osd 异常数据恢复启动的恢复进程数量,默认:1

osd recovery threads = 2

恢复操作优先级,它是相对 OSD 客户端 运算 优先级。取值 1-63,值越高占用资源越高,默认:10 。

osd recovery op priority = 4

同一时间内活跃的恢复请求数,更多的请求将加速复苏,但请求放置一个增加的群集上的负载。默认:15 osd recovery max active = 10

一个 OSD 允许的最大 backfills 数,默认:10

osd max backfills = 4

[client]

启用缓存 RADOS 块设备,默认:false rbd cache = true

RBD 缓存大小(以字节为单位)默认:33554432

rbd cache size = 268435456

缓存为 write-back 时允许的最大 dirty 字节数(bytes),如果为 0,使用 write-through ,默认:25165824 #Write-through:向高速 Cache 写入数据时同时也往后端慢速设备写一份,两者都写完才返回。

Write-back:向高速 Cache 写完数据后立即返回,数据不保证立即写入后端设备。给调用者的感觉是速度快,但需要额外的机制来防止掉电带来的数据不一致。

rbd cache max dirty = 134217728

在被刷新到存储盘前 dirty 数据存在缓存的时间(seconds)默认:

1 rbd cache max dirty age = 5

[mon.nc1]
host = nc1
mon data = /var/lib/ceph/mon/ceph-nc1/ mon addr = 172.16.6.151:6789
[mon.nc2]
host = nc2
mon data = /var/lib/ceph/mon/ceph-nc2/ mon addr = 172.16.6.152:6789
[mon.nc3]
host = nc3
mon data = /var/lib/ceph/mon/ceph-nc3/ mon addr = 172.16.6.153:6789

[mds.nc1]
host = nc1
mon data = /var/lib/ceph/mds/ceph-nc1/ mon addr = 172.16.6.151:6800
[mds.nc2]
host = nc2
mon data = /var/lib/ceph/mds/ceph-nc2/ mon addr = 172.16.6.152:6800
[mds.nc3]
host = nc3
mon data = /var/lib/ceph/mds/ceph-nc3/ mon addr = 172.16.6.153:6800

[osd.0]

[osd.1]

[osd.2]

[osd.3]

[osd.4]

[osd.5]

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca22df6b022-part1 osd data = /var/lib/ceph/osd/ceph-0
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a10-part1 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca24ec1ee58-part1 osd data = /var/lib/ceph/osd/ceph-1
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a10-part2 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca24ec1bfa5-part1 osd data = /var/lib/ceph/osd/ceph-2
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a10-part3 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca24ec1df52-part1 osd data = /var/lib/ceph/osd/ceph-3
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a10-part4 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca248d3e494-part1 osd data = /var/lib/ceph/osd/ceph-4
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a10-part5 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca248d3c153-part1 osd data = /var/lib/ceph/osd/ceph-5
public addr = 172.16.6.154 cluster addr = 10.10.1.154

[osd.6]

[osd.7]

[osd.8]

[osd.9]

[osd.10]

osd journal = /dev/disk/by-id/wwn-0x5000cca248d44fd8-part1 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca24ec4a9cc-part1 osd data = /var/lib/ceph/osd/ceph-6
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5000cca248d44fd8-part2 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca22df5b22a-part1 osd data = /var/lib/ceph/osd/ceph-7
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5000cca248d44fd8-part3 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5000cca248d356cf-part1 osd data = /var/lib/ceph/osd/ceph-8
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5000cca248d44fd8-part4 osd journal size = 10000

host = cs1
devs = /dev/disk/by-id/wwn-0x5002538d400259ae-part1 osd data = /var/lib/ceph/osd/ceph-9
public addr = 172.16.6.154 cluster addr = 10.10.1.154
osd journal = /dev/disk/by-id/wwn-0x5000cca248d44fd8-part5 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca22df6b03d-part1 osd data = /var/lib/ceph/osd/ceph-10
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5002538d40025963-part1

[osd.11]

osd journal size = 10000

host = cs2

devs = /dev/disk/by-id/wwn-0x5000cca24ec526bd-part1 osd data = /var/lib/ceph/osd/ceph-11
public addr = 172.16.6.155

[osd.12]

[osd.13]

[osd.14]

[osd.15]

[osd.16]

[osd.17]

cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5002538d40025963-part2 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca24ec14814-part1 osd data = /var/lib/ceph/osd/ceph-12
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5002538d40025963-part3 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca24ec06d75-part1 osd data = /var/lib/ceph/osd/ceph-13
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5002538d40025963-part4 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca24ec522ba-part1 osd data = /var/lib/ceph/osd/ceph-14
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5002538d40025963-part5 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca24ec54b92-part1 osd data = /var/lib/ceph/osd/ceph-15
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5000cca22df5b4b9-part1 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca248d2d970-part1 osd data = /var/lib/ceph/osd/ceph-16
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5000cca22Pdtmifn5d bCep4h bCl9ust-epr 安a装r配t2置文档
osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca24ec54b99-part1 osd data = /var/lib/ceph/osd/ceph-17

[osd.18]

[osd.19]

[osd.20]

[osd.21]

[osd.22]

public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5000cca22df5b4b9-part3 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5000cca24ec53d45-part1 osd data = /var/lib/ceph/osd/ceph-18
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5000cca22df5b4b9-part4 osd journal size = 10000

host = cs2
devs = /dev/disk/by-id/wwn-0x5002538d40025a1f-part1 osd data = /var/lib/ceph/osd/ceph-19
public addr = 172.16.6.155 cluster addr = 10.10.1.155
osd journal = /dev/disk/by-id/wwn-0x5000cca22df5b4b9-part5 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca22df6b04e-part1 osd data = /var/lib/ceph/osd/ceph-20
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5002538d40025879-part1 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca24ec51566-part1 osd data = /var/lib/ceph/osd/ceph-21
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5002538d40025879-part2 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca24ec55cdd-part1 osd data = /var/lib/ceph/osd/ceph-22
public addr = 172.16.6.156

cluster addr = 10.10.1.156

[osd.23]

osd journal = /dev/disk/by-id/wwn-0x5002538d40025879-part3 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca22df5e40e-part1

[osd.24]

[osd.25]

[osd.26]

[osd.27]

[osd.28]

osd data = /var/lib/ceph/osd/ceph-23 public addr = 172.16.6.156
cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5002538d40025879-part4 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca24ec53f40-part1 osd data = /var/lib/ceph/osd/ceph-24
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5002538d40025879-part5 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca24ec54887-part1 osd data = /var/lib/ceph/osd/ceph-25
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5000cca24ec531e4-part1 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca248d3843c-part1 osd data = /var/lib/ceph/osd/ceph-26
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5000cca24ec531e4-part2 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca24ec32c79-part1 osd data = /var/lib/ceph/osd/ceph-27
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5000cca24ec531e4-part3 osd journal size = 10000

host = cs3
devs = /dev/disk/by-id/wwn-0x5000cca24ec55cd2-part1 osd data = /var/lib/ceph/osd/ceph-28

public addr = 172.16.6.156 cluster addr = 10.10.1.156

[osd.29]

osd journal = /dev/disk/by-id/wwn-0x5000cca24ec531e4-part4 osd journal size = 10000

host = cs3

[osd.30]

[osd.31]

[osd.32]

[osd.33]

[osd.34]

devs = /dev/disk/by-id/wwn-0x5002538d4002597d-part1 osd data = /var/lib/ceph/osd/ceph-29
public addr = 172.16.6.156 cluster addr = 10.10.1.156
osd journal = /dev/disk/by-id/wwn-0x5000cca24ec531e4-part5 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca22df60e46-part1 osd data = /var/lib/ceph/osd/ceph-30
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0c-part1 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca248d302da-part1 osd data = /var/lib/ceph/osd/ceph-31
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0c-part2 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca24ec52b3f-part1 osd data = /var/lib/ceph/osd/ceph-32
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0c-part3 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca22df5b51f-part1 osd data = /var/lib/ceph/osd/ceph-33
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0c-part4 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca24ec1e300-part1

osd data = /var/lib/ceph/osd/ceph-34 public addr = 172.16.6.157
cluster addr = 10.10.1.157

[osd.35]

osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0c-part5 osd journal size = 10000

[osd.36]

[osd.37]

[osd.38]

[osd.39]

[osd.40]

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca248d44fb4-part1 osd data = /var/lib/ceph/osd/ceph-35
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1c-part1 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca24ec521fd-part1 osd data = /var/lib/ceph/osd/ceph-36
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1c-part2 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca22df5b539-part1 osd data = /var/lib/ceph/osd/ceph-37
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1c-part3 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca248d385eb-part1 osd data = /var/lib/ceph/osd/ceph-38
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1c-part4 osd journal size = 10000

host = cs4
devs = /dev/disk/by-id/wwn-0x5000cca24ec1ed9a-part1 osd data = /var/lib/ceph/osd/ceph-39
public addr = 172.16.6.157 cluster addr = 10.10.1.157
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1c-part5 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca22df5e58Ptemi-ndpCaeprh tC1luster 安装配置文档
osd data = /var/lib/ceph/osd/ceph-40 public addr = 172.16.6.158
cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d400259ba-part1 osd journal size = 10000

[osd.41]

[osd.42]

[osd.43]

[osd.44]

[osd.45]

[osd.46]

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca22df5b53c-part1 osd data = /var/lib/ceph/osd/ceph-41
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d400259ba-part2 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca24ec5485f-part1 osd data = /var/lib/ceph/osd/ceph-42
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d400259ba-part3 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca24ec541a3-part1 osd data = /var/lib/ceph/osd/ceph-43
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d400259ba-part4 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca24ec56029-part1 osd data = /var/lib/ceph/osd/ceph-44
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d400259ba-part5 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca22df5e3f3-part1 osd data = /var/lib/ceph/osd/ceph-45
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0d-part1 osd journal size = 10000

host = cs5

devs = /dev/disk/by-id/wwn-0x5000cca22df5b5cc-part1 osd data = /var/lib/ceph/osd/ceph-46
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0d-part2

[osd.47]

[osd.48]

[osd.49]

[osd.50]

[osd51]

[osd.52]

osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca24ec5483d-part1 osd data = /var/lib/ceph/osd/ceph-47
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0d-part3 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca248d38106-part1 osd data = /var/lib/ceph/osd/ceph-48
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0d-part4 osd journal size = 10000

host = cs5
devs = /dev/disk/by-id/wwn-0x5000cca24ec5304f-part1 osd data = /var/lib/ceph/osd/ceph-49
public addr = 172.16.6.158 cluster addr = 10.10.1.158
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a0d-part5 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca24ec0c263-part1 osd data = /var/lib/ceph/osd/ceph-50
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d40025978-part1 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca22df5e3f2-part1 osd data = /var/lib/ceph/osd/ceph-51
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d40025978-part2 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca248d3a0c7-part1 osd data = /var/lib/ceph/osd/ceph-52
public addr = 172.16.6.159 cluster addr = 10.10.1.159

[osd.53]

[osd.54]

[osd.55]

[osd.56]

[osd.57]

osd journal = /dev/disk/by-id/wwn-0x5002538d40025978-part3 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca248d384fa-part1 osd data = /var/lib/ceph/osd/ceph-53
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d40025978-part4 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca22df5b494-part1 osd data = /var/lib/ceph/osd/ceph-54
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d40025978-part5 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca24ec547d0-part1 osd data = /var/lib/ceph/osd/ceph-55
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597e-part1 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca22df5362d-part1 osd data = /var/lib/ceph/osd/ceph-56
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597e-part2 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca24ec55daa-part1 osd data = /var/lib/ceph/osd/ceph-57
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597e-part3

[osd.58]

osd journal size = 10000

host = cs6

devs = /dev/disk/by-id/wwn-0x5000cca24ec50cbe-part1 osd data = /var/lib/ceph/osd/ceph-58
public addr = 172.16.6.159

[osd.59]

[osd.60]

[osd.61]

[osd.62]

[osd.63]

[osd.64]

cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597e-part4 osd journal size = 10000

host = cs6
devs = /dev/disk/by-id/wwn-0x5000cca248d457a2-part1 osd data = /var/lib/ceph/osd/ceph-59
public addr = 172.16.6.159 cluster addr = 10.10.1.159
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597e-part5 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec1dece-part1 osd data = /var/lib/ceph/osd/ceph-60
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1e-part1 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec06226-part1 osd data = /var/lib/ceph/osd/ceph-61
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1e-part2 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec0816f-part1 osd data = /var/lib/ceph/osd/ceph-62
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1e-part3 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec546a4-part1 osd data = /var/lib/ceph/osd/ceph-63
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d4Pt0min0d 2Ce5phaCl1usete-rp安a装r配t置4文档
osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec554c5-part1 osd data = /var/lib/ceph/osd/ceph-64

[osd.65]

[osd.66]

[osd.67]

[osd.68]

[osd.69]

public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d40025a1e-part5 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca22df5e747-part1 osd data = /var/lib/ceph/osd/ceph-65
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597c-part1 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca248d3e5f1-part1 osd data = /var/lib/ceph/osd/ceph-66
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597c-part2 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca22df5e574-part1 osd data = /var/lib/ceph/osd/ceph-67
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597c-part3 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec49ccd-part1 osd data = /var/lib/ceph/osd/ceph-68
public addr = 172.16.6.160 cluster addr = 10.10.1.160
osd journal = /dev/disk/by-id/wwn-0x5002538d4002597c-part4 osd journal size = 10000

host = cs7
devs = /dev/disk/by-id/wwn-0x5000cca24ec5278f-part1 osd data = /var/lib/ceph/osd/ceph-69
public addr = 172.16.6.160

cluster addr = 10.10.1.160

[osd.70]

osd journal = /dev/disk/by-id/wwn-0x5002538d4002597c-part5 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca248d383b4-part1

[osd.71]

[osd.72]

[osd.73]

[osd.74]

[osd.75]

osd data = /var/lib/ceph/osd/ceph-70 public addr = 172.16.6.161
cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d4002595e-part1 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca24ec52fbb-part1 osd data = /var/lib/ceph/osd/ceph-71
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d4002595e-part2 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca24ec51614-part1 osd data = /var/lib/ceph/osd/ceph-72
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d4002595e-part3 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca248d41aa1-part1 osd data = /var/lib/ceph/osd/ceph-73
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d4002595e-part4 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca22df5e4ba-part1 osd data = /var/lib/ceph/osd/ceph-74
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d4002595e-part5 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca24ec4afbf-part1 osd data = /var/lib/ceph/osd/ceph-75

public addr = 172.16.6.161 cluster addr = 10.10.1.161

[osd.76]

osd journal = /dev/disk/by-id/wwn-0x5002538d40025977-part1 osd journal size = 10000

host = cs8

[osd.77]

[osd.78]

[osd.79]

[osd.80]

[osd.81]

devs = /dev/disk/by-id/wwn-0x5000cca24ec1df2e-part1 osd data = /var/lib/ceph/osd/ceph-76
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d40025977-part2 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca248d3123b-part1 osd data = /var/lib/ceph/osd/ceph-77
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d40025977-part3 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca24ec55ce5-part1 osd data = /var/lib/ceph/osd/ceph-78
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d40025977-part4 osd journal size = 10000

host = cs8
devs = /dev/disk/by-id/wwn-0x5000cca22df5b53f-part1 osd data = /var/lib/ceph/osd/ceph-79
public addr = 172.16.6.161 cluster addr = 10.10.1.161
osd journal = /dev/disk/by-id/wwn-0x5002538d40025977-part5 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca22df5b51c-part1 osd data = /var/lib/ceph/osd/ceph-80
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259cc-part1 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca24ec55cc9-part1

osd data = /var/lib/ceph/osd/ceph-81 public addr = 172.16.6.162
cluster addr = 10.10.1.162

[osd.82]

osd journal = /dev/disk/by-id/wwn-0x5002538d400259cc-part2 osd journal size = 10000

[osd.83]

[osd.84]

[osd.85]

[osd.86]

[osd.87]

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca248d3522c-part1 osd data = /var/lib/ceph/osd/ceph-82
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259cc-part3 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca24ec51fb3-part1 osd data = /var/lib/ceph/osd/ceph-83
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259cc-part4 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca248d3e241-part1 osd data = /var/lib/ceph/osd/ceph-84
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259cc-part5 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca24ec54b9d-part1 osd data = /var/lib/ceph/osd/ceph-85
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259c2-part1 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca22df5e6d5-part1 osd data = /var/lib/ceph/osd/ceph-86
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259c2-part2 osd journal size = 10000

host = cs9
osd data = /var/lib/ceph/osd/ceph-87 public addr = 172.16.6.162
cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259c2-part3 osd journal size = 10000

[osd.88]

[osd.89]

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca24ec546ae-part1 osd data = /var/lib/ceph/osd/ceph-88
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259c2-part4 osd journal size = 10000

host = cs9
devs = /dev/disk/by-id/wwn-0x5000cca24ec54883-part1 osd data = /var/lib/ceph/osd/ceph-89
public addr = 172.16.6.162 cluster addr = 10.10.1.162
osd journal = /dev/disk/by-id/wwn-0x5002538d400259c2-part5 osd journal size = 10000

2:同步集群配置文件
把生成的配置文件从 ceph-deploy 同步部署到其他几个节点,使得每个节点的 ceph 配置一致:
usage: ceph-deploy
admin Push configuration and client.admin key to a remote host.
config Copy ceph.conf to/from remote host(s)

同步配置文件和 client.admin key
ceph-deploy --overwrite-conf admin nc{1..3} cs{1..9}

单独同步配置文件
ceph-deploy --overwrite-conf config push nc{1..3} cs{1..9}

十二:ceph 集群启动、重启、停止

1:ceph 命令的选项

ceph 命令的选项如下: 选项 简写 描述
--verbose -v 详细的日志。
--valgrind N/A (只适合开发者和质检人员)用 Valgrind 调试。
--allhosts -a 在 ceph.conf 里配置的所有主机上执行,Ptm否ind Ce则ph Cl它uste只r 安装在配置本文档机--执行 。
--restart N/A 核心转储后自动重启。
--norestart N/A 核心转储后不自动重启。
--conf -c 使用另外一个配置文件。
Ceph 子命令包括:

命令 描述
start 启动守护进程。
stop 停止守护进程。
forcestop 暴力停止守护进程,等价于 kill -9
killall 杀死某一类守护进程。
cleanlogs 清理掉日志目录。
cleanalllogs 清理掉日志目录内的所有文件。

2:启动所有守护进程
要启动、关闭、重启 Ceph 集群,执行 ceph 时加上 相关命令,语法如下:

/etc/init.d/ceph [options] [start|restart|stop] [daemonType|daemonID]

下面是个典型启动实例:

sudo /etc/init.d/ceph -a start

加 -a (即在所有节点上执行)执行完成后 Ceph 本节点所有进程启动。
把 CEPH 当服务运行,按此语法:

service ceph [options] [start|restart] [daemonType|daemonID]

典型实例:

service ceph -a start

3:启动单一实例
要启动、关闭、重启一类守护进程 本例以要启动本节点上某一类的所有 Ceph 守护进程,

/etc/init.d/ceph	[start|restart|stop] [daemonType|daemonID]
/etc/init.d/ceph start osd.0

把 ceph 当做服务运行,启动一节点上某个 Ceph 守护进程, 按此语法:

 service ceph	sta

十三:维护常用命令

1:检查集群健康状况
1:检查集群健康状况
启动集群后、读写数据前,先检查下集群的健康状态。你可以用下面的命令检查:

ceph health 或者 ceph health detail (输出信息更详细)
要观察集群内正发生的事件,打开一个新终端,然后输入:
ceph -w
输出信息里包含: 集群唯一标识符 集群健康状况

监视器图元版本和监视器法定人数状态
OSD 版本和 OSD 状态摘要
其内存储的数据和对象数量的粗略统计,以及数据总量等。新版本新增选项如下:

-s, --status	show cluster status
-w, --watch	watch live cluster changes
--watch-debug	watch debug events
--watch-info	watch info events
--watch-sec	watch security events
--watch-warn	watch warn events
--watch-error	watch error events
--version, -v	display version
--verbose	make verbose
--concise	make less verbose

使用方法演示:

ceph -w --watch-info

2:检查集群的使用情况
检查集群的数据用量及其在存储池内的分布情况,可以用 df 选项,它和 Linux 上的 df 相似。如下:
ceph df
输出的 GLOBAL 段展示了数据所占用集群存储空间的概要。
SIZE: 集群的总容量;
AVAIL: 集群的空闲空间总量;
RAW USED: 已用存储空间总量;
% RAW USED: 已用存储空间比率。用此值参照 full ratio 和 near full \ ratio 来确保不会用尽集群空间。详情见存储容量。
输出的 POOLS 段展示了存储池列表及各存储池的大致使用率。没有副本、克隆品和快照占用情况。例如,如果你把 1MB 的数据存储为对象,理论使用率将是 1MB ,但考虑到副本数、克隆数、和快照数,实际使用率可能是 2MB 或更多。
NAME: 存储池名字;
ID: 存储池唯一标识符;
USED: 大概数据量,单位为 KB 、 MB 或 GB ;
%USED: 各存储池的大概使用率;
Objects: 各存储池内的大概对象数。

新版本新增 ceph osd df 命令,可以详细列出集群每块磁盘的使用情况,包括大小、权重、使用多少空间、使用率等等

3:检查集群状态
要检查集群的状态,执行下面的命令:

 ceph status

4:检查 MONITOR 状态
查看监视器图,执行下面的命令:

ceph mon stat

或者:

ceph mon dump

要检查监视器的法定人数状态,执行下面的命令:

ceph quorum_status

5:检查 MDS 状态:
元数据服务器为 Ceph 文件系统提供元数据服务,元数据服务器有两种状态: up | \ down 和 active | inactive , 执行下面的命令查看元数据服务器状态为 up 且 active :

ceph mds stat

要展示元数据集群的详细状态,执行下面的命令:

ceph mds dump

删除一个 mds 节点

ceph	mds rm 0 mds.nc3

十四:集群命令详解

1:mon 相关
1:查看 mon 的状态信息

[mon@ptmind~]# ceph mon stat

2:查看 mon 的选举状态

[mon@ptmind~]# ceph quorum_status

3:查看 mon 的映射信息

[mon@ptmind~]# ceph mon dump

4:删除一个 mon 节点

[mon@ptmind~]# ceph mon remove cs1

5:获得一个正在运行的 mon map,并保存在 1.txt 文件中

[mon@ptmind~]# ceph mon getmap -o 1.txt

6: 读 取 上 面 获 得 的 map

 [mon@ptmind~]# monmaptool --print 1.txt

7:把上面的 mon map 注入新加入的节点

[mon@ptmind~]# ceph-mon -i nc3 --inject-monmap 1.txt

8:查看 mon 的 amin socket

[mon@ptmind~]# ceph-conf --name mon.nc3 --show-config-value admin_socket

9:查看 ceph mon log 日志所在的目录

[mon@ptmind~]# ceph-conf --name mon.nc1 --show-config-value log_file
/var/log/ceph/ceph-mon.nc1.log

10:查看一个集群 ceph-mon.nc3 参数的配置、输出信息特别详细,集群所有配置生效可以在此参数下确认

[mon@ptmind~]# ceph --admin-daemon /var/run/ceph/ceph-mon.nc3.asok config show | less

2: msd 相 关
1:查看 msd 状态

[mon@ptmind~]# ceph mds stat

2:删除一个 mds 节点

[mon@ptmind~]# ceph	mds rm 0 mds.nc1

3:设置 mds 状态为失败

[mon@ptmind~]# ceph mds rmfailed <int[0-]>

4:新建 pool

[mon@ptmind~]# ceph mds add_data_pool <poolname>

5:关闭 mds 集群

[mon@ptmind~]# mds cluster_down

6:启动 mds 集群

[mon@ptmind~]# mds cluster_up

7:设置 cephfs 文件系统存储方式最大单个文件尺寸

[mon@ptmind~]# ceph mds set max_file_size 1024000000000

8:清除 cephfs 文件系统步骤

强 制 mds 状 态 为 featrue

 [mon@ptmind~]# ceph mds fail 0

删除 mds 文件系统

[mon@ptmind~]# ceph fs rm leadorfs --yes-i-really-mean-it

删除 fs 数据文件夹

[mon@ptmind~]# ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it #删除元数据文件夹

[mon@ptmind~]# ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it

然后再删除 mds key ,残留文件等
拆除文件系统前推荐先删除节点,待验证

[mon@ptmind~]# ceph	mds rm 0 mds.node242

4:ceph auth 相关
1:查看 ceph 集群中的认证用户及相关的 key

[mon@ptmind~]# ceph auth list

2:为 ceph 创建一个 admin 用户并为 admin 用户创建一个密钥,把密钥保存到/etc/ceph 目录下:

[mon@ptmind~]#	ceph	auth	get-or-create	client.admin	mds	'allow'	osd	'allow	*'	mon	'allow	*'	>
/etc/ceph/ceph.client.admin.keyring

[mon@ptmind~]#	ceph	auth	get-or-create	client.admin	mds	'allow'	osd	'allow	*'	mon	'allow	*'	-o
/etc/ceph/ceph.client.admin.keyring

3:为 osd.0 创建一个用户并创建一个 key

[mon@ptmind~]# ceph auth get-or-create osd.0 mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring

4:为 mds.nc3 创建一个用户并创建一个 key

[mon@ptmind~]# ceph auth get-or-create mds.nc3 mon 'allow rwx' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mds/ceph- cs1/keyring

5:导入 key 信息

[mon@ptmind~]# ceph auth import	/var/lib/ceph/mds/ceph-cs1/keyring

6:删除集群中的一个认证用户

[mon@ptmind~]# ceph auth del osd.0

5:osd 相关
1:查看 osd 列表

[mon@ptmind~]# ceph osd tree

2:查看数据延迟

[mon@ptmind~]# ceph osd perf
osd fs_commit_latency(ms) fs_apply_latency(ms)
0	3	4
1	333	871
2	33	49
3	1	2
。。。。。。。。。。。。

3:详细列出集群每块磁盘的使用情况,包括大小、权重、使用多少空间、使用率等等

[mon@ptmind~]# ceph osd df

4:down 掉一个 osd 硬盘

[mon@ptmind~]# ceph osd down 0	#down 掉 osd.0 节点

5:在集群中删除一个 osd 硬盘

[mon@ptmind~]# ceph osd rm 0

6:在集群中删除一个 osd 硬盘 crush map

 [mon@ptmind~]# ceph osd crush rm osd.0

7:在集群中删除一个 osd 的 host 节点

[mon@ptmind~]# ceph osd crush rm cs1

8:查看最大 osd 的个数

[mon@ptmind~]# ceph osd getmaxosd
max_osd = 90 in epoch 1202	#默认最大是 90 个 osd 节点

9:设置最大的 osd 的个数(当扩大 osd 节点的时候必须扩大这个值)

[mon@ptmind~]# ceph osd setmaxosd 2048

10:设置 osd crush 的权重为 1.0

ceph osd crush set {id} {weight} [{loc1} [{loc2} ...]]

例如:

[mon@ptmind~]# ceph osd crush set osd.1 0.5 host=node241

11:设置 osd 的权重

[mon@ptmind~]# ceph osd reweight 3 0.5
reweighted osd.3 to 0.5 (8327682)

或者用下面的方式

[mon@ptmind~]# ceph osd crush reweight osd.1 1.0

12:把一个 osd 节点逐出集群

[mon@ptmind~]# ceph osd out osd.3:

3	1	osd.3	up	0	# osd.3 的 rewPetmiingd hCetph 变Clus为ter 安0装配了置文就档不再分配数据,但是设备还是存活的

13:把逐出的 osd 加入集群

[mon@ptmind~]# ceph osd in osd.3 marked in osd.3.

14:暂停 osd (暂停后整个集群不再接收数据)

[mon@ptmind~]# ceph osd pause

15:再次开启 osd (开启后再次接收数据)

[mon@ptmind~]# ceph osd unpause

16:查看一个集群 osd.0 参数的配置、输出信息特别详细,集群所有配置生效可以在此参数下确认

[mon@ptmind~]# ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less

17:设置标志 flags ,不允许关闭 osd、解决网络不稳定,osd 状态不断切换的问题

[mon@ptmind~]# ceph osd set nodown

取消设置

[mon@ptmind~]# ceph osd unset nodown

6:pool 相关

1:查看 ceph 集群中的 pool 数量

[mon@ptmind~]# ceph osd lspools	或者 ceph osd pool ls

2:在 ceph 集群中创建一个 pool

[mon@ptmind~]# ceph osd pool create rbdtest 100	#这里的 100 指的是 PG 组:

3:查看集群中所有 pool 的副本尺寸

[mon@ptmind~]# ceph osd dump | grep 'replicated size'

4:查看 pool 最大副本数量

[mon@ptmind~]# ceph osd pool get rbdpool size size: 3

5:查看 pool 最小副本数量

[root@node241 ~]# ceph osd pool get rbdpool min_size min_size: 2

6:设置一个 pool 的 pg 数量

[mon@ptmind~]# ceph osd pool set rbdtest pg_num 100

7:设置一个 pool 的 pgp 数量

[mon@ptmind~]# ceph osd pool set rbdtest pgp_num 100

8: 修改 ceph,数据最小副本数、和副本数

ceph osd pool set $pool_name min_size 1
ceph osd pool set $pool_name size 2

示例:

[mon@ptmind~]# ceph osd pool set rbdpool min_size 1 [mon@ptmind~]# ceph osd pool set rbdpool size 2

验证:

[mon@ptmind~]# ceph osd dump
pool 3 'rbdpool' replicated size 2 min_size 1

9:设置 rbdtest 池的最大存储空间为 100T(默认是 1T)

[mon@ptmind~]# ceph osd pool set rbdtest target_max_bytes 100000000000000

10: 为一个 ceph pool 配置配额、达到配额前集群会告警,达到上限后无法再写入数据

[mon@ptmind~]# ceph osd pool set-quota rbdtest max_objects 10000

11: 在集群中删除一个 pool,注意删除 poolpool 映射的 image 会直接被删除,线上操作要谨慎。

[mon@ptmind~]# ceph osd pool delete rbdtest	rbdtest	--yes-i-really-really-mean-it	#集群名字需要重复两次

12: 给一个 pool 创建一个快照

[mon@ptmind~]# ceph osd pool mksnap rbdtest	rbdtest-snap20150924

13: 查看快照信息

[mon@ptmind~]# rados lssnap -p rbdtest
1	rbdtest-snap20150924	2015.09.24 19:58:55
2	rbdtest-snap2015092401	2015.09.24 20:31:21
2 snaps

14:删除 pool 的快照

[mon@ptmind~]# ceph osd pool rmsnap rbdtest	rbdtest-snap20150924

验证,剩余一个 snap

[mon@ptmind~]# rados lssnap -p rbdtest
2	rbdtest-snap2015092401	2015.09.24 20:31:21
1 snaps

7:rados 命令相关

是和 的对象存储集群( ), 的分布式文件系统的一部分进行交互是一种实用工具。

1: 查 看 ceph 集 群 中 有 多 少 个 pool ( 只 是 查 看 pool)

 [mon@ptmind~]# rados lspools	同	ceph osd pool ls 输出结果一致

2:显示整个系统和被池毁掉的使用率统计,包括磁盘使用(字节)和对象计数

[mon@ptmind~]# rados df

3:创建一个 pool

[mon@ptmind~]# rados mkpool test

4:创建一个对象 object

[mon@ptmind~]# rados create test-object -p test

5:查看对象文件

[mon@ptmind~]# rados -p test ls
test-object

6:删除一个对象

[mon@ptmind~]# rados rm test-object-1 -p test

7:删除 foo 池 (和它所有的数据)

[mon@ptmind~]# rados rmpool test test –yes-i-really-really-mean-it

8:查看 ceph pool 中的 ceph object (这里的 object 是以块形式存储的)

[mon@ptmind~]# rados ls -p test | more

9:为 test pool 创建快照

[mon@ptmind~]# rados -p test mksnap testsnap created pool test snap testsnap

10:列出给定池的快照

[mon@ptmind~]# rados -p test lssnap
1	testsnap	2015.09.24 21:14:34

11:删除快照

[mon@ptmind~]# rados -p test rmsnap testsnap removed pool test snap testsnap

12:上传一个对象到 test pool

[mon@ptmind~]# rados -p test put myobject blah.txt

13:使用 rados 进行性能测试
测试用例如下:

rados bench 600 write	rand -t 100 -b 4K -p datapool

选项解释: 测试时间 :600

支持测试类型:write/read ,加 rand 就是随机,不加就是顺序
并发数( -t 选项):100

pool 的名字是:datapool

8:PG 相关
PG =“放置组”。当集群中的数据,对象映射到编程器,被映射到这些 PGS 的 OSD。
1:查看 pg 组的映射信息

[mon@ptmind~]# ceph pg dump 或 者 ceph pg ls

2: 查 看 一 个 PG 的 map

 [mon@ptmind~]# ceph pg map 0.3f
osdmap e88 pg 0.3f (0.3f) -> up [0,2] acting [0,2]	#其中的[0,2]代表存储在 osd.0、osd.2 节点,osd.0 代表主副本的存储位置

3:查看 PG 状态

[mon@ptmind~]# ceph pg stat

4:查询一个 pg 的详细信息

[mon@ptmind~]# ceph pg 0.26 query

5:要洗刷一个 pg 组,执行命令:

[mon@ptmind~]# ceph pg scrub {pg-id}

6:查看 pg 中 stuck 的状态
要获取所有卡在某状态的归置组统计信息,执行命令:

ceph pg dump_stuck inactive|unclean|stale [--format <format>] [-t|--threshold <seconds>]
[mon@ptmind~]# ceph pg dump_stuck unclean [mon@ptmind~]# ceph pg dump_stuck inactive [mon@ptmind~]# ceph pg dump_stuck stale

Inactive (不活跃)归置组不能处理读写,因为它们在等待一个有最新数据的 OSD 复活且进入集群。
Unclean (不干净)归置组含有复制数未达到期望数量的对象,它们应该在恢复中。
Stale (不新鲜)归置组处于未知状态:存储它们的 OSD 有段时间没向监视器报告了(由 mon_osd_report_timeout
配置)。
可用格式有 plain (默认)和 json 。阀值定义的是,归置组被认为卡住前等待的最小时间(默认 300 秒)

7:显示一个集群中的所有的 pg 统计

[mon@ptmind~]# ceph pg dump --format plain

8:恢复一个丢失的 pg
如果集群丢了一个或多个对象,而且必须放弃搜索这些数据,你就要把未找到的对象标记为丢失( lost )。
如果所有可能的位置都查询过了,而仍找不到这些对象,你也许得放弃它们了。这可能是罕见的失败组合导致的, 集群在写入完成前,未能得知写入是否已执行。

当前只支持 revert 选项,它使得回滚到对象的前一个版本(如果它是新对象)或完全忽略它。要把 unfound 对象标记为 lost ,执行命令:

ceph pg {pg-id} mark_unfound_lost revert|delete

9:查看某个 PG 内分布的数据状态,具体状态可以使用选项过滤输出

ceph	pg	ls	{<int>}
{active|clean|down|replay|splitting|scrubbing|scrubq|degraded|inconsistent|peering|repair|recovering|backfill_wait|i ncomplete|stale|remapped|deep_scrub|backfill|
backfill_toofull|recovery_wait|undersized [active|clean|down|replay|splitting|scrubbing|scrubq|degraded|inconsistent|peering|repair|recovering|backfill_wait|i ncomplete|stale|remapped|
deep_scrub|backfill|backfill_toofull|recovery_wait|undersized...]} :	list pg with specific pool, osd, state

实例如下:
pg 号 过滤输出的状态

[mon@ptmind~]# ceph	pg	ls	1	clean

10:查询 osd 包含 pg 的信息,过滤输出 pg 的状态信息

pg ls-by-osd <osdname (id|osd.id)>	list pg on osd [osd]
{<int>} {active|clean|down|replay|splitting|scrubbing|scrubq|degraded| inconsistent|peering|repair|recovering|
backfill_wait|incomplete|stale|remapped|deep_scrub|backfill|backfill_toofull|recovery_wait|undersized[active|clean|d own|replay|splitting|
scrubbing|scrubq|degraded|inconsistent|	peering|repair|recovering|backfill_ wait|incomplete|stale|remapped|deep_scrub|backfill|backfill_toofull|recovery_wait|undersized...]}

实例如下:

[mon@ptmind~]# ceph pg ls-by-osd osd.5

11:查询 pool 包含 pg 的信息,过滤输出 pg 的状态信息
ceph pg ls-by-pool poolname 选项
ceph pg ls-by-pool {active|clean| down|replay|splitting|scrubbing|scrubq| degraded|inconsistent|peering|repair| recovering|backfill_wait|incomplete| stale|remapped|deep_scrub|backfill| backfill_toofull|recovery_wait| undersized [active|clean|down|replay| splitting|scrubbing|scrubq|degraded| inconsistent|peering|repair|recovering| backfill_wait|incomplete|stale| remapped|deep_scrub|backfill|backfill_
实例如下:

[mon@ptmind~]# ceph pg ls-by-pool test

12:查询某个 osd 状态为 primary pg ,可以根据需要过滤状态
pg ls-by-primary <osdname (id|osd.id)> {}
{active|clean|down|replay|splitting|scrubbing|scrubq|dePtgmirndaCdepeh dClu|stienr 安co装配n置s文is档ten--t|peering|repair|recovering|backfill_wait|i ncomplete|stale|remapped|deep_scrub|backfill|
backfill_toofull|recovery_wait|undersized [active|clean|down|replay|splitting|scrubbing|scrubq|degraded|inconsistent|peering|repair|recovering|backfill_wait|i ncomplete|stale|remapped|deep_scrub|backfill|
backfill_toofull|recovery_wait|undersized...]} : list pg with primary = [osd]

实例如下:

osd 号 过滤输出的状态

[mon@ptmind~]# ceph pg ls-by-primary	osd.3	clean

9: rbd 命令相关

1:在 test 池中创建一个命名为 kjh 的 10000M 的镜像

[mon@ptmind~]# rbd create -p test --size 10000 kjh

2:查看 ceph 中一个 pool 里的所有镜像

[mon@ptmind~]# rbd ls test kjh

3:查看新建的镜像的信息

[mon@ptmind~]# rbd -p test info kjh

4:查看 ceph pool 中一个镜像的信息

[mon@ptmind~]# rbd info -p test	--image kjh rbd image 'kjh':
size 1000 MB in 250 objects
order 22 (4096 kB objects) block_name_prefix: rb.0.92bd.74b0dc51 format: 1

5:删除一个镜像

[mon@ptmind~]# rbd rm	-p test	kjh

6:调整一个镜像的尺寸

[mon@ptmind~]# rbd resize -p test --size 20000 kjh

[mon@ptmind~]# rbd -p test info kjh	#调整后的镜像大小rbd image 'kjh':
size 2000 MB in 500 objects
order 22 (4096 kB objects) block_name_prefix: rb.0.92c1.74b0dc51 format: 1

7 :快照测试

1:新建个 pool 叫’ptmindpool’同时在下面创建一个’kjhimage’

[mon@ptmind~]# ceph osd pool create ptmindpool 256 256 pool 'ptmindpool' created

2:创建镜像

[mon@ptmind~]# rbd create kjhimage --size 1024 --pool ptmindpool

3:查看镜像

[mon@ptmind~]# rbd --pool ptmindpool ls kjhimage

4:创建 snap,快照名字叫’snapkjhimage’

[mon@ptmind~]# rbd snap create ptmindpool/kjhimage@snapkjhimage

5:查看 kjhimage 的 snap

[mon@ptmind~]# rbd snap ls ptmindpool/kjhimage SNAPID NAME	SIZE
2 snapkjhimage 1024 MB

6:回滚快照,

[mon@ptmind~]# rbd snap rollback ptmindpool/kjhimage@snapkjhimage

7:删除 snap 删除 snap 报(rbd: snapshot 'snapshot-xxxx' is protected from removal.)写保护 ,使用 rbd snap unprotect volumes/snapshot-xxx' 解锁,然后再删除

[mon@ptmind~]# rbd snap rm ptmindpool/kjhimage@snapkjhimage

8:删除 kjhimage 的全部 snapshot

[mon@ptmind~]# rbd snap purge ptmindpool/kjhimage

9: 把 ceph pool 中的一个镜像导出导出镜像

[mon@ptmind~]# rbd export -p ptmindpool --image kjhimage /tmp/kjhimage.img Exporting image: 100% complete...done.

验证查看导出文件

l /tmp/kjhimage.img
-rw-r--r-- 1 root root 1073741824 Sep 24 23:15 /tmp/kjhimage.img

10:把一个镜像导入 ceph 中

[mon@ptmind~]# rbd import /tmp/kjhimage.img	-p ptmindpool --image importmyimage1
Importing image: 100% complete...done.

验证查看导入镜像文件
rbd -pptmindpool ls

importmyimage1

十五:ceph 日志和调试设置

启动集群出现问题时,可以通过添加调试日志(默认在/var/log/ceph)选项到 Ceph 设置文件中来排错。开启或增加日志内容级别前,请确保系统磁盘上有足够的空余空间。如果系统运行良好,最好去除不必要的调试日志,想做性能优化可以将内存中的日志关掉以优化集群。在集群运行过程中输出debug 信息会拖慢系统,也浪费系统资源。
Ceph 的日志级别从 1 到 20,1 最精简,20 最详细,日志可分为系统设置日志文件输出级别和内存日志输出级别{log- level}/{memory-level},配置要参数先设定日志文件级别,再设定内存级别,两个数值必须用斜杠(/)分隔。

1:配置文件修改
要想在启动时激活 Ceph 的调试输出(即 dout()),就必须在 Ceph 配置文件中添加相应设置项。配置文件中
[global]组内的设置影响所有所有子系统守护进程,针对特定子系统守护进程的配置可以单独设置(即在[mon], [osd],
[mds]组内),比如:

[global]
debug ms = 1/5

[mon]

debug mon = 20 debug paxos = 1/5 debug auth = 2

[osd]

debug osd = 1/5 debug filestore = 1/5 debug journal = 1 debug monc = 5/20

[mds]

debug mds = 1
debug mds balancer = 1 debug mds log = 1 debug mds migrator = 1

2:在线修改日志输出级别
如果在运行时查看设置内容,你必须登录到运行守护进程的主机上,并按以下步骤操作:
ceph daemon {/path/to/admin/socket} config show | less

ceph daemon /run/ceph/ceph-mon.node241.asok config show|grep debug
要在运行时激活 Ceph 的调试输出(即 dout()),请使用 ceph tell 命令将相关参数注入到配置文件中:
ceph tell {daemon-type}.{daemon id or *} injectargs --{name} {value} [--{name} {value}]

{daemon-type}选项有 osd, mon 或者 mds。通过使用通配符*,你可以把设置应用到所有守护进程中去,或者通过 ID
号(即相应数字或字母)来应用到指定守护进程上去。
例如,增加名为 0,类型为 osd 的守护进程的日志级别,可使用下面的命令行: 查看默认值:
[root@node241 ~]# ceph daemon /run/ceph/ceph-osd.1.asok config show|grep debug_osd "debug_osd": "0/5",
[root@node241 ~]# ceph tell osd.1 injectargs --debug_osd 1/5 debug_osd=1/5
你也可以通过 ceph --admin-daemon 命令,登录到你要修改配置的守护进程主机上。比如:
[root@node241 ~]# ceph daemon osd.1 config set debug_osd 1/5

{

"success": ""

}

验证修改结果:
[root@node241 ~]# ceph daemon /run/ceph/ceph-osd.1.asok config show|grep debug_osd "debug_osd": "1/5

3:修改集群子系统,日志和调试设置
在多数情况下,你需要通过子系统开启调试日志输出功能。每一个子系统输出到磁盘上的日志文件和内存中的日志数据,都有一个日志级别。所以,你可以给这些子系统设置日志文件输出级别和内存日志输出级别。 Ceph 的日志级别从 1 到 20,1 最精简,20 最详细。
Ptmind Ceph Cluster 安装配置文档 --康建华
你可以通过只设定一个值,来使调试输出日志的文件级别和内存级别相同。比如,设定 debug ms = 5,Ceph 会
把日志的文件级别和内存级别都设为 5.也可以分别设置日志组织。先设定日志文件级别,再设定内存级别,两个数值必须用斜杠(/)分隔。
比如,你准备为名为 ms 的子系统设定日志文件级别为 1,日志内存级别为 5,应该写成 debug ms = 1/5.举例:

debug {subsystem} = {log-level}/{memory-level} #for example
debug mds log = 1/20

4:日志输出级别默认值

参考文章:

http://xiaoquqi.github.io/blog/2015/06/28/ceph-performance-optimization-summary/?utm_source=tuicool http://cloud.51cto.com/art/201501/464162_2.htm http://docs.openfans.org/ceph/ceph4e2d658765876863 http://docs.ceph.com/docs/master/rados/configuration/ceph-conf/?highlight=osd journal size
http://mirrors.myccdn.info/ceph/doc/docs_zh/output/html/search/?q=filestore+queue+max+ops&check_keywords=yes& area=default

http://mp.weixin.qq.com/s? biz=MzA3NjkwNjM4Nw==&mid=210896948&idx=1&sn=19d9449e24a1e6155add01a675b9 bc2d&scene=1&srcid=0916ZendiZMRgMVji22676A0#rd

http://baike.baidu.com/link?url=2NVF_-7rznBadF XddOIm5VfJKma6g9Tk2MYDYfa4wbd-4e6kUnbA6oUTAT7JMnK6- 808AiM- m3LI6tXcWVf_&ADUIN=3312909837&ADSESSION=1442382049&ADTAG=CLIENT.QQ.5385_.0&ADPUBNO=26450#usercons
ent# http://shuechaolau.iteye.com/blog/1558046#userconsent#

posted @ 2019-11-18 00:04  小猿取经-林海峰老师  阅读(1953)  评论(0编辑  收藏  举报