OS版本: Centos 7 ,Ceph版本: 10.2.3
一直在使用Ceph的H版本,最近切換到了J版,在部署完J版Ceph後啓動OSD竟然報失敗,部署過N^N次Ceph集羣怎麼能容忍部署失敗呢!遂慢慢尋找問題。尋找問題的過程不表,最後原因確定爲集羣使用了一些SSD做了Journal,但是這些SSD的用戶和用戶組都是root,所以在默認使用ceph用戶運行的OSD進程對這些盤沒有讀寫權限,導致open journal失敗,然後OSD自然就起不來了。正常情況下應該更改一下SSDs的歸屬組什麼的就好了(比如chown ceph:ceph /dev/sdx)。但是我就喜歡root(不是個好習慣不推薦)玩一下該怎麼辦呢,J版Ceph服務使用systemctl進行起停,所以我們只需要在這裏動點手腳就萬事大吉了。具體做法就是修改一下文件
/usr/lib/systemd/system/[email protected]
將第12行中的
–setuser ceph –setgroup ceph
修改爲
–setuser root –setgroup root.
修改後的該文件如下
1 [Unit]
2 Description=Ceph object storage daemon
3 After=network-online.target local-fs.target time-sync.target
4 Wants=network-online.target local-fs.target time-sync.target
5 PartOf=ceph-osd.target
6
7 [Service]
8 LimitNOFILE=1048576
9 LimitNPROC=1048576
10 EnvironmentFile=-/etc/sysconfig/ceph
11 Environment=CLUSTER=ceph
12 ExecStart=/usr/bin/ceph-osd -f --cluster ${CLUSTER} --id %i --setuser root --setgroup root
13 ExecStartPre=/usr/lib/ceph/ceph-osd-prestart.sh --cluster ${CLUSTER} --id %i
14 ExecReload=/bin/kill -HUP $MAINPID
15 ProtectHome=true
16 ProtectSystem=full
17 PrivateTmp=true
18 TasksMax=infinity
19 Restart=on-failure
20 StartLimitInterval=30min
21 StartLimitBurst=3
22
23 [Install]
24 WantedBy=ceph-osd.target
如此重新啓動ceph-osd (systemctl restart ceph-osd@*)就會發現osd進程是使用root用戶在運行了。