GlusterFSを検証してみる。 (3)
少々趣を変えて便利なコマンドを紹介してみよう。
今現在、volumeの状態表示させるコマンドを表示するには、
# gluster volume info all
Volume Name: test-volume
Type: Replicate
Volume ID: 76d2f5aa-b713-4d55-880e-2965d6b24398
Status: Started
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster-sv1:/exp1
Brick2: gluster-sv2:/exp2
Brick3: gluster-sv3:/exp3
次にGlusterFSをテストしていて気が付いたことなどを。
GlusterFSを構成しているサーバが1台でも落ちるとお互いにチェックが走るようでその間、サービスが停止する。(おっつ
その時間はnetwork.ping-timeoutパラメータによって設定されているようで、デフォルトの時間は42秒。
正直長すぎる気がする。
なので、この値を10秒に変更してみよう。
# gluster volume set test-volume network.ping-timeout 10
Set volume successful
変更されたのかどうか上記infoコマンドで確認する。
# gluster volume info all
Volume Name: test-volume
Type: Replicate
Volume ID: 76d2f5aa-b713-4d55-880e-2965d6b24398
Status: Started
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster-sv1:/exp1
Brick2: gluster-sv2:/exp2
Brick3: gluster-sv3:/exp3
Options Reconfigured:
network.ping-timeout: 10
なお、設定したパラメータを全て初期化するには以下のコマンドを投入する。
# gluster volume reset test-volume
reset volume successful
確認
# gluster volume info all
Volume Name: test-volume
Type: Replicate
Volume ID: 76d2f5aa-b713-4d55-880e-2965d6b24398
Status: Started
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster-sv1:/exp1
Brick2: gluster-sv2:/exp2
Brick3: gluster-sv3:/exp3
次にglusterFSの利用情報を見てみよう。
まず、profileをtest-volumeに対して有効にする。
[root@gluster-sv1 ~]# gluster volume profile test-volume start
次に統計情報を表示する。
[root@gluster-sv1 ~]# gluster volume profile test-volume info
Brick: gluster-sv1:/exp1
------------------------
Cumulative Stats:
Block Size: 1b+ 4b+ 8b+
No. of Reads: 0 0 0
No. of Writes: 1 3 1
Block Size: 16b+ 32b+ 64b+
No. of Reads: 0 0 0
No. of Writes: 7 193 44
Block Size: 128b+ 256b+ 512b+
No. of Reads: 0 0 0
No. of Writes: 101 265 642
Block Size: 1024b+ 2048b+ 4096b+
No. of Reads: 0 0 0
No. of Writes: 1185 896 757
Block Size: 8192b+ 16384b+ 32768b+
No. of Reads: 0 0 0
No. of Writes: 657 51291 1550
Block Size: 65536b+ 131072b+
No. of Reads: 0 0
No. of Writes: 607 851
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
--------- ----------- ----------- ----------- ------------ ----
0.00 0.00 us 0.00 us 0.00 us 5900 RELEASE
0.00 0.00 us 0.00 us 0.00 us 3366 RELEASEDIR
0.00 50.50 us 49.00 us 52.00 us 2 OPEN
0.00 31.25 us 28.00 us 34.00 us 4 FLUSH
0.08 56.49 us 48.00 us 74.00 us 81 OPENDIR
0.24 152.11 us 94.00 us 200.00 us 88 LOOKUP
4.94 139429.50 us 119540.00 us 159319.00 us 2 FTRUNCATE
17.23 34.40 us 23.00 us 660.00 us 28260 FINODELK
21.87 87.37 us 63.00 us 32298.00 us 14122 WRITE
55.63 111.12 us 70.00 us 13274.00 us 28238 FXATTROP
Duration: 425 seconds
Data Read: 0 bytes
Data Written: 1087619911 bytes
Interval 3 Stats:
Block Size: 8192b+ 16384b+ 32768b+
No. of Reads: 0 0 0
No. of Writes: 2 12771 65
Block Size: 65536b+ 131072b+
No. of Reads: 0 0
No. of Writes: 8 3
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
--------- ----------- ----------- ----------- ------------ ----
0.00 0.00 us 0.00 us 0.00 us 2 RELEASE
0.00 0.00 us 0.00 us 0.00 us 75 RELEASEDIR
0.00 50.50 us 49.00 us 52.00 us 2 OPEN
0.00 31.25 us 28.00 us 34.00 us 4 FLUSH
0.08 56.68 us 48.00 us 74.00 us 75 OPENDIR
0.23 154.10 us 108.00 us 200.00 us 79 LOOKUP
5.38 139429.50 us 119540.00 us 159319.00 us 2 FTRUNCATE
17.13 34.56 us 23.00 us 660.00 us 25714 FINODELK
21.78 87.94 us 63.00 us 32298.00 us 12849 WRITE
55.39 111.80 us 71.00 us 13274.00 us 25702 FXATTROP
Duration: 77 seconds
Data Read: 0 bytes
Data Written: 212725488 bytes
Brick: gluster-sv2:/exp2
------------------------
Cumulative Stats:
Block Size: 1b+ 4b+ 8b+
No. of Reads: 1 3 2
No. of Writes: 0 0 0
Block Size: 16b+ 32b+ 64b+
No. of Reads: 8 193 92
No. of Writes: 0 0 0
Block Size: 128b+ 256b+ 512b+
No. of Reads: 220 304 750
No. of Writes: 0 0 6
Block Size: 1024b+ 2048b+ 4096b+
No. of Reads: 1390 1167 809
No. of Writes: 0 3 0
Block Size: 8192b+ 16384b+ 32768b+
No. of Reads: 863 485 451
No. of Writes: 8 51739 1229
Block Size: 65536b+ 131072b+
No. of Reads: 267 405
No. of Writes: 409 517
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
--------- ----------- ----------- ----------- ------------ ----
0.00 0.00 us 0.00 us 0.00 us 7030 RELEASE
0.00 0.00 us 0.00 us 0.00 us 3908 RELEASEDIR
0.00 46.00 us 44.00 us 48.00 us 2 OPEN
0.00 29.75 us 25.00 us 35.00 us 4 FLUSH
0.07 46.04 us 41.00 us 66.00 us 80 OPENDIR
0.22 139.55 us 90.00 us 219.00 us 87 LOOKUP
4.24 115173.50 us 67616.00 us 162731.00 us 2 FTRUNCATE
17.17 33.41 us 23.00 us 601.00 us 27888 FINODELK
26.62 103.66 us 65.00 us 35807.00 us 13936 WRITE
51.67 100.59 us 66.00 us 5264.00 us 27876 FXATTROP
Duration: 493 seconds
Data Read: 129385124 bytes
Data Written: 997411827 bytes
Interval 3 Stats:
Block Size: 8192b+ 16384b+ 32768b+
No. of Reads: 0 0 0
No. of Writes: 2 12771 65
Block Size: 65536b+ 131072b+
No. of Reads: 0 0
No. of Writes: 8 3
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
--------- ----------- ----------- ----------- ------------ ----
0.00 0.00 us 0.00 us 0.00 us 2 RELEASE
0.00 0.00 us 0.00 us 0.00 us 75 RELEASEDIR
0.00 46.00 us 44.00 us 48.00 us 2 OPEN
0.00 29.75 us 25.00 us 35.00 us 4 FLUSH
0.07 46.08 us 41.00 us 66.00 us 75 OPENDIR
0.22 139.86 us 107.00 us 219.00 us 79 LOOKUP
4.60 115173.50 us 67616.00 us 162731.00 us 2 FTRUNCATE
16.99 33.09 us 23.00 us 601.00 us 25714 FINODELK
26.53 103.43 us 65.00 us 35807.00 us 12849 WRITE
51.59 100.53 us 70.00 us 5264.00 us 25702 FXATTROP
Duration: 76 seconds
Data Read: 0 bytes
Data Written: 212725488 bytes
Brick: gluster-sv3:/exp3
------------------------
Cumulative Stats:
Block Size: 1b+ 4b+ 8b+
No. of Reads: 0 0 0
No. of Writes: 2 8 4
Block Size: 16b+ 32b+ 64b+
No. of Reads: 0 0 1
No. of Writes: 20 411 294
Block Size: 128b+ 256b+ 512b+
No. of Reads: 76 19 201
No. of Writes: 675 795 1953
Block Size: 1024b+ 2048b+ 4096b+
No. of Reads: 97 190 6
No. of Writes: 3487 3443 2697
Block Size: 8192b+ 16384b+ 32768b+
No. of Reads: 9 0 0
No. of Writes: 3170 102900 3361
Block Size: 65536b+ 131072b+
No. of Reads: 0 1
No. of Writes: 1459 5709
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
--------- ----------- ----------- ----------- ------------ ----
0.00 0.00 us 0.00 us 0.00 us 1966 FORGET
0.00 0.00 us 0.00 us 0.00 us 22457 RELEASE
0.00 0.00 us 0.00 us 0.00 us 29963 RELEASEDIR
0.00 55.50 us 55.00 us 56.00 us 2 OPEN
0.00 34.25 us 33.00 us 36.00 us 4 FLUSH
0.08 58.00 us 43.00 us 166.00 us 80 OPENDIR
0.28 187.41 us 123.00 us 480.00 us 87 LOOKUP
0.86 312.49 us 66.00 us 654.00 us 160 READDIRP
5.04 146476.00 us 126964.00 us 165988.00 us 2 FTRUNCATE
16.95 35.30 us 23.00 us 863.00 us 27886 FINODELK
21.16 88.19 us 64.00 us 19225.00 us 13935 WRITE
55.62 115.94 us 72.00 us 2072.00 us 27864 FXATTROP
Duration: 98451 seconds
Data Read: 1064544 bytes
Data Written: 2786375345 bytes
Interval 3 Stats:
Block Size: 8192b+ 16384b+ 32768b+
No. of Reads: 0 0 0
No. of Writes: 2 12771 65
Block Size: 65536b+ 131072b+
No. of Reads: 0 0
No. of Writes: 8 3
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
--------- ----------- ----------- ----------- ------------ ----
0.00 0.00 us 0.00 us 0.00 us 2 RELEASE
0.00 0.00 us 0.00 us 0.00 us 75 RELEASEDIR
0.00 55.50 us 55.00 us 56.00 us 2 OPEN
0.00 34.25 us 33.00 us 36.00 us 4 FLUSH
0.08 57.67 us 43.00 us 166.00 us 75 OPENDIR
0.28 188.09 us 124.00 us 480.00 us 79 LOOKUP
0.87 310.07 us 66.00 us 654.00 us 150 READDIRP
5.46 146476.00 us 126964.00 us 165988.00 us 2 FTRUNCATE
16.86 35.17 us 23.00 us 863.00 us 25714 FINODELK
21.11 88.09 us 64.00 us 19225.00 us 12849 WRITE
55.34 115.46 us 72.00 us 2072.00 us 25702 FXATTROP
Duration: 76 seconds
Data Read: 0 bytes
Data Written: 212725488 bytes
という感じで各brickも含め統計情報が取得できる。
恐らくオーバーヘッドがあるからprofileは無効になっているのだろう。
見終わったらprofileは無効にしておこう。
[root@gluster-sv1 ~]# gluster volume profile test-volume stop
Stopping volume profile on test-volume has been successful
次にもしStorage Poolを形成しているサーバが全てダウンした場合(もしくはglusterdがダウンした場合)、クライアントはどのようなメッセージを受け取るのだろうか。
[root@gluster-sv2 gluster-test]# tar czf usr.tar.gz /usr/
tar: Removing leading `/' from member names
tar (child): usr.tar.gz: Cannot open: Transport endpoint is not connected
tar (child): Error is not recoverable: exiting now
[root@gluster-sv2 gluster-test]# ls -al
ls: cannot open directory .: Transport endpoint is not connected
ファイルを開くことが出来ない。伝送の終端に接続できない。
エラーは修復不能である。 処理を直ちに終了します。
というエラーが出て書き込みは即座にエラーで中断させられる。
lsもできない。
ここがポイントで決してI/O waitにはならないようだ。
NFSでいうところのmount option hardではない、という事。
こけたら自前で再処理を実装しなければならない、という事になる。
個人的にはI/O waitさせられてにっちもさっちもいかなくなるぐらいであれば、処理を中断させてくれる方が助かる。
が、きちんとエラーを監視しておかないとエラーに気が付かずに処理が止まりっぱなしとなる。
I/O waitの場合、CPU Loadが跳ね上がっていくという特徴があるので比較的まだ気が付きやすい。
なお、復帰は今回のケースであればGlusterFSサーバは3台あり、replication数も3なのでどれか一台でも復帰すれば、クライアントの処理は復帰して必要なファイルに読み書きができた。
つまり、必要なファイルが保存されているサーバが復帰すれば必要なファイルにアクセスできるようだ。