操作指南
第 1 章 管理存储集群大小 复制链接链接已复制到粘贴板!
作为存储管理员,您可以添加或删除 Ceph 监视器或 OSD 作为存储容量扩展或缩小来管理存储集群大小。
如果您是第一次引导存储集群,请参阅 Red Hat Enterprise Linux 或 Ubuntu 的 Red Hat Ceph Storage 3 安装指南。
1.1. 先决条件 复制链接链接已复制到粘贴板!
- 一个正在运行的 Red Hat Ceph Storage 集群。
1.2. Ceph Monitors 复制链接链接已复制到粘贴板!
Ceph 监控器是维护 cluster map 主节点副本的轻量级进程。所有 Ceph 客户端都联系 Ceph 监控器并检索 cluster map 的当前副本,使客户端能够绑定到池以及读取和写入数据。
Ceph 监视器使用 Paxos 协议的变体来建立关于集群中映射和其他重要信息的共识。由于 Paxos 的性质,Ceph 需要大多数监视器正在运行才能建立仲裁,从而建立共识。
红帽至少需要三个监视器在独立的主机上接受对生产环境集群的支持。
红帽建议部署奇数个 monitor。奇数的监控器数量比监视器数要高到故障的弹性。例如,若要在两个监控部署中维护仲裁,Ceph 无法容忍任何错误;具有三个监视器,一个故障;四个监视器故障;一个故障,有五个 monitor,两个失败。这就是为什么推荐奇数个数字。Ceph 总结需要大部分的监控器正在运行,而且能够相互通信,另外两个(共三个三个),共三个(共 4 个),等等。
对于多节点 Ceph 存储集群的初始部署,红帽需要三个监视器,当存在超过三个监视器的有效需求时,红帽需要三个监视器。
由于监控器是轻量级的,因此可以在与 OpenStack 节点相同的主机上运行。但是,红帽建议在单独的主机上运行 monitor。
红帽不支持在同一个节点上并定位 Ceph Monitor 和 OSD。这样做可能会对存储集群性能造成负面影响。
红帽仅支持在容器化环境中找到 Ceph 服务。
当您从存储集群中移除监控器时,请考虑 Ceph 监视器使用 Paxos 协议来建立主存储集群映射的共识。您必须有足够的监控器来建立仲裁。
其它资源
- 有关所有支持的 Ceph 配置,请参阅 Red Hat Ceph Storage 支持的配置 知识库文章。
1.2.1. 准备新的 Ceph Monitor 节点 复制链接链接已复制到粘贴板!
在向存储集群添加新 Ceph Monitor 时,请将它们部署到单独的节点上。节点硬件必须统一用于存储集群中的所有节点。
先决条件
- 网络连接。
-
有到新节点的
root
访问权限。 - 请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装红帽 Ceph 存储 章节的要求。
步骤
- 将新节点添加到服务器机架。
- 将新节点连接到网络。
- 在新节点上安装 Red Hat Enterprise Linux 7 或 Ubuntu 16.04。
安装 NTP 并配置可靠的时间源:
yum install ntp
[root@monitor ~]# yum install ntp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用防火墙,打开 TCP 端口 6789:
Red Hat Enterprise Linux
firewall-cmd --zone=public --add-port=6789/tcp firewall-cmd --zone=public --add-port=6789/tcp --permanent
[root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
iptables -I INPUT 1 -i $NIC_NAME -p tcp -s $IP_ADDR/$NETMASK_PREFIX --dport 6789 -j ACCEPT
iptables -I INPUT 1 -i $NIC_NAME -p tcp -s $IP_ADDR/$NETMASK_PREFIX --dport 6789 -j ACCEPT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu 示例
sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.11/24 --dport 6789 -j ACCEPT
[user@monitor ~]$ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.11/24 --dport 6789 -j ACCEPT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2. 使用 Ansible 添加 Ceph Monitor 复制链接链接已复制到粘贴板!
红帽建议一次添加两个 monitor,以维护奇数的 monitor。例如,如果您在存储集群中有三个监控器,红帽建议将其扩展为五个监控器。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
有到新节点的
root
访问权限。
步骤
在
/etc/ansible/hosts
Ansible 清单文件中添加新 Ceph Monitor 节点,位于[mons]
部分:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Ansible 是否可以联系 Ceph 节点:
ansible all -m ping
# ansible all -m ping
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将目录改为 Ansible 配置目录:
cd /usr/share/ceph-ansible
# cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible playbook:
ansible-playbook site.yml
$ ansible-playbook site.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在 Ceph 的容器化部署中添加新监控器,请运行
site-docker.yml
playbook:ansible-playbook site-docker.yml
$ ansible-playbook site-docker.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 Ansible playbook 完成后,新的监控节点将位于存储集群中。
1.2.3. 使用命令行界面添加 Ceph Monitor 复制链接链接已复制到粘贴板!
红帽建议一次添加两个 monitor,以维护奇数的 monitor。例如,如果您在存储集群中有三个监控器,红帽建议扩展太五个 monitor。
红帽建议每个节点只运行一个 Ceph monitor 守护进程。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
具有对正在运行的 Ceph 监控节点的
root
访问权限,以及对新的监控节点的访问权限。
步骤
添加 Red Hat Ceph Storage 3 监控软件仓库。
Red Hat Enterprise Linux
subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
[root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
sudo bash -c 'umask 0077; echo deb https://$CUSTOMER_NAME:$CUSTOMER_PASSWORD@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
[user@monitor ~]$ sudo bash -c 'umask 0077; echo deb https://$CUSTOMER_NAME:$CUSTOMER_PASSWORD@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' [user@monitor ~]$ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新的 Ceph Monitor 节点上安装
ceph-mon
软件包:Red Hat Enterprise Linux
yum install ceph-mon
[root@monitor ~]# yum install ceph-mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
sudo apt-get install ceph-mon
[user@monitor ~]$ sudo apt-get install ceph-mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为确保存储集群在启动时标识监控器或重启时,请将 monitor 的 IP 地址添加到 Ceph 配置文件。
将新监控器添加到存储集群中现有监控节点上的 Ceph 配置文件的
[mon]
或[global]
部分。mon_host
设置,这是可解析的主机名或 IP 地址列表,由 "," 或 "; 或 "; 分隔。另外,您还可以在 Ceph 配置文件中为新的监控节点创建特定的部分:Syntax
[mon] mon host = $MONITOR_IP:$PORT $MONITOR_IP:$PORT ... $NEW_MONITOR_IP:$PORT
[mon] mon host = $MONITOR_IP:$PORT $MONITOR_IP:$PORT ... $NEW_MONITOR_IP:$PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
[mon.$MONITOR_ID] host = $MONITOR_ID mon addr = $MONITOR_IP
[mon.$MONITOR_ID] host = $MONITOR_ID mon addr = $MONITOR_IP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使监视器成为初始仲裁组的一部分,还必须将主机名添加到 Ceph 配置文件的
[global]
部分中的mon_initial_members
参数。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要生产存储集群 REQUIRE 至少三个 monitor 在
mon_initial_members
和mon_host
中设置,以确保高可用性。如果只有一个初始 monitor 的存储集群增加了两个监视器,但没有将它们添加到mon_initial_members
和mon_host
,则初始监控器的故障会导致存储群集锁定。如果您要添加的监控器替换为mon_initial_members
和mon_host
的一部分的监控器,则必须将新监视器添加到mon_initial_members
和mon_host
中。将更新的 Ceph 配置文件复制到所有 Ceph 节点和 Ceph 客户端:
Syntax
scp /etc/ceph/$CLUSTER_NAME.conf $TARGET_NODE_NAME:/etc/ceph
scp /etc/ceph/$CLUSTER_NAME.conf $TARGET_NODE_NAME:/etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp /etc/ceph/ceph.conf node4:/etc/ceph
[root@monitor ~]# scp /etc/ceph/ceph.conf node4:/etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新监控节点上创建监控器的数据目录:
Syntax
mkdir /var/lib/ceph/mon/$CLUSTER_NAME-$MONITOR_ID
mkdir /var/lib/ceph/mon/$CLUSTER_NAME-$MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
mkdir /var/lib/ceph/mon/ceph-node4
[root@monitor ~]# mkdir /var/lib/ceph/mon/ceph-node4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在正在运行的监控节点上和新的监控节点上创建一个临时目录,以保留此过程需要的文件。该目录应该与上一步中创建的监控默认目录不同,并可在完成所有步骤后删除:
Syntax
mkdir $TEMP_DIRECTORY
mkdir $TEMP_DIRECTORY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
mkdir /tmp/ceph
[root@monitor ~]# mkdir /tmp/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 admin 密钥从正在运行的监控节点复制到新的监控节点,以便运行
ceph
命令:Syntax
scp /etc/ceph/$CLUSTER_NAME.client.admin.keyring $TARGET_NODE_NAME:/etc/ceph
scp /etc/ceph/$CLUSTER_NAME.client.admin.keyring $TARGET_NODE_NAME:/etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp /etc/ceph/ceph.client.admin.keyring node4:/etc/ceph
[root@monitor ~]# scp /etc/ceph/ceph.client.admin.keyring node4:/etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从正在运行的监控器节点中,检索监控器密钥环:
Syntax
ceph auth get mon. -o /$TEMP_DIRECTORY/$KEY_FILE_NAME
ceph auth get mon. -o /$TEMP_DIRECTORY/$KEY_FILE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph auth get mon. -o /tmp/ceph/ceph_keyring.out
[root@monitor ~]# ceph auth get mon. -o /tmp/ceph/ceph_keyring.out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从正在运行的监控器节点中,检索 monitor 映射:
Syntax
ceph mon getmap -o /$TEMP_DIRECTORY/$MONITOR_MAP_FILE
ceph mon getmap -o /$TEMP_DIRECTORY/$MONITOR_MAP_FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph mon getmap -o /tmp/ceph/ceph_mon_map.out
[root@monitor ~]# ceph mon getmap -o /tmp/ceph/ceph_mon_map.out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将收集的监控器数据复制到新监控节点上:
Syntax
scp /tmp/ceph $TARGET_NODE_NAME:/tmp/ceph
scp /tmp/ceph $TARGET_NODE_NAME:/tmp/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp /tmp/ceph node4:/tmp/ceph
[root@monitor ~]# scp /tmp/ceph node4:/tmp/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您之前收集的数据准备新的监控器数据目录。您必须指定 monitor 映射的路径,以从监控器检索仲裁信息,以及它们的
fsid
。您还必须指定到监控器密钥环的路径:Syntax
ceph-mon -i $MONITOR_ID --mkfs --monmap /$TEMP_DIRECTORY/$MONITOR_MAP_FILE --keyring /$TEMP_DIRECTORY/$KEY_FILE_NAME
ceph-mon -i $MONITOR_ID --mkfs --monmap /$TEMP_DIRECTORY/$MONITOR_MAP_FILE --keyring /$TEMP_DIRECTORY/$KEY_FILE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-mon -i node4 --mkfs --monmap /tmp/ceph/ceph_mon_map.out --keyring /tmp/ceph/ceph_keyring.out
[root@monitor ~]# ceph-mon -i node4 --mkfs --monmap /tmp/ceph/ceph_mon_map.out --keyring /tmp/ceph/ceph_keyring.out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于具有自定义名称的存储集群,请在
/etc/sysconfig/ceph
文件中添加以下行:Red Hat Enterprise Linux
echo "CLUSTER=<custom_cluster_name>" >> /etc/sysconfig/ceph
[root@monitor ~]# echo "CLUSTER=<custom_cluster_name>" >> /etc/sysconfig/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph
[user@monitor ~]$ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新新监控节点上的所有者和组权限:
Syntax
chown -R $OWNER:$GROUP $DIRECTORY_PATH
chown -R $OWNER:$GROUP $DIRECTORY_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
chown -R ceph:ceph /var/lib/ceph/mon chown -R ceph:ceph /var/log/ceph chown -R ceph:ceph /var/run/ceph chown -R ceph:ceph /etc/ceph
[root@monitor ~]# chown -R ceph:ceph /var/lib/ceph/mon [root@monitor ~]# chown -R ceph:ceph /var/log/ceph [root@monitor ~]# chown -R ceph:ceph /var/run/ceph [root@monitor ~]# chown -R ceph:ceph /etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新监控节点上启用并启动
ceph-mon
进程:Syntax
systemctl enable ceph-mon.target systemctl enable ceph-mon@$MONITOR_ID systemctl start ceph-mon@$MONITOR_ID
systemctl enable ceph-mon.target systemctl enable ceph-mon@$MONITOR_ID systemctl start ceph-mon@$MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl enable ceph-mon.target systemctl enable ceph-mon@node4 systemctl start ceph-mon@node4
[root@monitor ~]# systemctl enable ceph-mon.target [root@monitor ~]# systemctl enable ceph-mon@node4 [root@monitor ~]# systemctl start ceph-mon@node4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.4. 使用 Ansible 删除 Ceph Monitor 复制链接链接已复制到粘贴板!
要使用 Ansible 删除 Ceph Monitor,请使用 shrink-mon.yml
playbook。
先决条件
- Ansible 管理节点.
- 由 Ansible 部署的正在运行的红帽 Ceph 存储集群。
步骤
更改到
/usr/share/ceph-ansible/
目录。cd /usr/share/ceph-ansible
[user@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
infrastructure-playbooks
目录中的shrink-mon.yml
playbook 复制到当前目录。cp infrastructure-playbooks/shrink-mon.yml .
[root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-mon.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Red Hat Ceph Storage 的普通或容器化部署运行
shrink-mon.yml
playbook:ansible-playbook shrink-mon.yml -e mon_to_kill=<hostname> -u <ansible-user>
[user@admin ceph-ansible]$ ansible-playbook shrink-mon.yml -e mon_to_kill=<hostname> -u <ansible-user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
<hostname>
带有 monitor 节点的短主机名。要删除更多监视器,请使用逗号分隔其主机名。 -
<ansible-user>
带有 Ansible 用户的名称
例如,要删除位于带有
monitor1
主机名的节点上的 monitor:ansible-playbook shrink-mon.yml -e mon_to_kill=monitor1 -u user
[user@admin ceph-ansible]$ ansible-playbook shrink-mon.yml -e mon_to_kill=monitor1 -u user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- 从集群中的所有 Ceph 配置文件删除 Monitor 条目。
确保 monitor 已成功移除。
ceph -s
[root@monitor ~]# ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 有关安装 Red Hat Ceph Storage 的更多信息,请参见 Red Hat Enterprise Linux 或 Ubuntu 的安装指南。
1.2.5. 使用命令行界面删除 Ceph Monitor 复制链接链接已复制到粘贴板!
删除 Ceph Monitor 涉及从存储集群中移除 ceph-mon
守护进程,并更新存储集群映射。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
具有对监控节点的
root
访问权限。
步骤
停止 monitor 服务:
Syntax
systemctl stop ceph-mon@$MONITOR_ID
systemctl stop ceph-mon@$MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl stop ceph-mon@node3
[root@monitor ~]# systemctl stop ceph-mon@node3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存储集群中移除该监控器:
Syntax
ceph mon remove $MONITOR_ID
ceph mon remove $MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph mon remove node3
[root@monitor ~]# ceph mon remove node3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
默认情况下,从 Ceph 配置文件中删除 monitor 条目,默认为
/etc/ceph/ceph.conf
。 将 Ceph 配置文件重新分发到存储集群中所有剩余的 Ceph 节点:
Syntax
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$TARGET_NODE_NAME:/etc/ceph/
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$TARGET_NODE_NAME:/etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp /etc/ceph/ceph.conf root@$node1:/etc/ceph/
[root@monitor ~]# scp /etc/ceph/ceph.conf root@$node1:/etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅限容器。禁用监控器服务:
注意仅在使用容器时执行第 5-9 步。
Syntax
systemctl disable ceph-mon@$MONITOR_ID
systemctl disable ceph-mon@$MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl disable ceph-mon@node3
[root@monitor ~]# systemctl disable ceph-mon@node3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅限容器。从 systemd 中删除服务:
rm /etc/systemd/system/ceph-mon@.service
[root@monitor ~]# rm /etc/systemd/system/ceph-mon@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅限容器。重新载入 systemd Manager 配置:
systemctl daemon-reload
[root@monitor ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅限容器。重置失败 monitor 单元的状态:
systemctl reset-failed
[root@monitor ~]# systemctl reset-failed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅限容器。删除
ceph-mon
RPM:docker exec node3 yum remove ceph-mon
[root@monitor ~]# docker exec node3 yum remove ceph-mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 归档监控器数据:
Syntax
mv /var/lib/ceph/mon/$CLUSTER_NAME-$MONITOR_ID /var/lib/ceph/mon/removed-$CLUSTER_NAME-$MONITOR_ID
mv /var/lib/ceph/mon/$CLUSTER_NAME-$MONITOR_ID /var/lib/ceph/mon/removed-$CLUSTER_NAME-$MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
mv /var/lib/ceph/mon/ceph-node3 /var/lib/ceph/mon/removed-ceph-node3
[root@monitor ~]# mv /var/lib/ceph/mon/ceph-node3 /var/lib/ceph/mon/removed-ceph-node3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除监控器数据:
Syntax
rm -r /var/lib/ceph/mon/$CLUSTER_NAME-$MONITOR_ID
rm -r /var/lib/ceph/mon/$CLUSTER_NAME-$MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
rm -r /var/lib/ceph/mon/ceph-node3
[root@monitor ~]# rm -r /var/lib/ceph/mon/ceph-node3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
1.2.6. 从不健康的存储集群中移除 Ceph Monitor 复制链接链接已复制到粘贴板!
此流程从不健康的存储集群中移除 ceph-mon
守护进程。具有放置组的不健康存储集群永久不 激活 + clean
。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
具有对监控节点的
root
访问权限。 - 至少一个正在运行的 Ceph Monitor 节点。
步骤
确定 Surviving monitor 并登录到该节点:
ceph mon dump ssh $MONITOR_HOST_NAME
[root@monitor ~]# ceph mon dump [root@monitor ~]# ssh $MONITOR_HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止
ceph-mon
守护进程并提取monmap
文件的副本:Syntax
systemctl stop ceph-mon@$MONITOR_ID ceph-mon -i $MONITOR_ID --extract-monmap $TEMPORARY_PATH
systemctl stop ceph-mon@$MONITOR_ID ceph-mon -i $MONITOR_ID --extract-monmap $TEMPORARY_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl stop ceph-mon@node1 ceph-mon -i node1 --extract-monmap /tmp/monmap
[root@monitor ~]# systemctl stop ceph-mon@node1 [root@monitor ~]# ceph-mon -i node1 --extract-monmap /tmp/monmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除非演示监控器:
Syntax
monmaptool $TEMPORARY_PATH --rm $MONITOR_ID
monmaptool $TEMPORARY_PATH --rm $MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
monmaptool /tmp/monmap --rm node2
[root@monitor ~]# monmaptool /tmp/monmap --rm node2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Surviving monitor map 以及 remove monitor(s)注入到 Surviving monitor 中:
Syntax
ceph-mon -i $MONITOR_ID --inject-monmap $TEMPORARY_PATH
ceph-mon -i $MONITOR_ID --inject-monmap $TEMPORARY_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-mon -i node1 --inject-monmap /tmp/monmap
[root@monitor ~]# ceph-mon -i node1 --inject-monmap /tmp/monmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. Ceph OSD 复制链接链接已复制到粘贴板!
当 Red Hat Ceph Storage 集群启动并运行时,您可以在运行时将 OSD 添加到存储集群中。
Ceph OSD 通常包含一个 ceph-osd
守护进程,用于一个存储驱动器及其在一个节点中的相关日志。如果节点有多个存储驱动器,则为每个驱动器映射一个 ceph-osd
守护进程。
红帽建议定期检查集群的容量,以查看它是否达到其存储容量的上限。当存储集群达到其 近 full
比率时,请添加一个或多个 OSD 来扩展存储集群的容量。
当您要减少 Red Hat Ceph Storage 集群或替换硬件的大小时,您也可以在运行时删除 OSD。如果节点有多个存储驱动器,您可能需要删除该驱动器的 ceph-osd
守护进程之一。通常,最好检查存储集群的容量,以确定您是否到达其容量的上端。确保在删除 OSD 时,存储集群不是其 接近的全满比率
。
不要让存储集群在添加 OSD 前达到 满
比率。在存储集群达到 接近的全满比率
后发生的 OSD 失败可能会导致存储集群超过 满
比率。Ceph 会阻止写入访问权限来保护数据,直到解决存储容量问题。在不考虑首先对 满
比率的影响的情况下,不要移除 OSD。
1.3.1. Ceph OSD 节点配置 复制链接链接已复制到粘贴板!
Ceph OSD 及其支持硬件应该类似于使用 OSD 的池的存储策略。Ceph 更倾向于在池间统一硬件,以实现一致的性能配置集。为获得最佳性能,请考虑采用相同类型或大小的驱动器的 CRUSH 层次结构。如需了解更多详细信息,请参阅 存储策略指南。
如果添加了 dissimilar 大小驱动器,则需要相应地调整其权重。将 OSD 添加到 CRUSH map 时,请考虑新 OSD 的权重。硬盘容量大约增加 40%,因此较新的 OSD 节点可能比存储集群中的旧节点更大的硬盘驱动器,即它们可能具有更高的权重。
在进行新的安装前,请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装 Red Hat Ceph Storage 的要求 章节。
1.3.2. 将容器 OSD ID 映射到驱动器 复制链接链接已复制到粘贴板!
有时需要确定容器化的 OSD 正在使用哪个驱动器。例如,如果 OSD 出现问题,您可能需要了解它用来验证驱动器状态的驱动器。另外,对于非容器化 OSD,您引用 OSD ID 以启动和停止它,但要启动和停止容器化 OSD,您必须引用它所使用的驱动器。
先决条件
- 在容器化环境中运行的红帽 Ceph 存储集群。
-
具有对容器主机的
root
访问权限。
步骤
查找容器名称。例如,要识别与
osd.5
关联的驱动器,请在运行osd.5
的容器节点上打开一个终端,然后运行docker ps
来列出所有容器:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
docker exec
对来自上一输出中的任何 OSD 容器名称运行ceph-volume lvm 列表
:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从这一输出中,您可以看到
osd.5
与/dev/sdb
关联。
1.3.3. 使用 Ansible 添加具有相同磁盘拓扑的 Ceph OSD 复制链接链接已复制到粘贴板!
对于具有相同磁盘拓扑的 Ceph OSD,Ansible 将添加与使用 /usr/share/ceph-ansible/group_vars/osds
文件的 devices:
部分中指定的相同 OSD 节点相同的 OSD 数量。
新的 Ceph OSD 节点与 OSD 的其余部分相同。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装红帽 Ceph 存储 章节的要求。
-
有到新节点的
root
访问权限。 - 与存储集群中其他 OSD 节点相同的 OSD 数据驱动器数量。
步骤
在
[osds]
部分的/etc/ansible/hosts
文件中添加 Ceph OSD 节点:示例
[osds] ... osd06 $NEW_OSD_NODE_NAME
[osds] ... osd06 $NEW_OSD_NODE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Ansible 能否访问 Ceph 节点:
ansible all -m ping
[user@admin ~]$ ansible all -m ping
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入 Ansible 配置目录:
cd /usr/share/ceph-ansible
[user@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
add-osd.yml
文件复制到/usr/share/ceph-ansible/
目录中:sudo cp infrastructure-playbooks/add-osd.yml .
[user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Ceph 的正常或容器化部署运行 Ansible playbook:
ansible-playbook add-osd.yml
[user@admin ceph-ansible]$ ansible-playbook add-osd.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在添加 OSD 时,如果 playbook 与
PG 没有报告为 active+clean
,请在all.yml
文件中配置以下变量来调整重试和延迟:OSD handler checks
# OSD handler checks handler_health_osd_check_retries: 50 handler_health_osd_check_delay: 30
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.4. 使用具有不同磁盘拓扑的 Ansible 添加 Ceph OSD 复制链接链接已复制到粘贴板!
对于具有不同磁盘拓扑的 Ceph OSD,可以通过两种方法将新的 OSD 节点添加到现有的存储集群中。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装红帽 Ceph 存储 章节的要求。
-
有到新节点的
root
访问权限。
步骤
第一方法
在
[osds]
部分下,将新的 Ceph OSD 节点添加到/etc/ansible/hosts
文件中:示例
[osds] ... osd06 $NEW_OSD_NODE_NAME
[osds] ... osd06 $NEW_OSD_NODE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/ansible/host_vars/
目录下,为每个新 Ceph OSD 节点创建一个新文件:Syntax
touch /etc/ansible/host_vars/$NEW_OSD_NODE_NAME
touch /etc/ansible/host_vars/$NEW_OSD_NODE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
touch /etc/ansible/host_vars/osd07
[root@admin ~]# touch /etc/ansible/host_vars/osd07
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑新文件,并将
devices:
和dedicated_devices:
部分添加到 文件中。在每个部分下,添加一个-
、空格,然后是此 OSD 节点的块设备名称的完整路径:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Ansible 是否可以访问所有 Ceph 节点:
ansible all -m ping
[user@admin ~]$ ansible all -m ping
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将目录改为 Ansible 配置目录:
cd /usr/share/ceph-ansible
[user@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
add-osd.yml
文件复制到/usr/share/ceph-ansible/
目录中:sudo cp infrastructure-playbooks/add-osd.yml .
[user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible playbook:
ansible-playbook add-osd.yml
[user@admin ceph-ansible]$ ansible-playbook add-osd.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第二方法
将新 OSD 节点名称添加到
/etc/ansible/hosts
文件中,并使用devices
和dedicated_devices
选项,指定不同的磁盘拓扑:示例
[osds] ... osd07 devices="['/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf']" dedicated_devices="['/dev/sda', '/dev/sda', '/dev/sdb', '/dev/sdb']"
[osds] ... osd07 devices="['/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf']" dedicated_devices="['/dev/sda', '/dev/sda', '/dev/sdb', '/dev/sdb']"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Ansible 是否可以访问所有 Ceph 节点:
ansible all -m ping
[user@admin ~]$ ansible all -m ping
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将目录改为 Ansible 配置目录:
cd /usr/share/ceph-ansible
[user@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
add-osd.yml
文件复制到/usr/share/ceph-ansible/
目录中:sudo cp infrastructure-playbooks/add-osd.yml .
[user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible playbook:
ansible-playbook add-osd.yml
[user@admin ceph-ansible]$ ansible-playbook add-osd.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.5. 使用命令行界面添加 Ceph OSD 复制链接链接已复制到粘贴板!
以下是手动添加 OSD 到 Red Hat Ceph Storage 的高级别工作流:
-
安装
ceph-osd
软件包并创建新的 OSD 实例 - 准备并挂载 OSD 数据和日志驱动器
- 将新 OSD 节点添加到 CRUSH map
- 更新所有者和组权限
-
启用并启动
ceph-osd
守护进程
ceph-disk
命令已弃用。ceph-volume
命令现在是从命令行界面部署 OSD 的首选方法。目前,ceph-volume
命令只支持 lvm
插件。红帽将在本指南中将两个命令作为参考提供示例,以便存储管理员有时间将依赖 ceph-disk
的任何自定义脚本转换为 ceph-volume
。
有关使用 ceph-volume
命令的更多信息,请参见《红帽 Ceph 存储管理指南》。
对于自定义存储集群名称,在 ceph
和 ceph-osd
命令中使用 --cluster $CLUSTER_NAME
选项。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装红帽 Ceph 存储 章节的要求。
-
有到新节点的
root
访问权限。
步骤
启用 Red Hat Ceph Storage 3 OSD 软件存储库。
Red Hat Enterprise Linux
subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
[user@osd ~]$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' [user@osd ~]$ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
/etc/ceph/
目录:mkdir /etc/ceph
# mkdir /etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新 OSD 节点上,从其中一个 Ceph Monitor 节点上复制 Ceph 管理密钥环和配置文件:
Syntax
scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.client.admin.keyring /etc/ceph scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.conf /etc/ceph
scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.client.admin.keyring /etc/ceph scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.conf /etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ scp root@node1:/etc/ceph/ceph.conf /etc/ceph/
[root@osd ~]# scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ [root@osd ~]# scp root@node1:/etc/ceph/ceph.conf /etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新的 Ceph OSD 节点上安装
ceph-osd
软件包:Red Hat Enterprise Linux
yum install ceph-osd
[root@osd ~]# yum install ceph-osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
sudo apt-get install ceph-osd
[user@osd ~]$ sudo apt-get install ceph-osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 决定您要并置日志还是将专用日志用于新的 OSD。
注意需要
--filestore
选项。对于带有并置日志的 OSD:
Syntax
ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于带有专用日志的 OSD:
Syntax
ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME /dev/$JOURNAL_DEVICE_NAME
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME /dev/$JOURNAL_DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
ceph-volume lvm prepare --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME
[root@osd ~]# ceph-volume lvm prepare --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda /dev/sdb
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-volume lvm prepare --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
[root@osd ~]# ceph-volume lvm prepare --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
设置
noup
选项:ceph osd set noup
[root@osd ~]# ceph osd set noup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 激活新的 OSD:
Syntax
ceph-disk activate /dev/$DEVICE_NAME
[root@osd ~]# ceph-disk activate /dev/$DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID
[root@osd ~]# ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-disk activate /dev/sda
[root@osd ~]# ceph-disk activate /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
[root@osd ~]# ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 OSD 添加到 CRUSH map:
Syntax
ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]
ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd crush add 4 1 host=node4
[root@osd ~]# ceph osd crush add 4 1 host=node4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您指定多个存储桶,该命令将将 OSD 放置到最具体的存储桶中,它将 OSD 移到您指定的其它存储桶中。
注意您还可以手动编辑 CRUSH map。请参阅 Red Hat Ceph Storage 3 的存储策略指南中的 编辑 CRUSH map 部分。
重要如果仅指定 root bucket,则 OSD 将直接附加到 root,但 CRUSH 规则期望 OSD 在主机 bucket 内。
取消设置
noup
选项:ceph osd unset noup
[root@osd ~]# ceph osd unset noup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为新创建的目录更新所有者和组权限:
Syntax
chown -R $OWNER:$GROUP $PATH_TO_DIRECTORY
chown -R $OWNER:$GROUP $PATH_TO_DIRECTORY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
chown -R ceph:ceph /var/lib/ceph/osd chown -R ceph:ceph /var/log/ceph chown -R ceph:ceph /var/run/ceph chown -R ceph:ceph /etc/ceph
[root@osd ~]# chown -R ceph:ceph /var/lib/ceph/osd [root@osd ~]# chown -R ceph:ceph /var/log/ceph [root@osd ~]# chown -R ceph:ceph /var/run/ceph [root@osd ~]# chown -R ceph:ceph /etc/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用带有自定义名称的集群,请在适当的文件中添加以下行:
Red Hat Enterprise Linux
echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph
[root@osd ~]# echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ubuntu
sudo echo "CLUSTER=$CLUSTER_NAME" >> /etc/default/ceph
[user@osd ~]$ sudo echo "CLUSTER=$CLUSTER_NAME" >> /etc/default/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
$CLUSTER_NAME
替换为自定义集群名称。要确保新 OSD
已启动
并准备好接收数据,请启用并启动 OSD 服务:Syntax
systemctl enable ceph-osd@$OSD_ID systemctl start ceph-osd@$OSD_ID
systemctl enable ceph-osd@$OSD_ID systemctl start ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl enable ceph-osd@4 systemctl start ceph-osd@4
[root@osd ~]# systemctl enable ceph-osd@4 [root@osd ~]# systemctl start ceph-osd@4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.6. 使用 Ansible 删除 Ceph OSD 复制链接链接已复制到粘贴板!
有时,您可能需要缩减 Red Hat Ceph Storage 集群的容量。要使用 Ansible 从 Red Hat Ceph Storage 集群中删除 OSD,并根据使用了哪个 OSD 方案,运行 shrink-osd.yml
或 shrink-osd-ceph-disk.yml
playbook。如果 osd_scenario
设置为 collocated
或 non-collocated
,则使用 shrink-osd-ceph-disk.yml
playbook。如果 osd_scenario
设置为 lvm
,则使用 shrink-osd.yml
playbook。
从存储集群中移除 OSD 将销毁该 OSD 中包含的所有数据。
先决条件
- 正在运行的红帽 Ceph 存储,由 Ansible 部署。
- 正在运行的 Ansible 管理节点。
- 对 Ansible 管理节点的根级别访问权限.
步骤
更改到
/usr/share/ceph-ansible/
目录。cd /usr/share/ceph-ansible
[user@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 Ceph 监控节点上的
/etc/ceph/
中的 admin 密钥环复制到包含您要删除的 OSD 的节点。 将适当的 playbook 从
infrastructure-playbooks
目录复制到当前目录。cp infrastructure-playbooks/shrink-osd.yml .
[root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-osd.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
cp infrastructure-playbooks/shrink-osd-ceph-disk.yml .
[root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-osd-ceph-disk.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 裸机或容器部署 , 请运行适当的 Ansible playbook:
Syntax
ansible-playbook shrink-osd.yml -e osd_to_kill=$ID -u $ANSIBLE_USER
ansible-playbook shrink-osd.yml -e osd_to_kill=$ID -u $ANSIBLE_USER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=$ID -u $ANSIBLE_USER
ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=$ID -u $ANSIBLE_USER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
带有 OSD ID 的
$ID
。要移除更多 OSD,请用逗号分隔 OSD ID。 -
$ANSIBLE_USER
,名称为 Ansible 用户
示例
ansible-playbook shrink-osd.yml -e osd_to_kill=1 -u user
[user@admin ceph-ansible]$ ansible-playbook shrink-osd.yml -e osd_to_kill=1 -u user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=1 -u user
[user@admin ceph-ansible]$ ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=1 -u user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
带有 OSD ID 的
验证 OSD 是否已成功移除:
ceph osd tree
[root@mon ~]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.7. 使用命令行界面删除 Ceph OSD 复制链接链接已复制到粘贴板!
从存储集群中移除 OSD 涉及更新 cluster map、移除其身份验证密钥、从 OSD map 中删除 OSD,并从 ceph.conf
文件中删除 OSD。如果节点有多个驱动器,您可能需要重复这个过程为每个驱动器删除 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
有足够的 OSD,以便存储集群没有处于
接近满
比率。 -
具有对 OSD 节点的
root
访问权限。
步骤
禁用并停止 OSD 服务:
Syntax
systemctl disable ceph-osd@$OSD_ID systemctl stop ceph-osd@$OSD_ID
systemctl disable ceph-osd@$OSD_ID systemctl stop ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl disable ceph-osd@4 systemctl stop ceph-osd@4
[root@osd ~]# systemctl disable ceph-osd@4 [root@osd ~]# systemctl stop ceph-osd@4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 停止后,它
将被关闭
。从存储集群中移除 OSD:
Syntax
ceph osd out $OSD_ID
ceph osd out $OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd out 4
[root@osd ~]# ceph osd out 4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要OSD 超时后,Ceph 将开始重新平衡数据并将其复制到存储集群中的其他 OSD 中。红帽建议在继续下一步前等待存储集群变为
active+clean
。要观察数据迁移,请运行以下命令:ceph -w
[root@monitor ~]# ceph -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CRUSH map 移除 OSD,使其不再接收数据。
Syntax
ceph osd crush remove $OSD_NAME
ceph osd crush remove $OSD_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd crush remove osd.4
[root@osd ~]# ceph osd crush remove osd.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以解译 CRUSH map,从设备列表中删除 OSD,将设备作为主机存储桶中的项目删除,或者移除主机存储桶。如果它位于 CRUSH map 中,并且计划移除主机,然后重新编译 map 并设置它。详情请参阅 存储策略指南。
删除 OSD 身份验证密钥:
Syntax
ceph auth del osd.$OSD_ID
ceph auth del osd.$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph auth del osd.4
[root@osd ~]# ceph auth del osd.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 OSD:
Syntax
ceph osd rm $OSD_ID
ceph osd rm $OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd rm 4
[root@osd ~]# ceph osd rm 4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑存储集群的配置文件(默认为
/etc/ceph/ceph.conf
),并删除 OSD 条目(如果存在):示例
[osd.4] host = $HOST_NAME
[osd.4] host = $HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果手动添加 OSD,则移除对
/etc/fstab
文件中的 OSD 的引用。 将更新后的配置文件复制到存储集群中所有其他节点的
/etc/ceph/
目录中。Syntax
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp /etc/ceph/ceph.conf root@node4:/etc/ceph/
[root@osd ~]# scp /etc/ceph/ceph.conf root@node4:/etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.8. 使用命令行界面替换日志 复制链接链接已复制到粘贴板!
当日志和数据设备位于同一物理设备中时,替换日志的步骤(例如,使用 osd_scenario: 并置
)需要替换整个 OSD。但是,在日志位于数据设备的独立物理设备(例如,使用 osd_scenario: non-collocated
)的 OSD 上,您可以替换日志设备。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 新分区或存储设备。
步骤
将集群设置为
noout
以防止回填:ceph osd set noout
[root@osd1 ~]# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止将更改日志的 OSD:
systemctl stop ceph-osd@$OSD_ID
[root@osd1 ~]# systemctl stop ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清除 OSD 上的日志:
ceph-osd -i $OSD_ID --flush-journal
[root@osd1 ~]# ceph-osd -i $OSD_ID --flush-journal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除旧的日志分区以防止分区 UUID 与新分区冲突:
sgdisk --delete=$OLD_PART_NUM -- $OLD_DEV_PATH
sgdisk --delete=$OLD_PART_NUM -- $OLD_DEV_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$OLD_PART_NUM
,分区号为旧日志设备。 -
$OLD_DEV_PATH
带有到旧日志设备的路径。
-
示例
sgdisk --delete=1 -- /dev/sda
[root@osd1 ~]# sgdisk --delete=1 -- /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新设备上创建新日志分区。这个
sgdisk
命令会自动使用下一个可用的分区号:sgdisk --new=0:0:$JOURNAL_SIZE -- $NEW_DEV_PATH
sgdisk --new=0:0:$JOURNAL_SIZE -- $NEW_DEV_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$JOURNAL_SIZE
带有适合环境的日志大小,如10240M
。 -
NEW_DEV_PATH
,其路径指向用于新日志的设备的路径。
-
注意日志的最小大小为 5 GB。通常不需要 10 GB 的值。如需更多详细信息,请联系红帽支持。
示例
sgdisk --new=0:0:10240M -- /dev/sda
[root@osd1 ~]# sgdisk --new=0:0:10240M -- /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新分区中设置正确的参数:
sgdisk --change-name=0:"ceph journal" --partition-guid=0:$OLD_PART_UUID --typecode=0:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt -- $NEW_DEV_PATH
sgdisk --change-name=0:"ceph journal" --partition-guid=0:$OLD_PART_UUID --typecode=0:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt -- $NEW_DEV_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$OLD_PART_UUID
带有相关 OSD 的journal_uuid
文件中的 UUID。例如,对于 OSD0,
使用/var/lib/ceph/osd/ceph-0/journal_uuid
中的 UUID。 -
NEW_DEV_PATH
,其路径指向用于新日志的设备的路径。
-
示例
sgdisk --change-name=0:"ceph journal" --partition-guid=0:a1279726-a32d-4101-880d-e8573bb11c16 --typecode=0:097c058d-0758-4199-a787-ce9bacb13f48 --mbrtogpt -- /dev/sda
[root@osd1 ~]# sgdisk --change-name=0:"ceph journal" --partition-guid=0:a1279726-a32d-4101-880d-e8573bb11c16 --typecode=0:097c058d-0758-4199-a787-ce9bacb13f48 --mbrtogpt -- /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行上述
sgdisk
命令后,新日志分区已准备好用于 Ceph,并且可以在其上创建日志。重要由于
sgdisk
的限制导致无法正确创建分区,所以无法将此命令与分区创建结合使用。创建新日志:
ceph-osd -i $OSD_ID --mkjournal
[root@osd1 ~]# ceph-osd -i $OSD_ID --mkjournal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 OSD:
systemctl start ceph-osd@$OSD_ID
[root@osd1 ~]# systemctl start ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除 OSD 上的
noout
标志:ceph osd unset noout
[root@osd1 ~]# ceph osd unset noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认日志与正确的设备关联:
ceph-disk list
[root@osd1 ~]# ceph-disk list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.9. 观察数据迁移 复制链接链接已复制到粘贴板!
当您向 CRUSH map 添加或删除 OSD 时,Ceph 将放置组迁移到新的或现有 OSD 来重新平衡数据。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 最近添加或删除 OSD。
步骤
观察数据迁移:
ceph -w
[root@monitor ~]# ceph -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
观察放置组状态从
active+clean
更改为active,一些降级对象
,最后在迁移完成时为active+clean
。 -
要退出实用程序,请按
Ctrl + C
。
1.4. 重新计算放置组 复制链接链接已复制到粘贴板!
放置组(PG)定义将任何池数据分散到可用的 OSD 中。PG 基于给定的冗余算法构建。对于三向复制,冗余定义为使用三个不同的 OSD。对于纠删代码池,要使用的 OSD 数量由块的数量来定义。
在定义池时,放置组的数量定义了粒度率,数据将分散到所有可用 OSD 中。容量负载的比例越大,数量越好。但是,由于处理放置组在重建数据时也很重要,因此必须仔细选择前期的数量。支持计算工具可用于生成敏捷环境。
在存储集群生命周期中,池可能会超出最初预期的限制。建议使用重新计算的驱动器数量增加。每个 OSD 的放置组数量应该大约 100。当添加更多 OSD 到存储集群时,每个 OSD 的 PG 数量会随时间降低。从存储集群中最初使用 120 个驱动器,并将池的 pg_num
设置为 4000 后,每个 OSD 的 PG 中将最终达到 100 个 PG,以三个的复制因素来计算。随着时间的推移,当到 OSD 数量达到十倍时,每个 OSD 的 PG 数量只会变为十倍。因为每个 OSD 的小数量的 PG 将倾向于非均匀分布式容量,所以请考虑调整每个池的 PG。
可以在线调整放置组的数量。重新计算不是 PG 号的重新计算,还将涉及数据重新定位,这将是一个冗长的过程。但是,数据可用性将随时维护。
应避免使用非常高的 PG 数量,因为在故障 OSD 上重建所有 PG 将一次性开始。需要进行大量 IOPS 才能及时进行重建,而这可能无法使用。这会导致深度 I/O 队列和延迟导致存储集群不可用,或会导致长时间修复。
其它资源
- 请参阅 PG 计算器,以计算给定用例的值。
- 如需更多信息,请参阅 Red Hat Ceph Storage 策略指南中的 Erasure Code Pools 一章。
1.5. 使用 Ceph Manager 负载均衡器模块 复制链接链接已复制到粘贴板!
该负载平衡器是 Ceph Manager 的模块,它可在 OSD 之间优化放置组或 PG 的放置,从而实现均衡分配,可自动或处于受监管的方式。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群
启动负载均衡器
确保启用了 balancer 模块:
ceph mgr module enable balancer
[root@mon ~]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 balancer 模块:
ceph balancer on
[root@mon ~]# ceph balancer on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
模式
目前有两种支持的负载均衡器模式:
CRUSH-compat:CRUSH compat 模式使用 Ceph Luminous 中引入的 compat
weight-set
功能来管理 CRUSH 层次结构中设备的一组替代权重。普通的权重应保留为设备大小,以反映您要保存在该设备中的数据的目标数量。然后,负载均衡器会优化weight-set
值,以小增量或向下调整,以便尽可能实现与目标分布匹配的发行版。由于 PG 放置是伪随机进程,因此放置有自然的差异;通过优化权重,负载平衡器计数器可以自然变化。这个模式完全与旧的客户端向后兼容。当 OSDMap 和 CRUSH map 与旧客户端共享时,该负载平衡器将优化的权重作为实际权重。
此模式的主要限制是,如果层次结构的子树共享任何 OSD,则负载平衡器无法处理具有不同放置规则的多个 CRUSH 层次结构。由于此配置使得在共享 OSD 上管理空间利用率非常困难,因此通常不建议这样做。因此,这个限制通常不是一个问题。
upmap:自 Luminous 开始,OSDMap 可以将个别 OSD 的显式映射存储为正常 CRUSH 放置计算之外。这些
upmap 条目提供对 PG 映射的精细控制。此 CRUSH 模式将优化单个 PG 的放置,以实现均衡的分布。在大多数情况下,这种分布是 "perfect",每个 OSD +/-1 PG 上具有平等的 PG 数量,因为它们可能无法均匀划分。
重要使用 upmap 需要所有客户端都在运行 Red Hat Ceph Storage 3.x 或更高版本,以及 Red Hat Enterprise Linux 7.5 或更高版本。
要允许使用这个功能,您必须告诉集群,只需要通过以下方法支持 luminous 或更高的客户端:
ceph osd set-require-min-compat-client luminous
[root@admin ~]# ceph osd set-require-min-compat-client luminous
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果任何 pre-luminous 客户端或守护进程连接到监控器,此命令将失败。
由于一个已知问题,内核 CephFS 客户端会报告自己为 jewel 客户端。要临时解决这个问题,请使用
--yes-i-really-mean-it
标志:ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
[root@admin ~]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查正在使用的客户端版本:
ceph features
[root@admin ~]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告在 Red Hat Ceph Storage 3.x 中,upmap 功能仅支持作为使用 Ceph Manager 的 PG 来平衡 PG。Red Hat Ceph Storage 3.x 不支持使用 upmap 功能手动重新平衡 PG。
默认模式是 crush-compat
。可使用以下方法更改模式:
ceph balancer mode upmap
[root@mon ~]# ceph balancer mode upmap
或:
ceph balancer mode crush-compat
[root@mon ~]# ceph balancer mode crush-compat
状态
可使用以下方法随时检查负载均衡器的当前状态:
ceph balancer status
[root@mon ~]# ceph balancer status
自动平衡
默认情况下,在打开负载均衡器模块时,会使用自动平衡:
ceph balancer on
[root@mon ~]# ceph balancer on
可使用以下方法关闭负载均衡器:
ceph balancer off
[root@mon ~]# ceph balancer off
这将使用 crush-compat
模式,这些模式与旧客户端向后兼容,并且随着时间的推移对数据分发进行小更改,以确保 OSD 平等使用。
节流
如果集群已被降级,例如,如果 OSD 失败且系统还没有修复,则不会对 PG 分发进行修改。
当集群处于健康状态时,负载均衡器会减慢其更改,从而使被误置或需要移动的 PG 的百分比低于 5% 的阈值。这个百分比可以使用 max_misplaced
设置调整。例如,将阈值增加到 7%:
ceph config-key set mgr/balancer/max_misplaced .07
[root@mon ~]# ceph config-key set mgr/balancer/max_misplaced .07
加强优化
负载均衡器操作被分为几个不同的阶段:
-
构建
计划
-
评估数据分发的质量,可以是当前 PG 发行版,或
执行计划
后会导致的 PG 发行版 执行计划
评估和分数当前的分发:
ceph balancer eval
[root@mon ~]# ceph balancer eval
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 评估单个池的发布:
ceph balancer eval <pool-name>
[root@mon ~]# ceph balancer eval <pool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看更多评估详情:
ceph balancer eval-verbose ...
[root@mon ~]# ceph balancer eval-verbose ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用当前配置模式生成计划:
ceph balancer optimize <plan-name>
[root@mon ~]# ceph balancer optimize <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<plan-name>
替换为自定义计划名称。查看计划的内容:
ceph balancer show <plan-name>
[root@mon ~]# ceph balancer show <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 丢弃旧计划:
ceph balancer rm <plan-name>
[root@mon ~]# ceph balancer rm <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看当前记录的计划,请使用 status 命令:
ceph balancer status
[root@mon ~]# ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 计算执行计划后生成的发布质量:
ceph balancer eval <plan-name>
[root@mon ~]# ceph balancer eval <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行计划:
ceph balancer execute <plan-name>
[root@mon ~]# ceph balancer execute <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [NOTE]:只有如果 预计要改进分发,则才执行计划。执行后,计划将被丢弃。
1.6. 其它资源 复制链接链接已复制到粘贴板!
- 如需更多信息,请参阅 Red Hat Ceph Storage 策略指南中的放置组 (PG) 一章。
第 2 章 处理磁盘失败 复制链接链接已复制到粘贴板!
作为存储管理员,您必须在存储群集的生命周期内处理磁盘故障。在发生实际故障前,测试和模拟磁盘失败将确保您为实际情况做好准备。
以下是替换故障磁盘的高级别工作流:
- 查找失败的 OSD。
- 将 OSD 变为 out。
- 停止节点上的 OSD 守护进程。
- 检查 Ceph 的状态。
- 从 CRUSH map 移除 OSD。
- 删除 OSD 授权。
- 从存储集群中移除 OSD。
- 卸载节点上的文件系统。
- 替换失败的驱动器。
- 将 OSD 重新添加到存储集群。
- 检查 Ceph 的状态。
2.1. 先决条件 复制链接链接已复制到粘贴板!
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 失败的磁盘。
2.2. 磁盘失败 复制链接链接已复制到粘贴板!
Ceph 为容错而设计,这意味着 Ceph 可在不丢失数据的情况下以 降级状态
运行。即使数据存储驱动器出现故障,Ceph 仍然可以运行。降级状态
表示,存储在其他 OSD 上的数据的额外副本将自动回填到存储集群中的其他 OSD。当 OSD 标记为 down
时,这可能意味着驱动器失败。
当驱动器出现故障时,最初的 OSD 状态将 停机
,但仍 在
存储集群中。网络问题也可以将 OSD 标记为 down
,即使它确实是 。首先检查环境中出现的任何网络问题。如果网络检查正常,则 OSD 驱动器可能会失败。
现代服务器通常使用热插拔驱动器进行部署,从而可以拉取失败的驱动器并将其替换为新的驱动器,而无需关闭节点。但是,在 Ceph 中,您还必须删除由软件定义的 OSD 部分。
2.2.1. 替换失败的 OSD 磁盘 复制链接链接已复制到粘贴板!
替换 OSD 的一般步骤涉及从存储集群中移除 OSD,替换驱动器,然后重新创建 OSD。
在替换包含 BlueStore OSD 数据库分区的 BlueStore block.db
磁盘时,红帽仅支持使用 Ansible 重新部署所有 OSD。损坏的 block.db
文件将影响到这个 block.db
文件中包含的所有 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 失败的磁盘。
步骤
检查存储集群健康状况:
ceph health
# ceph health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别 CRUSH 层次结构中的 OSD 位置:
ceph osd tree | grep -i down
# ceph osd tree | grep -i down
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OSD 节点上,尝试启动 OSD:
systemctl start ceph-osd@$OSD_ID
# systemctl start ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令表示 OSD 已在运行,则可能存在一个心跳或网络问题。如果无法重启 OSD,则驱动器可能会失败。
注意如果 OSD 已经
停机
,则 OSD 最终将标记为。这是 Ceph Storage 的正常行为。当 OSD 标记为 时,带有故障 OSD 数据副本的其他 OSD 将开始回填,以确保存储集群中存在所需的副本数。
在存储集群进行回填时,集群将
处于降级状态
。对于容器化 Ceph 部署,尝试通过引用与 OSD 关联的驱动器来启动 OSD 容器:
systemctl start ceph-osd@$OSD_DRIVE
# systemctl start ceph-osd@$OSD_DRIVE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令表示 OSD 已在运行,则可能存在一个心跳或网络问题。如果无法重启 OSD,则驱动器可能会失败。
注意与 OSD 关联的驱动器可以通过 将容器 OSD ID 映射到驱动器 来确定。
检查失败的 OSD 的挂载点:
注意对于容器化部署 Ceph,如果 OSD 停机,容器将停机,并且将卸载 OSD 驱动器,因此您无法运行
df
检查其挂载点。使用另一种方法来确定 OSD 驱动器是否失败。例如,在容器节点的驱动器上运行smartctl
。df -h
# df -h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果无法重启 OSD,您可以检查 挂载点。如果挂载点不再显示,您可以尝试重新挂载 OSD 驱动器并重启 OSD。如果无法恢复挂载点,则可能具有失败的 OSD 驱动器。
使用
smartctl
实用程序 cab 帮助确定驱动器是否运行正常。例如:yum install smartmontools smartctl -H /dev/$DRIVE
# yum install smartmontools # smartctl -H /dev/$DRIVE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果驱动器失败,则需要替换它。
停止 OSD 进程:
systemctl stop ceph-osd@$OSD_ID
# systemctl stop ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 FileStore,将日志刷新到磁盘:
ceph osd -i $$OSD_ID --flush-journal
# ceph osd -i $$OSD_ID --flush-journal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于容器化 Ceph 部署,通过引用与 OSD 关联的驱动器来停止 OSD 容器:
systemctl stop ceph-osd@$OSD_DRIVE
# systemctl stop ceph-osd@$OSD_DRIVE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存储集群中移除 OSD:
ceph osd out $OSD_ID
# ceph osd out $OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保失败的 OSD 是回填:
ceph -w
# ceph -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CRUSH map 移除 OSD:
ceph osd crush remove osd.$OSD_ID
# ceph osd crush remove osd.$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意只有在您永久删除 OSD 而非重新部署时才需要这一步。
删除 OSD 的身份验证密钥:
ceph auth del osd.$OSD_ID
# ceph auth del osd.$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 OSD 的密钥没有被列出:
ceph auth list
# ceph auth list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存储集群中移除 OSD:
ceph osd rm osd.$OSD_ID
# ceph osd rm osd.$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 卸载故障驱动器路径:
注意对于容器化 Ceph 部署,如果 OSD 停机,容器将停机,并且 OSD 驱动器将被卸载。在这种情况下,不卸载这一步,可以跳过此步骤。
umount /var/lib/ceph/osd/$CLUSTER_NAME-$OSD_ID
# umount /var/lib/ceph/osd/$CLUSTER_NAME-$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换物理驱动器。如需节点,请参阅硬件供应商的文档。如果驱动器可热交换,只需将失败的驱动器替换为新驱动器。如果驱动器不热交换,且节点包含多个 OSD,那么 MIGHT 需要让节点更换物理驱动器。如果您需要临时关闭节点,您可以将集群设置为
noout
以防止回填:ceph osd set noout
# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在替换了驱动器并且使节点及其 OSD 重新上线后,请删除
noout
设置:ceph osd unset noout
# ceph osd unset noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 允许
/dev/
目录下显示新驱动器,并在继续操作前记录驱动器路径。- 查找 OSD 驱动器并格式化磁盘。
重新创建 OSD:
检查 CRUSH 层次结构,以确保准确:
ceph osd tree
# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您对 CRUSH 层次结构中 OSD 的位置不满意,您可能通过
move
命令移动:ceph osd crush move $BUCKET_TO_MOVE $BUCKET_TYPE=$PARENT_BUCKET
# ceph osd crush move $BUCKET_TO_MOVE $BUCKET_TYPE=$PARENT_BUCKET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证 OSD 是否在线。
2.2.2. 在保留 OSD ID 时替换 OSD 驱动器 复制链接链接已复制到粘贴板!
在替换故障 OSD 驱动器时,您可以保留原始 OSD ID 和 CRUSH map 条目。
ceph-volume lvm
命令默认为 OSD 的 BlueStore。要使用 FileStore OSD,然后使用 --filestore
、--data
和 --journal
选项。
如需了解更多详细信息 ,请参阅准备 OSD 数据和 Journal Drives 部分。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 失败的磁盘。
步骤
销毁 OSD:
ceph osd destroy $OSD_ID --yes-i-really-mean-it
ceph osd destroy $OSD_ID --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd destroy 1 --yes-i-really-mean-it
$ ceph osd destroy 1 --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果之前使用了替换磁盘,则需要
缩小
该磁盘:ceph-volume lvm zap $DEVICE
ceph-volume lvm zap $DEVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-volume lvm zap /dev/sdb
$ ceph-volume lvm zap /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用现有 OSD ID 创建新 OSD:
ceph-volume lvm create --osd-id $OSD_ID --data $DEVICE
ceph-volume lvm create --osd-id $OSD_ID --data $DEVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-volume lvm create --osd-id 1 --data /dev/sdb
$ ceph-volume lvm create --osd-id 1 --data /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 模拟磁盘失败 复制链接链接已复制到粘贴板!
存在两种磁盘故障方案:硬链接和软。硬故障意味着替换磁盘。软故障可能是设备驱动程序或某些其他软件组件的问题。
如果出现软故障,则可能不需要替换磁盘。如果替换磁盘,则需要遵循步骤来移除失败的磁盘,并将替换磁盘添加到 Ceph。为了模拟软磁盘失败,最好删除该设备。选择一个设备并从系统中删除该设备。
echo 1 > /sys/block/$DEVICE/device/delete
echo 1 > /sys/block/$DEVICE/device/delete
示例
echo 1 > /sys/block/sdb/device/delete
[root@ceph1 ~]# echo 1 > /sys/block/sdb/device/delete
在 Ceph OSD 日志中,OSD 检测到故障并自动启动恢复过程。
示例
查看 osd 磁盘树,我们还要看到磁盘脱机。
第 3 章 处理节点故障 复制链接链接已复制到粘贴板!
作为存储管理员,您可能会遇到整个节点在存储集群中失败的情况,并且处理节点失败与处理磁盘失败类似。在一个节点失败时,不能只从一个磁盘恢复 PG(placement group),而该节点中磁盘上的所有 PG 必须被恢复。Ceph 将检测 OSD 是否都处于停机状态,并自动启动恢复过程,称为自我修复。
有三个节点故障方案。以下是替换节点时每个场景的高级工作流:
替换节点,但使用故障节点中的 root 和 Ceph OSD 磁盘。
- 禁用回填。
- 替换节点,将磁盘从旧节点获取,并将它们添加到新节点。
- 启用回填.
替换节点,重新安装操作系统,以及从故障节点使用 Ceph OSD 磁盘。
- 禁用回填。
- 创建 Ceph 配置的备份。
替换节点,并从故障节点中添加 Ceph OSD 磁盘。
- 将磁盘配置为 JBOD.
- 安装操作系统。
- 恢复 Ceph 配置。
-
运行
ceph-ansible
。 - 启用回填.
替换节点,重新安装操作系统,使用所有新的 Ceph OSD 磁盘。
- 禁用回填。
- 从存储集群中移除故障节点上的所有 OSD。
- 创建 Ceph 配置的备份。
替换节点,并从故障节点中添加 Ceph OSD 磁盘。
- 将磁盘配置为 JBOD.
- 安装操作系统。
-
运行
ceph-ansible
。 - 启用回填.
3.1. 先决条件 复制链接链接已复制到粘贴板!
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 出现故障的节点。
3.2. 添加或删除节点前的注意事项 复制链接链接已复制到粘贴板!
Ceph 的一个未佳的功能是能够在运行时添加或删除 Ceph OSD 节点。这意味着您可以重新定义存储容量大小或更换硬件,而无需关闭存储集群。例如,可以在集群 处于降级状态
的同时为 Ceph 客户端提供服务,例如,您可以在常规工作时间内添加或删除硬件,而不是按时限或周末工作。但是,添加和删除 Ceph OSD 节点可能会对性能有严重影响,而且您必须考虑在操作前考虑添加、删除或替换存储集群中的硬件的性能影响。
从容量角度看,删除节点会删除节点中包含的 OSD,并有效减少存储集群的容量。添加节点添加节点中包含的 OSD,并有效扩展存储集群的容量。无论您是扩展还是减少存储容量,添加或移除 Ceph OSD 节点都将因为集群重新平衡一样减少回填操作。在这种重新平衡时间期间,Ceph 使用其他资源来影响存储集群性能。
想象一个包含各个节点有四个 OSD 的 Ceph 节点的存储集群。在四个节点的存储中,使用 16 个 OSD 来删除节点,并删除 4 个 OSD,并将容量削减了 25%。在具有三个节点的存储中,具有 12 个 OSD,添加节点添加 4 个 OSD,并将容量增加 33%。
在生产用 Ceph 存储集群中,Ceph OSD 节点具有特定的硬件配置,可促进特定类型的存储策略。如需了解更多详细信息,请参阅 Red Hat Ceph Storage 3 的存储策略指南。
由于 Ceph OSD 节点是 CRUSH 层次结构的一部分,添加或删除节点的性能通常会影响使用该 CRUSH 层次结构的池性能,即 CRUSH 规则集。
3.3. 性能考虑 复制链接链接已复制到粘贴板!
在添加或删除 Ceph OSD 节点时,以下因素通常对存储集群的性能有影响:
在受影响的池中载入当前客户端:
Ceph 客户端将负载放在 Ceph 的 I/O 接口上;即,对池的负载。池映射到 CRUSH 规则集。底层 CRUSH 层次结构允许 Ceph 在故障域之间放置数据。如果底层 Ceph OSD 节点在较高的客户端负载中涉及一个池,客户端负载可能会对恢复时间造成重大影响,并影响性能。更具体地说,因为写操作需要数据复制才能实现持久性,写入密集型客户端负载将会增加存储集群恢复的时间。
容量添加或 Removed:
通常,作为整体集群添加或删除的容量会对存储集群进行恢复的影响。此外,您添加或删除的节点的存储密度可能会对恢复时间造成影响。例如,与具有 36 个 OSD 的节点恢复通常要更长的时间,与具有 12 个 OSD 的节点恢复通常要更长的时间。删除节点时,MUST 确保有足够的备用容量,以便不会达到 满比率
或 接近全满比率
。如果存储集群达到 全满比率
,Ceph 将暂停写操作以防止数据丢失。
池和 CRUSH 规则集:
Ceph OSD 节点映射到至少一个 Ceph CRUSH 层次结构,层次结构则映射到至少一个池。使用 CRUSH 层次结构(ruleset)的每个池,添加或删除 Ceph OSD 节点都会遇到性能影响。
池类型和持久性:
复制池通常使用更多的网络带宽来复制数据的深度副本,而纠删代码池则往往使用更多 CPU 来计算 k+m
编码区块。数据副本数越多,例如大小或更多 k+m
块,存储集群需要更长的时间才能恢复。
吞吐量主要特征:
驱动器、控制器和网络接口卡都有可能影响恢复时间的吞吐量特征。通常,具有更高吞吐量特征的节点,例如,10 Gbps 和 SSD 将比低吞吐量特性的节点更快地恢复,如 1 Gbps 和 SATA 驱动器。
3.4. 添加或删除节点的建议 复制链接链接已复制到粘贴板!
节点的故障可能会阻止一次移除某一个 OSD,然后再更改节点。在有些情况下,您可以在添加或删除 Ceph OSD 节点时降低对性能造成负面影响,红帽建议在节点间添加或删除一个 OSD,并允许集群在继续下一个 OSD 前进行恢复。有关删除 OSD 的详细信息:
在添加 Ceph 节点时,红帽还建议一次添加一个 OSD。有关添加 OSD 的详情:
在添加或删除 Ceph OSD 节点时,请考虑其他持续进程会对性能造成影响。为了减少对客户端 I/O 的影响,红帽建议以下操作:
计算容量:
在移除 Ceph OSD 节点之前,请确保存储集群能够通过 OUT 回填所有 OSD 的内容,到达 满比率
。达到 全满比率
将导致集群拒绝写操作。
临时禁用清理 :
清理是确保存储集群数据的持久性,但资源密集型是必不可少的。在添加或删除 Ceph OSD 节点前,禁用清理和深度清理,并在继续前让当前的清理操作完成,例如:
ceph osd set noscrub ceph osd set nodeep-scrub
ceph osd set noscrub
ceph osd set nodeep-scrub
添加或移除了 Ceph OSD 节点并且存储集群返回到 active+clean
状态后,取消设置 noscrub
和 nodeep-scrub
设置。
限制回填和恢复 :
如果您具有合理的数据持久性,例如 osd pool default size = 3
和 osd pool default min size = 2
,则代表没有遇到 降级状态
的问题。您可以对存储集群进行调优,以达到最快的恢复时间,但这可能会影响 Ceph 客户端 I/O 性能。要保持最高的 Ceph 客户端 I/O 性能,请限制回填和恢复操作,从而使它们需要更长的时间,例如:
osd_max_backfills = 1 osd_recovery_max_active = 1 osd_recovery_op_priority = 1
osd_max_backfills = 1
osd_recovery_max_active = 1
osd_recovery_op_priority = 1
您还可以设置 sleep 和 delay 参数,如 osd_recovery_sleep
。
最后,如果您要扩展存储集群的大小,可能需要增加 PG 的数量。如果您确定需要扩展放置组数量,红帽建议在放置组数量上增加增量。通过大量增加放置组的数量会大大降低性能。
3.5. 添加 Ceph OSD 节点 复制链接链接已复制到粘贴板!
要扩展 Red Hat Ceph Storage 集群的容量,请添加 OSD 节点。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 具有网络连接置备的节点。
- 安装 Red Hat Enterprise Linux 7 或 Ubuntu 16.04。
- 请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装红帽 Ceph 存储 章节的要求。
步骤
- 通过短主机名验证存储集群中的其他节点是否可以访问新节点。
临时禁用清理:
ceph osd set noscrub ceph osd set nodeep-scrub
[root@monitor ~]# ceph osd set noscrub [root@monitor ~]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 限制回填和恢复功能:
Syntax
ceph tell $DAEMON_TYPE.* injectargs --$OPTION_NAME $VALUE [--$OPTION_NAME $VALUE]
ceph tell $DAEMON_TYPE.* injectargs --$OPTION_NAME $VALUE [--$OPTION_NAME $VALUE]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
[root@monitor ~]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新节点添加到 CRUSH Map 中:
Syntax
ceph osd crush add-bucket $BUCKET_NAME $BUCKET_TYPE
ceph osd crush add-bucket $BUCKET_NAME $BUCKET_TYPE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd crush add-bucket node2 host
[root@monitor ~]# ceph osd crush add-bucket node2 host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为节点上的每个磁盘添加一个 OSD 到存储集群。
其它资源
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Configuration Guide 中的 在运行时 设置特定配置设置 部分。
- 有关将节点放置到 CRUSH 层次结构的适当位置的详细信息,请参阅 Red Hat Ceph Storage 策略指南中的 Add a Bucket 和 Move a Bucket 部分。
3.6. 删除 Ceph OSD 节点 复制链接链接已复制到粘贴板!
要减少存储集群的容量,可移除 OSD 节点。
在移除 Ceph OSD 节点之前,请确保存储集群能够通过OUT 回填所有 OSD 的内容,达到满比率。达到全满比率将导致集群拒绝写操作。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
步骤
检查存储集群的容量:
ceph df rados df ceph osd df
[root@monitor ~]# ceph df [root@monitor ~]# rados df [root@monitor ~]# ceph osd df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 临时禁用清理:
ceph osd set noscrub ceph osd set nodeep-scrub
[root@monitor ~]# ceph osd set noscrub [root@monitor ~]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 限制回填和恢复功能:
Syntax
ceph tell $DAEMON_TYPE.* injectargs --$OPTION_NAME $VALUE [--$OPTION_NAME $VALUE]
ceph tell $DAEMON_TYPE.* injectargs --$OPTION_NAME $VALUE [--$OPTION_NAME $VALUE]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
[root@monitor ~]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存储集群中移除节点上的每个 OSD:
当所有 OSD 被删除后,从 CRUSH map 中删除主机存储桶:
Syntax
ceph osd crush rm $BUCKET_NAME
ceph osd crush rm $BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd crush rm node2
[root@monitor ~]# ceph osd crush rm node2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- * 如需了解更多详细信息 ,请参阅 Red Hat Ceph Storage Configuration Guide 中的在运行时 设置特定配置设置 部分。
3.7. 模拟节点故障 复制链接链接已复制到粘贴板!
为了模拟硬节点故障电源,请关闭节点并重新安装操作系统。
先决条件
- 正常运行的 Red Hat Ceph Storage 集群。
步骤
检查存储容量,以了解删除节点对存储集群意味着什么:
ceph df rados df ceph osd df
# ceph df # rados df # ceph osd df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)禁用恢复和回填:
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
# ceph osd set noout # ceph osd set noscrub # ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 关闭节点。
如果主机名发生更改,请从 CRUSH 映射中删除节点:
ceph osd crush rm ceph3
[root@ceph1 ~]# ceph osd crush rm ceph3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查集群的状态:
ceph -s
[root@ceph1 ~]# ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在节点上重新安装操作系统。
添加 Ansible 用户和 SSH 密钥:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在管理节点中复制
ansible
用户的 SSH 密钥:ssh-copy-id ceph3
[ansible@admin ~]$ ssh-copy-id ceph3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在管理节点中重新运行 Ansible playbook:
cd /usr/share/ceph-ansible ansible-playbook site.yml
[ansible@admin ~]$ cd /usr/share/ceph-ansible [ansible@admin ~]$ ansible-playbook site.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
PLAY RECAP ******************************************************************** ceph1 : ok=368 changed=2 unreachable=0 failed=0 ceph2 : ok=284 changed=0 unreachable=0 failed=0 ceph3 : ok=284 changed=15 unreachable=0 failed=0
PLAY RECAP ******************************************************************** ceph1 : ok=368 changed=2 unreachable=0 failed=0 ceph2 : ok=284 changed=0 unreachable=0 failed=0 ceph3 : ok=284 changed=15 unreachable=0 failed=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)启用恢复和回填:
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
[root@ceph3 ~]# ceph osd unset noout [root@ceph3 ~]# ceph osd unset noscrub [root@ceph3 ~]# ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Ceph 的健康状况:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
有关安装 Red Hat Ceph Storage 的更多信息:
第 4 章 处理数据中心失败 复制链接链接已复制到粘贴板!
红帽 Ceph 存储可能会对基础架构出现灾难性故障,例如在扩展集群中丢失三个数据中心之一。对于标准对象存储用例,可将所有三个数据中心配置独立使用在它们之间进行复制设置。在这种情况下,每个数据中心的集群配置可能会有所不同,反映本地的功能和依赖项。
应考虑放置层次结构的逻辑结构。可以使用正确的 CRUSH map,反映基础架构中故障域的层次结构。使用逻辑层次定义可提高存储集群的可靠性,而不是使用标准的分层定义。故障域在 CRUSH map 中定义。默认的 CRUSH map 包含扁平层次结构中的所有节点。
在三个数据中心环境中,通过扩展集群,节点放置应以一个数据中心停止运行的方式进行管理,但存储集群会继续运行。当为数据使用三向复制时,请考虑节点所在的故障域,在一个数据中心的停机时,可能存在一些数据保留的。当发生这种情况时,有两个选项:
- 将只读状态的数据保留为标准设置。
- 在中断期间只有一个副本。
使用标准设置,由于数据在节点间的随机性,并非所有数据都会受到影响,但某些数据可能只有一个副本,而且存储集群将恢复为只读模式。
在下面的示例中,生成的 map 派生自具有 6 个 OSD 节点的集群的初始设置。在本例中,所有节点都只有一个磁盘,因此一个 OSD。所有节点都按照默认的 root 排列,这是层次结构树的标准根。由于这些 OSD 分配到两个 OSD 的权重,这些 OSD 收到比其他 OSD 更少的数据块。这些节点稍后引入,其磁盘比初始 OSD 磁盘大。这不会影响数据放置,以防出现一组节点故障。
标准 CRUSH map
使用逻辑层次定义将节点分组到同一数据中心,以获得数据放置成熟度。可能的定义类型:数据中心、机架、行和 主机 允许反映三个数据中心的故障域:
- 节点 ceph-node1 和 ceph-node2 驻留在数据中心 1(DC1)
- 节点 ceph-node3 和 ceph-node5 驻留在数据中心 2(DC2)
- 节点 ceph-node4 和 ceph-node6 驻留在数据中心 3(DC3)中
- 所有数据中心都属于相同的结构(allDC)
由于主机中的所有 OSD 都属于主机定义,因此无需更改。所有其他分配都可以在存储集群的运行时调整:
使用以下命令 定义存储桶 结构:
ceph osd crush add-bucket allDC root ceph osd crush add-bucket DC1 datacenter ceph osd crush add-bucket DC2 datacenter ceph osd crush add-bucket DC3 datacenter
ceph osd crush add-bucket allDC root ceph osd crush add-bucket DC1 datacenter ceph osd crush add-bucket DC2 datacenter ceph osd crush add-bucket DC3 datacenter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过修改 CRUSH 映射,将节点移到这个结构中的相应位置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在此结构中,也可以添加任何新主机,以及新的磁盘。通过将 OSD 放置到层次结构中的正确位置,CRUSH 算法被更改为将冗余片段放入不同的故障域中。
以上示例会产生以下内容:
以上列表通过显示 osd 树来显示生成的 CRUSH map。现在,易于查看是主机如何属于数据中心,所有数据中心都属于同一顶级结构,但可清楚地区分位置。
根据 map 将数据放置到正确的位置,只能在健康的集群中正常工作。当某些 OSD 不可用时,可能会发生 Misplacement。这些错误替换会在可能的情况下自动更正。
其它资源
- 如需更多信息,请参阅 Red Hat Ceph Storage 策略指南中的 CRUSH 管理 章节。