Ceph/cephadm をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
cephadmで作ってみた.
[[Ceph]]はOSの上にcephを構築する手順です. [[https://docs....
っでここは「RECOMMENDED METHODS」となるCephadmを使って構...
OSの上に載せるか、docker/podmanなコンテナ技術の上に載せる...
っで構成表
|BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):役目|BGCOLOR(YE...
|ceph01 |&color(crimson){Ceph Manager}; &br;&c...
|ceph02 |&color(crimson){Ceph Manager}; &br;&c...
|ceph-osd1 |&color(orangered){Ceph OSDs}; &br;...
|ceph-osd2 |&color(orangered){Ceph OSDs}; ...
|ceph-osd3 |&color(orangered){Ceph OSDs}; ...
要求threadsはOSDで1つのssdあたり2つ、hddなら1つ. Monit...
1つのOSDノードで 10個のHDD があるなら 10threads分のCPU能...
ですが、OSDノード内で起動されるコンテナ(podman.docker)に...
参照[[https://www.redbooks.ibm.com/redpieces/pdfs/redp572...
メモ [[Ceph/cephadm/memo]]
nfs [[Ceph/cephadm/nfs]]
smb [[Ceph/cephadm/smb]]
***コンテナを入れる [#kaa71f83]
cephのクライアント以外の全てのceph関連ノードに podman と ...
#code(nonumber){{
dnf install podman lvm2 -y
}}
&color(red){*};SELinuxとfirewalldは有効のままでもいいみた...
***Cephadm [#k0d7c243]
cephadmで構築を進めるのですが、Rockylinux9にcephadmパッケ...
#code(nonumber){{
[root@ceph01 ~]# dnf install centos-release-ceph-squid.no...
[root@ceph01 ~]# dnf install cephadm python3-jinja2 p...
[root@ceph01 ~]# cephadm version
cephadm version 19.2.3 (c92aebb279828e9c3c1f5d24613efca27...
[root@ceph01 ~]#
}}
っでcephクラスターを作るのですが、cephadmを実行するとその...
同時に「cluster network」を指定できて、この「cluster netw...
&size(10){cephクライアントとかへの本業サービス向けを「pub...
&size(10){dashboard-password-noupdateで初回時強制パスワー...
&size(10){initial-dashboard-passwordで初期パスワードを定...
&size(10){skip-monitoring-stackでmonitoringなサービス(pro...
#code(nonumber){{
[root@ceph01 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue sta...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qd...
link/ether bc:24:11:2f:fd:94 brd ff:ff:ff:ff:ff:ff
[root@ceph01 ~]#
[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.0.47 ...
:
(数分かかる. この間にpodmanは(docker)イメージを取得して各...
:
Ceph Dashboard is now available at:
URL: https://ceph01.sybyl.local:8443/
User: admin
Password: adminpass
:
[root@ceph01 ~]#
[root@ceph01 ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 225c3676-7676-11f0-9203-bc24112ff...
[global]
fsid = 225c3676-7676-11f0-9203-bc24112ffd94
mon_host = [v2:192.168.0.47:3300/0,v1:192.168.0.4...
[root@ceph01 ~]#
[root@ceph01 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBQg5lol1bxDhAAQx7NUN4wZWMLYlmkR4YTfg==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph01 ~]#
[root@ceph01 ~]# podman ps
CONTAINER ID IMAGE ...
d62565cc1304 quay.io/ceph/ceph:v19 ...
fbbfa416fb5b quay.io/ceph/ceph:v19 ...
8889b669c7c2 quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph01 ~]#
}}
この段階でDashboardにアクセスできます. 上記のURLでアカウ...
もしコマンドが間違って作られた環境を破棄したいなら
#code(nonumber){{
[root@ceph01 ~]# ceph fsid
225c3676-7676-11f0-9203-bc24112ffd94
[root@ceph01 ~]# cephadm rm-cluster --fsid 225c3676-7676...
[root@ceph01 ~]# rm -rf /etc/ceph /var/lib/ceph
}}
で作られたpodmanのコンテナらが消えます
***cephコマンドを入れる [#uc4a870b]
設定ファイルとキーリングがあれば「cephadm shell」経由でコ...
例えば「ceph -s」は「cephadm shell -- ceph -s」とする. っ...
ただし libcrypto.so.3(OPENSSL_3.4.0) が要求されるので roc...
#code(nonumber){{
[root@ceph01 ~]# cephadm add-repo --release squid <-- ...
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
Completed adding repo.
[root@ceph01 ~]# cephadm install ceph-common
Installing packages ['ceph-common']...
[root@ceph01 ~]# ceph -s
(「cephadm shell -- ceph -s」と同義)
}}
作りたての状態では
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 225c3676-7676-11f0-9203-bc24112ffd94
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph01 (age 94m)
mgr: ceph01.ldyztd(active, since 94m)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
[root@ceph01 ~]#
}}
健康状態(health)はOSDが3つ以上ないので警告状態とある. mo...
一応dashboardからみるとこんな感じ &size(10){自動的にfire...
&ref(2024y12m02d_215248138.png,nolink,40%);
***既定のサービス構成 [#s8b430ca]
cephクラスターの仕様を調整します. まずは初期のサービス構...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --export
service_type: crash
service_name: crash
placement:
host_pattern: '*'
---
service_type: mgr
service_name: mgr
placement:
count: 2
---
service_type: mon
service_name: mon
placement:
count: 5
[root@ceph01 ~]#
}}
とmonが5つ、mgrが2つを想定している. ここでcephにホスト追...
なので初めにそれらが機能しないように制限を加えます
#code(nonumber){{
[root@ceph01 ~]# ceph orch set-unmanaged mon
[root@ceph01 ~]# ceph orch set-unmanaged mgr
[root@ceph01 ~]# ceph orch apply osd --all-available-devi...
}}
この変更で各サービスの構成に「unmanaged: true」が追加され...
***構成員を追加(ceph02) [#hb9c6631]
追加対象のホストはpodman/dockerが入っている事が前提. っで...
#code(nonumber){{
(ceph02での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
}}
その後に追加作業を行います
#code(nonumber){{
[root@ceph01 ~]# ceph orch host add ceph02 192.168.0.48 ...
(これでssh経由で相手先[ceph02]に必要なコンテナが用意され...
(確認)
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48 <--- 追加されました
2 hosts in cluster
[root@ceph01 ~]#
}}
と新規ホスト ceph02 が登録されましたが、この時点ではceph0...
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 225c3676-7676-11f0-9203-bc24112ffd94
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph01 (age 4h)
mgr: ceph01.ldyztd(active, since 4h)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
[root@ceph01 ~]#
}}
ceph02側では下記のコンテナが動いてます
#code(nonumber){{
[root@ceph02 ~]# podman ps
CONTAINER ID IMAGE ...
089daecb287d quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph02 ~]#
}}
***構成員(ceph02)に役割を持たせる [#g7953166]
ここでは ceph01とceph02 には &color(crimson){Ceph Manager...
ceph02に&color(crimson){Ceph Manager}; の役目を持たせるた...
単に「ceph orch apply mgr --placement="ceph01,ceph02"」で...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --service_name=mgr --export...
[root@ceph01 ~]# cat mgr.yaml
service_type: mgr
service_name: mgr
placement:
count: 2
unmanaged: true
[root@ceph01 ~]# vi mgr.yaml
service_type: mgr
service_name: mgr
placement:
hosts: <-- ここ以下を修正します
- ceph01
- ceph02
[root@ceph01 ~]# ceph orch apply -i mgr.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mgr.yaml
}}
すると ceph02 で mgr のコンテナが自動的に用意される
#code(nonumber){{
[root@ceph02 ~]# podman ps
CONTAINER ID IMAGE ...
089daecb287d quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
042f5fd6b97e quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph02 ~]#
}}
そして「ceph -s」の出力でも mgr として ceph02 が加わってs...
#code(nonumber){{
[root@ceph01 ~]# ceph -s
:
services:
mon: 1 daemons, quorum ceph01 (age 4h)
mgr: ceph01.ldyztd(active, since 4h), standbys: ceph0...
osd: 0 osds: 0 up, 0 in
:
[root@ceph01 ~]#
}}
&color(limegreen){Ceph Metadata Server};の役割付与は OSD ...
***構成員を追加(ceph-osd1) [#t1cd183a]
まだmonを3つ作ってませんが、その構成員となる ceph-osd1 ...
加え方は ceph02 と同じように事前にpodman/dockerらを入れて...
#code(nonumber){{
(ceph-osd1での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
}}
そしてceph-osd1をcephに参加させます
#code(nonumber){{
[root@ceph01 ~]# ceph orch host add ceph-osd1 192.168.0.49
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48
ceph-osd1 192.168.0.49 <--- 追加されました
3 hosts in cluster
[root@ceph01 ~]#
}}
参加とともに自動的にpodman/dokcerコンテナが用意されます.
#code(nonumber){{
[root@ceph-osd1 ~]# podman ps
CONTAINER ID IMAGE ...
d3e6379d2121 quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph-osd1 ~]#
}}
ここでmonを提供するマシンが3台揃ったので、monitorを設定...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --service_name=mon --export...
[root@ceph01 ~]# cat mon.yaml
service_type: mon
service_name: mon
placement:
count: 5
unmanaged: true
[root@ceph01 ~]# vi mon.yaml
service_type: mon
service_name: mon
placement:
hosts:
- ceph01
- ceph02
- ceph-osd1
[root@ceph01 ~]# ceph orch apply -i mon.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mon.yaml
}}
これでceph02とceph-osd1にmonのコンテナが追加されます
「ceph -s」で確認するとこんな感じ
#code(nonumber){{
[root@ceph01 ~]# ceph -s
:
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 2...
mgr: ceph01.ldyztd(active, since 4h), standbys: ceph0...
osd: 0 osds: 0 up, 0 in
:
[root@ceph01 ~]#
}}
一応dashboardの「Administration -> Services」では下記のよ...
&ref(2024y12m03d_014555586.png,nolink,40%);
***残りの構成員を参加させる [#wb60f5ca]
ceph-osd2とceph-osd3 を参加させます.
ceph-osd1と同じようにpodman/dockerを入れておきます「dnf i...
#code(nonumber){{
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
[root@ceph01 ~]# ceph orch host add ceph-osd2 192.168.0.50
[root@ceph01 ~]# ceph orch host add ceph-osd3 192.168.0.51
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48
ceph-osd1 192.168.0.49
ceph-osd2 192.168.0.50
ceph-osd3 192.168.0.51
5 hosts in cluster
[root@ceph01 ~]#
}}
ceph-osd2, ceph-osd3それぞれpodman/dockerが自動的にデプロ...
***OSD設定 [#ga342c80]
前段で「ceph orch apply osd --all-available-devices --unm...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --service_type=osd --export...
[root@ceph01 ~]# vi osd.yaml
service_type: osd
service_id: all-available-devices
service_name: osd.all-available-devices
placement:
host_pattern: '*'
unmanaged: true <--- これで自動登録が停止され...
spec:
data_devices:
all: true
filter_logic: AND
objectstore: bluestore
[root@ceph01 ~]# ceph orch apply -i osd.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i osd.yaml
}}
また、osd.yamlで10TB-12TBのHDDは「data_devices」として、S...
bluestoreで作成するのですが、data_devices(HDDね)のみ指定...
下記は"例"としてOSDの作り方を示します. &size(10){本来なら...
#code(nonumber){{
(ceph-osd1: /dev/sdc[SSD(meta)], /dev/sdd[HDD(data)] をそ...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd1:data_...
(ceph-osd2: /dev/sdb[SSD(meta)]はそのままosdとして登録. /...
(db_deviceとwal_deveiceは事前にdata_device分だけ領域を作...
(ここでは2つのdata_device(sdcとsdd)向けに作るので2分割...
[root@ceph-osd2 ~]# pvcreate /dev/sde
[root@ceph-osd2 ~]# vgcreate db /dev/sde
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG db
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG db
[root@ceph-osd2 ~]# pvcreate /dev/sdf
[root@ceph-osd2 ~]# vgcreate wal /dev/sdf
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG wal
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG wal
(そのうえでceph01から操作します)
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_...
(ceph-osd3: /dev/sd[bcd]がdata_device[data]で/dev/sdeが3...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd3:data_...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd3:data_...
}}
この後に ceph-osdXでosdのコンテナが立ち上がります.
&size(10){前のversionでは db_deviceはdata_deviceに応じて...
状況は下記になります
#code(nonumber){{
[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT...
-1 0.53714 root default
-3 0.09760 host ceph-osd1
1 hdd 0.04880 osd.1 up 1.00000...
0 ssd 0.04880 osd.0 up 1.00000...
-7 0.18558 host ceph-osd2
2 hdd 0.06839 osd.2 up 1.00000...
3 hdd 0.06839 osd.3 up 1.00000...
4 ssd 0.04880 osd.4 up 1.00000...
-10 0.25397 host ceph-osd3
5 hdd 0.06839 osd.5 up 1.00000...
6 hdd 0.06839 osd.6 up 1.00000...
7 hdd 0.06839 osd.7 up 1.00000...
8 ssd 0.04880 osd.8 up 1.00000...
[root@ceph01 ~]# ceph orch device ls
HOST PATH TYPE DEVICE ID SI...
ceph01 /dev/sr0 hdd QEMU_DVD-ROM_QM00003 10....
ceph-osd1 /dev/sdc ssd QEMU_HARDDISK_drive-scsi2 50....
ceph-osd1 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50....
ceph-osd2 /dev/sdb ssd QEMU_HARDDISK_drive-scsi1 50....
ceph-osd2 /dev/sdc hdd QEMU_HARDDISK_drive-scsi2 50....
ceph-osd2 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50....
ceph-osd2 /dev/sde ssd QEMU_HARDDISK_drive-scsi4 40....
ceph-osd2 /dev/sdf ssd QEMU_HARDDISK_drive-scsi5 20....
ceph-osd3 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 50....
ceph-osd3 /dev/sdc hdd QEMU_HARDDISK_drive-scsi2 50....
ceph-osd3 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50....
ceph-osd3 /dev/sde ssd QEMU_HARDDISK_drive-scsi4 60....
ceph-osd3 /dev/sdf ssd QEMU_HARDDISK_drive-scsi5 50....
[root@ceph01 ~]#
}}
デバイスの性格からCLASSが自動的に割り当てられます. 規定で...
あと各osd.Xのdb_/wal_deviceの構成要素を確認したいなら、OS...
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 5h)
mgr: ceph01.nuffcu(active, since 6h), standbys: ceph0...
osd: 9 osds: 9 up (since 11m), 9 in (since 12m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 100 GiB used, 449 GiB / 550 GiB avail
pgs: 1 active+clean
[root@ceph01 ~]#
}}
OSDを用意すると勝手にpool(.mgr)が作られる. &size(10){「ce...
次にサービス配置の最後にmdsを加えますが、これはプール(後...
&size(10){追加作業していないのに以前の情報を残したストレ...
用意したosdを外して1から作り直すには
#code(nonumber){{
ceph osd out 2
ceph -s
ceph orch daemon rm osd.2 --force <--- ceph-os...
ceph osd purge 2 --yes-i-really-mean-it
@ceph-osd2
lvremove <LVM領域>
sgdisk --zap-all /dev/sdX
wipefs -a /dev/sdX
reboot <-- rebootしないとリセットされない...
}}
***OSD設定(その2) [#o874b6a2]
&color(red){注意}; この方式ですが、19.2.3で walデバイスの...
OSDのサービス構成(osd.yaml)を修正して適用する方法もある.
前段は個別に手動でHDD/SSDらを組み込んでいるが、ほぼ同じ構...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE...
crash 5/5 9m ago 8h ...
mgr 2/2 9m ago 6h ...
mon 3/3 9m ago 8h ...
osd.all-available-devices 0 - 8h ...
[root@ceph01 ~]# ceph orch rm osd.all-available-devices
Removed service osd.all-available-devices
[root@ceph01 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 5/5 5s ago 8h *
mgr 2/2 5s ago 6h ceph01;ceph02
mon 3/3 5s ago 8h ceph01;ceph02;ceph...
[root@ceph01 ~]#
}}
#code(nonumber){{
[root@ceph01 ~]# vi osd.yaml
service_type: osd
service_id: ceph-osd1-ssd
service_name: osd.ceph-osd1-ssd
placement:
hosts:
- ceph-osd1
spec:
data_devices:
rotational: 0
---
service_type: osd
service_id: ceph-osd1-hdd
service_name: osd.ceph-osd1-hdd
placement:
hosts:
- ceph-osd1
spec:
data_devices:
rotational: 1
---
service_type: osd
service_id: ceph-osd2-ssd
service_name: osd.ceph-osd2-ssd
placement:
hosts:
- ceph-osd2
spec:
data_devices:
paths:
- /dev/sdb
---
service_type: osd
service_id: ceph-osd2-hdd
service_name: osd.ceph-osd2-hdd
placement:
hosts:
- ceph-osd2
spec:
data_devices:
paths:
- /dev/sdc
- /dev/sdd
db_devices:
paths:
- /dev/sde
wal_devices:
paths:
- /dev/sdf
---
service_type: osd
service_id: ceph-osd3-ssd
service_name: osd.ceph-osd3-ssd
placement:
hosts:
- ceph-osd3
spec:
data_devices:
paths:
- /dev/sdf
---
service_type: osd
service_id: ceph-osd3-hdd
service_name: osd.ceph-osd3-hdd
placement:
hosts:
- ceph-osd3
spec:
data_devices:
paths:
- /dev/sdb
- /dev/sdc
- /dev/sdd
db_devices:
paths:
- /dev/sde
[root@ceph01 ~]#
}}
とhost毎にPATHまで指定して定義してますが、同じ構成のOSDな...
っで作った仕様をテストしてみます
#code(nonumber){{
[root@ceph01 ~]# ceph orch apply -i osd.yaml --dry-run
(略
################
OSDSPEC PREVIEWS
################
+---------+---------------+-----------+----------+-------...
|SERVICE |NAME |HOST |DATA |DB ...
+---------+---------------+-----------+----------+-------...
|osd |ceph-osd1-ssd |ceph-osd1 |/dev/sdc |- ...
|osd |ceph-osd1-hdd |ceph-osd1 |/dev/sdd |- ...
|osd |ceph-osd2-ssd |ceph-osd2 |/dev/sdb |- ...
|osd |ceph-osd2-hdd |ceph-osd2 |/dev/sdc |/dev/sd...
|osd |ceph-osd2-hdd |ceph-osd2 |/dev/sdd |/dev/sd...
|osd |ceph-osd3-ssd |ceph-osd3 |/dev/sdf |- ...
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdb |/dev/sd...
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdc |/dev/sd...
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdd |/dev/sd...
+---------+---------------+-----------+----------+-------...
[root@ceph01 ~]#
}}
と意図したようにblueStoreが出来そうなので「--dry-run」を...
#code(nonumber){{
[root@ceph01 ~]# ceph orch apply -i osd.yaml
Scheduled osd.ceph-osd1-ssd update...
Scheduled osd.ceph-osd1-hdd update...
Scheduled osd.ceph-osd2-ssd update...
Scheduled osd.ceph-osd2-hdd update...
Scheduled osd.ceph-osd3-ssd update...
Scheduled osd.ceph-osd3-hdd update...
[root@ceph01 ~]#
}}
***プールのCRUSH配置ルール(crush rule)作成 [#e9044cdf]
cephFSの作成には「メタデータ用」「データ用」の2つのプー...
プールの作成にはデバイス違い
-HDD
-SSD
と冗長性の確保方法としの
-replicated
-erasure-coded
の組み合わせによるルール(CRUSH配置ルール)を作って、それで...
「メタデータ用」プールのルール(CRUSH配置ルール)としては「...
#code(nonumber){{
[root@ceph01 ~]# ceph osd crush rule create-replicated me...
ceph osd crush rule create-replicated NA...
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph01 ~]# ceph osd crush rule ls
}}
&size(10){障害ドメインを「host」にすると「ceph config get...
「データ用」プールのルール(CRUSH配置ルール)としては容量効...
「erasure-coded」はRAID5/6な感じで パリティー ブロックが...
既定の「erasure-coded」は
#code(nonumber){{
[root@ceph01 ~]# ceph osd erasure-code-profile get default
k=2
m=2
plugin=jerasure
technique=reed_sol_van
[root@ceph01 ~]#
}}
と2つのデータに2つのパリティを用意することになっていて...
&size(10){ほかの例: [[https://www.redbooks.ibm.com/redpie...
#code(nonumber){{
[root@ceph01 ~]# ceph osd erasure-code-profile set k2-m1-...
[root@ceph01 ~]# ceph osd erasure-code-profile ls
default
k2-m1-profile
[root@ceph01 ~]#
}}
「メタデータ用」プールには、 レプリカの crush rule「meta-...
「データ用」プールには、erasure-codedのイレイジャーコード...
&color(red){*}; 重要
「.mgr」プール向けのCRUSH配置ルール(crush rule)を用意して...
#code(nonumber){{
ceph osd crush rule create-replicated replicated-mgr defa...
ceph osd pool set .mgr crush_rule replicated-mgr
}}
CRUSH配置ルール(crush rule)の「default」は使用するデバイ...
デフォで作られる .mgr プールにはこの「default」が適用され...
そうすると 「meta-ssd」で作られたプールと重複していると...
「pool 1 contains an overlapping root -1... skipping scal...
こうなるとscaling, rebalanceが行われなくなり、結果HDDの消...
参照先 [[https://blog.mei-home.net/posts/ceph-rook-crush-...
***プール作成 [#g6ee6bcf]
OSDを組み込むと「.mgr」といわれるcephシステム側のpoolが作...
#code(nonumber){{
[root@ceph01 ~]# ceph osd lspools
1 .mgr
[root@ceph01 ~]#
}}
まず「メタデータ用」プールを作る
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool create emfs-meta 64 meta-ssd
pool 'emfs-meta' created
[root@ceph01 ~]#
}}
「64」はpg_num. 詳細は難しい. 参照[[https://docs.ceph.com...
次に「データ用」のプールを作成します.
こちらはイレイジャーコードを使い、先ほど作成した「k2-m1-p...
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool create emfs-data erasure k...
pool 'emfs-data' created
[root@ceph01 ~]# ceph osd pool ls (「ceph osd lspools...
.mgr
emfs-meta
emfs-data
[root@ceph01 ~]# ceph osd pool set emfs-data allow_ec_ove...
[root@ceph01 ~]# ceph osd pool set emfs-data bulk true
}}
&size(10){SSDだけのosdで構築したpoolはメタデータ用向けに...
次に作ったpoolの性格を充てます. cephfsにはcephfs、RBD向け...
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool application enable emfs-me...
enabled application 'cephfs' on pool 'emfs-meta'
[root@ceph01 ~]# ceph osd pool application enable emfs-da...
enabled application 'cephfs' on pool 'emfs-data'
[root@ceph01 ~]#
}}
各poolの詳細は「ceph osd pool get <pool名> all」で得られ...
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool get emfs-data all
size: 3
min_size: 2
pg_num: 1
pgp_num: 1
crush_rule: emfs-data
hashpspool: true
allow_ec_overwrites: true
nodelete: false
nopgchange: false
nosizechange: false
write_fadvise_dontneed: false
noscrub: false
nodeep-scrub: false
use_gmt_hitset: 1
erasure_code_profile: k2-m1-profile
fast_read: 0
pg_autoscale_mode: on
eio: false
bulk: true
[root@ceph01 ~]#
}}
ここで様子を見ると
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 1...
mgr: ceph01.ocyoth(active, since 16h), standbys: ceph...
osd: 8 osds: 8 up (since 10h), 8 in (since 10h)
data:
pools: 3 pools, 66 pgs
objects: 2 objects, 577 KiB
usage: 291 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph01 ~]#
}}
となる
***ファイルシステムの作成 [#u034b063]
[[https://docs.ceph.com/en/latest/cephfs/createfs/>+https...
ようやく下準備が完了して、ファイルシステムを作ります
まずはMDSサービスをデプロイします
#code(nonumber){{
[root@ceph01 ~]# vi mds.yaml
service_type: mds
service_id: emfs <-- 作成するファイルシステム名...
placement:
hosts:
- ceph01
- ceph02
[root@ceph01 ~]# ceph orch apply -i mds.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mds.yaml
(mdsのコンテナ状態を確認)
[root@ceph01 ~]# ceph orch ps --daemon_type=mds
NAME HOST PORTS STATUS REF...
mds.emfs.ceph01.datuel ceph01 running (16s) 1...
mds.emfs.ceph02.kicdez ceph02 running (18s) 1...
[root@ceph01 ~]#
[root@ceph01 ~]# ceph fs new emfs emfs-meta emfs-data ...
Error EINVAL: pool 'emfs-data' (id '3') is an erasure-cod...
[root@ceph01 ~]#
}}
とエラーが言われる. cephfsは「replicated」で用意されたdat...
#code(nonumber){{
[root@ceph01 ~]# ceph fs new emfs emfs-meta emfs-data --f...
}}
もし
#code(nonumber){{
Pool 'emfs-data' (id '3') has pg autoscale mode 'on' bu...
Consider setting the flag by running
# ceph osd pool set emfs-data bulk true
new fs with metadata pool 2 and data pool 3
}}
と言われたら「ceph osd pool set emfs-data bulk true」を実...
&size(10){なぜ必要かはPGを理解する必要があるかも. [[https...
#code(nonumber){{
[root@ceph01 ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-d...
[root@ceph01 ~]# ceph -s
:
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 1...
mgr: ceph01.ocyoth(active, since 18h), standbys: ceph...
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 12h), 8 in (since 12h)
:
[root@ceph01 ~]#
}}
mdsを複数用意することが求められる. MDSのフェイルオーバー...
#code(nonumber){{
ceph fs set emfs standby_count_wanted 0
ceph fs set cephfs standby_count_wanted 0
}}
でその警告は停止します
***client接続 [#ma4afb62]
&color(red){*};&size(10){バックエンドの「10.10.10.x」に接...
cephのパッケージをインストールします. &size(10){rockyli...
#code(nonumber){{
(rockylinux9なら)
dnf install centos-release-ceph-squid.noarch epel-releas...
dnf install ceph-common -y
}}
その後「&color(magenta){ceph 構成ファイル};」(/etc/ceph/c...
「&color(magenta){ceph 構成ファイル};」はcephadmが実行で...
#code(nonumber){{
[root@ceph-client ~]# ssh root@ceph01 "ceph config genera...
(中身は)
[root@ceph-client ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 4ce725c6-eb0d-11ef-980a-bc24112ff...
[global]
fsid = 4ce725c6-eb0d-11ef-980a-bc24112ffd94
mon_host = [v2:192.168.0.49:3300/0,v1:192.168.0.4...
[root@ceph-client ~]#
}}
「&color(orangered){キーリング};」は
「ceph fs authorize <filesystem> client.<CephX user> / rw...
#code(nonumber){{
[root@ceph-client ~]# ssh root@ceph01 "ceph fs authorize ...
[client.r9]
key = AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA==
caps mds = "allow rwp fsname=emfs"
caps mon = "allow r fsname=emfs"
caps osd = "allow rw tag cephfs data=emfs"
[root@ceph-client ~]#
*quotaを使うなら「p」を追加して「rwp」とします.
}}
「&color(orangered){キーリング};」が入ったファイル名は上...
っでmount
#code(nonumber){{
[root@ceph-client ~]# mkdir -p /emfs
[root@ceph-client ~]# mount -t ceph ceph01:6789,ceph02:67...
(とか)
[root@ceph-client ~]# mount -t ceph ceph01:6789,ceph02:67...
(とか)
[root@ceph-client ~]# mount -t ceph r9@.emfs=/ /emfs
[root@ceph-client ~]# df -Tht ceph
Filesystem T...
192.168.0.47:6789,192.168.0.48:6789,192.168.0.49:6789:/ c...
[root@ceph-client ~]#
}}
&color(red){*};&size(10){rockylinux9とかkernelが新しいと...
autofsでの表記は下記になります
#code(nonumber){{
[root@ceph-client ~]# cat /etc/auto.master
/- /etc/auto.home --timeout=60
[root@ceph-client ~]# cat /etc/auto.home
/emfs -fstype=ceph r9@.emfs=/
(あるいは)
/emfs -fstype=ceph,name=r9,fs=emfs ceph01:6789,ceph02:6...
[root@ceph-client ~]#
}}
/etc/fstabでmount表記なら
#code(nonumber){{
[root@ceph-client ~]# cat /etc/fstab
:
r9@.emfs=/ /emfs ceph rw 0 0
[root@ceph-client ~]#
}}
作成した「&color(orangered){キーリング};」は「ceph auth l...
#code(nonumber){{
[root@ceph01 ~]# ceph auth ls
: ...
client.r9 ...
key: AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA== ...
caps: [mds] allow rwp fsname=emfs ...
caps: [mon] allow r fsname=emfs ...
caps: [osd] allow rw tag cephfs data=emfs ...
:
[root@ceph01 ~]#
}}
削除は「ceph auth rm client.r9」で行えます.
クライアント側に置かれる「ceph.client.r9.keyring」とフォ...
***subvolume [#nf3b851c]
こうして提供される /emfs であるが、その配下に /emfs/peopl...
cephでは、作ったフォルダに対して個別にクォータ(容量制限),...
subvolumegroupとsubvolumeの2つのフォルダ特性を持たせられ...
|BGCOLOR(YELLOW):項目|BGCOLOR(YELLOW):subvolumegroup|BGCO...
|役割|グルーピング|実データ領域|単なる整理(フォルダ)|
|中身|subvolumeを持つ|ファイル・フォルダを持つ|ファイルや...
|クォータ|グループ単位で可能|個別に可能|一応可能だが管理...
|スナップショット|基本しない|できる|基本できない(単体で...
|利用単位|管理者目線|ユーザ/アプリ目線|ユーザー目線(軽い...
|LVMに例えると|VolumeGroup|LogicalVolume|単なるmkdir|
|分けるもの|project,data,backup|ユーザ領域,プロジェクト領...
#code(nonumber){{
/emfs
├ people ← subvolumegroup
│ ├ userA (subvolume)
│ │ ├ documents (mkdir)
│ │ ├ download (mkdir)
│ │ └ picture (mkdir)
│ ├ userB (subvolume)
├ project ← subvolumegroup
│ ├ group1 (subvolume)
│ └ group2 (subvolume)
│
└ data ← subvolumegroup
├ group1 (subvolume)
│ └ MMYYDD (mkdir)
└ group2 (subvolume)
}}
とにかく管理面からも運用的には/emfsの配下には subvolumegr...
作り方:
#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...
(複数 data用poolでfsを作っているなら、--pool_layout で...
[people配下]
ceph fs subvolume create emfs userA --group_name people ...
ceph fs subvolume create emfs userB --group_name people
[project配下]
ceph fs subvolume create emfs group1 --group_name project
ceph fs subvolume create emfs group2 --group_name project
[data配下]
ceph fs subvolume create emfs group1 --group_name data
ceph fs subvolume create emfs group2 --group_name data
}}
***システム停止手順 [#c32d43cb]
参照先:
[[https://access.redhat.com/documentation/en-us/red_hat_c...
1. cephを利用しているクライアントを全てシャットダウン.
2. 「ceph -s」でhealthが「HEALTH_OK」でかつ、pgsの値がす...
3-1. ceph-mdsのフェイルオーバーを先を1つにする
#code(nonumber){{
[root@ceph01 ~]# ceph fs set emfs max_mds 1
}}
3-2. ファイルシステムを停止させる(その1)
#code(nonumber){{
[root@ceph01 ~]# ceph fs fail emfs
emfs marked not joinable; MDS cannot join the cluster. Al...
[root@ceph01 ~]# ceph -s
:
mds: 1/1 daemons up, 1 standby
↓
mds: 0/1 daemons up (1 failed), 2 standby
:
[root@ceph01 ~]#
}}
3-3. ファイルシステムを停止させる(その2)
#code(nonumber){{
[root@ceph01 ~]# ceph fs set emfs joinable false
emfs marked not joinable; MDS cannot join as newly active.
[root@ceph01 ~]#
}}
4. OSDの機能停止
#code(nonumber){{
[root@ceph01 ~]# ceph osd set noout
[root@ceph01 ~]# ceph osd set norecover
[root@ceph01 ~]# ceph osd set norebalance
[root@ceph01 ~]# ceph osd set nobackfill
[root@ceph01 ~]# ceph osd set nodown
[root@ceph01 ~]# ceph osd set pause
[root@ceph01 ~]# ceph -s
:
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 38h), 8 in (since 38h)
↓
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 38h), 8 in (since 38h)
flags pauserd,pausewr,nodown,noout,nobackfill,no...
:
[root@ceph01 ~]#
}}
5. OSDホストを順次停止
#code(nonumber){{
[root@ceph01 ~]# ssh root@ceph-osd1 "shutdown -h now"
[root@ceph01 ~]# ssh root@ceph-osd2 "shutdown -h now"
[root@ceph01 ~]# ssh root@ceph-osd3 "shutdown -h now"
}}
6. MONホストを順次停止
#code(nonumber){{
[root@ceph01 ~]# ssh root@ceph02 "shutdown -h now"
}}
7. MGRホストを停止
#code(nonumber){{
[root@ceph01 ~]# shutdown -h now
}}
***システム起動手順 [#w63cba21]
前段の逆を行います
1. MGRホストをboot
2. MONホストをboot
3. OSDホストをboot
4. MGRホストにてOSDの各種機能を有効化
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_ERR
1 filesystem is degraded
1 filesystem is offline
pauserd,pausewr,nodown,noout,nobackfill,noreb...
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 6m)
mgr: ceph01.ocyoth(active, since 6m), standbys: ceph0...
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 6m), 8 in (since 38h)
flags pauserd,pausewr,nodown,noout,nobackfill,no...
data:
volumes: 0/1 healthy, 1 failed
pools: 3 pools, 66 pgs
objects: 24 objects, 586 KiB
usage: 1.0 GiB used, 399 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph01 ~]#
[root@ceph01 ~]# ceph osd unset noout
[root@ceph01 ~]# ceph osd unset norecover
[root@ceph01 ~]# ceph osd unset norebalance
[root@ceph01 ~]# ceph osd unset nobackfill
[root@ceph01 ~]# ceph osd unset nodown
[root@ceph01 ~]# ceph osd unset pause
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_ERR
1 filesystem is degraded
1 filesystem is offline
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 8m)
mgr: ceph01.ocyoth(active, since 8m), standbys: ceph0...
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 8m), 8 in (since 38h)
data:
volumes: 0/1 healthy, 1 failed
pools: 3 pools, 66 pgs
objects: 24 objects, 586 KiB
usage: 231 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph-mgr ~]#
}}
5. ファイルシステムを有効にする
#code(nonumber){{
[root@ceph01 ~]# ceph fs set emfs joinable true
emfs marked joinable; MDS may join as newly active.
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 1...
mgr: ceph01.ocyoth(active, since 11m), standbys: ceph...
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 11m), 8 in (since 38h)
data:
volumes: 1/1 healthy
pools: 3 pools, 66 pgs
objects: 24 objects, 587 KiB
usage: 231 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
}}
終了行:
cephadmで作ってみた.
[[Ceph]]はOSの上にcephを構築する手順です. [[https://docs....
っでここは「RECOMMENDED METHODS」となるCephadmを使って構...
OSの上に載せるか、docker/podmanなコンテナ技術の上に載せる...
っで構成表
|BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):役目|BGCOLOR(YE...
|ceph01 |&color(crimson){Ceph Manager}; &br;&c...
|ceph02 |&color(crimson){Ceph Manager}; &br;&c...
|ceph-osd1 |&color(orangered){Ceph OSDs}; &br;...
|ceph-osd2 |&color(orangered){Ceph OSDs}; ...
|ceph-osd3 |&color(orangered){Ceph OSDs}; ...
要求threadsはOSDで1つのssdあたり2つ、hddなら1つ. Monit...
1つのOSDノードで 10個のHDD があるなら 10threads分のCPU能...
ですが、OSDノード内で起動されるコンテナ(podman.docker)に...
参照[[https://www.redbooks.ibm.com/redpieces/pdfs/redp572...
メモ [[Ceph/cephadm/memo]]
nfs [[Ceph/cephadm/nfs]]
smb [[Ceph/cephadm/smb]]
***コンテナを入れる [#kaa71f83]
cephのクライアント以外の全てのceph関連ノードに podman と ...
#code(nonumber){{
dnf install podman lvm2 -y
}}
&color(red){*};SELinuxとfirewalldは有効のままでもいいみた...
***Cephadm [#k0d7c243]
cephadmで構築を進めるのですが、Rockylinux9にcephadmパッケ...
#code(nonumber){{
[root@ceph01 ~]# dnf install centos-release-ceph-squid.no...
[root@ceph01 ~]# dnf install cephadm python3-jinja2 p...
[root@ceph01 ~]# cephadm version
cephadm version 19.2.3 (c92aebb279828e9c3c1f5d24613efca27...
[root@ceph01 ~]#
}}
っでcephクラスターを作るのですが、cephadmを実行するとその...
同時に「cluster network」を指定できて、この「cluster netw...
&size(10){cephクライアントとかへの本業サービス向けを「pub...
&size(10){dashboard-password-noupdateで初回時強制パスワー...
&size(10){initial-dashboard-passwordで初期パスワードを定...
&size(10){skip-monitoring-stackでmonitoringなサービス(pro...
#code(nonumber){{
[root@ceph01 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue sta...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qd...
link/ether bc:24:11:2f:fd:94 brd ff:ff:ff:ff:ff:ff
[root@ceph01 ~]#
[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.0.47 ...
:
(数分かかる. この間にpodmanは(docker)イメージを取得して各...
:
Ceph Dashboard is now available at:
URL: https://ceph01.sybyl.local:8443/
User: admin
Password: adminpass
:
[root@ceph01 ~]#
[root@ceph01 ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 225c3676-7676-11f0-9203-bc24112ff...
[global]
fsid = 225c3676-7676-11f0-9203-bc24112ffd94
mon_host = [v2:192.168.0.47:3300/0,v1:192.168.0.4...
[root@ceph01 ~]#
[root@ceph01 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBQg5lol1bxDhAAQx7NUN4wZWMLYlmkR4YTfg==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph01 ~]#
[root@ceph01 ~]# podman ps
CONTAINER ID IMAGE ...
d62565cc1304 quay.io/ceph/ceph:v19 ...
fbbfa416fb5b quay.io/ceph/ceph:v19 ...
8889b669c7c2 quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph01 ~]#
}}
この段階でDashboardにアクセスできます. 上記のURLでアカウ...
もしコマンドが間違って作られた環境を破棄したいなら
#code(nonumber){{
[root@ceph01 ~]# ceph fsid
225c3676-7676-11f0-9203-bc24112ffd94
[root@ceph01 ~]# cephadm rm-cluster --fsid 225c3676-7676...
[root@ceph01 ~]# rm -rf /etc/ceph /var/lib/ceph
}}
で作られたpodmanのコンテナらが消えます
***cephコマンドを入れる [#uc4a870b]
設定ファイルとキーリングがあれば「cephadm shell」経由でコ...
例えば「ceph -s」は「cephadm shell -- ceph -s」とする. っ...
ただし libcrypto.so.3(OPENSSL_3.4.0) が要求されるので roc...
#code(nonumber){{
[root@ceph01 ~]# cephadm add-repo --release squid <-- ...
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
Completed adding repo.
[root@ceph01 ~]# cephadm install ceph-common
Installing packages ['ceph-common']...
[root@ceph01 ~]# ceph -s
(「cephadm shell -- ceph -s」と同義)
}}
作りたての状態では
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 225c3676-7676-11f0-9203-bc24112ffd94
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph01 (age 94m)
mgr: ceph01.ldyztd(active, since 94m)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
[root@ceph01 ~]#
}}
健康状態(health)はOSDが3つ以上ないので警告状態とある. mo...
一応dashboardからみるとこんな感じ &size(10){自動的にfire...
&ref(2024y12m02d_215248138.png,nolink,40%);
***既定のサービス構成 [#s8b430ca]
cephクラスターの仕様を調整します. まずは初期のサービス構...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --export
service_type: crash
service_name: crash
placement:
host_pattern: '*'
---
service_type: mgr
service_name: mgr
placement:
count: 2
---
service_type: mon
service_name: mon
placement:
count: 5
[root@ceph01 ~]#
}}
とmonが5つ、mgrが2つを想定している. ここでcephにホスト追...
なので初めにそれらが機能しないように制限を加えます
#code(nonumber){{
[root@ceph01 ~]# ceph orch set-unmanaged mon
[root@ceph01 ~]# ceph orch set-unmanaged mgr
[root@ceph01 ~]# ceph orch apply osd --all-available-devi...
}}
この変更で各サービスの構成に「unmanaged: true」が追加され...
***構成員を追加(ceph02) [#hb9c6631]
追加対象のホストはpodman/dockerが入っている事が前提. っで...
#code(nonumber){{
(ceph02での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
}}
その後に追加作業を行います
#code(nonumber){{
[root@ceph01 ~]# ceph orch host add ceph02 192.168.0.48 ...
(これでssh経由で相手先[ceph02]に必要なコンテナが用意され...
(確認)
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48 <--- 追加されました
2 hosts in cluster
[root@ceph01 ~]#
}}
と新規ホスト ceph02 が登録されましたが、この時点ではceph0...
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 225c3676-7676-11f0-9203-bc24112ffd94
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph01 (age 4h)
mgr: ceph01.ldyztd(active, since 4h)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
[root@ceph01 ~]#
}}
ceph02側では下記のコンテナが動いてます
#code(nonumber){{
[root@ceph02 ~]# podman ps
CONTAINER ID IMAGE ...
089daecb287d quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph02 ~]#
}}
***構成員(ceph02)に役割を持たせる [#g7953166]
ここでは ceph01とceph02 には &color(crimson){Ceph Manager...
ceph02に&color(crimson){Ceph Manager}; の役目を持たせるた...
単に「ceph orch apply mgr --placement="ceph01,ceph02"」で...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --service_name=mgr --export...
[root@ceph01 ~]# cat mgr.yaml
service_type: mgr
service_name: mgr
placement:
count: 2
unmanaged: true
[root@ceph01 ~]# vi mgr.yaml
service_type: mgr
service_name: mgr
placement:
hosts: <-- ここ以下を修正します
- ceph01
- ceph02
[root@ceph01 ~]# ceph orch apply -i mgr.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mgr.yaml
}}
すると ceph02 で mgr のコンテナが自動的に用意される
#code(nonumber){{
[root@ceph02 ~]# podman ps
CONTAINER ID IMAGE ...
089daecb287d quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
042f5fd6b97e quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph02 ~]#
}}
そして「ceph -s」の出力でも mgr として ceph02 が加わってs...
#code(nonumber){{
[root@ceph01 ~]# ceph -s
:
services:
mon: 1 daemons, quorum ceph01 (age 4h)
mgr: ceph01.ldyztd(active, since 4h), standbys: ceph0...
osd: 0 osds: 0 up, 0 in
:
[root@ceph01 ~]#
}}
&color(limegreen){Ceph Metadata Server};の役割付与は OSD ...
***構成員を追加(ceph-osd1) [#t1cd183a]
まだmonを3つ作ってませんが、その構成員となる ceph-osd1 ...
加え方は ceph02 と同じように事前にpodman/dockerらを入れて...
#code(nonumber){{
(ceph-osd1での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
}}
そしてceph-osd1をcephに参加させます
#code(nonumber){{
[root@ceph01 ~]# ceph orch host add ceph-osd1 192.168.0.49
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48
ceph-osd1 192.168.0.49 <--- 追加されました
3 hosts in cluster
[root@ceph01 ~]#
}}
参加とともに自動的にpodman/dokcerコンテナが用意されます.
#code(nonumber){{
[root@ceph-osd1 ~]# podman ps
CONTAINER ID IMAGE ...
d3e6379d2121 quay.io/ceph/ceph@sha256:7c69e59beaeea61ca7...
[root@ceph-osd1 ~]#
}}
ここでmonを提供するマシンが3台揃ったので、monitorを設定...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --service_name=mon --export...
[root@ceph01 ~]# cat mon.yaml
service_type: mon
service_name: mon
placement:
count: 5
unmanaged: true
[root@ceph01 ~]# vi mon.yaml
service_type: mon
service_name: mon
placement:
hosts:
- ceph01
- ceph02
- ceph-osd1
[root@ceph01 ~]# ceph orch apply -i mon.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mon.yaml
}}
これでceph02とceph-osd1にmonのコンテナが追加されます
「ceph -s」で確認するとこんな感じ
#code(nonumber){{
[root@ceph01 ~]# ceph -s
:
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 2...
mgr: ceph01.ldyztd(active, since 4h), standbys: ceph0...
osd: 0 osds: 0 up, 0 in
:
[root@ceph01 ~]#
}}
一応dashboardの「Administration -> Services」では下記のよ...
&ref(2024y12m03d_014555586.png,nolink,40%);
***残りの構成員を参加させる [#wb60f5ca]
ceph-osd2とceph-osd3 を参加させます.
ceph-osd1と同じようにpodman/dockerを入れておきます「dnf i...
#code(nonumber){{
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub roo...
[root@ceph01 ~]# ceph orch host add ceph-osd2 192.168.0.50
[root@ceph01 ~]# ceph orch host add ceph-osd3 192.168.0.51
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48
ceph-osd1 192.168.0.49
ceph-osd2 192.168.0.50
ceph-osd3 192.168.0.51
5 hosts in cluster
[root@ceph01 ~]#
}}
ceph-osd2, ceph-osd3それぞれpodman/dockerが自動的にデプロ...
***OSD設定 [#ga342c80]
前段で「ceph orch apply osd --all-available-devices --unm...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls --service_type=osd --export...
[root@ceph01 ~]# vi osd.yaml
service_type: osd
service_id: all-available-devices
service_name: osd.all-available-devices
placement:
host_pattern: '*'
unmanaged: true <--- これで自動登録が停止され...
spec:
data_devices:
all: true
filter_logic: AND
objectstore: bluestore
[root@ceph01 ~]# ceph orch apply -i osd.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i osd.yaml
}}
また、osd.yamlで10TB-12TBのHDDは「data_devices」として、S...
bluestoreで作成するのですが、data_devices(HDDね)のみ指定...
下記は"例"としてOSDの作り方を示します. &size(10){本来なら...
#code(nonumber){{
(ceph-osd1: /dev/sdc[SSD(meta)], /dev/sdd[HDD(data)] をそ...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd1:data_...
(ceph-osd2: /dev/sdb[SSD(meta)]はそのままosdとして登録. /...
(db_deviceとwal_deveiceは事前にdata_device分だけ領域を作...
(ここでは2つのdata_device(sdcとsdd)向けに作るので2分割...
[root@ceph-osd2 ~]# pvcreate /dev/sde
[root@ceph-osd2 ~]# vgcreate db /dev/sde
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG db
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG db
[root@ceph-osd2 ~]# pvcreate /dev/sdf
[root@ceph-osd2 ~]# vgcreate wal /dev/sdf
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG wal
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG wal
(そのうえでceph01から操作します)
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_...
(ceph-osd3: /dev/sd[bcd]がdata_device[data]で/dev/sdeが3...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd3:data_...
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd3:data_...
}}
この後に ceph-osdXでosdのコンテナが立ち上がります.
&size(10){前のversionでは db_deviceはdata_deviceに応じて...
状況は下記になります
#code(nonumber){{
[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT...
-1 0.53714 root default
-3 0.09760 host ceph-osd1
1 hdd 0.04880 osd.1 up 1.00000...
0 ssd 0.04880 osd.0 up 1.00000...
-7 0.18558 host ceph-osd2
2 hdd 0.06839 osd.2 up 1.00000...
3 hdd 0.06839 osd.3 up 1.00000...
4 ssd 0.04880 osd.4 up 1.00000...
-10 0.25397 host ceph-osd3
5 hdd 0.06839 osd.5 up 1.00000...
6 hdd 0.06839 osd.6 up 1.00000...
7 hdd 0.06839 osd.7 up 1.00000...
8 ssd 0.04880 osd.8 up 1.00000...
[root@ceph01 ~]# ceph orch device ls
HOST PATH TYPE DEVICE ID SI...
ceph01 /dev/sr0 hdd QEMU_DVD-ROM_QM00003 10....
ceph-osd1 /dev/sdc ssd QEMU_HARDDISK_drive-scsi2 50....
ceph-osd1 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50....
ceph-osd2 /dev/sdb ssd QEMU_HARDDISK_drive-scsi1 50....
ceph-osd2 /dev/sdc hdd QEMU_HARDDISK_drive-scsi2 50....
ceph-osd2 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50....
ceph-osd2 /dev/sde ssd QEMU_HARDDISK_drive-scsi4 40....
ceph-osd2 /dev/sdf ssd QEMU_HARDDISK_drive-scsi5 20....
ceph-osd3 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 50....
ceph-osd3 /dev/sdc hdd QEMU_HARDDISK_drive-scsi2 50....
ceph-osd3 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50....
ceph-osd3 /dev/sde ssd QEMU_HARDDISK_drive-scsi4 60....
ceph-osd3 /dev/sdf ssd QEMU_HARDDISK_drive-scsi5 50....
[root@ceph01 ~]#
}}
デバイスの性格からCLASSが自動的に割り当てられます. 規定で...
あと各osd.Xのdb_/wal_deviceの構成要素を確認したいなら、OS...
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 5h)
mgr: ceph01.nuffcu(active, since 6h), standbys: ceph0...
osd: 9 osds: 9 up (since 11m), 9 in (since 12m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 100 GiB used, 449 GiB / 550 GiB avail
pgs: 1 active+clean
[root@ceph01 ~]#
}}
OSDを用意すると勝手にpool(.mgr)が作られる. &size(10){「ce...
次にサービス配置の最後にmdsを加えますが、これはプール(後...
&size(10){追加作業していないのに以前の情報を残したストレ...
用意したosdを外して1から作り直すには
#code(nonumber){{
ceph osd out 2
ceph -s
ceph orch daemon rm osd.2 --force <--- ceph-os...
ceph osd purge 2 --yes-i-really-mean-it
@ceph-osd2
lvremove <LVM領域>
sgdisk --zap-all /dev/sdX
wipefs -a /dev/sdX
reboot <-- rebootしないとリセットされない...
}}
***OSD設定(その2) [#o874b6a2]
&color(red){注意}; この方式ですが、19.2.3で walデバイスの...
OSDのサービス構成(osd.yaml)を修正して適用する方法もある.
前段は個別に手動でHDD/SSDらを組み込んでいるが、ほぼ同じ構...
#code(nonumber){{
[root@ceph01 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE...
crash 5/5 9m ago 8h ...
mgr 2/2 9m ago 6h ...
mon 3/3 9m ago 8h ...
osd.all-available-devices 0 - 8h ...
[root@ceph01 ~]# ceph orch rm osd.all-available-devices
Removed service osd.all-available-devices
[root@ceph01 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 5/5 5s ago 8h *
mgr 2/2 5s ago 6h ceph01;ceph02
mon 3/3 5s ago 8h ceph01;ceph02;ceph...
[root@ceph01 ~]#
}}
#code(nonumber){{
[root@ceph01 ~]# vi osd.yaml
service_type: osd
service_id: ceph-osd1-ssd
service_name: osd.ceph-osd1-ssd
placement:
hosts:
- ceph-osd1
spec:
data_devices:
rotational: 0
---
service_type: osd
service_id: ceph-osd1-hdd
service_name: osd.ceph-osd1-hdd
placement:
hosts:
- ceph-osd1
spec:
data_devices:
rotational: 1
---
service_type: osd
service_id: ceph-osd2-ssd
service_name: osd.ceph-osd2-ssd
placement:
hosts:
- ceph-osd2
spec:
data_devices:
paths:
- /dev/sdb
---
service_type: osd
service_id: ceph-osd2-hdd
service_name: osd.ceph-osd2-hdd
placement:
hosts:
- ceph-osd2
spec:
data_devices:
paths:
- /dev/sdc
- /dev/sdd
db_devices:
paths:
- /dev/sde
wal_devices:
paths:
- /dev/sdf
---
service_type: osd
service_id: ceph-osd3-ssd
service_name: osd.ceph-osd3-ssd
placement:
hosts:
- ceph-osd3
spec:
data_devices:
paths:
- /dev/sdf
---
service_type: osd
service_id: ceph-osd3-hdd
service_name: osd.ceph-osd3-hdd
placement:
hosts:
- ceph-osd3
spec:
data_devices:
paths:
- /dev/sdb
- /dev/sdc
- /dev/sdd
db_devices:
paths:
- /dev/sde
[root@ceph01 ~]#
}}
とhost毎にPATHまで指定して定義してますが、同じ構成のOSDな...
っで作った仕様をテストしてみます
#code(nonumber){{
[root@ceph01 ~]# ceph orch apply -i osd.yaml --dry-run
(略
################
OSDSPEC PREVIEWS
################
+---------+---------------+-----------+----------+-------...
|SERVICE |NAME |HOST |DATA |DB ...
+---------+---------------+-----------+----------+-------...
|osd |ceph-osd1-ssd |ceph-osd1 |/dev/sdc |- ...
|osd |ceph-osd1-hdd |ceph-osd1 |/dev/sdd |- ...
|osd |ceph-osd2-ssd |ceph-osd2 |/dev/sdb |- ...
|osd |ceph-osd2-hdd |ceph-osd2 |/dev/sdc |/dev/sd...
|osd |ceph-osd2-hdd |ceph-osd2 |/dev/sdd |/dev/sd...
|osd |ceph-osd3-ssd |ceph-osd3 |/dev/sdf |- ...
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdb |/dev/sd...
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdc |/dev/sd...
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdd |/dev/sd...
+---------+---------------+-----------+----------+-------...
[root@ceph01 ~]#
}}
と意図したようにblueStoreが出来そうなので「--dry-run」を...
#code(nonumber){{
[root@ceph01 ~]# ceph orch apply -i osd.yaml
Scheduled osd.ceph-osd1-ssd update...
Scheduled osd.ceph-osd1-hdd update...
Scheduled osd.ceph-osd2-ssd update...
Scheduled osd.ceph-osd2-hdd update...
Scheduled osd.ceph-osd3-ssd update...
Scheduled osd.ceph-osd3-hdd update...
[root@ceph01 ~]#
}}
***プールのCRUSH配置ルール(crush rule)作成 [#e9044cdf]
cephFSの作成には「メタデータ用」「データ用」の2つのプー...
プールの作成にはデバイス違い
-HDD
-SSD
と冗長性の確保方法としの
-replicated
-erasure-coded
の組み合わせによるルール(CRUSH配置ルール)を作って、それで...
「メタデータ用」プールのルール(CRUSH配置ルール)としては「...
#code(nonumber){{
[root@ceph01 ~]# ceph osd crush rule create-replicated me...
ceph osd crush rule create-replicated NA...
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ド...
*CLASS: ストレージデバイ...
[root@ceph01 ~]# ceph osd crush rule ls
}}
&size(10){障害ドメインを「host」にすると「ceph config get...
「データ用」プールのルール(CRUSH配置ルール)としては容量効...
「erasure-coded」はRAID5/6な感じで パリティー ブロックが...
既定の「erasure-coded」は
#code(nonumber){{
[root@ceph01 ~]# ceph osd erasure-code-profile get default
k=2
m=2
plugin=jerasure
technique=reed_sol_van
[root@ceph01 ~]#
}}
と2つのデータに2つのパリティを用意することになっていて...
&size(10){ほかの例: [[https://www.redbooks.ibm.com/redpie...
#code(nonumber){{
[root@ceph01 ~]# ceph osd erasure-code-profile set k2-m1-...
[root@ceph01 ~]# ceph osd erasure-code-profile ls
default
k2-m1-profile
[root@ceph01 ~]#
}}
「メタデータ用」プールには、 レプリカの crush rule「meta-...
「データ用」プールには、erasure-codedのイレイジャーコード...
&color(red){*}; 重要
「.mgr」プール向けのCRUSH配置ルール(crush rule)を用意して...
#code(nonumber){{
ceph osd crush rule create-replicated replicated-mgr defa...
ceph osd pool set .mgr crush_rule replicated-mgr
}}
CRUSH配置ルール(crush rule)の「default」は使用するデバイ...
デフォで作られる .mgr プールにはこの「default」が適用され...
そうすると 「meta-ssd」で作られたプールと重複していると...
「pool 1 contains an overlapping root -1... skipping scal...
こうなるとscaling, rebalanceが行われなくなり、結果HDDの消...
参照先 [[https://blog.mei-home.net/posts/ceph-rook-crush-...
***プール作成 [#g6ee6bcf]
OSDを組み込むと「.mgr」といわれるcephシステム側のpoolが作...
#code(nonumber){{
[root@ceph01 ~]# ceph osd lspools
1 .mgr
[root@ceph01 ~]#
}}
まず「メタデータ用」プールを作る
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool create emfs-meta 64 meta-ssd
pool 'emfs-meta' created
[root@ceph01 ~]#
}}
「64」はpg_num. 詳細は難しい. 参照[[https://docs.ceph.com...
次に「データ用」のプールを作成します.
こちらはイレイジャーコードを使い、先ほど作成した「k2-m1-p...
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool create emfs-data erasure k...
pool 'emfs-data' created
[root@ceph01 ~]# ceph osd pool ls (「ceph osd lspools...
.mgr
emfs-meta
emfs-data
[root@ceph01 ~]# ceph osd pool set emfs-data allow_ec_ove...
[root@ceph01 ~]# ceph osd pool set emfs-data bulk true
}}
&size(10){SSDだけのosdで構築したpoolはメタデータ用向けに...
次に作ったpoolの性格を充てます. cephfsにはcephfs、RBD向け...
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool application enable emfs-me...
enabled application 'cephfs' on pool 'emfs-meta'
[root@ceph01 ~]# ceph osd pool application enable emfs-da...
enabled application 'cephfs' on pool 'emfs-data'
[root@ceph01 ~]#
}}
各poolの詳細は「ceph osd pool get <pool名> all」で得られ...
#code(nonumber){{
[root@ceph01 ~]# ceph osd pool get emfs-data all
size: 3
min_size: 2
pg_num: 1
pgp_num: 1
crush_rule: emfs-data
hashpspool: true
allow_ec_overwrites: true
nodelete: false
nopgchange: false
nosizechange: false
write_fadvise_dontneed: false
noscrub: false
nodeep-scrub: false
use_gmt_hitset: 1
erasure_code_profile: k2-m1-profile
fast_read: 0
pg_autoscale_mode: on
eio: false
bulk: true
[root@ceph01 ~]#
}}
ここで様子を見ると
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 1...
mgr: ceph01.ocyoth(active, since 16h), standbys: ceph...
osd: 8 osds: 8 up (since 10h), 8 in (since 10h)
data:
pools: 3 pools, 66 pgs
objects: 2 objects, 577 KiB
usage: 291 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph01 ~]#
}}
となる
***ファイルシステムの作成 [#u034b063]
[[https://docs.ceph.com/en/latest/cephfs/createfs/>+https...
ようやく下準備が完了して、ファイルシステムを作ります
まずはMDSサービスをデプロイします
#code(nonumber){{
[root@ceph01 ~]# vi mds.yaml
service_type: mds
service_id: emfs <-- 作成するファイルシステム名...
placement:
hosts:
- ceph01
- ceph02
[root@ceph01 ~]# ceph orch apply -i mds.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mds.yaml
(mdsのコンテナ状態を確認)
[root@ceph01 ~]# ceph orch ps --daemon_type=mds
NAME HOST PORTS STATUS REF...
mds.emfs.ceph01.datuel ceph01 running (16s) 1...
mds.emfs.ceph02.kicdez ceph02 running (18s) 1...
[root@ceph01 ~]#
[root@ceph01 ~]# ceph fs new emfs emfs-meta emfs-data ...
Error EINVAL: pool 'emfs-data' (id '3') is an erasure-cod...
[root@ceph01 ~]#
}}
とエラーが言われる. cephfsは「replicated」で用意されたdat...
#code(nonumber){{
[root@ceph01 ~]# ceph fs new emfs emfs-meta emfs-data --f...
}}
もし
#code(nonumber){{
Pool 'emfs-data' (id '3') has pg autoscale mode 'on' bu...
Consider setting the flag by running
# ceph osd pool set emfs-data bulk true
new fs with metadata pool 2 and data pool 3
}}
と言われたら「ceph osd pool set emfs-data bulk true」を実...
&size(10){なぜ必要かはPGを理解する必要があるかも. [[https...
#code(nonumber){{
[root@ceph01 ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-d...
[root@ceph01 ~]# ceph -s
:
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 1...
mgr: ceph01.ocyoth(active, since 18h), standbys: ceph...
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 12h), 8 in (since 12h)
:
[root@ceph01 ~]#
}}
mdsを複数用意することが求められる. MDSのフェイルオーバー...
#code(nonumber){{
ceph fs set emfs standby_count_wanted 0
ceph fs set cephfs standby_count_wanted 0
}}
でその警告は停止します
***client接続 [#ma4afb62]
&color(red){*};&size(10){バックエンドの「10.10.10.x」に接...
cephのパッケージをインストールします. &size(10){rockyli...
#code(nonumber){{
(rockylinux9なら)
dnf install centos-release-ceph-squid.noarch epel-releas...
dnf install ceph-common -y
}}
その後「&color(magenta){ceph 構成ファイル};」(/etc/ceph/c...
「&color(magenta){ceph 構成ファイル};」はcephadmが実行で...
#code(nonumber){{
[root@ceph-client ~]# ssh root@ceph01 "ceph config genera...
(中身は)
[root@ceph-client ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 4ce725c6-eb0d-11ef-980a-bc24112ff...
[global]
fsid = 4ce725c6-eb0d-11ef-980a-bc24112ffd94
mon_host = [v2:192.168.0.49:3300/0,v1:192.168.0.4...
[root@ceph-client ~]#
}}
「&color(orangered){キーリング};」は
「ceph fs authorize <filesystem> client.<CephX user> / rw...
#code(nonumber){{
[root@ceph-client ~]# ssh root@ceph01 "ceph fs authorize ...
[client.r9]
key = AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA==
caps mds = "allow rwp fsname=emfs"
caps mon = "allow r fsname=emfs"
caps osd = "allow rw tag cephfs data=emfs"
[root@ceph-client ~]#
*quotaを使うなら「p」を追加して「rwp」とします.
}}
「&color(orangered){キーリング};」が入ったファイル名は上...
っでmount
#code(nonumber){{
[root@ceph-client ~]# mkdir -p /emfs
[root@ceph-client ~]# mount -t ceph ceph01:6789,ceph02:67...
(とか)
[root@ceph-client ~]# mount -t ceph ceph01:6789,ceph02:67...
(とか)
[root@ceph-client ~]# mount -t ceph r9@.emfs=/ /emfs
[root@ceph-client ~]# df -Tht ceph
Filesystem T...
192.168.0.47:6789,192.168.0.48:6789,192.168.0.49:6789:/ c...
[root@ceph-client ~]#
}}
&color(red){*};&size(10){rockylinux9とかkernelが新しいと...
autofsでの表記は下記になります
#code(nonumber){{
[root@ceph-client ~]# cat /etc/auto.master
/- /etc/auto.home --timeout=60
[root@ceph-client ~]# cat /etc/auto.home
/emfs -fstype=ceph r9@.emfs=/
(あるいは)
/emfs -fstype=ceph,name=r9,fs=emfs ceph01:6789,ceph02:6...
[root@ceph-client ~]#
}}
/etc/fstabでmount表記なら
#code(nonumber){{
[root@ceph-client ~]# cat /etc/fstab
:
r9@.emfs=/ /emfs ceph rw 0 0
[root@ceph-client ~]#
}}
作成した「&color(orangered){キーリング};」は「ceph auth l...
#code(nonumber){{
[root@ceph01 ~]# ceph auth ls
: ...
client.r9 ...
key: AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA== ...
caps: [mds] allow rwp fsname=emfs ...
caps: [mon] allow r fsname=emfs ...
caps: [osd] allow rw tag cephfs data=emfs ...
:
[root@ceph01 ~]#
}}
削除は「ceph auth rm client.r9」で行えます.
クライアント側に置かれる「ceph.client.r9.keyring」とフォ...
***subvolume [#nf3b851c]
こうして提供される /emfs であるが、その配下に /emfs/peopl...
cephでは、作ったフォルダに対して個別にクォータ(容量制限),...
subvolumegroupとsubvolumeの2つのフォルダ特性を持たせられ...
|BGCOLOR(YELLOW):項目|BGCOLOR(YELLOW):subvolumegroup|BGCO...
|役割|グルーピング|実データ領域|単なる整理(フォルダ)|
|中身|subvolumeを持つ|ファイル・フォルダを持つ|ファイルや...
|クォータ|グループ単位で可能|個別に可能|一応可能だが管理...
|スナップショット|基本しない|できる|基本できない(単体で...
|利用単位|管理者目線|ユーザ/アプリ目線|ユーザー目線(軽い...
|LVMに例えると|VolumeGroup|LogicalVolume|単なるmkdir|
|分けるもの|project,data,backup|ユーザ領域,プロジェクト領...
#code(nonumber){{
/emfs
├ people ← subvolumegroup
│ ├ userA (subvolume)
│ │ ├ documents (mkdir)
│ │ ├ download (mkdir)
│ │ └ picture (mkdir)
│ ├ userB (subvolume)
├ project ← subvolumegroup
│ ├ group1 (subvolume)
│ └ group2 (subvolume)
│
└ data ← subvolumegroup
├ group1 (subvolume)
│ └ MMYYDD (mkdir)
└ group2 (subvolume)
}}
とにかく管理面からも運用的には/emfsの配下には subvolumegr...
作り方:
#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...
(複数 data用poolでfsを作っているなら、--pool_layout で...
[people配下]
ceph fs subvolume create emfs userA --group_name people ...
ceph fs subvolume create emfs userB --group_name people
[project配下]
ceph fs subvolume create emfs group1 --group_name project
ceph fs subvolume create emfs group2 --group_name project
[data配下]
ceph fs subvolume create emfs group1 --group_name data
ceph fs subvolume create emfs group2 --group_name data
}}
***システム停止手順 [#c32d43cb]
参照先:
[[https://access.redhat.com/documentation/en-us/red_hat_c...
1. cephを利用しているクライアントを全てシャットダウン.
2. 「ceph -s」でhealthが「HEALTH_OK」でかつ、pgsの値がす...
3-1. ceph-mdsのフェイルオーバーを先を1つにする
#code(nonumber){{
[root@ceph01 ~]# ceph fs set emfs max_mds 1
}}
3-2. ファイルシステムを停止させる(その1)
#code(nonumber){{
[root@ceph01 ~]# ceph fs fail emfs
emfs marked not joinable; MDS cannot join the cluster. Al...
[root@ceph01 ~]# ceph -s
:
mds: 1/1 daemons up, 1 standby
↓
mds: 0/1 daemons up (1 failed), 2 standby
:
[root@ceph01 ~]#
}}
3-3. ファイルシステムを停止させる(その2)
#code(nonumber){{
[root@ceph01 ~]# ceph fs set emfs joinable false
emfs marked not joinable; MDS cannot join as newly active.
[root@ceph01 ~]#
}}
4. OSDの機能停止
#code(nonumber){{
[root@ceph01 ~]# ceph osd set noout
[root@ceph01 ~]# ceph osd set norecover
[root@ceph01 ~]# ceph osd set norebalance
[root@ceph01 ~]# ceph osd set nobackfill
[root@ceph01 ~]# ceph osd set nodown
[root@ceph01 ~]# ceph osd set pause
[root@ceph01 ~]# ceph -s
:
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 38h), 8 in (since 38h)
↓
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 38h), 8 in (since 38h)
flags pauserd,pausewr,nodown,noout,nobackfill,no...
:
[root@ceph01 ~]#
}}
5. OSDホストを順次停止
#code(nonumber){{
[root@ceph01 ~]# ssh root@ceph-osd1 "shutdown -h now"
[root@ceph01 ~]# ssh root@ceph-osd2 "shutdown -h now"
[root@ceph01 ~]# ssh root@ceph-osd3 "shutdown -h now"
}}
6. MONホストを順次停止
#code(nonumber){{
[root@ceph01 ~]# ssh root@ceph02 "shutdown -h now"
}}
7. MGRホストを停止
#code(nonumber){{
[root@ceph01 ~]# shutdown -h now
}}
***システム起動手順 [#w63cba21]
前段の逆を行います
1. MGRホストをboot
2. MONホストをboot
3. OSDホストをboot
4. MGRホストにてOSDの各種機能を有効化
#code(nonumber){{
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_ERR
1 filesystem is degraded
1 filesystem is offline
pauserd,pausewr,nodown,noout,nobackfill,noreb...
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 6m)
mgr: ceph01.ocyoth(active, since 6m), standbys: ceph0...
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 6m), 8 in (since 38h)
flags pauserd,pausewr,nodown,noout,nobackfill,no...
data:
volumes: 0/1 healthy, 1 failed
pools: 3 pools, 66 pgs
objects: 24 objects, 586 KiB
usage: 1.0 GiB used, 399 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph01 ~]#
[root@ceph01 ~]# ceph osd unset noout
[root@ceph01 ~]# ceph osd unset norecover
[root@ceph01 ~]# ceph osd unset norebalance
[root@ceph01 ~]# ceph osd unset nobackfill
[root@ceph01 ~]# ceph osd unset nodown
[root@ceph01 ~]# ceph osd unset pause
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_ERR
1 filesystem is degraded
1 filesystem is offline
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 8m)
mgr: ceph01.ocyoth(active, since 8m), standbys: ceph0...
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 8m), 8 in (since 38h)
data:
volumes: 0/1 healthy, 1 failed
pools: 3 pools, 66 pgs
objects: 24 objects, 586 KiB
usage: 231 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph-mgr ~]#
}}
5. ファイルシステムを有効にする
#code(nonumber){{
[root@ceph01 ~]# ceph fs set emfs joinable true
emfs marked joinable; MDS may join as newly active.
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 1...
mgr: ceph01.ocyoth(active, since 11m), standbys: ceph...
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 11m), 8 in (since 38h)
data:
volumes: 1/1 healthy
pools: 3 pools, 66 pgs
objects: 24 objects, 587 KiB
usage: 231 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
}}
ページ名:
1