ストレージと共有グループの管理
Cockpit は、ハイパーバイザーデータストア(ストレージプール)の構成およびマルチホスト共有ストレージクラスタリングを調整するインターフェースを提供します。
1. データストア(ストレージプール)
データストアには、仮想ディスクイメージ(.qcow2、.raw)や ISO ファイルが保存されます。Cockpit は、ストレージプールをその範囲(スコープ)に基づいて分類します:
ストレージプールのスコープ
- ローカルスコープ: 単一のハイパーバイザーホストにのみ紐付けられたストレージプール(例: ホストのローカルパス
/var/lib/libvirt/images/にマップされたディレクトリプール)。ローカルデータストアは、独立したホストのワークロードや、共有ストレージを使用しない(ブロック)ライブマイグレーションに適しています。 - 共有スコープ: 複数のハイパーバイザーホストから同時にアクセス可能なストレージプール。具体例として、NFS(Network File System)、iSCSI LUN、Fibre Channel(FC)、または OCFS2 などのクラスターファイルシステムがあります。共有データストアは、高速な共有ストレージ型ライブマイグレーションを可能にします。
- OCFS2 クラスターデータストアのライフサイクル: クラスター化された OCFS2 データストアを初期化するには、共有ブロックデバイス(例:
/dev/sda)が参加するすべてのホストでマウント解除され、wipefs -aを使用して既存のファイルシステム署名が完全に消去されている必要があります。Cockpit は、プライマリホストからのデバイスのフォーマット、デバイスパスの登録(host_devices)、通信用ホスト IP のマッピング(host_node_ips)、ハートビートモードの選択、およびクラスタースロット数(例:4)の構成といった OCFS2 の作成プロセスを自動化します。
- OCFS2 クラスターデータストアのライフサイクル: クラスター化された OCFS2 データストアを初期化するには、共有ブロックデバイス(例:
データストアの操作
- 容量監視: 総容量、割り当て済み容量、および利用可能バイト数のメトリックを取得します。
- リフレッシュ: ストレージプールディレクトリを再スキャンして、ホストのファイルシステム上の実際のファイルと Cockpit データベースの情報を同期します。
- 起動 / 停止: ホスト上でのストレージプールの動作ステータスを制御します。プールを停止させると、そのプールに配置されている VM 仮想ディスクへの接続が無効化されます。
- 削除: ストレージプールの登録を解除します。管理者は
delete_volumesフラグを有効化(APIDELETE /api/v1/datastores/:id?delete_volumes=trueを実行)して、プール内のすべての仮想ディスクファイルを同時に物理削除できます。
2. ソフトウェア iSCSI アダプター構成(マルチパス)
IP ネットワーク経由で共有ブロックストレージを利用する環境向けに、Cockpit はホストレベルのプロキシ API を提供し、ソフトウェア iSCSI アダプターの初期化、ネットワークマルチパスの設定、ターゲットポータルの検出、およびターゲットの iSCSI Qualified Name(IQN)へのログインを可能にします。
構成ワークフロー
- アダプターの初期化: ホスト上にソフトウェア iSCSI アダプター(例:
iscsi-smoke-01)を作成し、カスタムのイニシエーター IQN(例:iqn.2026-04.awid5.mid-7d6a2e8c:iscsi-smoke-01)と起動モード(例:manualまたはautomatic)を設定します。 - ネットワークインターフェースのバインド: 物理または仮想ネットワークインターフェース(例:
enp2s0およびenp3s0)をアダプターにバインドします。複数のインターフェースをバインドすることで、セッションのマルチパス化が可能になり、ストレージネットワーク上での冗長性と負荷分散が実現します。 - ポータルの検出 (Discovery): プライマリファイルサーバーのポータル IP(例:
192.168.242.235:3260)に対して SendTargets 検出を実行し、各ネットワークインターフェースにバインドされたポータルを指定して、ターゲットストレージサーバーへの複数のパスを確立します。 - ターゲットセッションへのログイン: ターゲット IQN(例:
iqn.2026-05.io.awan:storage-server)へのアクティブな接続を確立します。CHAP 認証が構成されている場合は、ユーザー名とパスワードの認証資格情報を提供します。 - セッションの監視: OS がすべてのセッションを正常に登録し、マルチパスデバイスマッピング(例:
/dev/sda)の下でターゲットディスクをルートしていることを確認します。
停止と削除
ストレージルートの廃止または変更時:
- セッションのログアウト: 個々のアクティブなセッション ID からログアウトします。
- ターゲットの削除 (Forget): iSCSI デーモンに、検出されたポータル情報を破棄(削除)するよう指示します。
- アダプターの削除: ホストからソフトウェア iSCSI アダプターの構成を削除します。
3. 共有グループ管理(O2CBクラスタープロキシ)
クラスターファイルシステム(OCFS2 など)を複数のハイパーバイザーホストに同時にマウントして使用するには、O2CB(Oracle Cluster File System 2 Social Club)クラスターグループを構成し、維持する必要があります。Cockpit では、この調整レイヤーを共有グループ管理として管理します。
IMPORTANT
共有データストアと共有グループの関係: OCFS2 が動作している共有ブロックストレージデバイス(SAN/iSCSI)は、同時に複数のホストからの読み書き操作を受け入れることができます。しかし、データの整合性を守り破損を防ぐため、ホスト間でのロック管理やハートビート(生存確認)の連携調整が必須となります。O2CB 共有グループは、参加しているすべてのハイパーバイザー間のノードメンバーシップ、通信ポート、およびハートビートを管理します。参加しているホストでアクティブかつ同期された共有グループが存在しない状態で OCFS2 データストアを同時にマウントして書き込もうとすると、即座にファイルシステムが破損します。
共有グループ構成パラメータ
- クラスター名: O2CB クラスターの識別名(例:
ocfs2)。この名前は、データセンター内のすべてのホストで完全に一致している必要があります。 - ノード名: O2CB クラスターに参加する各ホストの識別子(通常、ホストの物理ホスト名と一致させます)。
- ノード IP & ポート: ノード間通信やロックプロトコルのトラフィック用に O2CB デーモンが使用する、専用の IP アドレスと TCP ポート(デフォルト:
7777)。 - ハートビートモード:
- local(ローカル): ハートビート信号を共有ストレージデバイス自体に用意された特定のディスク領域に直接書き込みます。
- global(グローバル): クラスター専用のハートビートサービスを利用します。
- ハートビートデバイスパス: ローカルハートビートの書き込み先となる共有ブロックデバイスのパス(例:
/dev/mapper/mpathb)。
操作ワークフローとアクション
Cockpit は、データセンター内のすべてのホストに対する O2CB 構成操作を自動化します:
- 共有グループのセットアップ (ウィザード): データセンターの全ホストに O2CB 構成 of 初期適用を行います。クラスター名の登録、全参加ホストのノードマッピング(名前、IP、ポート)の追加、およびハートビートモードの確立をウィザード形式で進めます。
- 登録ライフサイクル:
- すべて登録 (Register all): すべてのホストに対し、O2CB クラスター構成をカーネル空間に登録するよう命令します。
- すべて登録解除 (Unregister all): すべてのホストから O2CB クラスター構成を安全に登録解除します。
- ハートビート実行時制御:
- ハートビートの開始: すべてのホストで O2CB ハートビートサービスを開始します(グローバルモードの運用、または共有ストレージのマウント前に必要です)。
- ハートビートの停止: ハートビートサービスを停止します。
- メンバー管理: O2CB クラスター定義に対してメンバーノードを追加または削除します。ノードの追加・削除は、すべてのメンバーホストの構成ファイルに自動的に反映されます。
- ホストごとのステータス監視: 各ホストの O2CB カーネル状態を監視し、以下を表示します:
- クラスター定義の有無(O2CB クラクタが設定されているか)。
- オンラインステータス(クラスタースタックが有効/オンラインか)。
- アクティブなメンバーノード数。
- 構成されたハートビート領域。
- ホストレベルの O2CB デーモンのログやエラー。