14 Ceph 服務的操作 #
您可以在精靈、節點或叢集層級操作 Ceph 服務。依據您需要的方法,使用 cephadm 或 systemctl
指令。
14.1 操作個別服務 #
如果您需要操作個別服務,請先識別該服務:
cephuser@adm >
ceph orch ps
NAME HOST STATUS REFRESHED [...]
mds.my_cephfs.ses-min1.oterul ses-min1 running (5d) 8m ago
mgr.ses-min1.gpijpm ses-min1 running (5d) 8m ago
mgr.ses-min2.oopvyh ses-min2 running (5d) 8m ago
mon.ses-min1 ses-min1 running (5d) 8m ago
mon.ses-min2 ses-min2 running (5d) 8m ago
mon.ses-min4 ses-min4 running (5d) 7m ago
osd.0 ses-min2 running (61m) 8m ago
osd.1 ses-min3 running (61m) 7m ago
osd.2 ses-min4 running (61m) 7m ago
rgw.myrealm.myzone.ses-min1.kwwazo ses-min1 running (5d) 8m ago
rgw.myrealm.myzone.ses-min2.jngabw ses-min2 error 8m ago
若要識別特定節點上的服務,請執行:
ceph orch ps NODE_HOST_NAME
例如:
cephuser@adm >
ceph orch ps ses-min2
NAME HOST STATUS REFRESHED
mgr.ses-min2.oopvyh ses-min2 running (5d) 3m ago
mon.ses-min2 ses-min2 running (5d) 3m ago
osd.0 ses-min2 running (67m) 3m ago
ceph orch ps
指令支援多種輸出格式。若要變更格式,請附加 --format FORMAT
選項,其中 FORMAT 是 json
、json-pretty
或 yaml
其中之一。例如:
cephuser@adm >
ceph orch ps --format yaml
知道服務名稱後,您就可以啟動、重新啟動或停止該服務:
ceph orch daemon COMMAND SERVICE_NAME
例如,若要重新啟動 ID 為 0 的 OSD 服務,請執行:
cephuser@adm >
ceph orch daemon restart osd.0
14.2 操作服務類型 #
如果您需要操作整個 Ceph 叢集中特定類型的服務,請使用以下指令:
ceph orch COMMAND SERVICE_TYPE
以 start
、stop
或 restart
取代 COMMAND。
例如,以下指令會重新啟動叢集中的所有 MON,無論它們實際是在哪個節點上執行:
cephuser@adm >
ceph orch restart mon
14.3 操作單個節點上的服務 #
透過使用 systemctl
指令,您可以操作單個節點上與 Ceph 相關的 systemd
服務和目標。
14.3.1 識別服務和目標 #
在操作與 Ceph 相關的 systemd
服務和目標之前,您需要識別其單位檔案的檔案名稱。服務的檔案名稱具有以下格式:
ceph-FSID@SERVICE_TYPE.ID.service
例如:
ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@mon.doc-ses-min1.service
ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@rgw.myrealm.myzone.doc-ses-min1.kwwazo.service
- FSID
Ceph 叢集的唯一 ID。您可以在
ceph fsid
指令的輸出中找到該 ID。- SERVICE_TYPE
服務的類型,例如
osd
、mon
或rgw
。- ID
服務的識別字串。對於 OSD,它是服務的 ID 編號。對於其他服務,它可以是節點的主機名稱,也可以是與服務類型相關的其他字串。
SERVICE_TYPE.ID 部分與 ceph orch ps
指令輸出中的 NAME
欄的內容相同。
14.3.2 操作一個節點上所有服務 #
透過使用 Ceph 的 systemd
目標,您可以同時操作某個節點上的所有服務,或者同時操作屬於由其 FSID 識別的叢集的所有服務。
例如,若要停止某個節點上的所有 Ceph 服務,而不考慮服務所屬的叢集,請執行:
root@minion >
systemctl stop ceph.target
若要重新啟動屬於 ID 為 b4b30c6e-9681-11ea-ac39-525400d7702d
的 Ceph 叢集的所有服務,請執行:
root@minion >
systemctl restart ceph-b4b30c6e-9681-11ea-ac39-525400d7702d.target
14.3.3 操作一個節點上的個別服務 #
識別特定服務的名稱後,請如下所示操作該服務:
systemctl COMMAND SERVICE_NAME
例如,若要重新啟動 ID 為 b4b30c6e-9681-11ea-ac39-525400d7702d
的叢集上 ID 為 1 的單個 OSD 服務,請執行:
root #
systemctl restart ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@osd.1.service
14.3.4 查詢服務狀態 #
您可以查詢 systemd
來瞭解服務的狀態。例如:
root #
systemctl status ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@osd.0.service
14.4 關閉並重新啟動整個 Ceph 叢集 #
如果發生計劃電源中斷,可能需要關閉並重新啟動叢集。若要停止與 Ceph 相關的所有服務然後再重新啟動而不會出現問題,請遵循以下步驟進行操作。
關閉存取叢集的任何用戶端或斷開其連接。
若要阻止 CRUSH 自動重新平衡叢集,請將叢集設定為
noout
:cephuser@adm >
ceph osd set noout停止所有叢集節點上的所有 Ceph 服務:
root@master #
ceph-salt stop關閉所有叢集節點的電源:
root@master #
salt -G 'ceph-salt:member' cmd.run "shutdown -h"
開啟管理節點的電源。
開啟 Ceph 監控程式節點的電源。
開啟 Ceph OSD 節點的電源。
取消設定先前設定的
noout
旗標:root@master #
ceph osd unset noout開啟所有已設定閘道的電源。
開啟叢集用戶端的電源或連接叢集用戶端。