初心者がRocky LinuxでCephFSを構築!AIツールとの試行錯誤の軌跡【トゥモロー・ネット テックブログ】

今回は、インフラ初心者エンジニアがRocky Linux 8.10をベースにCephFS(Cephのファイルシステム)を構築した体験をお届けします。
AIツール(ChatGPT)を頼りに進めたのですが、トライアンドエラーを繰り返して答えにたどり着くまで時間がかかった事、Cephの仕組みがわからない事により苦労も多かったです。
後から学んだCephの分散ストレージ構造を、作成した図とともに紹介します。
目次
CephFSとは何か?
Cephはオープンソースの分散ストレージソフトウェアで、以下のような特長があります。
分散型アーキテクチャ
分散型アーキテクチャ: 単一障害点を持たない設計で、複数のノード間でデータを分散保存。高可用性とスケーラビリティを実現します。
3つのストレージ機能
- オブジェクトストレージ(RADOS GatewayでS3/Swift互換)。
- ブロックストレージ(RADOS Block DeviceでVM/コンテナ向け)。
- ファイルシステム(CephFSでPOSIX互換)。
スケーラビリティ
ペタバイト級のデータを処理でき、ノード追加で容量や性能を拡張可能。
自己修復・自己管理
レプリケーションやCRUSHアルゴリズムで障害が発生してもデータ整合性を維持。
オープンソース
コミュニティ主導で開発が進むプロジェクトです。
CephFSは上記3つのストレージ機能の一つで、今回はこの中の”ファイルシステム”に特化した構築を行います。
構築するCephFSについて
今回はWorkstation PCを4台使ったノード環境で挑戦しました。
PC(Node)のハードウェア構成
Type | Item | Description |
---|---|---|
M/B | B760M GAMING PLUS WIFI | B760 Intel マザーボードATX ×1 |
CPU | BX8071514700 | Intel Core i7 14700 20core 28thread ×1 |
MEM | CT32G48C40U5 | DDR5-4800 32GB ×4 |
SSD① | SSDPFKNU512GZX1 | M.2 PCIe4.0×4 2280 512GB(OSboot)×1 |
SSD② | MZ-V9S1T0B-IT | M.2 PCIe4.0×4 2280 1TB(DB/WAL)×1 |
HDD | ST1000VN008 | 3.5″ SATA 5400RPM HDD 1TB (OSD)×1 |
AOC | X550T2 | 2ポート Intel X550-T2 10GbE RJ45 AOC×1 |
Chassis | SHA-VS4-VBK | ATX タワー型シャーシ×1 |
PWS | KRPW-GA750W/90+ | 80PLUS GOLD認証 フルプラグインATX電源 750Wモデル |
10GbE NICを除けば、ごく普通の一般向けPCのスペックで4Nodeの構成です。
ネットワーク・システム構成
ネットワーク図は以下の様になっています。

