***replica[複製] [#i008a0ad]
複数ノード間で同じファイルを複製するボリュームを作る。必要な&color(green){''Brick''};の数は、指定した&color(blue){''replica''};の整数倍です。
なので&color(blue){''replica''};係数が2なら、&color(green){''Brick''};数は、2、4、6、8 とかとなる。
間違った数の&color(green){''Brick''};を指定すると &color(red){*};&size(10){ここでは&color(blue){''replica''};が2なのに&color(green){''Brick''};を3つ指定した場合};
#code(nonumber){{
[root@n1 ~]# gluster volume create gv0 replica 2 n1:/brick/gv0 n2:/brick/gv0 n3:/brick/gv0 * Brick数が3
number of bricks is not a multiple of replica count
[root@n1 ~]# gluster volume start gv0
volume start: gv0: success
[root@n1 ~]#
}}
と注意される。
下は順当に2つの&color(green){''Brick''};で&color(blue){''replica''};なボリューム(&color(deeppink){''gv0''};)作っている
#code(nonumber){{
[root@n1 ~]# gluster volume create gv0 replica 2 n1:/brick/gv0 n2:/brick/gv0
volume create: gv0: success: please start the volume to access data
[root@n1 ~]# gluster volume start gv0
volume start: gv0: success
[root@n1 ~]# ls -ld /brick/gv0
drwxr-xr-x 2 root root 6 1月 25 11:21 2015 /brick/gv0
[root@n1 ~]#
}}
2つの&color(green){''Brick''};には元々、/brickだけ用意していたが、上記が成功すると
自動的に/brick/gv0と必要なフォルダを作ってくれるようだ。そして、クライアントマシンからマウントして容量を確認してみる。
#code(nonumber){{
[root@client ~]# mount -t glusterfs n1:gv0 /home
[root@client ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
...
n1:gv0 fuse.glusterfs 16G 33M 16G 1% /home
[root@client ~]#
}}
各ノードの&color(green){''Brick''};部分を16GBとしていて、&color(blue){''replica''};設定の2台構成なので16GBの提供は合っている。
次に作成したボリューム(&color(deeppink){''gv0''};)を一旦破棄して、&color(blue){''replica''};係数を2のまま、4つの&color(green){''Brick''};で構築してみる。
#code(nonumber){{
[root@client ~]# umount /home * クライアントでマウント解除
[root@n1 ~]# gluster volume stop gv0 * gv0を停止
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: gv0: success
[root@n1 ~]# gluster volume delete gv0 * gv0を削除
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: gv0: success
[root@n1 ~]# gluster volume create gv0 replica 2 n1:/brick/gv0 n2:/brick/gv0 n3:/brick/gv0 n4:/brick/gv0 force *forceで作成
volume create: gv0: success: please start the volume to access data
[root@n1 ~]# gluster volume start gv0
volume start: gv0: success
[root@n1 ~]#
[root@client ~]# mount -t glusterfs n1:gv0 /home
[root@client ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
...
n1:gv0 fuse.glusterfs 32G 65M 32G 1% /home
}}
と2倍の32GBになった。
この時のボリューム情報は下記になる
#code(nonumber){{
[root@n1 ~]# gluster volume info gv0
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: 09d3980e-96c7-4b59-b04f-ae48e955f10f
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: n1:/brick/gv0
Brick2: n2:/brick/gv0
Brick3: n3:/brick/gv0
Brick4: n4:/brick/gv0
[root@n1 ~]#
}}
ボリュームタイプが &color(white,blue){ Distributed-Replicate }; と表記されることに注目
冒頭の2つの&color(green){''Brick''};で&color(blue){''replica''};を作った場合は、
#code(nonumber){{
[root@n1 ~]# gluster volume info gv0
Volume Name: gv0
Type: Replicate
Volume ID: 0b4a19e4-d8d8-48bf-9fd6-6355b68d8a3a
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: n1:/brick/gv0
Brick2: n2:/brick/gv0
[root@n1 ~]#
}}
とボリュームタイプは、 &color(white,blue){ Replicate }; と表記される。
次に実際にファイルをNFS経由で落としてみる。
***動作試験 [#c9031321]
[[GlusterFS/動作テスト]]のスクリプトを使ってファイルを作成してみた。
ファイル作成後、クライアント側からは
#code(nonumber){{
[root@client ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
(略)
n1:gv0 fuse.glusterfs 32G 452M 32G 2% /home
[root@client ~]#
}}
と452MB消費された。n1ノードの/brickは231704kB。n2ノードの/brickも231704kB。n3ノードは230656kB。n4ノードは230656kB。
どこかに定義されている箇所があるかもしれないが、n1とn2。n3とn4がペアとなっているようだ。
実際のファイルを見て見ると
#code(nonumber){{
[root@n1 ~]# ls -lX /brick/gv0/A001/ | head -5
合計 2048
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00001.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00002.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00005.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00006.txt
[root@n1 ~]#
[root@n2 ~]# ls -lX /brick/gv0/A001/ | head -5
合計 2048
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00001.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00002.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00005.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00006.txt
[root@n2 ~]#
}}
とn1とn2は同じ。欠けている file00003.txtとfile00004.txtは、n3とn4側に存在している
#code(nonumber){{
[root@n3 ~]# ls -lX /brick/gv0/A001/ | head -5
合計 1952
-rw-r--r-- 2 root root 1010 1月 25 14:58 2015 file00003.txt
-rw-r--r-- 2 root root 1010 1月 25 14:58 2015 file00004.txt
-rw-r--r-- 2 root root 1010 1月 25 14:58 2015 file00007.txt
-rw-r--r-- 2 root root 1010 1月 25 14:58 2015 file00013.txt
[root@n3 ~]#
[root@n4 ~]# ls -lX /brick/gv0/A001/ | head -5
合計 1952
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00003.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00004.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00007.txt
-rw-r--r-- 2 root root 1010 1月 25 15:00 2015 file00013.txt
[root@n4 ~]#
}}
[n1、n2]ペアと[n3、n4]ペアとで''Distributed''されている形である