自分の環境においては、すっかり中心的なインフラとなったGlusterFS。唯一の悩みがバージョンアップ運用をどうするかだった。というのも以前マイナーバージョンを上げてみた際に、著しくI/O性能が劣化してしまって、バージョンを切り戻した経緯がある。加えて、自分の環境のkickstartやchefなどの構成管理システムがGlusterFSに依存してしまっており、GlusterFSに問題が起きるとOS再構築すらままならない。この状態に陥ると手詰まりになってしまうため、GlusterFSのバージョンアップは悩ましかった。
現在の自宅環境はHDFSなど、一部のミドルウェアでQUORUMを成立させるために、2台のファイルサーバに加えてZBOX AD11で構築した3台目のサーバが存在する。zookeeperが入っているだけなので、その気になれば検証やその他の用途を兼ねることも可能。いざというときのためにkickstartやchef環境を3台目のローカルディスクにもコピーしておく。これで万一GlusterFSが死んでも、このサーバを起点にしてサーバを再構築することが可能となる。
以前は適当にバージョンアップをして痛い目を見たので、今回はしっかり手順を確認する。現在のバージョンは3.7.8で安定最新ぽい3.9.0に引き上げる。この時点で3.10.0も存在したが、こちらはCentOS 7.3に合わせたもののようだったので、とりあえず見合わせ。本来であればOSバージョンも上げたかったんだけど、QSVを使うのに必要なIntel Media SDKがCentOS 7.2と依存関係を持ってしまっているから。ここもOS依存しないような構成に見直していかないとね。。。
さて、3.7.xから3.9.0へのバージョンアップ手順を確認すると以下。
- 1台ずつプロセス止めてGlusterFSパッケージのアップグレードしてglusterd起動
- 1を全台終わったらop-versionを30900に変更。
それほど難しくはなさそうなので、さくさく変更していく。特に何の問題もなく全台の作業が終わり、運用開始。以前に経験した性能問題もなさそうで安心する。しかし、問題は数日後に発覚する。ファイルサーバ上の容量がかなり逼迫してきたので、不要となった録画データなどを削除する。半年分のTSデータをがさっと消したので、かなりの容量が解放されたが、いきなり大量のファイルを消したせいか、GlusterFSの各ボリュームの使用量が不均等になってしまった。
GlusterFSのrebalance機能はかなり信頼ているので、rebalanceを実行して放っておく。翌日、均等になったかどうか確認すると、あまり改善していない。あれ、と思いながらも再実行して翌日確認、変わっていない。。。ちょっとおかしいなと思い始めてログを見ると、rebalance処理が『failed to get index』みたいな見慣れないエラーを吐いている。これはまたもバージョンアップ起因かと青くなる。よくよく作業手順を追い返すと、最後のop-version変更をやっていないことに気付く。慌てて以下を実行。
gluster volume set all cluster.op-version 30900
しかし、状況はまったく改善せず。仕方がないので、今回もバージョンを切り戻す事を検討。プロセスを止めてパッケージを削除し、3.7系のパッケージをインストールする。サービスを起動しようとするがop-versionが合わないため起動できない。先ほどのコマンドで元の30707に戻してみるが、upgradeはともかくdegradeはできないらしい。うーん、やっぱりGusterFSのバージョンアップははまるな、と思いつつ調べていると、/var/lib/glusterd/glusterd.infoを編集すればop-versionを切り戻せるらしい。修正すると無事サービスが起動する。全台適用してrebalance実行。改善せず。。。
まあ、思い出せないくらいいろいろなことやったんだけど、どうしても直りませんでした。OSごと再構築したり、ボリュームを再作成したり。仕方がないので、Distributed-mirrorをただのDistributed構成に変更して1号機に既存のボリュームを寄せる。2号機はGlusterFS 3.9.0をインストールして空のボリュームを作成。この2台間でrsyncを行うという極めて原始的な方法で再構築を実施しました。既存ボリュームの参照そのものは問題になっていなかったのが幸いだった。
使用量は10TBくらいなので、コピーは大体1日強くらいで終わる。翌日には1号機も3.9.0に作り変えて、mirror構成として新ボリュームに追加、GlusterFSによるレプリが始まる。今回、各ディスクのファイルシステムをext4からxfsに変更してみた。xfsは何度か痛い目見たので避けてきたんだけど、GlusterFS上は少数の大きなファイルしか扱わないので解禁。ちょっと有効容量が増えたので得した気分w 自分の不手際もあって連敗続きのバージョンアップ、次回こそはさくっと成功させてみたいです!