AIGFS Whitepaper

RTX PRO 6000 Blackwell Server Editionを活用したAIインフラ設計から運用まで。
GPU、ストレージ、ネットワークを含めた実践的な構築手法と、長期運用を見据えた設計ポイントを解説します。

AIGFS Whitepaper

AIGFSは、ZFSをベースとしたストレージ基盤上で高いI/O性能を実現する高速分散ファイルシステムです。
本ホワイトペーパーでは、ZFSレイヤー上にAIGFSを構築するための設計方針、システム構成、構築手順について解説します。

1. はじめに

目的

本書は、ZFSをローカルストレージ基盤として利用し、その上位レイヤーに AIGFSを構築するための設計方針、構成例、構築手順、運用上の注意点を整理することを目的とする。

ZFSは、ローカルノード単位で高いデータ整合性、柔軟なプール設計、ARCによるキャッシュ、Snapshot、圧縮、special vdevなどの機能を提供する。一方、AIGFSは、複数ノードに分散したストレージを単一の並列ファイルシステムとして利用できる。

本構成では、各ストレージノードの物理ディスクを ZFSで管理し、その上に AIGFSの storage targetを配置することで、ローカルディスク管理の信頼性と、並列ファイルシステムのスケールアウト性能を両立する。

2. 想定システム構成

2.1 全体構成

本書で想定する基本構成は以下の通りである。

役割 ノード例 主な機能
管理ノード manage BeeGFS/AIGFS Management(mgmtd)サービスを実行
メタデータノード meta1, meta2 メタデータ管理
ストレージノード storage1 ~ storageN ZFS Pool + AIGFS Storage Target
クライアントノード client1 ~ clientN BeeGFS Clientをマウントし、ファイルシステムへアクセス
ネットワーク 25 / 40 / 100 GbE データ通信、管理通信

2.2 各レイヤーの構成

アプリケーション / AI / HPC / 解析処理
AIGFS クライアント
AIGFS メタデータ・ストレージサービス
ZFS Dataset / Zpool
HDD / SSD / NVMe / RAID HBA / JBOD
物理サーバ / ネットワーク

2.3 各レイヤーの役割

レイヤー 主な役割
ZFS ローカルディスク管理、冗長化、Checksum、ARC、Snapshot、Dataset管理
AIGFS 複数ノード間の分散I/O、単一名前空間、クライアント共有
ネットワーク クライアント、Metadata、Storage間の高速通信
アプリケーション AI学習、HPC、解析処理、大容量ファイル処理

3. 設計方針

3.1 ZFSを利用する目的

ZFSを利用することで、各ストレージノード単位で以下の機能を利用できる。

項目 目的
データ保護 Checksumによるデータ破損の検出
ディスク冗長化 Mirror / RAIDZ / Special VDEV / Log VDEVの利用
キャッシュ ARC / L2ARCによる読み取り性能の向上
高速化 Special VDEVによる小容量ファイルおよびメタデータの高速化
運用性 Snapshot、Quota、Dataset単位での管理
柔軟性 HDD、SSD、NVMeを組み合わせた階層型ストレージ構成

3.2 AIGFSを利用する目的

AIGFSを上位レイヤーとして利用する目的は以下である。

項目 目的
並列I/O 複数のStorage Targetへの分散I/O
スケールアウト Storage Nodeの追加による容量・性能の拡張
クライアント共有 複数サーバから単一名前空間で利用
AI/HPC用途 大量ファイルおよび大容量データセットの処理
分散配置 Dataset単位、ディレクトリ単位での分散制御

4. ZFS設計

4.1 ストレーノード構成例

1台のストレージノード内で、HDDを ZFS poolとして構成し、NVMe SSDを special vdevや SLOGとして利用する。


storage node
├─ HDD pool
│   └─ ZFS dataset
│       └─ AIGFS storage target
├─ NVMe special vdev
├─ NVMe SLOG
└─ optional L2ARC

4.2 推奨 ZFSプロパティ

AIGFS storage target用 datasetでは、以下の設定を基本とする。


