Ceph Jewel 版本osd添加和删除

增加/删除 OSD

如果您的集群已经在运行,你可以在运行时添加或删除 OSD 。

增加 OSD

你迟早要扩容集群, Ceph 允许在运行时增加 OSD 。在 Ceph 里,一个 OSD 一般是一个守护进程,它运行在硬盘之上,如果你有多个硬盘,可以给每个硬盘启动一个ceph-osd守护进程。

通常,你应该监控集群容量,看是否达到了容量上限,因为达到了它的 near full 比率后,要增加一个或多个 OSD 来扩容。

Warning

不要等空间满了再增加 OSD ,空间使用率达到 near full 比率后, OSD 失败可能导致集群空间占满。

部署硬件

如果你通过增加主机来增加 OSD ,关于 OSD 服务器硬件的配置请参见硬件推荐。要把一台 OSD 主机加入到集群,首先要安装最新版的 Linux ,而且存储硬盘要做好必要的准备,详情参见文件系统推荐

把 OSD 主机添加到集群机架上,连接好网络、确保网络通畅。详情见网络配置参考

安装必要软件

在手动部署的集群里,你必须手动安装 Ceph 软件包,详情见安装 Ceph(手动)。你应该配置一个无密码登录 SSH 的用户,且他有 root 权限。

增加 OSD (手动)

此过程要设置一个 ceph-osd 守护进程,让它使用一个硬盘,且让集群把数据发布到 OSD 。如果一台主机有多个硬盘,可以重复此过程,把每个硬盘配置为一个 OSD 。要添加 OSD ,要依次创建数据目录、把硬盘挂载到目录、把 OSD 加入集群、然后把它加入 CRUSH map中。

往 CRUSH map里添加 OSD 时建议设置权重,硬盘容量每年增长 40% ,所以较新的 OSD 主机拥有更大的空间(即它们可以有更大的权重)。

Tip

Ceph 喜欢统一的硬件,与存储池无关。如果你要新增容量不一的驱动器,还需调整它们的权重。但是,为实现最佳性能,CRUSH 的分级结构最好按类型、容量定义。

  1. 创建 OSD 。如果未指定 UUID , OSD 启动时会自动生成一个。下列命令会输出 OSD 号,后续步骤你会用到。

    ceph osd create [{uuid} [{id}]]
    

如果指定了可选参数 {id} ,那么它将作为 OSD id 。要注意,如果此数字已使用,此命令会出错。

Warning
一般来说,我们不建议指定 {id} 。因为 ID 是按照数组分配的,跳过一些依然会浪费内存;尤其是跳过太多、或者集群很大时,会更明显。若未指定 {id} ,将用最小可用数字

  1. 在新 OSD 主机上创建默认目录。

    ssh {new-osd-host}
    sudo mkdir /var/lib/ceph/osd/ceph-{osd-number}
    
  2. 如果准备用于 OSD 的是单独的而非系统盘,先把它挂载到刚创建的目录下:

    ssh {new-osd-host}
    sudo mkfs -t {fstype} /dev/{drive}
    sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/ceph-{osd-number}
    
  3. 初始化 OSD 数据目录。

    ssh {new-osd-host}
    ceph-osd -i {osd-num} --mkfs --mkkey
    

    运行ceph-osd时目录必须是空的。

  4. 注册 OSD 认证密钥,ceph-{osd-num} 路径里的 ceph 值应该是$cluster-$id ,如果你的集群名字不是 ceph,那就用改过的名字。

    ceph auth add osd.{osd-num} osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-{osd-num}/keyring
    
  5. 把 OSD 加入 CRUSH 图,这样它才开始接收数据。用 ceph osd crush add 命令把 OSD 加入 CRUSH 分级结构的合适位置。如果你指定了不止一个桶,此命令会把它加入你所指定的桶中最具体的一个,并且把此桶挪到你指定的其它桶之内。重要:如果你只指定了 root 桶,此命令会把 OSD 直接挂到 root 下面,但是 CRUSH 规则期望它位于主机内。

    若用的是 v0.48 版,执行下列命令:

    ceph osd crush add {id} {name} {weight}  [{bucket-type}={bucket-name} ...]
    

    若用的是 v0.56 及更高版,执行下列命令:

    ceph osd crush add {id-or-name} {weight}  [{bucket-type}={bucket-name} ...]
    

    你也可以反编译 CRUSH 图、把 OSD 加入设备列表、以桶的形式加入主机(如果它没在 CRUSH 图里)、以条目形式把设备加入主机、分配权重、重编译并应用它。详情参见增加/移动 OSD

Argonaut 0.48 版最佳实践

为降低对用户 I/O 性能的影响,加入 CRUSH 图时应该把 OSD 的初始权重设为 0 ,然后每次增大一点、逐步增大 CRUSH 权重。例如每次增加 0.2

ceph osd crush reweight {osd-id} .2

迁移完成前,可以依次把权重重置为 0.6 等等,直到达到期望权重。

为降低 OSD 失败的影响,你可以设置:

