Ceph をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
本家様 [[https://ceph.io/>+https://ceph.io/]]
オブジェクトストレージ(Ceph Object Store), ブロックストレ...
&size(10){オブジェクトストレージ:Hadoopやamazon S3なスト...
&size(10){ブロックストレージ: /dev/vda, /dev/vdbとか提供...
&size(10){ファイルシステム: posix準拠なファイルシステム, ...
ここではこのうち Ceph を使ったPOSIX互換ファイルシステム C...
Cephにはバージョン名があって下記の通りになってます &siz...
&size(10){[[https://docs.ceph.com/docs/master/releases/ge...
|BGCOLOR(YELLOW):Release name|BGCOLOR(YELLOW):Initial rel...
|Tentacle|2025-11-18|20.2.0|2027-11-18(estimated)|IBM Sto...
|Squid|2024-09-26|19.2.3|2026-09-19(estimated)|IBM Storag...
|Reef|2023-08-07|18.2.7|2025-08-01(estimated)|IBM Storage...
|Quincy|2022-04-19|17.2.9|2025-01-13|IBM Storage Ceph 6|
|Pacific|2021-03-31|16.2.15|2024-03-04|IBM Storage Ceph 5...
|Octopus|2020-03-23|15.2.17|2022-08-09|SUSE Enterprise S...
|Nautilus|2019-03-19|14.2.22|2021-06-30| Red Hat Ceph Sto...
|Mimic|2018-06-01|13.2.10|2020-07-22||
|Luminous|2017-08-01|12.2.13|2020-03-01|Red Hat Ceph Stor...
&color(red){*};&size(10){毎年メジャーバージョンアップがあ...
ここでは「Tentacle」を導入します.
OS上に直接アプリをインストールする方法以外に、docker/podm...
各マシンに &color(crimson){Manager Daemon};, &color(magen...
っで構成はこんな感じで.
|BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):役目|BGCOLOR(YE...
|ceph-mgr |&color(crimson){Manager Daemon}; ...
|ceph-mon01 |&color(crimson){Manager Daemon}; &br; &colo...
|ceph-mon02 | &colo...
|ceph-mon03 | &colo...
|ceph-osd01 |&color(orangered){Object Storage Daemon}; ...
|ceph-osd02 |&color(orangered){Object Storage Daemon}; ...
|ceph-osd03 |&color(orangered){Object Storage Daemon}; ...
[OSD]
cephFSを作る際はmeta向けの高速なSSDとdata向けの大容量のHD...
data向け領域はHDDのみでも構わないが、sata SSD/nvme SSDを...
SSD(sata,nvme)はエンタープライズ向けで電源喪失保護(PLP: P...
[cluster network]
&color(orangered){Object Storage Daemon};間の専用通信ネッ...
あとOSDノード間の死活確認も行います。データの複製やらリカ...
[public network]
bonding構成が望ましいようで、bondingでも802.3ad. その場合...
***構築に必要なリソースとか [#b419cf5c]
各デーモンで要求されるスペック。そんなに高性能なCPUは不要...
OSDノードのmemoryはosd(hdd)の数で決まる感じ. 4GB/1HDDが最...
[[Ceph/memo]]
***構築方針 [#ccef5534]
cephの構築は cephadm コマンドによるデプロイから始まります...
なので初回構築は ceph-mon01 で作り、あとでceph-mgrを追加...
ceph-mon01 -> ceph-mgr -> ceph-mgr(管理ノード化) -> ceph-...
各デーモンには必要な数がありまして、&color(crimson){Manag...
&color(orangered){Object Storage Daemon};は最低3つ. だか...
cephでsmb [[Ceph/smb]]
cephでnfs [[Ceph/nfs]]
常時監視と通知 [[Ceph/Prometheus]] 簡易な通知[[Ceph/alert]]
障害対応 [[Ceph/Troubleshooting]]
可視化 [[Ceph/Grafana]]
***構築開始. cephadmのインストールとデプロイ [#tc8671c3]
rockylinux9.7において、提供されているcephリポジトリは
#code(nonumber){{
[root@ceph-mon01 ~]# dnf search centos-release-ceph
Last metadata expiration check: 0:00:21 ago on Thu 09 Apr...
=========================================================...
centos-release-ceph-pacific.noarch : Ceph Pacific package...
centos-release-ceph-quincy.noarch : Ceph Quincy packages ...
centos-release-ceph-reef.noarch : Ceph Reef packages from...
centos-release-ceph-squid.noarch : Ceph Squid packages fr...
[root@ceph-mon01 ~]#
}}
と最新のTentacleは提供されていない. なので [[https://docs...
#code(nonumber){{
[root@ceph-mon01 ~]# curl --silent --remote-name --locati...
[root@ceph-mon01 ~]# chmod +x cephadm
[root@ceph-mon01 ~]# ./cephadm version
cephadm version 20.2.1 (6a49aff47758778a5f5951e731d437c31...
[root@ceph-mon01 ~]#
}}
cephはpodman(or docker)のコンテナで構築されていきます.
なので各物理マシンには podman と lvm2 パッケージが必要で...
#code(nonumber){{
[root@ceph-mon01 ~]# dnf install podman lvm2
[root@ceph-mon01 ~]# ./cephadm bootstrap --mon-ip 192.168...
}}
[--dashboard-password-noupdate] 初回デプロイが完了するとd...
[--initial-dashboard-password adminpass] これがdashboard...
[--skip-monitoring-stack] monitoringなサービス(prometheus...
設定が間違った、再度作り直したい場合は、まずこのデプロイ...
っで
#code(nonumber){{
[root@ceph-mon01 ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 1fa24c12-3364-11f1-ac0a-bc241165a...
[global]
fsid = 1fa24c12-3364-11f1-ac0a-bc241165abf5
mon_host = [v2:192.168.0.48:3300/0,v1:192.168.0.4...
[root@ceph-mon01 ~]# ./cephadm rm-cluster --fsid 1fa24c12...
[root@ceph-mon01 ~]# rm -rf /etc/ceph /var/lib/ceph/*
}}
これで初期化できます. もし&color(orangered){Object Storag...
[閑話]
もしcephを構築する環境がproxy環境なら「/etc/containers/co...
#code(nonumber){{
[engine]
env = [
"HTTP_PROXY=http://proxy:3128",
"HTTPS_PROXY=http://proxy:3128",
"NO_PROXY=localhost,127.0.0.1,192.168.1.0/24,ceph-mgr,c...
]
}}
な感じで.[閑話休題]
次にceph関連のコマンドを入れます.
#code(nonumber){{
[root@ceph-mon01 ~]# ./cephadm add-repo --release tentacl...
[root@ceph-mon01 ~]# dnf install ceph-common
}}
これで「ceph」コマンドが使えるようになります.
&size(10){cephリポジトリの中身詳細 [[Ceph/repository]]};
***Manager Daemonの構築 [#x45a0e4b]
既に ceph-mon01 には&color(crimson){Manager Daemon};のpod...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mon01 ceph-mon01 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
[root@ceph-mon01 ~]#
}}
ここで素直にceph-mgrをcephに参加させると自動的にもれなく&...
そしてceph-mgrに何も調整されていないストレージがあると&co...
事前に自動登録を停止させる
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch set-unmanaged mon
[root@ceph-mon01 ~]# ceph orch set-unmanaged mgr
[root@ceph-mon01 ~]# ceph orch apply osd --all-available-...
[root@ceph-mon01 ~]#
}}
その上で「dnf install podman lvm2」が入ったceph-mgrにceph...
#code(nonumber){{
(ceph-mgrでの事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph-mon01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub...
[root@ceph-mon01 ~]# ceph orch host add ceph-mgr ...
(確認)
[root@ceph-mon01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47
ceph-mon01 192.168.0.48 _admin
2 hosts in cluster
[root@ceph-mon01 ~]#
[root@ceph-mon01 ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mgr ceph-mgr running (...
crash.ceph-mon01 ceph-mon01 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
[root@ceph-mon01 ~]#
}}
「ceph orch host ls」でマシンの登録が完了して、「ceph orc...
[閑話]もし、何らかの理由で参加させたceph-mgrを取りやめに...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch host drain ceph-mgr # ...
[root@ceph-mon01 ~]# ceph orch ps ceph-mgr # ...
[root@ceph-mon01 ~]# ceph orch host rm ceph-mgr # ...
}}
削除ができたら ceph-mgr の /etc/ceph, /var/lib/ceph/ の中...
次にceph-mgrにラベルを張ります.「ceph orch host ls」で見...
ceph-mgrとceph-mon01は&color(crimson){Manager Daemon};の...
一応既に ceph-mon01 は&color(crimson){Manager Daemon};を...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch host label add ceph-mon01 ...
[root@ceph-mon01 ~]# ceph orch host label add ceph-mgr ...
(確認)
[root@ceph-mon01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr
ceph-mon01 192.168.0.48 _admin,mgr
2 hosts in cluster
[root@ceph-mon01 ~]#
}}
このラベルを使って&color(crimson){Manager Daemon};を追加...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch ls --service_name=mgr --ex...
[root@ceph-mon01 ~]# vi mgr.yaml
service_type: mgr
service_name: mgr
placement:
count: 2
label: mgr
[root@ceph-mon01 ~]# ceph orch apply -i mgr.yaml --dry-run
[root@ceph-mon01 ~]# ceph orch apply -i mgr.yaml
}}
これでmgrとLABELを付けたノードの内2台で&color(crimson){M...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mgr ceph-mgr running (...
crash.ceph-mon01 ceph-mon01 running (...
mgr.ceph-mgr.gslsdh ceph-mgr *:8443,8765 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
[root@ceph-mon01 ~]#
}}
これでceph-mgrでもdashboardが動きます.
ただ、稼働していてもactiveとは限らないくて、managerは1つ...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph -s
:
mgr: ceph-mon01.dyhfce(active, since 14h), standbys: ...
:
[root@ceph-mon01 ~]#
}}
ならmanagerはceph-mon01がactive、他のceph-mgrはmanagerに...
***ceph-mgrにも管理権限を渡す [#wa720d48]
このままceph-mon01で作業してもいいのですが、ceph-mgrにも...
先ほどの「LABELs」で「_admin」ラベルをceph-mgrにも付けます
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch host label add ceph-mgr _a...
[root@ceph-mon01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr
2 hosts in cluster
[root@ceph-mon01 ~]#
}}
これでceph-mgrの「/etc/ceph」に「/etc/ceph/ceph.client.ad...
これは ceph-mgr ノードで「ceph cephadm get-pub-key」を実...
#code(nonumber){{
[root@ceph-mgr ~]# curl --silent --remote-name --location...
[root@ceph-mgr ~]# chmod +x ./cephadm
[root@ceph-mgr ~]# ./cephadm add-repo --release tentacle
[root@ceph-mgr ~]# dnf install ceph-common
[root@ceph-mgr ~]# ceph cephadm get-pub-key > /etc/ceph/c...
}}
ceph-mon01とceph-mgrは&color(crimson){Manager Daemon};が...
でもceph -sではまだceph-mon01がactiveでceph-mgrがstandbys...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph mgr fail ceph-mon01.dyhfce ...
}}
これで ceph-mgr がactiveになります。
***Monitor Daemonの構築 [#i22fbb0b]
基本的にはLABELを付与して設計書を読み込ませてmonをデプロ...
まずは追加
#code(nonumber){{
(ceph-mon02, ceph-mon03での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ceph orch host add ceph-mon02
[root@ceph-mgr ~]# ceph orch host add ceph-mon03
(確認)
[root@ceph-mgr ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr
ceph-mon02 192.168.0.49
ceph-mon03 192.168.0.50
4 hosts in cluster
[root@ceph-mgr ~]#
}}
そしてceph-mon01、ceph-mon02そしてceph-mon03 にmonのラベ...
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch host label add ceph-mon01 mon
[root@ceph-mgr ~]# ceph orch host label add ceph-mon02 mon
[root@ceph-mgr ~]# ceph orch host label add ceph-mon03 mon
(確認)
[root@ceph-mgr ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr,mon
ceph-mon02 192.168.0.49 mon
ceph-mon03 192.168.0.50 mon
4 hosts in cluster
[root@ceph-mgr ~]#
}}
そしてmonの設計書を作って読み込ませます
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch ls --service_name=mon --expo...
[root@ceph-mgr ~]# vi mon.yaml
service_type: mon
service_name: mon
placement:
count: 3
label: mon
[root@ceph-mgr ~]# ceph orch apply -i mon.yaml --dry-run
[root@ceph-mgr ~]# ceph orch apply -i mon.yaml
(確認)
[root@ceph-mgr ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mgr ceph-mgr running (...
crash.ceph-mon01 ceph-mon01 running (...
crash.ceph-mon02 ceph-mon02 running (...
crash.ceph-mon03 ceph-mon03 running (...
mgr.ceph-mgr.gslsdh ceph-mgr *:8443,8765 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
mon.ceph-mon02 ceph-mon02 running (...
mon.ceph-mon03 ceph-mon03 running (...
[root@ceph-mgr ~]#
}}
***Object Storage Daemon の構築 [#md719727]
まずは全OSDノードを参加させます
#code(nonumber){{
(ceph-osd01, ceph-osd02, ceph-osd03での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ceph orch host add ceph-osd01
[root@ceph-mgr ~]# ceph orch host add ceph-osd02
[root@ceph-mgr ~]# ceph orch host add ceph-osd03
}}
ここら辺が難しくなる..OSDのストレージとしてHDD/SSD/nvmeデ...
HDDに対してメタデータをSSDに配置したり書き込みログをnvme...
|BGCOLOR(YELLOW):コンポーネント|BGCOLOR(YELLOW):対象|BGCO...
|BGCOLOR(YELLOW):Primary Device|HDD|実際のデータ本体を保...
|BGCOLOR(YELLOW):DB (Metadata)|sata SSD or nvme SSD|メタ...
|BGCOLOR(YELLOW):WAL (Write-Ahead Log)|nvme SSD or sata S...
OSDノードの登録には設計書(yaml)ベースで行うようで、bluest...
&size(10){以前はストレージ単位で登録できたのですが、最新...
一応既に設計書は登録されているが、中身がcephの仲間になっ...
面倒なので冒頭で「ceph orch apply osd --all-available-dev...
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE...
crash 4/4 11s ago 13h...
mgr 2/2 11s ago 13h...
mon 3/3 10s ago 13h...
osd.all-available-devices 0 - 13h...
[root@ceph-mgr ~]#
}}
「osd.all-available-devices」の中身は「ceph orch ls --ser...
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch rm osd.all-available-devices...
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 7/7 8m ago 14h *
mgr 2/2 8m ago 14h count:2;label:mgr
mon 3/3 8m ago 13h count:3;label:mon
[root@ceph-mgr ~]#
}}
っでOSD向けの設計書ですが、OSDノードのHDD構成(11本だった...
なのでOSDノード単位で service name を用意したいと思う
っで、ceph-osd01の場合. (っと言ってもここでは全て同じスト...
#code(nonumber){{
[root@ceph-mgr ~]# vi osd01_custom.yaml
service_type: osd
service_id: osd01_custom
placement:
hosts:
- ceph-osd01
spec:
data_devices:
paths:
- /dev/sdb <-- 本来ここは「ls -l /dev...
- /dev/sdc
filter_logic: AND
objectstore: bluestore
[root@ceph-mgr ~]#
(テストで読み込ませる)
[root@ceph-mgr ~]# ceph orch apply -i osd01_custom.yaml -...
:
################
OSDSPEC PREVIEWS
################
+---------+--------------+------------+----------+----+--...
|SERVICE |NAME |HOST |DATA |DB |WA...
+---------+--------------+------------+----------+----+--...
|osd |osd01_custom |ceph-osd01 |/dev/sdb |- |- ...
|osd |osd01_custom |ceph-osd01 |/dev/sdc |- |- ...
+---------+--------------+------------+----------+----+--...
[root@ceph-mgr ~]#
}}
この内容でokなら
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch apply -i osd01_custom.yaml
(暫くすると)
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEM...
crash 7/7 10m ago 14h *
mgr 2/2 5m ago 14h count:...
mon 3/3 5m ago 14h count:...
osd.osd01_custom 2 13s ago 104s ceph-o...
[root@ceph-mgr ~]# ceph orch ps
NAME HOST PORTS STATUS ...
:
osd.0 ceph-osd01 running (...
osd.1 ceph-osd01 running (...
[root@ceph-mgr ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT...
-1 0.09760 root default
-3 0.09760 host ceph-osd01
1 hdd 0.04880 osd.1 up 1.00000...
0 ssd 0.04880 osd.0 up 1.00000...
[root@ceph-mgr ~]# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA ...
1 hdd 0.04880 1.00000 50 GiB 26 MiB 112 KiB ...
0 ssd 0.04880 1.00000 50 GiB 26 MiB 112 KiB ...
TOTAL 100 GiB 53 MiB 224 KiB ...
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
[root@ceph-mgr ~]#
}}
って感じで登録が行える
詳しくはこちらで[[Ceph/osd]]
***ファイルシステムの作成(poolの準備) [#g89444b4]
ファイルシステムを作成するには、「meta用のpool」と「data...
そのpoolの作成にはデバイス違い
-HDD
-SSD
と冗長性の確保方法としての
-replicated
同じデータを複数OSD間ノードで持ちます。何個持つかは既定で...
-erasure-coded
「データチャンク」と「パリティチャンク」に分けてOSDノード...
の組み合わせによるルール(CRUSH配置ルール)を作って、それで...
■meta用poolの作成
目下、「meta用のpool」は「replicated」での構築に限定され...
まずはSSDを使って作るmeta用poolのルールを作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd crush rule create-replicated ...
(ceph osd crush rule create-replicated ...
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph-mgr ~]# (確認) ceph osd crush rule ls (中身)...
}}
作ったルールでmeta用poolを作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd pool create emfs-meta ...
[root@ceph-mgr ~]# ceph osd pool application enable emfs-...
}}
数字はPGと言われるものですが、その値の定義は非常にめんど...
■data用poolの作成
こちらは「replicated」あるいは「erasure-coded」のいずれか...
ファイルシステムを作る際は、どうも「replicated」で用意さ...
#code(nonumber){{
hddをベースにした「replicated」ルールを追加
[root@ceph-mgr ~]# ceph osd crush rule create-replicated ...
(ceph osd crush rule create-replicated ...
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph-mgr ~]# (確認) ceph osd crush rule ls (中身)...
}}
hddをターゲットとした「erasure-coded」ルールを作ります. k...
mの値はcephファイルシステムの運用でOSDノードが停止しても...
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd erasure-code-profile set k2-m...
(ceph osd erasure-code-profile set NAME...
*NAME: 名称
*k: データの分割数
*m: パリティーの数
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph-mgr ~]# (確認)ceph osd erasure-code-profile ls...
}}
っでpoolを作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd pool create emfs-data-default...
[root@ceph-mgr ~]# ceph osd pool application enable emfs-...
[root@ceph-mgr ~]# ceph osd pool create emfs-data-ec ...
[root@ceph-mgr ~]# ceph osd pool application enable emfs-...
[root@ceph-mgr ~]# ceph osd pool set emfs-data-ec allow_e...
[root@ceph-mgr ~]# ceph osd pool set emfs-data-ec bulk true
}}
***.mgr プールの rule 変更 [#o00444b7]
OSDを3つ以上登録するとceph側で .mgr というpoolが自動的に...
このpoolは「replicated_rule」を使っていて、これは全デバイ...
.mgr poolは「replicated_rule」ではなく、SSDあるいはHDD由...
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd pool get .mgr crush_rule
crush_rule: replicated_rule
[root@ceph-mgr ~]# ceph osd pool set .mgr crush_rule data...
[root@ceph-mgr ~]# ceph osd pool get .mgr crush_rule
crush_rule: data-hdd
[root@ceph-mgr ~]#
}}
***ファイルシステムの作成 [#ge89aee9]
いよいよ最終段階. 作ったpoolでファイルシステムを用意します
っがその前に metadata server を用意します。
いつものようにノードにラベルを張って
#code(nonumber){{
(ラベルを張って)
[root@ceph-mgr ~]# ceph orch host label add ceph-mon02 mds
[root@ceph-mgr ~]# ceph orch host label add ceph-mon03 mds
[root@ceph-mgr ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr,mon
ceph-mon02 192.168.0.49 mon,mds
ceph-mon03 192.168.0.50 mon,mds
:
7 hosts in cluster
[root@ceph-mgr ~]#
}}
設計書を用意します
#code(nonumber){{
[root@ceph-mgr ~]# vi mds.yaml
service_type: mds
service_id: emfs <-- 作成するファイルシステム名...
placement:
count: 2
label: mds
[root@ceph-mgr ~]# ceph orch apply -i mds.yaml --dry-run
:
####################
SERVICESPEC PREVIEWS
####################
+---------+----------+-----------------------+-----------...
|SERVICE |NAME |ADD_TO |REMOVE_FROM...
+---------+----------+-----------------------+-----------...
|mds |mds.emfs |ceph-mon03 ceph-mon02 | ...
+---------+----------+-----------------------+-----------...
################
:
[root@ceph-mgr ~]# ceph orch apply -i mds.yaml
[root@ceph-mgr ~]# ceph orch ps --daemon_type=mds
NAME HOST PORTS STATUS ...
mds.emfs.ceph-mon02.fqwudw ceph-mon02 running (2...
mds.emfs.ceph-mon03.vhwkrp ceph-mon03 running (2...
[root@ceph-mgr ~]#
}}
metadata serverが準備出来てファイルシステムを用意します
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd lspools
1 .mgr
2 emfs-meta
3 emfs-data-default
4 emfs-data-ec
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph fs new emfs emfs-meta emfs-data-d...
[root@ceph-mgr ~]# ceph osd pool set emfs-data-default bu...
[root@ceph-mgr ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-d...
[root@ceph-mgr ~]#
(次に ec のpoolを追加)
[root@ceph-mgr ~]# ceph fs add_data_pool emfs emfs-data-ec
[root@ceph-mgr ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-d...
[root@ceph-mgr ~]#
}}
っでceph -sで様子をみると
#code(nonumber){{
[root@ceph-mgr ~]# ceph -s
cluster:
id: 9ce2eb0a-355d-11f1-a713-bc241165abf5
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-mon01,ceph-mon03,ceph-mon...
mgr: ceph-mon01.oedwwx(active, since 17h), standbys: ...
mds: 1/1 daemons up, 1 standby
osd: 6 osds: 6 up (since 78m), 6 in (since 78m)
data:
volumes: 1/1 healthy
pools: 4 pools, 209 pgs
objects: 24 objects, 579 KiB
usage: 285 MiB used, 300 GiB / 300 GiB avail
pgs: 209 active+clean
[root@ceph-mgr ~]#
}}
これで一応ファイルシステムは構築完了
あとは作ったファイルシステムに subvolumegroup/subvolume ...
subvolumegroup/subvolume の場所で「replicated」なpoolか「...
***subvolumegroup/subvolume [#nf3b851c]
こうして提供される emfs であるが、その配下に /emfs/people...
cephでは、subvolumegroup/subvolume で作ったサブフォルダに...
|BGCOLOR(YELLOW):項目|BGCOLOR(YELLOW):subvolumegroup|BGCO...
|役割|グルーピング|実データ領域|単なる整理(フォルダ)|
|中身|subvolumeを持つ|ファイル・フォルダを持つ|ファイルや...
|クォータ|グループ単位で可能|個別に可能|一応可能|
|スナップショット|基本しない|できる|基本できない(単体で...
|利用単位|管理者目線|ユーザ/アプリ目線|ユーザー目線(軽い...
|LVMに例えると|VolumeGroup|LogicalVolume|単なるmkdir|
|分けるもの|project,data,backup|ユーザ領域,プロジェクト領...
例えば下記のようなフォルダ構成なら
#code(nonumber){{
/emfs
├ people ← subvolumegroup
│ ├ userA (subvolume or mkdir)
│ │ ├ documents (mkdir)
│ │ ├ download (mkdir)
│ │ └ picture (mkdir)
│ └ userB (subvolume or mkdir)
├ project ← subvolumegroup
│ ├ project001 (subvolume) <--スナップショットで世代...
│ └ project002 (subvolume)
│
└ data ← subvolumegroup
└ offloaddata (subvolume or mkdir)
}}
作り方:
#code(nonumber){{
ceph fs subvolumegroup create emfs people --pool_layo...
ceph fs subvolumegroup create emfs project --pool_layo...
ceph fs subvolumegroup create emfs data --pool_layo...
[people配下]
ceph fs subvolume create emfs userA --group_name people -...
ceph fs subvolume create emfs userB --group_name people
or
mkdir userA userB # 親のpeopleのpool_layoutが適用される
[project配下]
ceph fs subvolume create emfs project001 --group_name pro...
ceph fs subvolume create emfs project002 --group_name pro...
[data配下]
ceph fs subvolume create emfs offloaddata --group_name d...
or
mkdir offloaddata
}}
だが、ユーザが追加されるたびにsubvolumeで作るのは面倒かな...
プロジェクトに関する部分は スナップショット が撮れる subv...
offloaddataらは、これもmkdirで十分かな
でも管理面からも運用的には/emfsの配下だけは subvolumegrop...
subvolumegroup/subvolumeの確認
#code(nonumber){{
[root@ceph-mgr ~]# ceph fs subvolumegroup ls emfs
[
{
"name": "project"
},
{
"name": "data"
},
{
"name": "people"
}
]
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph fs subvolume ls emfs --group_name...
[
{
"name": "project001"
},
{
"name": "project002"
}
]
[root@ceph-mgr ~]#
}}
各subvolumegroup/subvolumeのPATHを調べます
#code(nonumber){{
[root@ceph-mgr ~]# ceph fs subvolumegroup getpath emfs pe...
/volumes/people
[root@ceph-mgr ~]# ceph fs subvolumegroup getpath emfs pr...
/volumes/project
[root@ceph-mgr ~]# ceph fs subvolumegroup getpath emfs data
/volumes/data
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph fs subvolume getpath emfs project...
/volumes/project/project001/5028b9b8-2ec9-4ffb-8d83-94628...
[root@ceph-mgr ~]# ceph fs subvolume getpath emfs project...
/volumes/project/project002/8eda5a0d-7de5-44f9-a63e-cb723...
[root@ceph-mgr ~]#
}}
subvolumeになるとUUIDが入る。これだと「/volume/project」...
***ceph client [#kbe4c9ea]
作ったcephストレージをmountしてみます.
まずはcephのプログラムを入れます. レポジトリから始めます.
#code(nonumber){{
[root@ceph-client ~]# cat <<_EOF_> /etc/yum.repos.d/ceph....
[Ceph]
name=Ceph $basearch
baseurl=https://download.ceph.com/rpm-tentacle/el9/\$base...
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg
[Ceph-noarch]
name=Ceph noarch
baseurl=https://download.ceph.com/rpm-tentacle/el9/noarch
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg
_EOF_
[root@ceph-client ~]# dnf install epel-release -y
[root@ceph-client ~]# dnf install ceph-common -y
}}
そしてsubvolumegroup/subvolume単位でキーリングを作ります
#code(nonumber){{
/emfs
├ people -> 「ceph fs subvolumegroup getpath emfs peo...
│ ├ userA (mkdir)
│ │ ├ documents (mkdir)
│ │ ├ download (mkdir)
│ │ └ picture (mkdir)
│ └ userB (mkdir)
├ project ← subvolumegroup ->「ceph fs subvolumegrou...
│ ├ project001 (subvolume) ->「ceph fs subvolumegrou...
│ └ project002 (subvolume) ->「ceph fs subvolumegrou...
│
└ data ← subvolumegroup ->「ceph fs subvolumegroup ...
└ offloaddata (mkdir)
}}
その後にマウントする部分のキーリングを管理ノードで作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph fs authorize emfs client.r9-peopl...
あるいは
[root@ceph-mgr ~]# ceph auth get-or-create client.r9-peop...
mon 'allow r fsname=emfs' \
mds 'allow rwps fsname=emfs path=/volumes/people' \
osd 'allow rw pool=emfs-data-ec '
[root@ceph-mgr ~]#
}}
作ったキーリングは「ceph auth ls」で確認できます
#code(nonumber){{
[root@ceph-mgr ~]# ceph auth get client.r9-people
[client.r9-people]
key = AQCMzu9p3MWhEBAAzSN9nCFRdraJGkM9sGn7VA==
caps mds = "allow rwps fsname=emfs path=/volumes/peop...
caps mon = "allow r fsname=emfs"
caps osd = "allow rw pool=emfs-data-ec"
[root@ceph-mgr ~]# (削除) ceph auth del client.r9-people
}}
mountにはこのキーリング「ceph auth get client.r9-people」...
#code(nonumber){{
[root@ceph-client ~]# cat <<_EOF_> /etc/ceph/ceph.client....
[client.r9-people]
key = AQCMzu9p3MWhEBAAzSN9nCFRdraJGkM9sGn7VA==
caps mds = "allow rwps fsname=emfs path=/volumes/peop...
caps mon = "allow r fsname=emfs"
caps osd = "allow rw pool=emfs-data-ec"
_EOF_
[root@ceph-client ~]#
}}
そしてmountに最低限必要な ceph.conf を用意して
#code(nonumber){{
[root@ceph-client ~]# ssh root@ceph-mgr "ceph config gene...
}}
っでmountを試みます
#code(nonumber){{
[root@ceph-client ~]# mount -t ceph ceph-mon01:/volumes/p...
あるいは
[root@ceph-client ~]# mount -t ceph :/volumes/people /mnt...
[root@ceph-client ~]# df -Tht ceph
Filesystem Type Size Used Avail Use% ...
192.168.0.48:/volumes/people ceph 300G 224M 300G 1% ...
[root@ceph-client ~]#
}}
上記は「/etc/ceph/ceph.client.r9-people.keyring」を用意す...
keyの文字列を納めたファイルでもいいみたい
#code(nonumber){{
[root@ceph-client ~]# cat r9.secret
AQCMzu9p3MWhEBAAzSN9nCFRdraJGkM9sGn7VA==
[root@ceph-client ~]#
[root@ceph-client ~]# mount -t ceph ceph-mon01:/volumes/p...
}}
とsecretfileと渡してもいい。
ただ、
&color(red){2026-04-28T07:19:29.044+0900 7f6473f9c100 -1 ...
とメッセージが出ます.
先ほどのフォルダ構成でsubvolumegroupの中にsubvolumeが複数...
「/emfs/project/project001」->「/volumes/project/project0...
「/emfs/project/project002」->「/volumes/project/project0...
とかの場合です。
この場合はsubvolumegroupの「/emfs/project」部分のキーリン...
「project001」「project002」と分けて管理、アクセスさせな...
まずは/emfs/project部分のキーリング
#code(nonumber){{
[root@ceph-mgr ~]# ceph auth get-or-create client.r9-proj...
mon 'allow r fsname=emfs' \
mds 'allow rwps fsname=emfs path=/volumes/project' \
osd 'allow rw pool=emfs-data-ec'
[root@ceph-mgr ~]# ceph auth get client.r9-project
[client.r9-project]
key = AQAs5O9pm3zzNhAAD6gMtRF1IewYgD8rOhjMAQ==
caps mds = "allow rwps fsname=emfs path=/volumes/...
caps mon = "allow r fsname=emfs"
caps osd = "allow rw pool=emfs-data-ec"
[root@ceph-mgr ~]#
}}
そしてclient側では
#code(nonumber){{
[root@ceph-client ~]# echo "AQAs5O9pm3zzNhAAD6gMtRF1IewYg...
[root@ceph-client ~]# vi /etc/fstab
:
:
# project001 のマウント
ceph-mon01:/volumes/project/project001/5028b9b8-2ec9-4ffb...
# project002 のマウント
ceph-mon01:/volumes/project/project002/8eda5a0d-7de5-44f9...
[root@ceph-client ~]#
[root@ceph-client ~]# mkdir -p /project/{project001,proje...
[root@ceph-client ~]# systemctl daemon-reload
[root@ceph-client ~]# mount -a
}}
でmountできます。
autofsでmountなら
#code(nonumber){{
[direct map]
[root@ceph-client ~]# cat /etc/auto.master
/project /etc/auto.home --timeout=60
[root@ceph-client ~]# cat /etc/auto.home
# [キー] -fstype=ceph,[オプション] [デバイスパス]
project001 -fstype=ceph,name=r9-project,secretfile=/etc/...
project002 -fstype=ceph,name=r9-project,secretfile=/etc/...
[root@ceph-client ~]#
}}
そして
#code(nonumber){{
[root@ceph-client ~]# systemctl enable autofs --now
}}
と実行する
***cephのshutdown/startup [#dd4fb094]
■shutdown 手順
#code(nonumber){{
[全てのcephクライアントからcephマウントを外す]
(ceph fs set emfs max_mds 1) # 複数でmdsが動い...
ceph fs set emfs down true # mdsを正常にシャ...
ceph fs set emfs joinable false # mdsの自動起動の...
ceph fs fail emfs # 現在のMDSを確実...
ceph osd set noout
ceph osd set norebalance
ceph osd set nobackfill
ceph osd set norecover
ceph osd set noautoscale
}}
厳密には「まずルール(joinable false)を決めてから、動作...
予期せぬ自動昇格を防ぐ意味で非常に安全なアプローチなので...
#code(nonumber){{
ceph fs set emfs joinable false (まず「新しいMDSは参加...
ceph fs set emfs down true (稼働中のMDSを正常終了...
ceph fs fail emfs (念のため、完全に停止...
}}
そして
■start-up 手順
#code(nonumber){{
monを起動して、クォーラムを成立させる
mgrを起動
osdを起動
}}
ceph osd stat で全てのosd(hdd/ssd)の起動を確認して、「up...
ceph -s でHEALTH_OK でありフラグの警告のみであることを確...
もし「active+recovering+degraded」でずっと止まっているなら
先行して
ceph osd unset norecover
ceph osd unset nobackfill
を実施します。これですてのpgsが「active+clean」なにのを確...
その後に
#code(nonumber){{
ceph osd unset noout
ceph osd unset norebalance
ceph osd unset nobackfill
ceph osd unset norecover
ceph osd unset noautoscale
ceph fs set emfs joinable true
ceph fs set emfs down false
}}
mdsがactiveであることを確認
ceph mountを実行して完了
あと「ceph health detail」で問題を確認して、もしosd daemo...
その問題のosdに対してコンテナを再生成させます。これはOSD...
ceph orch daemon redeploy osd.4
ceph orch daemon redeploy osd.5
終了行:
本家様 [[https://ceph.io/>+https://ceph.io/]]
オブジェクトストレージ(Ceph Object Store), ブロックストレ...
&size(10){オブジェクトストレージ:Hadoopやamazon S3なスト...
&size(10){ブロックストレージ: /dev/vda, /dev/vdbとか提供...
&size(10){ファイルシステム: posix準拠なファイルシステム, ...
ここではこのうち Ceph を使ったPOSIX互換ファイルシステム C...
Cephにはバージョン名があって下記の通りになってます &siz...
&size(10){[[https://docs.ceph.com/docs/master/releases/ge...
|BGCOLOR(YELLOW):Release name|BGCOLOR(YELLOW):Initial rel...
|Tentacle|2025-11-18|20.2.0|2027-11-18(estimated)|IBM Sto...
|Squid|2024-09-26|19.2.3|2026-09-19(estimated)|IBM Storag...
|Reef|2023-08-07|18.2.7|2025-08-01(estimated)|IBM Storage...
|Quincy|2022-04-19|17.2.9|2025-01-13|IBM Storage Ceph 6|
|Pacific|2021-03-31|16.2.15|2024-03-04|IBM Storage Ceph 5...
|Octopus|2020-03-23|15.2.17|2022-08-09|SUSE Enterprise S...
|Nautilus|2019-03-19|14.2.22|2021-06-30| Red Hat Ceph Sto...
|Mimic|2018-06-01|13.2.10|2020-07-22||
|Luminous|2017-08-01|12.2.13|2020-03-01|Red Hat Ceph Stor...
&color(red){*};&size(10){毎年メジャーバージョンアップがあ...
ここでは「Tentacle」を導入します.
OS上に直接アプリをインストールする方法以外に、docker/podm...
各マシンに &color(crimson){Manager Daemon};, &color(magen...
っで構成はこんな感じで.
|BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):役目|BGCOLOR(YE...
|ceph-mgr |&color(crimson){Manager Daemon}; ...
|ceph-mon01 |&color(crimson){Manager Daemon}; &br; &colo...
|ceph-mon02 | &colo...
|ceph-mon03 | &colo...
|ceph-osd01 |&color(orangered){Object Storage Daemon}; ...
|ceph-osd02 |&color(orangered){Object Storage Daemon}; ...
|ceph-osd03 |&color(orangered){Object Storage Daemon}; ...
[OSD]
cephFSを作る際はmeta向けの高速なSSDとdata向けの大容量のHD...
data向け領域はHDDのみでも構わないが、sata SSD/nvme SSDを...
SSD(sata,nvme)はエンタープライズ向けで電源喪失保護(PLP: P...
[cluster network]
&color(orangered){Object Storage Daemon};間の専用通信ネッ...
あとOSDノード間の死活確認も行います。データの複製やらリカ...
[public network]
bonding構成が望ましいようで、bondingでも802.3ad. その場合...
***構築に必要なリソースとか [#b419cf5c]
各デーモンで要求されるスペック。そんなに高性能なCPUは不要...
OSDノードのmemoryはosd(hdd)の数で決まる感じ. 4GB/1HDDが最...
[[Ceph/memo]]
***構築方針 [#ccef5534]
cephの構築は cephadm コマンドによるデプロイから始まります...
なので初回構築は ceph-mon01 で作り、あとでceph-mgrを追加...
ceph-mon01 -> ceph-mgr -> ceph-mgr(管理ノード化) -> ceph-...
各デーモンには必要な数がありまして、&color(crimson){Manag...
&color(orangered){Object Storage Daemon};は最低3つ. だか...
cephでsmb [[Ceph/smb]]
cephでnfs [[Ceph/nfs]]
常時監視と通知 [[Ceph/Prometheus]] 簡易な通知[[Ceph/alert]]
障害対応 [[Ceph/Troubleshooting]]
可視化 [[Ceph/Grafana]]
***構築開始. cephadmのインストールとデプロイ [#tc8671c3]
rockylinux9.7において、提供されているcephリポジトリは
#code(nonumber){{
[root@ceph-mon01 ~]# dnf search centos-release-ceph
Last metadata expiration check: 0:00:21 ago on Thu 09 Apr...
=========================================================...
centos-release-ceph-pacific.noarch : Ceph Pacific package...
centos-release-ceph-quincy.noarch : Ceph Quincy packages ...
centos-release-ceph-reef.noarch : Ceph Reef packages from...
centos-release-ceph-squid.noarch : Ceph Squid packages fr...
[root@ceph-mon01 ~]#
}}
と最新のTentacleは提供されていない. なので [[https://docs...
#code(nonumber){{
[root@ceph-mon01 ~]# curl --silent --remote-name --locati...
[root@ceph-mon01 ~]# chmod +x cephadm
[root@ceph-mon01 ~]# ./cephadm version
cephadm version 20.2.1 (6a49aff47758778a5f5951e731d437c31...
[root@ceph-mon01 ~]#
}}
cephはpodman(or docker)のコンテナで構築されていきます.
なので各物理マシンには podman と lvm2 パッケージが必要で...
#code(nonumber){{
[root@ceph-mon01 ~]# dnf install podman lvm2
[root@ceph-mon01 ~]# ./cephadm bootstrap --mon-ip 192.168...
}}
[--dashboard-password-noupdate] 初回デプロイが完了するとd...
[--initial-dashboard-password adminpass] これがdashboard...
[--skip-monitoring-stack] monitoringなサービス(prometheus...
設定が間違った、再度作り直したい場合は、まずこのデプロイ...
っで
#code(nonumber){{
[root@ceph-mon01 ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 1fa24c12-3364-11f1-ac0a-bc241165a...
[global]
fsid = 1fa24c12-3364-11f1-ac0a-bc241165abf5
mon_host = [v2:192.168.0.48:3300/0,v1:192.168.0.4...
[root@ceph-mon01 ~]# ./cephadm rm-cluster --fsid 1fa24c12...
[root@ceph-mon01 ~]# rm -rf /etc/ceph /var/lib/ceph/*
}}
これで初期化できます. もし&color(orangered){Object Storag...
[閑話]
もしcephを構築する環境がproxy環境なら「/etc/containers/co...
#code(nonumber){{
[engine]
env = [
"HTTP_PROXY=http://proxy:3128",
"HTTPS_PROXY=http://proxy:3128",
"NO_PROXY=localhost,127.0.0.1,192.168.1.0/24,ceph-mgr,c...
]
}}
な感じで.[閑話休題]
次にceph関連のコマンドを入れます.
#code(nonumber){{
[root@ceph-mon01 ~]# ./cephadm add-repo --release tentacl...
[root@ceph-mon01 ~]# dnf install ceph-common
}}
これで「ceph」コマンドが使えるようになります.
&size(10){cephリポジトリの中身詳細 [[Ceph/repository]]};
***Manager Daemonの構築 [#x45a0e4b]
既に ceph-mon01 には&color(crimson){Manager Daemon};のpod...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mon01 ceph-mon01 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
[root@ceph-mon01 ~]#
}}
ここで素直にceph-mgrをcephに参加させると自動的にもれなく&...
そしてceph-mgrに何も調整されていないストレージがあると&co...
事前に自動登録を停止させる
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch set-unmanaged mon
[root@ceph-mon01 ~]# ceph orch set-unmanaged mgr
[root@ceph-mon01 ~]# ceph orch apply osd --all-available-...
[root@ceph-mon01 ~]#
}}
その上で「dnf install podman lvm2」が入ったceph-mgrにceph...
#code(nonumber){{
(ceph-mgrでの事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph-mon01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub...
[root@ceph-mon01 ~]# ceph orch host add ceph-mgr ...
(確認)
[root@ceph-mon01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47
ceph-mon01 192.168.0.48 _admin
2 hosts in cluster
[root@ceph-mon01 ~]#
[root@ceph-mon01 ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mgr ceph-mgr running (...
crash.ceph-mon01 ceph-mon01 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
[root@ceph-mon01 ~]#
}}
「ceph orch host ls」でマシンの登録が完了して、「ceph orc...
[閑話]もし、何らかの理由で参加させたceph-mgrを取りやめに...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch host drain ceph-mgr # ...
[root@ceph-mon01 ~]# ceph orch ps ceph-mgr # ...
[root@ceph-mon01 ~]# ceph orch host rm ceph-mgr # ...
}}
削除ができたら ceph-mgr の /etc/ceph, /var/lib/ceph/ の中...
次にceph-mgrにラベルを張ります.「ceph orch host ls」で見...
ceph-mgrとceph-mon01は&color(crimson){Manager Daemon};の...
一応既に ceph-mon01 は&color(crimson){Manager Daemon};を...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch host label add ceph-mon01 ...
[root@ceph-mon01 ~]# ceph orch host label add ceph-mgr ...
(確認)
[root@ceph-mon01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr
ceph-mon01 192.168.0.48 _admin,mgr
2 hosts in cluster
[root@ceph-mon01 ~]#
}}
このラベルを使って&color(crimson){Manager Daemon};を追加...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch ls --service_name=mgr --ex...
[root@ceph-mon01 ~]# vi mgr.yaml
service_type: mgr
service_name: mgr
placement:
count: 2
label: mgr
[root@ceph-mon01 ~]# ceph orch apply -i mgr.yaml --dry-run
[root@ceph-mon01 ~]# ceph orch apply -i mgr.yaml
}}
これでmgrとLABELを付けたノードの内2台で&color(crimson){M...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mgr ceph-mgr running (...
crash.ceph-mon01 ceph-mon01 running (...
mgr.ceph-mgr.gslsdh ceph-mgr *:8443,8765 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
[root@ceph-mon01 ~]#
}}
これでceph-mgrでもdashboardが動きます.
ただ、稼働していてもactiveとは限らないくて、managerは1つ...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph -s
:
mgr: ceph-mon01.dyhfce(active, since 14h), standbys: ...
:
[root@ceph-mon01 ~]#
}}
ならmanagerはceph-mon01がactive、他のceph-mgrはmanagerに...
***ceph-mgrにも管理権限を渡す [#wa720d48]
このままceph-mon01で作業してもいいのですが、ceph-mgrにも...
先ほどの「LABELs」で「_admin」ラベルをceph-mgrにも付けます
#code(nonumber){{
[root@ceph-mon01 ~]# ceph orch host label add ceph-mgr _a...
[root@ceph-mon01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr
2 hosts in cluster
[root@ceph-mon01 ~]#
}}
これでceph-mgrの「/etc/ceph」に「/etc/ceph/ceph.client.ad...
これは ceph-mgr ノードで「ceph cephadm get-pub-key」を実...
#code(nonumber){{
[root@ceph-mgr ~]# curl --silent --remote-name --location...
[root@ceph-mgr ~]# chmod +x ./cephadm
[root@ceph-mgr ~]# ./cephadm add-repo --release tentacle
[root@ceph-mgr ~]# dnf install ceph-common
[root@ceph-mgr ~]# ceph cephadm get-pub-key > /etc/ceph/c...
}}
ceph-mon01とceph-mgrは&color(crimson){Manager Daemon};が...
でもceph -sではまだceph-mon01がactiveでceph-mgrがstandbys...
#code(nonumber){{
[root@ceph-mon01 ~]# ceph mgr fail ceph-mon01.dyhfce ...
}}
これで ceph-mgr がactiveになります。
***Monitor Daemonの構築 [#i22fbb0b]
基本的にはLABELを付与して設計書を読み込ませてmonをデプロ...
まずは追加
#code(nonumber){{
(ceph-mon02, ceph-mon03での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ceph orch host add ceph-mon02
[root@ceph-mgr ~]# ceph orch host add ceph-mon03
(確認)
[root@ceph-mgr ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr
ceph-mon02 192.168.0.49
ceph-mon03 192.168.0.50
4 hosts in cluster
[root@ceph-mgr ~]#
}}
そしてceph-mon01、ceph-mon02そしてceph-mon03 にmonのラベ...
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch host label add ceph-mon01 mon
[root@ceph-mgr ~]# ceph orch host label add ceph-mon02 mon
[root@ceph-mgr ~]# ceph orch host label add ceph-mon03 mon
(確認)
[root@ceph-mgr ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr,mon
ceph-mon02 192.168.0.49 mon
ceph-mon03 192.168.0.50 mon
4 hosts in cluster
[root@ceph-mgr ~]#
}}
そしてmonの設計書を作って読み込ませます
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch ls --service_name=mon --expo...
[root@ceph-mgr ~]# vi mon.yaml
service_type: mon
service_name: mon
placement:
count: 3
label: mon
[root@ceph-mgr ~]# ceph orch apply -i mon.yaml --dry-run
[root@ceph-mgr ~]# ceph orch apply -i mon.yaml
(確認)
[root@ceph-mgr ~]# ceph orch ps
NAME HOST PORTS STATUS ...
crash.ceph-mgr ceph-mgr running (...
crash.ceph-mon01 ceph-mon01 running (...
crash.ceph-mon02 ceph-mon02 running (...
crash.ceph-mon03 ceph-mon03 running (...
mgr.ceph-mgr.gslsdh ceph-mgr *:8443,8765 running (...
mgr.ceph-mon01.dyhfce ceph-mon01 *:9283,8765 running (...
mon.ceph-mon01 ceph-mon01 running (...
mon.ceph-mon02 ceph-mon02 running (...
mon.ceph-mon03 ceph-mon03 running (...
[root@ceph-mgr ~]#
}}
***Object Storage Daemon の構築 [#md719727]
まずは全OSDノードを参加させます
#code(nonumber){{
(ceph-osd01, ceph-osd02, ceph-osd03での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub r...
[root@ceph-mgr ~]# ceph orch host add ceph-osd01
[root@ceph-mgr ~]# ceph orch host add ceph-osd02
[root@ceph-mgr ~]# ceph orch host add ceph-osd03
}}
ここら辺が難しくなる..OSDのストレージとしてHDD/SSD/nvmeデ...
HDDに対してメタデータをSSDに配置したり書き込みログをnvme...
|BGCOLOR(YELLOW):コンポーネント|BGCOLOR(YELLOW):対象|BGCO...
|BGCOLOR(YELLOW):Primary Device|HDD|実際のデータ本体を保...
|BGCOLOR(YELLOW):DB (Metadata)|sata SSD or nvme SSD|メタ...
|BGCOLOR(YELLOW):WAL (Write-Ahead Log)|nvme SSD or sata S...
OSDノードの登録には設計書(yaml)ベースで行うようで、bluest...
&size(10){以前はストレージ単位で登録できたのですが、最新...
一応既に設計書は登録されているが、中身がcephの仲間になっ...
面倒なので冒頭で「ceph orch apply osd --all-available-dev...
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE...
crash 4/4 11s ago 13h...
mgr 2/2 11s ago 13h...
mon 3/3 10s ago 13h...
osd.all-available-devices 0 - 13h...
[root@ceph-mgr ~]#
}}
「osd.all-available-devices」の中身は「ceph orch ls --ser...
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch rm osd.all-available-devices...
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 7/7 8m ago 14h *
mgr 2/2 8m ago 14h count:2;label:mgr
mon 3/3 8m ago 13h count:3;label:mon
[root@ceph-mgr ~]#
}}
っでOSD向けの設計書ですが、OSDノードのHDD構成(11本だった...
なのでOSDノード単位で service name を用意したいと思う
っで、ceph-osd01の場合. (っと言ってもここでは全て同じスト...
#code(nonumber){{
[root@ceph-mgr ~]# vi osd01_custom.yaml
service_type: osd
service_id: osd01_custom
placement:
hosts:
- ceph-osd01
spec:
data_devices:
paths:
- /dev/sdb <-- 本来ここは「ls -l /dev...
- /dev/sdc
filter_logic: AND
objectstore: bluestore
[root@ceph-mgr ~]#
(テストで読み込ませる)
[root@ceph-mgr ~]# ceph orch apply -i osd01_custom.yaml -...
:
################
OSDSPEC PREVIEWS
################
+---------+--------------+------------+----------+----+--...
|SERVICE |NAME |HOST |DATA |DB |WA...
+---------+--------------+------------+----------+----+--...
|osd |osd01_custom |ceph-osd01 |/dev/sdb |- |- ...
|osd |osd01_custom |ceph-osd01 |/dev/sdc |- |- ...
+---------+--------------+------------+----------+----+--...
[root@ceph-mgr ~]#
}}
この内容でokなら
#code(nonumber){{
[root@ceph-mgr ~]# ceph orch apply -i osd01_custom.yaml
(暫くすると)
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEM...
crash 7/7 10m ago 14h *
mgr 2/2 5m ago 14h count:...
mon 3/3 5m ago 14h count:...
osd.osd01_custom 2 13s ago 104s ceph-o...
[root@ceph-mgr ~]# ceph orch ps
NAME HOST PORTS STATUS ...
:
osd.0 ceph-osd01 running (...
osd.1 ceph-osd01 running (...
[root@ceph-mgr ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT...
-1 0.09760 root default
-3 0.09760 host ceph-osd01
1 hdd 0.04880 osd.1 up 1.00000...
0 ssd 0.04880 osd.0 up 1.00000...
[root@ceph-mgr ~]# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA ...
1 hdd 0.04880 1.00000 50 GiB 26 MiB 112 KiB ...
0 ssd 0.04880 1.00000 50 GiB 26 MiB 112 KiB ...
TOTAL 100 GiB 53 MiB 224 KiB ...
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
[root@ceph-mgr ~]#
}}
って感じで登録が行える
詳しくはこちらで[[Ceph/osd]]
***ファイルシステムの作成(poolの準備) [#g89444b4]
ファイルシステムを作成するには、「meta用のpool」と「data...
そのpoolの作成にはデバイス違い
-HDD
-SSD
と冗長性の確保方法としての
-replicated
同じデータを複数OSD間ノードで持ちます。何個持つかは既定で...
-erasure-coded
「データチャンク」と「パリティチャンク」に分けてOSDノード...
の組み合わせによるルール(CRUSH配置ルール)を作って、それで...
■meta用poolの作成
目下、「meta用のpool」は「replicated」での構築に限定され...
まずはSSDを使って作るmeta用poolのルールを作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd crush rule create-replicated ...
(ceph osd crush rule create-replicated ...
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph-mgr ~]# (確認) ceph osd crush rule ls (中身)...
}}
作ったルールでmeta用poolを作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd pool create emfs-meta ...
[root@ceph-mgr ~]# ceph osd pool application enable emfs-...
}}
数字はPGと言われるものですが、その値の定義は非常にめんど...
■data用poolの作成
こちらは「replicated」あるいは「erasure-coded」のいずれか...
ファイルシステムを作る際は、どうも「replicated」で用意さ...
#code(nonumber){{
hddをベースにした「replicated」ルールを追加
[root@ceph-mgr ~]# ceph osd crush rule create-replicated ...
(ceph osd crush rule create-replicated ...
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph-mgr ~]# (確認) ceph osd crush rule ls (中身)...
}}
hddをターゲットとした「erasure-coded」ルールを作ります. k...
mの値はcephファイルシステムの運用でOSDノードが停止しても...
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd erasure-code-profile set k2-m...
(ceph osd erasure-code-profile set NAME...
*NAME: 名称
*k: データの分割数
*m: パリティーの数
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph-mgr ~]# (確認)ceph osd erasure-code-profile ls...
}}
っでpoolを作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd pool create emfs-data-default...
[root@ceph-mgr ~]# ceph osd pool application enable emfs-...
[root@ceph-mgr ~]# ceph osd pool create emfs-data-ec ...
[root@ceph-mgr ~]# ceph osd pool application enable emfs-...
[root@ceph-mgr ~]# ceph osd pool set emfs-data-ec allow_e...
[root@ceph-mgr ~]# ceph osd pool set emfs-data-ec bulk true
}}
***.mgr プールの rule 変更 [#o00444b7]
OSDを3つ以上登録するとceph側で .mgr というpoolが自動的に...
このpoolは「replicated_rule」を使っていて、これは全デバイ...
.mgr poolは「replicated_rule」ではなく、SSDあるいはHDD由...
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd pool get .mgr crush_rule
crush_rule: replicated_rule
[root@ceph-mgr ~]# ceph osd pool set .mgr crush_rule data...
[root@ceph-mgr ~]# ceph osd pool get .mgr crush_rule
crush_rule: data-hdd
[root@ceph-mgr ~]#
}}
***ファイルシステムの作成 [#ge89aee9]
いよいよ最終段階. 作ったpoolでファイルシステムを用意します
っがその前に metadata server を用意します。
いつものようにノードにラベルを張って
#code(nonumber){{
(ラベルを張って)
[root@ceph-mgr ~]# ceph orch host label add ceph-mon02 mds
[root@ceph-mgr ~]# ceph orch host label add ceph-mon03 mds
[root@ceph-mgr ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mgr 192.168.0.47 mgr,_admin
ceph-mon01 192.168.0.48 _admin,mgr,mon
ceph-mon02 192.168.0.49 mon,mds
ceph-mon03 192.168.0.50 mon,mds
:
7 hosts in cluster
[root@ceph-mgr ~]#
}}
設計書を用意します
#code(nonumber){{
[root@ceph-mgr ~]# vi mds.yaml
service_type: mds
service_id: emfs <-- 作成するファイルシステム名...
placement:
count: 2
label: mds
[root@ceph-mgr ~]# ceph orch apply -i mds.yaml --dry-run
:
####################
SERVICESPEC PREVIEWS
####################
+---------+----------+-----------------------+-----------...
|SERVICE |NAME |ADD_TO |REMOVE_FROM...
+---------+----------+-----------------------+-----------...
|mds |mds.emfs |ceph-mon03 ceph-mon02 | ...
+---------+----------+-----------------------+-----------...
################
:
[root@ceph-mgr ~]# ceph orch apply -i mds.yaml
[root@ceph-mgr ~]# ceph orch ps --daemon_type=mds
NAME HOST PORTS STATUS ...
mds.emfs.ceph-mon02.fqwudw ceph-mon02 running (2...
mds.emfs.ceph-mon03.vhwkrp ceph-mon03 running (2...
[root@ceph-mgr ~]#
}}
metadata serverが準備出来てファイルシステムを用意します
#code(nonumber){{
[root@ceph-mgr ~]# ceph osd lspools
1 .mgr
2 emfs-meta
3 emfs-data-default
4 emfs-data-ec
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph fs new emfs emfs-meta emfs-data-d...
[root@ceph-mgr ~]# ceph osd pool set emfs-data-default bu...
[root@ceph-mgr ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-d...
[root@ceph-mgr ~]#
(次に ec のpoolを追加)
[root@ceph-mgr ~]# ceph fs add_data_pool emfs emfs-data-ec
[root@ceph-mgr ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-d...
[root@ceph-mgr ~]#
}}
っでceph -sで様子をみると
#code(nonumber){{
[root@ceph-mgr ~]# ceph -s
cluster:
id: 9ce2eb0a-355d-11f1-a713-bc241165abf5
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-mon01,ceph-mon03,ceph-mon...
mgr: ceph-mon01.oedwwx(active, since 17h), standbys: ...
mds: 1/1 daemons up, 1 standby
osd: 6 osds: 6 up (since 78m), 6 in (since 78m)
data:
volumes: 1/1 healthy
pools: 4 pools, 209 pgs
objects: 24 objects, 579 KiB
usage: 285 MiB used, 300 GiB / 300 GiB avail
pgs: 209 active+clean
[root@ceph-mgr ~]#
}}
これで一応ファイルシステムは構築完了
あとは作ったファイルシステムに subvolumegroup/subvolume ...
subvolumegroup/subvolume の場所で「replicated」なpoolか「...
***subvolumegroup/subvolume [#nf3b851c]
こうして提供される emfs であるが、その配下に /emfs/people...
cephでは、subvolumegroup/subvolume で作ったサブフォルダに...
|BGCOLOR(YELLOW):項目|BGCOLOR(YELLOW):subvolumegroup|BGCO...
|役割|グルーピング|実データ領域|単なる整理(フォルダ)|
|中身|subvolumeを持つ|ファイル・フォルダを持つ|ファイルや...
|クォータ|グループ単位で可能|個別に可能|一応可能|
|スナップショット|基本しない|できる|基本できない(単体で...
|利用単位|管理者目線|ユーザ/アプリ目線|ユーザー目線(軽い...
|LVMに例えると|VolumeGroup|LogicalVolume|単なるmkdir|
|分けるもの|project,data,backup|ユーザ領域,プロジェクト領...
例えば下記のようなフォルダ構成なら
#code(nonumber){{
/emfs
├ people ← subvolumegroup
│ ├ userA (subvolume or mkdir)
│ │ ├ documents (mkdir)
│ │ ├ download (mkdir)
│ │ └ picture (mkdir)
│ └ userB (subvolume or mkdir)
├ project ← subvolumegroup
│ ├ project001 (subvolume) <--スナップショットで世代...
│ └ project002 (subvolume)
│
└ data ← subvolumegroup
└ offloaddata (subvolume or mkdir)
}}
作り方:
#code(nonumber){{
ceph fs subvolumegroup create emfs people --pool_layo...
ceph fs subvolumegroup create emfs project --pool_layo...
ceph fs subvolumegroup create emfs data --pool_layo...
[people配下]
ceph fs subvolume create emfs userA --group_name people -...
ceph fs subvolume create emfs userB --group_name people
or
mkdir userA userB # 親のpeopleのpool_layoutが適用される
[project配下]
ceph fs subvolume create emfs project001 --group_name pro...
ceph fs subvolume create emfs project002 --group_name pro...
[data配下]
ceph fs subvolume create emfs offloaddata --group_name d...
or
mkdir offloaddata
}}
だが、ユーザが追加されるたびにsubvolumeで作るのは面倒かな...
プロジェクトに関する部分は スナップショット が撮れる subv...
offloaddataらは、これもmkdirで十分かな
でも管理面からも運用的には/emfsの配下だけは subvolumegrop...
subvolumegroup/subvolumeの確認
#code(nonumber){{
[root@ceph-mgr ~]# ceph fs subvolumegroup ls emfs
[
{
"name": "project"
},
{
"name": "data"
},
{
"name": "people"
}
]
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph fs subvolume ls emfs --group_name...
[
{
"name": "project001"
},
{
"name": "project002"
}
]
[root@ceph-mgr ~]#
}}
各subvolumegroup/subvolumeのPATHを調べます
#code(nonumber){{
[root@ceph-mgr ~]# ceph fs subvolumegroup getpath emfs pe...
/volumes/people
[root@ceph-mgr ~]# ceph fs subvolumegroup getpath emfs pr...
/volumes/project
[root@ceph-mgr ~]# ceph fs subvolumegroup getpath emfs data
/volumes/data
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph fs subvolume getpath emfs project...
/volumes/project/project001/5028b9b8-2ec9-4ffb-8d83-94628...
[root@ceph-mgr ~]# ceph fs subvolume getpath emfs project...
/volumes/project/project002/8eda5a0d-7de5-44f9-a63e-cb723...
[root@ceph-mgr ~]#
}}
subvolumeになるとUUIDが入る。これだと「/volume/project」...
***ceph client [#kbe4c9ea]
作ったcephストレージをmountしてみます.
まずはcephのプログラムを入れます. レポジトリから始めます.
#code(nonumber){{
[root@ceph-client ~]# cat <<_EOF_> /etc/yum.repos.d/ceph....
[Ceph]
name=Ceph $basearch
baseurl=https://download.ceph.com/rpm-tentacle/el9/\$base...
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg
[Ceph-noarch]
name=Ceph noarch
baseurl=https://download.ceph.com/rpm-tentacle/el9/noarch
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg
_EOF_
[root@ceph-client ~]# dnf install epel-release -y
[root@ceph-client ~]# dnf install ceph-common -y
}}
そしてsubvolumegroup/subvolume単位でキーリングを作ります
#code(nonumber){{
/emfs
├ people -> 「ceph fs subvolumegroup getpath emfs peo...
│ ├ userA (mkdir)
│ │ ├ documents (mkdir)
│ │ ├ download (mkdir)
│ │ └ picture (mkdir)
│ └ userB (mkdir)
├ project ← subvolumegroup ->「ceph fs subvolumegrou...
│ ├ project001 (subvolume) ->「ceph fs subvolumegrou...
│ └ project002 (subvolume) ->「ceph fs subvolumegrou...
│
└ data ← subvolumegroup ->「ceph fs subvolumegroup ...
└ offloaddata (mkdir)
}}
その後にマウントする部分のキーリングを管理ノードで作ります
#code(nonumber){{
[root@ceph-mgr ~]# ceph fs authorize emfs client.r9-peopl...
あるいは
[root@ceph-mgr ~]# ceph auth get-or-create client.r9-peop...
mon 'allow r fsname=emfs' \
mds 'allow rwps fsname=emfs path=/volumes/people' \
osd 'allow rw pool=emfs-data-ec '
[root@ceph-mgr ~]#
}}
作ったキーリングは「ceph auth ls」で確認できます
#code(nonumber){{
[root@ceph-mgr ~]# ceph auth get client.r9-people
[client.r9-people]
key = AQCMzu9p3MWhEBAAzSN9nCFRdraJGkM9sGn7VA==
caps mds = "allow rwps fsname=emfs path=/volumes/peop...
caps mon = "allow r fsname=emfs"
caps osd = "allow rw pool=emfs-data-ec"
[root@ceph-mgr ~]# (削除) ceph auth del client.r9-people
}}
mountにはこのキーリング「ceph auth get client.r9-people」...
#code(nonumber){{
[root@ceph-client ~]# cat <<_EOF_> /etc/ceph/ceph.client....
[client.r9-people]
key = AQCMzu9p3MWhEBAAzSN9nCFRdraJGkM9sGn7VA==
caps mds = "allow rwps fsname=emfs path=/volumes/peop...
caps mon = "allow r fsname=emfs"
caps osd = "allow rw pool=emfs-data-ec"
_EOF_
[root@ceph-client ~]#
}}
そしてmountに最低限必要な ceph.conf を用意して
#code(nonumber){{
[root@ceph-client ~]# ssh root@ceph-mgr "ceph config gene...
}}
っでmountを試みます
#code(nonumber){{
[root@ceph-client ~]# mount -t ceph ceph-mon01:/volumes/p...
あるいは
[root@ceph-client ~]# mount -t ceph :/volumes/people /mnt...
[root@ceph-client ~]# df -Tht ceph
Filesystem Type Size Used Avail Use% ...
192.168.0.48:/volumes/people ceph 300G 224M 300G 1% ...
[root@ceph-client ~]#
}}
上記は「/etc/ceph/ceph.client.r9-people.keyring」を用意す...
keyの文字列を納めたファイルでもいいみたい
#code(nonumber){{
[root@ceph-client ~]# cat r9.secret
AQCMzu9p3MWhEBAAzSN9nCFRdraJGkM9sGn7VA==
[root@ceph-client ~]#
[root@ceph-client ~]# mount -t ceph ceph-mon01:/volumes/p...
}}
とsecretfileと渡してもいい。
ただ、
&color(red){2026-04-28T07:19:29.044+0900 7f6473f9c100 -1 ...
とメッセージが出ます.
先ほどのフォルダ構成でsubvolumegroupの中にsubvolumeが複数...
「/emfs/project/project001」->「/volumes/project/project0...
「/emfs/project/project002」->「/volumes/project/project0...
とかの場合です。
この場合はsubvolumegroupの「/emfs/project」部分のキーリン...
「project001」「project002」と分けて管理、アクセスさせな...
まずは/emfs/project部分のキーリング
#code(nonumber){{
[root@ceph-mgr ~]# ceph auth get-or-create client.r9-proj...
mon 'allow r fsname=emfs' \
mds 'allow rwps fsname=emfs path=/volumes/project' \
osd 'allow rw pool=emfs-data-ec'
[root@ceph-mgr ~]# ceph auth get client.r9-project
[client.r9-project]
key = AQAs5O9pm3zzNhAAD6gMtRF1IewYgD8rOhjMAQ==
caps mds = "allow rwps fsname=emfs path=/volumes/...
caps mon = "allow r fsname=emfs"
caps osd = "allow rw pool=emfs-data-ec"
[root@ceph-mgr ~]#
}}
そしてclient側では
#code(nonumber){{
[root@ceph-client ~]# echo "AQAs5O9pm3zzNhAAD6gMtRF1IewYg...
[root@ceph-client ~]# vi /etc/fstab
:
:
# project001 のマウント
ceph-mon01:/volumes/project/project001/5028b9b8-2ec9-4ffb...
# project002 のマウント
ceph-mon01:/volumes/project/project002/8eda5a0d-7de5-44f9...
[root@ceph-client ~]#
[root@ceph-client ~]# mkdir -p /project/{project001,proje...
[root@ceph-client ~]# systemctl daemon-reload
[root@ceph-client ~]# mount -a
}}
でmountできます。
autofsでmountなら
#code(nonumber){{
[direct map]
[root@ceph-client ~]# cat /etc/auto.master
/project /etc/auto.home --timeout=60
[root@ceph-client ~]# cat /etc/auto.home
# [キー] -fstype=ceph,[オプション] [デバイスパス]
project001 -fstype=ceph,name=r9-project,secretfile=/etc/...
project002 -fstype=ceph,name=r9-project,secretfile=/etc/...
[root@ceph-client ~]#
}}
そして
#code(nonumber){{
[root@ceph-client ~]# systemctl enable autofs --now
}}
と実行する
***cephのshutdown/startup [#dd4fb094]
■shutdown 手順
#code(nonumber){{
[全てのcephクライアントからcephマウントを外す]
(ceph fs set emfs max_mds 1) # 複数でmdsが動い...
ceph fs set emfs down true # mdsを正常にシャ...
ceph fs set emfs joinable false # mdsの自動起動の...
ceph fs fail emfs # 現在のMDSを確実...
ceph osd set noout
ceph osd set norebalance
ceph osd set nobackfill
ceph osd set norecover
ceph osd set noautoscale
}}
厳密には「まずルール(joinable false)を決めてから、動作...
予期せぬ自動昇格を防ぐ意味で非常に安全なアプローチなので...
#code(nonumber){{
ceph fs set emfs joinable false (まず「新しいMDSは参加...
ceph fs set emfs down true (稼働中のMDSを正常終了...
ceph fs fail emfs (念のため、完全に停止...
}}
そして
■start-up 手順
#code(nonumber){{
monを起動して、クォーラムを成立させる
mgrを起動
osdを起動
}}
ceph osd stat で全てのosd(hdd/ssd)の起動を確認して、「up...
ceph -s でHEALTH_OK でありフラグの警告のみであることを確...
もし「active+recovering+degraded」でずっと止まっているなら
先行して
ceph osd unset norecover
ceph osd unset nobackfill
を実施します。これですてのpgsが「active+clean」なにのを確...
その後に
#code(nonumber){{
ceph osd unset noout
ceph osd unset norebalance
ceph osd unset nobackfill
ceph osd unset norecover
ceph osd unset noautoscale
ceph fs set emfs joinable true
ceph fs set emfs down false
}}
mdsがactiveであることを確認
ceph mountを実行して完了
あと「ceph health detail」で問題を確認して、もしosd daemo...
その問題のosdに対してコンテナを再生成させます。これはOSD...
ceph orch daemon redeploy osd.4
ceph orch daemon redeploy osd.5
ページ名:
1