ceph 移除node问题

背景:

由于原来的ceph-4的系统盘没有做raid,为了更加靠谱,决定重装ceph-4; 首先,按照官方文档给出的方法,一个一个卸掉osd,然后

 

但是,发现crush中还是存在ceph-4,虽然没有了osd,看着很是碍眼,于是看了写help,执行

然后,crush中就看不到ceph-4了

后来,ceph-4重装后,执行:

结果,ceph osd tree时,发现 ceph-4 在crush中的结构和别的host不一样,无论如何也不向这里的osd分配数据,如下:

 

后经 Ceph中国社区2群 @孤舟 指点,他说我的pool走的都是default,ceph-4 没有在default,然而,我根本不知道是哪里的不同导致出现了这样的差异,于是@孤舟 赐我一锦囊,拆看如下:

结果:

 

疑问:

ceph-1 ceph-2 ceph-3 ceph-4 ceph-5 我都是按照相同的命令来执行的,为什么ceph-4就例外了呢?

我能想到的ceph-4唯一的不同就是ceph-4曾经存在过,可能删除的时候没有处理利索,难道是:

使用的不当? 文档中还有一个

的用法,不知道二者有何差异,不过很可能是这样:

这个remove似乎也可以移除osd的,但是purge似乎对于osd来讲更加彻底

 

稍后研究

 

问题2

  • ceph osd out 的时候会rebalance一次
    • 这次是因为数据的问题
  • ceph osd purge 的时候(也可能是ceph osd crush remove ceph-4 的时候)也会rebalance一次
    • 这次是因为hash的问题
  • 那么,能否通过设置 ceph osd set norebalance ,避免两次rebalance呢?似乎不行,set norebalance似乎只对于osd down掉有效,而out、remove操作似乎都不参考该设置,参考: http://www.xuxiaopang.com/2016/11/11/doc-ceph-table/

问题3

一个host下面一般有多个osd,一个一个地purge有点儿麻烦,能否直接ceph osd crush remove <host> 呢?

答案是: 不可以的,就如同不能直接删除非空目录一个道理:

rebalance 时间预估

移除osd之前: 572 GB

 

移除osd以后: 399GB

应该说有 572-399 = 173GB的数据需要找回来, 然后计算带宽就行了,我这里的恢复速度也就 70MB/s ,如此计算的话: 173*1024/70/60=42 分钟

一般来讲,每秒700MB的网络才算正常,那样的话4分钟就能搞定

 

我的实际情况: 18:16:04 开始恢复, 18:46 的时候才恢复情况如下:(30分钟大约 50% 的样子)

结论:

crush要搞明白

关于mactap的使用

在使用neutron的provider网络时,使用linuxbridge做驱动,配置是这样的:

提供一个设置了IP的网络设备(不能是bridge)

当启用该网络时,linuxbridge会创建一个bridge,将配置中的IP配置到该bridge上,然后,把配置的设备插到该bridge上

其实,我不想把宿主机上唯一的网卡给neutron,于是:

  1. 在宿主机网卡上配置一个bridge
  2. 把宿主机IP配置在该bridge上
  3. 创建一个设备对儿
  4. 设备对的一端叫veth@br0,插到上面创建的bridge上
  5. 设备对儿的另一段叫veth@neutron,配置一个IP,把该IP和veth@neutron写到neutron的配置文件中

这样neutron只需要操作veth@neutron就行了

这样基本是可以的,唯一的问题在于veth@neutron这个名字里面的@不招待见,neutron服务会报错, 修改个名字就行了

续: veth@br0 的命名也是会遭到抵制的,在使用ip link list的时候,会出现这样一个设备:

似乎@也是一个特殊字符,如果@出现两次,则linuxbridge代码中会出现异常,如下:

显然,这里只觉得设备名称最多有一个@

 

相关脚本:

网卡绑定实践

需求:

期望通过绑定多块网卡提高吞吐量,哪怕是只有一对机器之间的访问,最好也能提高吞吐量。

实践:

服务器上绑定em0 em1; 使用round-robin模式,确实能看到服务器发出去的数据包是在两个网卡间交替进行的,ping一个地址就能看到;

交换机需要做端口聚合设置,使用的是H3C S5500-48P-SI , 负载均衡模式中没有round-robin,只能根据mac、ip地址之类进行负载均衡,于是乎,对于单个连接来讲,进入服务器的流量其实是不均衡的。

 

为什么h3c不提供round-robin ?

openstack kvm 磁盘限速

设置:

读写最大10MB/s,iops最大50/s

  • 设置flavor, 在flavor上添加属性

  • 通过virsh dumpxml验证:

  • 验证

关于对卷的限速: http://ceph.com/planet/openstack-ceph-rbd-and-qos/

The disk I/O options are:

  • disk_read_bytes_sec
  • disk_read_iops_sec
  • disk_write_bytes_sec
  • disk_write_iops_sec
  • disk_total_bytes_sec
  • disk_total_iops_sec

参考: https://docs.openstack.org/nova/pike/admin/flavors.html

对于单独创建的卷来讲,可以在创建卷时指定卷类型,而卷类型可以预先关联已定义好的qos规格的,如:

 

注意:

  1.  对于创建虚拟机时使用新建卷的情况,该限速没有被应用,应该是bug吧
  2. 官方文档的一点儿要问题
  3. openstack的dashboard上也有一些误导的地方:

    这里的提示仅仅可以当做是示例,真正需要什么就写什么就行了,如,关于磁盘限速的相关键为:

    • read_bytes_sec
    • read_iops_sec
    • write_bytes_sec
    • write_iops_sec
    • total_bytes_sec
    • total_iops_sec
      注意: 这里不需要上面所谓的 disk_ 前缀

 

cephfs

  1. 一个cephfs可以add多个data pool,下面以单独的名为cephfs_data 的data pool为例说明
  2. 每个文件系统中的文件都在cephfs_data 这个pool中产生前缀相同的多个object,如:

    产生3个rados object

    三个对象分别在不同的pg、不同的osd上:
  3. 文件删除后,rados object会不立即消失,至少是一个异步的过程,可能几秒后才被删除