mon osd down out interval = 0

它防止挂了的 OSD 自动被标记为 out ,然后逐步降低其权重:

ceph osd reweight {osd-num} .8

还是等着集群完成数据迁移,然后再次调整权重,直到权重为 0 。注意,这会阻止集群在发生故障时自动重复制数据,所以要确保监控的及时性,以便管理员迅速介入。

注意,以上经验在 Bobtail 及后续版本已不再必要。

启动 OSD

把 OSD 加入 Ceph 后, OSD 就在配置里了。然而它还没运行,它现在的状态为 out 。你必须先启动 OSD 它才能收数据。可以用管理主机上的service ceph 、或从 OSD 所在主机启动。

在 Debian/Ubuntu 上用 Upstart。

sudo start ceph-osd id={osd-num}

在 CentOS/RHEL 上用 sysvinit 。

sudo /etc/init.d/ceph start osd.{osd-num}

一旦你启动了 OSD ,其状态就变成了 upin

观察数据迁移

把新 OSD 加入 CRUSH 图后, Ceph 会重新均衡服务器,一些归置组会迁移到新 OSD 里,你可以用 ceph 命令观察此过程。

ceph -w

你会看到归置组状态从 active+clean 变为 active, some degraded objects (有降级的对象)、且迁移完成后回到 active+clean 状态。( Ctrl-c 退出)

删除 OSD (手动)

要想缩减集群尺寸或替换硬件,可在运行时删除 OSD 。在 Ceph 里,一个 OSD 通常是一台主机上的一个 ceph-osd守护进程、它运行在一个硬盘之上。如果一台主机上有多个数据盘,你得挨个删除其对应ceph-osd。通常,操作前应该检查集群容量,看是否快达到上限了,确保删除 OSD 后不会使集群达到near full 比率。

Warning

删除 OSD 时不要让集群达到full ratio 值,删除 OSD 可能导致集群达到或超过 full ratio值。

把 OSD 踢出集群[]

删除 OSD 前,它通常是in 的,要先把它踢出集群,以使 Ceph 启动重新均衡、把数据拷贝到其他 OSD 。

ceph osd out {osd-num}

观察数据迁移

一旦把 OSD 踢出集群, Ceph 就会开始重新均衡集群、把归置组迁出将删除的 OSD 。你可以用 ceph 工具观察此过程。

ceph -w

你会看到归置组状态从active+clean 变为 active, some degraded objects 、迁移完成后最终回到 active+clean 状态。( Ctrl-c 中止)

Note

有时候,(通常是只有几台主机的“小”集群,比如小型测试集群)拿出( out )某个 OSD 可能会使 CRUSH 进入临界状态,这时某些 PG 一直卡在active+remapped状态。如果遇到了这种情况,你应该把此 OSD 标记为in ,用这个命令:

ceph osd in {osd-num}

等回到最初的状态后,把它的权重设置为 0 ,而不是标记为out ,用此命令:

ceph osd crush reweight osd.{osd-num} 0

执行后,你可以观察数据迁移过程,应该可以正常结束。把某一 OSD 标记为 out 和权重改为 0 的区别在于,前者,包含此 OSD 的桶、其权重没变;而后一种情况下,桶的权重变了(降低了此 OSD 的权重)。某些情况下, reweight 命令更适合“小”集群。

停止 OSD

把 OSD 踢出集群后,它可能仍在运行,就是说其状态为upout。删除前要先停止 OSD 进程。

ssh {osd-host}
sudo /etc/init.d/ceph stop osd.{osd-num}

停止 OSD 后,状态变为down

删除 OSD

此步骤依次把一个 OSD 移出集群 CRUSH 图、删除认证密钥、删除 OSD 图条目、删除ceph.conf 条目。如果主机有多个硬盘,每个硬盘对应的 OSD 都得重复此步骤。

  1. 删除 CRUSH 图的对应 OSD 条目,它就不再接收数据了。你也可以反编译 CRUSH 图、删除 device 列表条目、删除对应的 host 桶条目或删除 host 桶(如果它在 CRUSH 图里,而且你想删除主机),重编译 CRUSH 图并应用它。详情参见删除 OSD

    ceph osd crush remove {name}
    
  2. 删除 OSD 认证密钥:

    ceph auth del osd.{osd-num}</pre>
    

    ceph-{osd-num} 路径里的 ceph值是$cluster-$id ,如果集群名字不是 ceph,这里要更改。

  3. 删除 OSD 。

    ceph osd rm {osd-num}
    #for example
    ceph osd rm 1
    
  4. 登录到保存ceph.conf 主拷贝的主机。

    ssh {admin-host}
    cd /etc/ceph
    vim ceph.conf</pre>
    
  5. 从ceph.conf配置文件里删除对应条目。

     [osd.1]
         host = {hostname}
    
  6. 从保存ceph.conf主机作为拷贝的主机,把更新过的ceph.conf拷贝到集群其他主机的/etc/ceph/目录下。

备注:

此内容来自于ceph社区。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容