Ceph添加OSD存储时遭遇Permission Denied权限错误求助
我最近在QEMU/KVM环境里搭了3个Ceph存储节点来学习,系统是Ubuntu Server 22.04 LTS,用的是官方源里的ceph和ceph-common包,完全跟着Ceph官网的指南走的——先搭了一个VM,克隆成三个节点后才装的Ceph,现在主机和控制台都正常运行。
每个节点都有一块空块设备/dev/vdb,按照指南我执行了下面的命令:
ceph orch apply osd --all-available-devices
结果两个节点成功了,但第三个节点一直失败,OSD守护进程每隔10秒重试一次,错误日志里一堆冗余内容,核心问题是权限拒绝(Permission Denied),关键日志片段如下:
2023-05-31T12:31:39.308+0000 7fa204745540 -1 bluestore(/var/lib/ceph/osd/ceph-1//block) _read_bdev_label failed to open /var/lib/ceph/osd/ceph-1//block: (13) Permission denied ... 2023-05-31T12:31:39.668+0000 7fa204745540 -1 OSD::mkfs: ObjectStore::mkfs failed with error (13) Permission denied 2023-05-31T12:31:39.668+0000 7fa204745540 -1 ** ERROR: error creating empty object store in /var/lib/ceph/osd/ceph-1/: (13) Permission denied
我试过给/var/lib/ceph整个目录加全权限,但完全没用。这已经是我第二次从头搭建了,上次在另一个节点也遇到了一模一样的问题,求帮忙排查!
我的排查建议(基于类似问题处理经验)
1. 检查块设备与LVM卷的权限
从日志看,Ceph已经成功创建了LVM卷,但访问时被拒绝。你可以在节点重试OSD部署的瞬间,执行下面的命令查看设备权限:
# 查看原始块设备权限 ls -l /dev/vdb # 查看Ceph创建的LVM卷权限 ls -l /dev/ceph-*/osd-block-*
如果这些设备的所有者不是ceph:ceph,手动调整后再重试:
sudo chown -R ceph:ceph /dev/vdb sudo chown -R ceph:ceph /dev/ceph-*
2. 排查AppArmor的限制
Ubuntu默认启用AppArmor,可能会限制Ceph容器访问块设备。你可以临时禁用AppArmor测试:
sudo systemctl stop apparmor sudo systemctl disable apparmor
如果禁用后能成功添加OSD,说明是AppArmor规则的问题,后续可以给Ceph相关的profile添加设备访问权限,不用一直禁用。
3. 解决克隆VM的唯一性冲突
因为你是克隆VM后部署的,可能存在machine-id或者磁盘UUID重复的问题,Ceph对节点唯一性有严格要求。重新生成节点的machine-id试试:
sudo rm /etc/machine-id sudo systemd-machine-id-setup sudo reboot
重启后再重新执行添加OSD的命令。
4. 手动执行OSD初始化,获取更清晰的错误
跳过ceph orch的自动部署,手动用ceph-volume初始化OSD,这样能得到更明确的错误信息:
sudo ceph-volume lvm create --data /dev/vdb
如果手动执行也失败,错误信息会比orch的日志更清晰,方便定位问题。
备注:内容来源于stack exchange,提问作者user5717448