10GbEスイッチでbond0(20Gb)を構築し、Ceph Public IP(111.11.0.1~4)を割り当て。1GbEで管理ネットワーク(DHCP)を設定します。
システム構成の特徴
- 分散性と冗長性(Monitor/MDSの分散配置)
- 役割分担(監視/管理とCephFS特化)
- cephadmによるコンテナ管理
- 全ノードにOSDを配置
- EC設定(k=4, m=2)で耐障害性は2OSDまで
小~中規模クラスタとしてバランスが取れていますが、耐障害性が低い点は注意が必要です。
構築手順
OSインストール
Rocky Linux 8.10のISOを公式サイト(https://rockylinux.org/ja-JP/download)からダウンロードし、RufusでUSBインストールメディアを作成 します。
次にUSB ブートで起動し、Minimalインストールを選択。設定資料に基づき、パーティション構成、言語、時刻、ネットワークとホスト名、rootパスワードを設定 します。

ネットワーク設定
次にネットワークを設定します。
・スレーブNICの追加

・Ceph Public用のbond0を802.3adモードで10GbEを束ね、br10(ブリッジ)をbond0上に作成。固定IPを111.11.0.1~4に設定 します。

・br10にbond0をスレーブとして追加します。

・管理ネットワーク用にbr0を1GbE(enp4s0)上に作成し、DHCPで設定します。

・/etc/hostsにIPとホスト名(例:111.11.0.1 pbs01.cephfs.local pbs01)を登録します。

ChatGPTの情報でスムーズに進みましたが、うっかりミスに気付くのに時間を要しました。
必要パッケージのインストール
Cephadm用: Podman(4.x推奨)、Pythonパッケージ。
mount.cephビルド用: gcc(Development Tools経由)、autoconf、automake、libcephfs-devel、git。
Cephリポジトリから依存パッケージを取得しましたが、バージョン違いによるエラーが発生しましたが、AIの提案が曖昧で試行錯誤しました。
Cephadmのインストール
Ceph Bootstrap設定
Cephadmをインストール、Bootstrapを実行し、クラスタ基盤を構築します。


Ceph.mountビルド/インストール
mount.cephをビルドしてインストール。
pacificブランチで、試行錯誤しました。(do_cmake.shを繰り返し実行し、エラーが出るたびに依存パッケージをインストール)

依存パッケージのインストール

snappy共有ライブラリ:前のログでsnappyの静的ライブラリ(libsnappy.a)しかインストールされていなかったため、共有ライブラリ(libsnappy.so)を再ビルドします。

オプション依存(lttng-ust、babeltrace)

Cephソースコードの取得
Ceph quincyブランチをクローン

ビルド構成(CMake)
CephFS(ceph-mount)を有効にするため、-DWITH_FUSE=ONを指定します。

ビルドとインストール
CMakeが成功したら、ビルドとインストールを実行します。

SSH鍵交換~ノード登録
cephadm shellでssh-configを取得し、SSH鍵ceph.pubを作成します。



SSHでノード2~4に送ります。


Orchestratorにノード登録しましたが、OS上で鍵交換を行ってBootstrapが失敗。コンテナ間設定に修正して成功しました。
OSD設定
HDD(/sda~/sde)をOSD、NVMe(nvme0n1)をjournalとして設定。ノード1~4で実施します。





各ノードへデーモン設定
設定資料に沿ってmgr、mon、osd、mdsの役割を各ノードに設定します。


Pool作成(データ/メタデータ)
cephfs_dataとcephfs_metadataのプールを作成します。



アプリケーション設定とEC上書き許可

ChephFS作成

プールをもとにCephFSを作成。journal割り当て忘れで再構築しましたが、最終的に動作確認できました。
OpenPBSビルド/インストール
OpenPBSをビルドし、/opt/pbsにインストールします。
必要パッケージインストール

ソースコード取得~ビルド準備(autotools 実行)


configure実行~ビルド


インストール~設定


PBS クライアントノードの MOMを設定・起動

pbs_iff と pbs_rcp のパーミッション変更

PBSサービス起動

Ceph クライアント機能追加(ceph-pacific ビルド)

まとめ
今回のCephFS構築では、ChatGPTのおかげで進んだ場面もありましたが、予備知識の不足から苦戦することも多かったです。
しかし、CephのRADOSベース(Monitor、OSD、MDSの分散構造)を学び、ネットワーク図を作成することで理解を深めました。
AIは便利ですが、自分でも学習を進めることで、疑問点も具体的かつ明確にでき、スムーズに解決できると実感しました。
お問合せ先

関連ページ
今更聞けないPacemakerとCorosyncによるHAクラスタ構成
OSNexus社QuantaStorによるスケールアウト構成(Ceph)ファイル/ブロック/オブジェクトサービス
OSNEXUS社QuantaStorスケールアップ構成(OpenZFSベース)
この記事を書いた人

株式会社トゥモロー・ネット
トゥモロー・ネットは「ITをもとに楽しい未来へつなごう」という経営理念のもと、感動や喜びのある、より良い社会へと導く企業を目指し、最先端のテクノロジーとサステナブルなインフラを提供しています。設立以来培ってきたハードウェア・ソフトウェア製造・販売、運用、保守などインフラに関わる豊富な実績と近年注力するAIサービスのコンサルティング、開発、運用、サポートにより、国内システムインテグレーション市場においてユニークなポジションを確立しています。
インフラからAIサービスまで包括的に提供することで、システム全体の柔軟性、ユーザビリティ、コストの最適化、パフォーマンス向上など、お客様の細かなニーズに沿った提案を行っています。