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
。