GlusterFSとは
GlusterFSは、クラスタ型NASストレージシステムであり、POSIX準拠の分散ファイルシステムです。TCP/IP経由で接続され、並列ネットワークファイルシステムとして動作します。ネイティブのGlusterFSプロトコルの他、NFS/CIFSプロトコルを使ってもアクセス可能です。メタデータサーバーを持たない設計により、高いパフォーマンス、信頼性、安定性を実現しています。
主な用語
| 用語 | 説明 |
| Brick | ストレージの最小単位。信頼できるストレージプールで提供されるディレクトリ。 |
| Volume | 複数のBrickで構成される論理ボリューム。 |
| FUSE | カーネルを変更せずにユーザー空間でファイルシステムを実装するためのモジュール。 |
| Glusterd | GlusterFSの管理デーモン。すべてのストレージサーバーで動作。 |
| POSIX | GlusterFSが準拠する標準インターフェース。 |
ボリュームの種類
- 基本ボリューム
- 分散ボリューム(Distributed Volume)
- ストライプボリューム(Striped Volume)
- レプリカボリューム(Replicated Volume)
- 複合ボリューム
- 分散ストライプボリューム
- 分散レプリカボリューム
- ストライプレプリカボリューム
- 分散ストライプレプリカボリューム
他の分散ファイルシステムとの比較
| 比較項目 | GlusterFS | MooseFS | Lustre | Ceph |
| 成熟度 | 2005年リリース。成熟したアーキテクチャ。 | 2008年リリース。安定。 | 2003年リリース。HPC分野で広く利用。 | 2013年リリース。実験段階。 |
| 安定性 | 高い。多くのプロダクション環境で使用。 | 安定。 | 非常に安定。 | RADOSは安定。一部企業での導入あり。 |
| 複雑さ | シンプル。メタデータサーバーなし。 | シンプル。モジュール構造。 | カーネル依存で複雑。 | 機能豊富で複雑。 |
| パフォーマンス | メタデータボトルネックなし。 | メタデータがボトルネック。 | HPC向け高性能。 | データ分散が均等。 |
| 拡張性 | 数百PBまで線形拡張。 | ストレージノードは拡張可能。 | 数百PBまで。 | 10〜1000ノード。 |
| 可用性 | AFR、DHT、ストライプ。 | メタデータ+ログ。 | 高可用性設計。 | 自動修復機能。 |
| 管理性 | 簡単。GUIなし。 | 簡単。GUIあり。 | 複雑。カーネル依存。 | 中程度。GUIあり。 |
| 開発コスト | 低。ユーザースペース。 | 低。 | 高。 | 高。 |
| 用途 | 大規模ファイルストレージ。 | 小規模。メタデータ制限。 | HPC向け。 | 汎用。 |
設定とインストール
前提条件
- IPアドレス構成:
- 192.168.1.11 gluster-1-1
- 192.168.1.12 gluster-1-2
- 192.168.1.13 gluster-1-3
- /etc/hostsの設定、時間同期、iptablesとSELinuxの無効化。
- 各サーバーに10GBのストレージディスクを追加。
インストール手順
# YUMリポジトリ設定
echo "[gluster]
name=GlusterFS
baseurl=http://bits.gluster.org/pub/gluster/glusterfs/3.4.2/x86_64
enabled=1" > /etc/yum.repos.d/gfs.repo
# 必要パッケージのインストール
yum install -y rpcbind libaio lvm2-devel
yum install -y glusterfs-server glusterfs glusterfs-cli glusterfs-fuse glusterfs-libs glusterfs-api
# ディスクのフォーマット
mkfs.ext4 /dev/sdb
mkdir /brick1
mount /dev/sdb /brick1
クラスタ構築
# サービス起動
/etc/init.d/glusterd start
# ノード追加
gluster peer probe gluster-1-2
gluster peer probe gluster-1-3
# 状態確認
gluster peer status
ボリューム作成
# 分散ボリューム
gluster volume create dis_vol gluster-1-1:/brick1 gluster-1-2:/brick1 gluster-1-3:/brick1
# レプリカボリューム
gluster volume create rep_vol replica 2 gluster-1-1:/brick1 gluster-1-2:/brick1
# ストリーピングボリューム
gluster volume create str_vol stripe 3 gluster-1-1:/brick1 gluster-1-2:/brick1 gluster-1-3:/brick1
# ボリューム起動
gluster volume start dis_vol
クライアント設定
# マウント
mount -t glusterfs gluster-1-1:/dis_vol /mnt
# テスト
touch {1..9}.txt
rm 4.txt
ノード操作
# ノード削除
gluster peer detach gluster-1-2
# ノード追加
gluster peer probe gluster-1-2
gluster volume add-brick dis_vol gluster-1-2:/brick1
# データ再バランス
gluster volume rebalance dis_vol fix-layout start
gluster volume rebalance dis_vol start
ボリューム削除
# アンマウント
umount /mnt
# 停止と削除
gluster volume stop dis_vol
gluster volume delete dis_vol
その他の設定
# アクセス制限
gluster volume set dis_vol auth.allow 192.168.1.*
# NFS無効化
gluster volume set dis_vol nfs.disable on