# zfs set atime=off gfs_pool/aigfs-target01
# zfs set xattr=sa gfs_pool/aigfs-target01
# zfs set compression=off gfs_pool/aigfs-target01
# zfs set dedup=off gfs_pool/aigfs-target01
# zfs set recordsize=128K gfs_pool/aigfs-target01

4.3 dataset設計

AIGFSの storage targetは、ZFS dataset単位で分離する。


# gfs_pool/aigfs-target01
# gfs_pool/aigfs-target02
# gfs_pool/aigfs-target03

マウント例:


/data/aigfs/storage/target01
/data/aigfs/storage/target02
/data/aigfs/storage/target03

4.4 zvolではなく datasetを優先する理由

AIGFS storage targetには、基本的に zvolではなく ZFS datasetを使用する。
理由は以下である。

項目 Dataset Zvol
ファイル配置 直接配置可能 ブロックデバイス化が必要
管理性 高い やや複雑
性能 BeeGFS Target用途に適する オーバーヘッドが増える場合がある
Snapshot Dataset単位で容易 可能だが構成が複雑
推奨

5. AIGFS設計

5.1 管理ノード

管理ノードでは mgmtdサービスを稼働させる。 主な役割 :

5.2 メタデータノード

メタデータノードでは、ファイル名、ディレクトリ構造、inode相当の情報を管理する。
推奨配置 :


meta1: /data/aigfs-meta
meta2: /data/aigfs-meta
メタデータ領域には高速 SSDまたは NVMeを推奨する。

5.3 ストレージノード

ストレージノードでは、ZFS datasetを AIGFS storage targetとして利用する。


例 :
/mnt/aigfs

6. 構築手順

6.1 ZFS pool作成


例 :
# zpool create -o ashift=12 gfs_pool raidz1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /
dev/sdf raidz1 /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk
special vdevを追加する場合 :
# zpool add gfs_pool special mirror /dev/nvme0n1 /dev/nvme1n1
SLOGを追加する場合 :
# zpool add gfs_pool log mirror /dev/nvme2n1 /dev/nvme3n1

6.2 ZFS dataset作成


# zfs create gfs_pool/aigfs-target01
# zfs create gfs_pool/aigfs-target02

6.3 datasetプロパティ設定


# zfs set atime=off gfs_pool/aigfs-target01
# zfs set xattr=sa gfs_pool/aigfs-target01
# zfs set compression=off gfs_pool/aigfs-target01
# zfs set dedup=off gfs_pool/aigfs-target01
# zfs set recordsize=128K gfs_pool/aigfs-target01

6.4 マウントポイント設定


# zfs set mountpoint=/data/aigfs/storage/target01 gfs_pool/aigfs-target01
# zfs set mountpoint=/data/aigfs/storage/target02 gfs_pool/aigfs-target02

6.5 AIGFS storage設定

storage serviceの設定ファイルで、ZFS dataset上のパスを storage targetとして指定する。
例 :


storeStorageDirectory    = /data/aigfs/storage/target01
sysMgmtdHost             = manage
connMgmtdPort            = 8008

6.6 サービス起動


# systemctl enable --now aigfs-storage.service
# systemctl status aigfs-storage.service

6.7 target確認


# aigfs target list --mgmtd-addr manage:8010

7. BeeGFS/AIGFSディレクトリストライピング

7.1 num-targets設定

BeeGFS/AIGFSでは、ディレクトリ単位で使用する storage target数を指定できる。
例 :


# aigfs entry set /mnt/aigfs/dataset01 --num-targets=8
確認:

# aigfs entry info /mnt/aigfs/dataset01

7.2 設計目安

用途 Num Targets(目安)
小規模・検証環境 2 ~ 4
通常利用 4 ~ 8
大容量シーケンシャルI/O 8 ~ 16
多数クライアントによる並列I/O Storage Target数に応じて調整

8. 性能設計

8.1 性能に影響する主な要素

レイヤー 影響要素
物理ディスク HDD / SSD / NVMeの性能
ZFS VDEV構成、Recordsize、ARC、Special VDEV
AIGFS Storage Target数、Metadata性能、Client数
ネットワーク 25 / 40 / 100 GbE、LACP、MTU
クライアント 並列ジョブ数、I/Oサイズ、キャッシュ

