読者です 読者をやめる 読者になる 読者になる

生物物理計算化学者の雛

主に科学に関する諸々を書き留めています。

GlusterFSによるリアルタイムバックアップ多重化

シミュレーションで得られたテラバイトオーダーの大量のデータを解析し、最終的にはExcelやWord等の図表、論文原稿としてまとめます。
この「まとめファイル」編集はWindowsマシンのHDD上で行うことが普通であり、頻繁にバックアップを取るよう努めています。
しかし仮に毎日バックアップを取っていたとしても、その保存先のHDDドライブが故障してしまえば、その日の作業が無駄になってしまいます。
またRAIDによるデータ多重化を行ったとしても、RAIDカードの障害でデータが失われる、あるいはRAID上のデータにアクセスできるよう復旧するために時間がかかってしまうことがあり、これも万全とは言えません。

GlusterFSによるデータ書き込み先の多重化

そこで書き込んだデータが複数のマシンに存在する複数のHDDに自動的にコピーされるよう環境を構築しました。
これを実現するために、Linuxマシン上にGlusterFSによるレプリケーションボリュームを作成し、それをWindowsマシンからSambaマウントしました。

この利点は以下の通りです。

  • 書き込まれたデータは自動的かつ直ちに3台のマシンのローカルHDDに保存され、データの三重化を実現
  • いずれかのマシンが故障しても、他のマシンのHDDからデータアクセス可能
  • Sambaサーバが故障したとしても、他のマシンにSamba接続すれば直ちにデータアクセスが可能
  • GlusterFSになんらかの障害が発生したとしても、ローカルドライブのディレクトリに直接アクセスすることでデータにアクセス可能
  • 作業用PCが故障しても、他のマシンからSambaアクセスすれば直ちにデータアクセスが可能

GlusterFS 3.3.1 のインストール・設定

以下のようにGlusterFS 3.3.1 のインストール・設定を行いました。なお、以下の操作はFedora13 64ビットのLinuxマシンで行いました。
参考資料:

ダウンロードとインストール

root権限取得後に適当な作業ディレクトリに移動して以下の作業をGlusterFSを構築する3台のマシン(node1, node2, node3)で行います。

cd /home/root/glusterfs-3.3.1
# ダウンロード&インストール
#  fedora13の場合、CentOS/epel-6 をインストールできた
#  他のバージョン・OSの場合、http://www.gluster.org/download/  から適切なバージョンのものを選んで使用する
wget http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/epel-6/x86_64/glusterfs-3.3.1-1.el6.x86_64.rpm
wget http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/epel-6/x86_64/glusterfs-fuse-3.3.1-1.el6.x86_64.rpm
wget http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/epel-6/x86_64/glusterfs-server-3.3.1-1.el6.x86_64.rpm
rpm -Uvh glusterfs-3.3.1-1.el6.x86_64.rpm
rpm -Uvh glusterfs-fuse-3.3.1-1.el6.x86_64.rpm
rpm -Uvh glusterfs-server-3.3.1-1.el6.x86_64.rpm

# glusterdサービス起動
/etc/init.d/glusterd start
# 再起動時に自動的にglusterdを起動させる
/sbin/chkconfig glusterd on
GlusterFSによる3重レプリケーションボリュームの設定

次にnode1, 2, 3 の3台で以下の設定を行います。

# glusterfsのマウントポイント作成
mkdir /mnt/glust
# データ保存ディレクトリの作成 
mkdir /disk1/glust
vi /etc/fstab # 下を追加
# node1:glvol              /mnt/glust              glusterfs defaults,_netdev 0 0

node1, 2, 3 3台で上の処理を完了後にnode1で以下を実行しボリュームを作成します。

# node1で以下を実行
# peerに登録
/usr/sbin/gluster peer probe node2
/usr/sbin/gluster peer probe node3
# peerチェック
/usr/sbin/gluster peer status 
# 以下のように2台が追加されていればOK
# Number of Peers: 2
# 
# Hostname: node1
# Uuid: 894225a2-e15e-4727-892c-d07e21bf2971
# State: Peer in Cluster (Connected)
# 
# Hostname: node2
# Uuid: 6cce8cad-f606-40e7-adcc-58a9b66d325f
# State: Peer in Cluster (Connected)

# ボリューム作成
/usr/sbin/gluster volume create glvol \
    replica 3 transport tcp \
    node1:/disk1/glust node2:/disk1/glust node3:/disk1/glust 
# ボリューム確認
/usr/sbin/gluster volume info
# 上手くいっていれば以下のような表示
# Volume Name: glvol
# Type: Replicate
# Volume ID: e6cb5295-9992-4653-bf4a-ee5e9d1ce808
# Status: Created
# Number of Bricks: 1 x 3 = 3
# Transport-type: tcp
# Bricks:
# Brick1: node1:/disk1/glust
# Brick2: node2:/disk2/glust
# Brick3: node3:/disk3/glust
## ※ボリューム停止
#/usr/sbin/gluster volume stop glvol
## ※ボリューム削除
#/usr/sbin/gluster volume delete glvol

# ボリューム開始
/usr/sbin/gluster volume start glvol

# 使用容量上限を500GBに設定
/usr/sbin/gluster volume quota glvol enable
/usr/sbin/gluster volume quota glvol limit-usage / 500GB
# 上限設定の確認
/usr/sbin/gluster volume quota glvol list
#         path              limit_set          size
# ----------------------------------------------------------------------------------
# /                         500GB               0Bytes
## ※使用容量上限の解除
#gluster volume quota glvol remove / 

そしてnode1, 2, 3で以下を実行してGlusterFSボリュームのマウントを実行します。

# マウント
mount /mnt/glust
# マウントできたかチェック
df -h
# node1:glvol            500G     0  500G   0% /mnt/glust

# 利用ユーザ用に所有者変更
chown userName:groupName /mnt/glust 
chmod 700 /mnt/glust

以上の操作により、node1, node2, node3の3台のマシンでGlusterFSの3重にレプリケーションされたボリュームが /mnt/glust としてマウントされます。
いずれかのマシンで /mnt/glust にファイルを作成すると、他の2台のマシンでもそのファイルが /mnt/glust に生成されていることを確認できます。
また /mnt/glust に保存されたデータは各ノードの /disk1/glust ディレクトリ下にそのまま保存されていますので、GlusterFSに障害が発生した場合でも/disk1/glust でデータアクセスが可能です。

あとはnode1, 2, 3 いずれかのマシンでSamba設定を行い、WindowsマシンからSamba接続すれば、自動的に3重にレプリケーションされるデータドライブを利用することができます。
Windows7マシンによりSSHトンネリング経由でsambaを利用する手順 を行うことで、自宅等のネットワーク外部からもこのドライブをクラウドファイルサービス感覚で利用することができ、極めて便利です。



2013/02/13追記
samba共有したglusterFSディレクトリ上では、office2010のWord, Excelでファイルを開くと「[ファイル名] は編集のためロックされています。使用者は [***] です。』」というダイアログが表示されファイルを開くことができません。
参考:http://cgi.samba.gr.jp/mailman/archives/samba-jp/2011-July/002772.html
office2007ではこの問題は生じません。

別のマシンで新しいバージョンのoffice2013で試したところ、Excelファイルは問題無く開けましたが、Wordではこの問題が生じました。