初心者が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)のハードウェア構成

TypeItemDescription
M/BB760M GAMING PLUS WIFIB760 Intel マザーボードATX ×1
CPUBX8071514700Intel Core i7 14700 20core 28thread ×1
MEMCT32G48C40U5DDR5-4800 32GB ×4
SSD①SSDPFKNU512GZX1M.2 PCIe4.0×4 2280 512GB(OSboot)×1
SSD②MZ-V9S1T0B-ITM.2 PCIe4.0×4 2280 1TB(DB/WAL)×1
HDDST1000VN0083.5″ SATA 5400RPM HDD 1TB (OSD)×1
AOCX550T22ポート Intel X550-T2 10GbE RJ45 AOC×1
ChassisSHA-VS4-VBKATX タワー型シャーシ×1
PWSKRPW-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)を登録します。

ここでは、最初に「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プールの設定(k:m=4:2)を間違えて作成してしまい、もう一度作成しました。

アプリケーション設定と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サービスまで包括的に提供することで、システム全体の柔軟性、ユーザビリティ、コストの最適化、パフォーマンス向上など、お客様の細かなニーズに沿った提案を行っています。

製品に関するお問い合わせはこちら