8.2 HDD構成時の注意点

HDD主体の ZFS poolでは、ランダム I/O性能は HDD本数と vdev構成に大きく依存する。
AIGFSで複数 targetへ分散しても、各 targetの下位 ZFS poolが HDD主体である場合、ランダム小容量 I/Oは大きく伸びにくい。

8.3 NVMe special vdevの効果

special vdevを利用することで、以下の領域を NVMe側に配置できる。

AIGFSで多数の小容量ファイルを扱う場合、special vdevは有効である。

9. 運用設計

9.1 ZFS状態確認


# zpool status
# zpool list
# zfs list
# zfs get all gfs_pool/aigfs-target01

9.2 AIGFS状態確認


# aigfs node list --mgmtd-addr manage:8010
# aigfs target list --mgmtd-addr manage:8010
# aigfs health net --mgmtd-addr manage:8010

9.3 障害時の確認ポイント

事象 確認項目
Client Mount失敗 mgmtd、Meta Service、Storage Serviceの稼働状況
Storage Target Offline Storage Service、ZFSのマウント状態、ネットワーク
性能低下 zpool iostat、BeeGFS Targetの分散状況、ネットワーク
容量不足 zfs list、zpool list、Quota設定
メタデータ遅延 Meta Nodeの負荷、SSD性能、ディレクトリ構造

10. バックアップ・保護方針

10.1 ZFS snapshot

ZFS dataset単位で snapshotを取得する。


# zfs snapshot gfs_pool/aigfs-target01@snap_YYYYMMDD

10.2 注意点

AIGFS上位レイヤーの整合性を考慮するため、snapshot取得時は以下を検討する。

単一 targetだけの snapshotは、AIGFS全体としての整合性を保証しない可能性がある。

11. 推奨構成例

11.1 本番小規模構成

項目 推奨構成
管理ノード 1台
メタデータノード 2台
ストレージノード 4〜8台
クライアント 4台以上
ネットワーク 25 / 100 GbE
ZFS構成 RAIDZ1 / RAIDZ2 + Special VDEV

11.2 AI/HPC向け構成

項目 推奨構成
管理ノード 1台以上
メタデータノード 2〜4台
ストレージノード 8台以上
クライアント / GPUノード 複数台
ネットワーク 100 GbE以上
ZFS構成 大容量HDD + NVMe Special VDEV + SLOG
AIGFS設定 Directory Striping、Num Targetsの調整

12. 設計上の注意点

12.1 ZFSと BeeGFS/AIGFSの責務分離

ZFSはローカルノード内のディスク管理を担当し、AIGFSは複数ノード間の分散ファイルシステムを担当する。

レイヤー 主な役割
ZFS ローカルディスクの保護、データ整合性の維持、キャッシュ、Dataset管理
AIGFS クラスタ全体の単一名前空間、分散I/O、クライアントアクセス

12.2 ZFS RAIDZと AIGFSの冗長性

ZFS RAIDZはローカルノード内のディスク障害に対応する。
AIGFSのノード障害対策とは別のレイヤーである。
そのため、本番環境では以下を検討する。

12.3 special vdevの重要性

special vdevに障害が発生すると、pool全体に影響する可能性がある。そのため、special vdevは必ず mirror以上で構成する。

13. まとめ

ZFS上に AIGFSを構築する構成は、ローカルストレージの信頼性と、分散ファイルシステムのスケールアウト性能を組み合わせる有効なアーキテクチャである。

特に、HDD大容量ストレージに NVMe special vdevを組み合わせることで、大容量データとメタデータ性能の両立が可能となる。

一方で、ZFSと AIGFSは異なるレイヤーで動作するため、障害設計、snapshot整合性、target配置、directory striping、metadata性能を十分に考慮する必要がある。

本構成を適切に設計することで、AI学習データ、HPC、研究データ、解析基盤、大容量ファイル共有などに適した高性能・大容量ストレージ基盤を実現できる。