• OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)


    1 OSD扩容/缩容

    1.1 横向扩容(scale out)

    横向扩容:简单的理解,就是增加节点,通过增加节点来达到增加容量的目的

    1、部署环境,参见《02 Ceph集群规划及部署mimic》,按照所有标注node节点的执行,包括安装环境准备,用户创建,配置源,安装ceph等;

    2、ceph-deploy osd create --data {data-disk} {node-name} 同步配置文件

    3、添加OSD

    1.2 纵向扩容(scale up)

    纵向扩容:通过增加现有节点的硬盘(OSD)来达到增加容量的目的;

    (1)确认osd容量情况

    [cephuser@cephmanager01 cephcluster]$ sudo ceph -s
    [cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    (2) 查看磁盘信息和分区信息

    # node节点(osd)查看,本例在cephnode01、cephnode02、cephnode03上需要添加/dev/sdf
    [root@cephnode001 ~]# lsblk
    [root@cephnode001 ~]# fdisk -l
    # manager节点上查看
    [cephuser@cephmanager01 cephcluster]$ ceph-deploy disk list cephnode001 cephnode002 cephnode003

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    如果添加的盘上面有分区,可以通过如下命令清除(分区上的数据也会被清除)

    ceph-deploy disk zap {osd-server-name} {disk-name}

    # 清除cephmanager002上的/dev/sdf1和/dev/sdf2分区
    # ceph-deploy disk zap cephmanager002 /dev/sdf1 /dev/sdf2

    (3)添加OSD

    # 添加cephnode001的/dev/sdf
    [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode001
    # 添加cephnode002的/dev/sdf
    [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode002
    # 添加cephnode003的/dev/sdf
    [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode003

    (4)确认添加结果

    [cephuser@cephmanager01 ~]$ sudo ceph -s
    [cephuser@cephmanager01 ~]$ sudo ceph osd tree

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    1.3 缩容:删除OSD

    ​ 删除osd,一般分两种情况,一种情况是服务故障,这个时候重启有故障的osd即可,如下:

    [root@cephnode002 ceph]# systemctl restart ceph-osd@5.service

    ​ 另外一种情况是物理坏块,特别是在即将坏的过程中,对集群性能影响极大,可以通过查看日志和延迟情况来确认,如下.这种情况可以先踢掉故障osd。

    [root@cephmanager01 ~]# ceph osd perf

    这里以cephnode001上的osd.12为例

    步骤1:停止相应OSD服务

    此步骤需要在Down掉的OSD所在节点上操作,

    [root@cephnode001 ~]# systemctl stop ceph-osd@12

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    步骤2:取消OSD挂载

    安装OSD时,会将osd.12挂载至/var/lib/ceph/osd/ceph-12,因此,删除OSD时,需要首先取消OSD挂载

    # 查看osd.12的源数据信息
    [root@cephnode001 ~]# ceph osd metadata 12 
    "bluestore_bdev_partition_path": "/dev/dm-7"
    [root@cephnode001 ~]# ll /dev/mapper/*  |grep dm-7
    [root@cephnode001 ~]# umount /var/lib/ceph/osd/ceph-12/

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    这里磁盘路径是/dev/sdf

    步骤3: 设置OSD为OUT

    # 将osd.12的状态设置为out,对应权重reweight会变为0
    [cephuser@cephmanager01 cephcluster]$ sudo ceph osd out 12

    步骤4:删除OSD

    #从集群中删除
    [cephuser@cephmanager01 cephcluster]$ sudo ceph osd rm osd.12
    # 从CRUSH中删除,然后通过ceph osd crush dump确认没有对应信息
    [cephuser@cephmanager01 cephcluster]$ sudo ceph osd crush rm osd.12
    # 删除osd.12的认证信息,然后通过ceph auth list确认有没有对应信息
    [cephuser@cephmanager01 cephcluster]$ sudo ceph auth del osd.12

    步骤5:清空已删除磁盘中的内容

    # 确认osd.12已经移除
    [cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree
    # 清空磁盘中的数据
    [root@cephnode001 ~]# wipefs -af /dev/sdf

    确认osd.12已经移除,同时/dev/sdf已经没有挂载信息

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    1.4 换盘

    可以简单的理解为删除osd(详见1.3)和添加OSD(相见1.2)的过程;

    2 REBALANCING数据重平衡

    2.1 数据重平衡演示

    ​ 当有新的osd加入集群或者移除了osd,就会把状态上报给Monitor,Monitor知道了osd map发生了变化就会触发rebalancing,确保pg能够平滑的移动到各个osd上。以pg为整体进行数据重平衡,重平衡的过程中可能会影响性能。一次性加入的osd越多,数据rebalancing就越频繁,业务也可能因此受到影响。生产环境中,强烈建议一次只添加一个osd,最大限度的减少性能和业务的影响。

    (1)准备数据文件

    # 或者拷贝一些大文件到rbd或者cephfs里面
    [root@localhost ~]# cp -r project/ /cephfs
    [root@localhost ~]# cp -r project/ /ceph_disk_rbd

    (2)添加osd或者删除osd,或者直接停掉单个osd的服务

    # 添加cephnode001的/dev/sdf, 由于刚刚我们删除了,这里需要zap一下该磁盘
    [cephuser@cephmanager01 cephcluster]$ ceph-deploy disk zap cephnode001 /dev/sdf
    [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode001
    # 确认已经添加进来
    [cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree

    (3)查看数据平衡情况

    # 查看平衡情况
    [root@cephmanager01 ~]#  ceph -s

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    2.2 临时关闭rebalance

    ​ 当在做rebalance的时候,每个osd都会按照osd_max_backfills指定数量的线程来同步,如果该数值比较大,同步会比较快,但是会影响部分性能;另外数据同步时,是走的cluster_network,而客户端连接是用的public_network,生产环境建议这两个网络用万兆网络,较少网络传输的影响;

    [root@cephnode001 ~]#  ceph --admin-daemon /var/run/ceph/ceph-osd.12.asok config show |grep max_backfills

    ​ 同样,为了避免业务繁忙时候rebalance带来的性能影响,可以对rebalance进行关闭;当业务比较小的时候,再打开;

    # 设置标志位
    [root@cephmanager01 ~]# ceph osd set norebalance
    # 关闭数据填充
    [root@cephmanager01 ~]# ceph osd set nobackfill

    实战01:OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)

    取消继续进行rebalance:

    [root@cephmanager01 ~]# ceph osd unset nobackfill
    [root@cephmanager01 ~]# ceph osd unset norebalance

    3 数据一致性检查

    ​ ceph会定期去检查指定冗余副本数的数据是否一致。分两种情况检查:

    3.1 scrub

    ​ 比较轻量级的检查,主要检查元数据(metadata )信息,比如文件名、object属性、大小等,如果不一样,就会从主pg复制一份过去。一般每天都会检查。

    # 获取pgid
    [root@cephmanager01 ~]# ceph pg dump
    # 数据一致性检查
    [root@cephmanager01 ~]# ceph pg scrub 2.19
    # 查看对应的scrub信息
    [root@cephmanager01 ~]# ceph -s

    3.2 deeper scrubbing

    ​ 深度一致性检查,主要对比数据内容。数据量比较大的时候,这个检查相对来说比较耗费资源。一般每周检查。

    # 深度检查
    [root@cephmanager01 ~]# ceph pg deep-scrub 2.19
    # 查看对应的scrub信息
    [root@cephmanager01 ~]# ceph -s

    也可以对所有的pg做deep-scrub操作

  • 相关阅读:
    httpmime-session 会话保持
    5.5 准备创建bean
    5.4 获取单例
    当有“Button1.Attributes.Add("onclick", "return confirm('你确定要保存修改吗?')");”时,验证控件失效的解决方法
    asp.net刷新本页面的六种方法总结
    return 、break和continue的区别和作用
    OnClientClick事件
    抽象接口
    C# 中的EventHandler实例详解-转
    GridView点击行触发SelectedIndexChanged事件
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/13743502.html
Copyright © 2020-2023  润新知