PR

Ubuntu 12.04 LTS で GlusterFS を使ってみる1 – 定義

前回Ubuntu 12.04 LTS にGlusterFS をインストールした。

今回はミラーリングを試してみる。

デフォルトの分散モードで構成しているとストレージノードが一台ダウンするとそこそこエラいことになりますが、前述のreplica等をうまくつかってストレージがダウンしても運用を続けられるような構成を組めば今回ご紹介した環境も夢ではありません(「glusterfsで仮想化サーバの余っているローカルハードディスクを分散共有ストレージにする at nkjmkzk.net」より引用)

スポンサードリンク

接続概要図

  • サーバー側として
    • Ubuntu 12.04 LTS Server 64bit
    • HDD40G
    • 192.168.1.11
    • 192.168.1.12
  • マウント側として
    • Ubuntu 12.04 LTS Desktop 64bit
    • 192.168.1.13 / 192.168.19.129 (後述参照)

サーバー側にはGlusterFS をインストール済み。

実際には画像のように3つのVMware Player 上に構築している。

インターフェイスの起動

GlusterFS のCUI インターフェイスを起動してみる。

$ sudo gluster
gluster>

起動したようだ。

※sudo glaster に続けてコマンドを入力することも可能

ピアの作成

ピアの設定は通信相手を定義する。

192.168.1.11 で以下のコマンドを入力したとしたところ、応答がない(その後エラー)。

gluster> peer probe 192.168.1.12
Connection failed. Please check if gluster daemon is operational.

サービスの開始

192.168.1.12 で次のようにしたところ通信が可能だった(もちろん192.168.1.11 でもやっておいた)。なお、gluster「d」であることに注意。

$ sudo service glusterd start
* Starting glusterd service glusterd                                    [ OK ]

再度ピアの定義を行ったところ上手くいった。

gluster> peer probe 192.168.1.11
Probe successful

以下は既に定義済みの場合表示される。

gluster> peer probe 192.168.1.12
Probe on host 192.168.1.12 port 24007 already in peer list

上手くいかない場合の確認メモ

$ sudo ufw status
Status: inactive

上はUbuntuFireWall の状態を確認するもの。下はiptables をoff にするもの。

$ sudo service iptables off
iptables: unrecognized service

ボリュームの作成

複数のピアにまたがってボリュームを作成します。ボリュームは下記のモードで選択できます。
1.ストライピング(stripe)
2.レプリカ(replica)
の2種類のモードのいずれか、もしくは組み合わせでボリュームを作成できます。

今回は、冗長化を目的として、サーバー2台のディスクで複製された、1つのボリュームを作成します。(「GlusterFSでファイルシステムクラスタを簡単作成 : アシアルブログ」より引用)

やってみたいことがそのまま記載されているので真似てみることにした。

gluster> volume create GlusterVol1 replica 2 transport tcp 192.168.1.11:/GlusterFS/brick 192.168.1.12:/GlusterFS/brick
Creation of volume GlusterVol1 has been unsuccessful

「/GlusterFS/brick」という作成されていない(存在しない)ディレクトリを指定したが、エラーとはならなかった。

gluster volume createで作成したボリュームはデフォルトではデータをランダムに各VM Serverに分散させて保存します。ただしオプションがあり、replicaあるいはstripeを指定することでネットワークRAIDを行うことがで きます(「glusterfsで仮想化サーバの余っているローカルハードディスクを分散共有ストレージにする at nkjmkzk.net」より引用)

$ ls /
bin   etc         lib         media  proc  sbin     sys  var
boot  home        lib64       mnt    root  selinux  tmp  vmlinuz
dev   initrd.img  lost+found  opt    run   srv      usr

しかし、そのようなディレクトリは表示されなかった。良いのだろうか。それとも予めディレクトリを作成しておく必要があるのだろうか。

ボリュームの開始

gluster>  volume start GlusterVol1
Volume GlusterVol1 does not exist

あら?さっき「Creation of volume GlusterVol1 has been unsuccessful」って言ったよね・・?んー・・あ!「unsuccessful」か・・。

$ sudo mkdir /GlusterFS/brick -p

赤面しつつディレクトリを慌てて作成。

gluster> volume create GlusterVol1 replica 2 transport tcp 192.168.1.11:/GlusterFS/brick 192.168.1.12:/GlusterFS/brick
Creation of volume GlusterVol1 has been successful. Please start the volume to access data.

こ、今度は「successful」。

$ ls /
bin   etc        initrd.img  lost+found  opt   run      srv  usr
boot  GlusterFS  lib         media       proc  sbin     sys  var
dev   home       lib64       mnt         root  selinux  tmp  vmlinuz

ちゃんと存在する・・当然だけど。

gluster> volume start GlusterVol1
 Starting volume GlusterVol1 has been successful

改めて開始。「successful」ね・・。

ここで焦ってはいけません。というのも、感覚的には/var/gluster_brickが共有ストレージとして使えるようになっているのかな、と思ってしまうのですが、実際はそうではなく、このボリュームを一度NFSマウントしなければなりません(「glusterfsで仮想化サーバの余っているローカルハードディスクを分散共有ストレージにする at nkjmkzk.net」より引用)

確認

gluster> volume info all
Volume Name: GlusterVol1
Type: Replicate
Volume ID: 7bb83c00-64c1-4b95-87ee-bd3aec937af8
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 192.168.1.11:/GlusterFS/brick
Brick2: 192.168.1.12:/GlusterFS/brick

ボリュームの作成は192.168.1.11 でしか命令していなかった。念のため192.168.1.12 でボリューム情報を確認したところ、正しく反映されていた(ありえないとは思うが、すべてのサーバーでコマンドを実行する必要があるかの確認を含んでいる)。

→ 次回はマウント

参考文献

コメント

  1. “http://t.co/cGERPG3s » Ubuntu 12.04 LTS で GlusterFS を使ってみる1 – 定義” http://t.co/TpF2QqZd

  2. @d_akatsuka より:

    “http://t.co/Aw87apJO » Ubuntu 12.04 LTS で GlusterFS を使ってみる1 – 定義” http://t.co/8Xx7SPUu