#author("2025-05-04T17:49:17+00:00","default:sysosa","sysosa") #author("2025-08-11T05:29:49+00:00","default:sysosa","sysosa") 本家様 [[https://ceph.io/>+https://ceph.io/]] オブジェクトストレージ, ブロックストレージ, ファイルシステムを提供するオープンソースなSoftware-Defined Storage Platform. クラスターファイルシステムです. &size(10){オブジェクトストレージ:Hadoopやamazon S3なすとレージ, ブロックストレージ: /dev/vda, /dev/vdbとか提供します. ファイルシステム: posix準拠なファイルシステム}; &size(10){開発者たちは今現在IBMにいるそうです}; ここではこのうち Ceph を使ったPOSIX互換ファイルシステム CephFS を取り上げます. &size(10){POSIXアクセス制御リスト(ACL)のサポートが嬉しい. ネットワーク経由でACLが使えるのはNFSとこれと GlusterFS のみみたい}; Cephにはバージョン名があって下記の通りになってます &size(10){ubuntuっぽい}; &size(10){[[https://docs.ceph.com/docs/master/releases/general/>+https://docs.ceph.com/docs/master/releases/general/]], [[https://docs.ceph.com/en/latest/releases/>+https://docs.ceph.com/en/latest/releases/]]}; |BGCOLOR(YELLOW):Release name|BGCOLOR(YELLOW):Initial release|BGCOLOR(YELLOW):Latest|BGCOLOR(YELLOW):End of life(24.11.28時点)|BGCOLOR(YELLOW):備考| |Squid|2024-09-26|19.2.2|2026-09-19(estimated)|| |Reef|2023-08-07|18.2.4|2025-08-01(estimated)|IBM Storage Ceph 7| |Quincy|2022-04-19|17.2.8|2025-01-13|IBM Storage Ceph 6| |Pacific|2021-03-31|16.2.31|2024-03-04|IBM Storage Ceph 5&br;SUSE Enterprise Storage 7.1(Pacific v16.2)| |BGCOLOR(YELLOW):Release name|BGCOLOR(YELLOW):Initial release|BGCOLOR(YELLOW):Latest|BGCOLOR(YELLOW):End of life(25.8.11時点)|BGCOLOR(YELLOW):備考| |Squid|2024-09-26|19.2.3|2026-09-19(estimated)|| |Reef|2023-08-07|18.2.7|2025-08-01(estimated)|IBM Storage Ceph 7| |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&br;SUSE Enterprise Storage 7.1(Pacific v16.2)| |Octopus|2020-03-23|15.2.17|2022-08-09|SUSE Enterprise Storage 7(Octopus v15.2)| |Nautilus|2019-03-19|14.2.22|2021-06-30| Red Hat Ceph Storage 4| |Mimic|2018-06-01|13.2.10|2020-07-22|| |Luminous|2017-08-01|12.2.13|2020-03-01|Red Hat Ceph Storage 3| &color(red){*};&size(10){毎年メジャーバージョンアップがある}; ここでは「Squid」を導入します. 導入方法は docker/podmnanの上に構築する [[cephadm>Ceph/cephadm]] を使うのが推奨されてますが、ここではOSの上に直に作っていきます. cephはmonitor, manager, osd, metadata らと機能を提供するために各種に特化した作りこみが必要です. っで構成はこんな感じで. |BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):役目|BGCOLOR(YELLOW):IPアドレス[public network]|BGCOLOR(YELLOW):cluster network|BGCOLOR(YELLOW):OS|BGCOLOR(YELLOW):ストレージ|BGCOLOR(YELLOW):osd| |ceph01 |Manager &br;&color(magenta){Monitor}; &br;Metadata Server |192.168.0.47/24| |Rockylinux9.2|os(16GB) &br; /var/lib/ceph(8GB) || |ceph02 |Manager &br;&color(magenta){Monitor}; &br;Metadata Server |192.168.0.48/24| |~|os(16GB) &br; /var/lib/ceph(8GB) || |ceph-osd1 |&color(magenta){Monitor}; &br; &color(orangered){OSDs};|192.168.0.49/24| 10.10.10.49/24 |~|os(16GB) &br; /var/lib/ceph(8GB)| OSD(50GB:SSD:&color(magenta){meta};)&br;OSD(50GB:HDD:&color(crimson){data};)| |ceph-osd2 | &color(orangered){OSDs};|192.168.0.50/24| 10.10.10.50/24 |~|os(16GB) | OSD(50GB:SSD:&color(magenta){meta};)&br;OSD(50GB:HDD:&color(crimson){data};)+OSD(50GB:HDD:&color(crimson){data};)+OSD(40GB:SSD:&color(orangered){block.db};)+SSD(20GB:SSD:&color(orange){block.wal};)| |ceph-osd3 | &color(orangered){OSDs};|192.168.0.51/24| 10.10.10.51/24 |~|os(16GB) | osd(50GB:SSD:&color(magenta){meta};)&br;OSD(50GB:HDD:&color(crimson){data};)+OSD(50GB:HDD:&color(crimson){data};)+OSD(50GB:HDD:&color(crimson){data};)+OSD(60GB:SSD:&color(orangered){block.db};)| ***構築に必要なリソースとか [#b419cf5c] [[Ceph/memo]] ***ceph向けリポジトリの登録 [#v02b10b1] cephはyum/dnfでインストール可能で関係するすべてのノードに下記リポジトリを加えておきます &size(10){参照 [[https://docs.ceph.com/en/latest/install/get-packages/#rhel>+https://docs.ceph.com/en/latest/install/get-packages/#rhel]]}; #code(nonumber){{ cat << _EOF_ > /etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for \$basearch baseurl=https://download.ceph.com/rpm-squid/el9/\$basearch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-squid/el9/noarch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc _EOF_ }} &size(10){cephリポジトリの中身詳細 [[Ceph/repository]]}; その後に各役目毎に設定作業を行います ***ceph構築 [#n1c8b8b8] -Ceph Monitor まず初めにmonitorノードを作り上げます. ceph01、ceph02 および ceph-osd1 にmonitor機能を載せます. [[Ceph Monitor>Ceph/Monitor]] -Ceph Manager 次にManagerノードを作ります. ここではceph01とceph02にその役目を持たせます [[Ceph Manager>Ceph/Manager]] -Ceph OSDs MonitorとManagerが完成したので次にOSDを用意します ここではceph-osd1、ceph-osd2、ceph-osd3でOSDを用意してます [[Ceph OSDs>Ceph/OSD]] -CephFS Metadata Server ファイルシステムの作成にはこのmetadata serverが必要です. [[CephFS Metadata Server>Ceph/MDS]] -CephFS Client クライアントからcephにアクセスします [[CephFS Client>Ceph/Client]] ***nfs [#p274aa78] cephfsをマウントしたceph clientをexportすれば、それでnfsサーバが用意できるが、ceph側で用意しているnfs moduleでnfsサーバを作ってみる. cephでは NFS-Ganesha を経由して提供している. #code(nonumber){{ [root@ceph01 ~]# dnf install centos-release-nfs-ganesha5.noarch [root@ceph01 ~]# dnf list available --disablerepo=* --enablerepo=centos-nfs-ganesha-5 : nfs-ganesha-ceph.x86_64 5.9-1.el9s centos-nfs-ganesha-5 : [root@ceph01 ~]# dnf install libcephfs2 nfs-ganesha nfs-ganesha-ceph }} 既設のnfsサービスを停止します #code(nonumber){{ [root@ceph01 ~]# systemctl stop nfs-server.service [root@ceph01 ~]# systemctl disable nfs-server.service (nfsなのでrpcbindは動かします) [root@ceph01 ~]# systemctl enable rpcbind --now }} 設定ファイルは「/etc/ganesha/ganesha.conf」でceph向けのsampleが「/etc/ganesha/ceph.conf」なので上書きとかで差し替えます #code(nonumber){{ [root@ceph01 ~]# mv /etc/ganesha/ganesha.conf /etc/ganesha/ganesha.conf.orig [root@ceph01 ~]# cp /etc/ganesha/ceph.conf /etc/ganesha/ganesha.conf [root@ceph01 ~]# vi /etc/ganesha/ganesha.conf NFS_CORE_PARAM { Enable_NLM = false; Enable_RQUOTA = false; Protocols = 4; } NFSv4 { #RecoveryBackend = rados_ng; Minor_Versions = 1,2; } MDCACHE { Dir_Chunk = 0; } EXPORT { Export_ID=100; Protocols = 4; Transports = TCP; Path = /; Pseudo = /emfs; Access_Type = RW; Attr_Expiration_Time = 0; Squash = root_squash; SecType = sys; FSAL { Name = CEPH; User_Id = "admin"; Secret_Access_Key = "「ceph auth get-key client.admin」の値"; Ceph_Cluster = "ceph"; } } CEPH { Ceph_Conf = /etc/ceph/ceph.conf; } [root@ceph01 ~]# mkdir /var/run/ganesha/ /var/run/ganesha }} ここで「systemctl restart nfs-ganesha.service」で動く予定なのだが、、動かない。 代わりに「/usr/bin/ganesha.nfsd -F」では動いた. どこの問題は見えないが... 「/var/log/ganesha/ganesha.log」を見るとプログラムがクラッシュしている.. 素直にネイティブ接続で繋いだ方がよさげ。しかもネイティブ接続の方がパフォがいいみたい ***smb [#kda87601] nfs同様、他のノードでcephfsをmountしてsmbを稼働させることが出来るが、ここではceph側でsmbを動かしてみる. #code(nonumber){{ [root@ceph01 ~]# ceph mgr module enable smb --force [root@ceph01 ~]# ceph mgr module ls : smb on : [root@ceph01 ~]# }} どうもorchestratorが必要なようで直置きスタイルでは ceph から smb 制御は無理みたい ***メモ [#u6c38a8c] 「ceph -s」の実行で「&color(red){Module 'restful' has failed dependency: No module named 'pecan'};」と表示されたらCeph Monitorノードに追加で下記パッケージをインストールする. #code(nonumber){{ [root@ms ~]# pip3 install pecan cherrypy werkzeug }} CentOS8 stream #code(nonumber){{ rpm -Uvh https://download.ceph.com/rpm-octopus/el8/noarch/ceph-release-1-1.el8.noarch.rpm yum install centos-release-openstack-train -y yum install epel-release snappy gdisk gperftools-libs -y yum install leveldb -y yum install ceph -y }} #code(nonumber){{ [root@ceph-mgr ~]# ceph -s cluster: id: c2d06c20-9197-40b4-a8c4-1a0604936ce8 health: HEALTH_WARN 2 mgr modules have recently crashed }} とHEALTH_WARNメッセージがあるなら「ceph crash ls」 #code(nonumber){{ [root@ceph-mgr ~]# ceph crash ls ID ENTITY NEW 2024-01-04T05:51:12.262993Z_71368c30-4c13-4eaf-bdae-c0d66307d784 mgr.ceph-mgr * 2024-01-04T05:51:14.240766Z_52dbb01e-f34f-46b7-956a-71b2f83a7e7f mgr.ceph-mgr * [root@ceph-mgr ~]# ceph crash rm 2024-01-04T05:51:12.262993Z_71368c30-4c13-4eaf-bdae-c0d66307d784 }} ***参照先 [#n3b86970] [[https://www.cnblogs.com/netant-cg/p/10696205.html>+https://www.cnblogs.com/netant-cg/p/10696205.html]]