0-环境
1-写性能
2-读性能
3-灾备
---------0.环境---------
共四台服务器:25.mzhen.cn - 28.mzhen.cn
metaserver: 25.mzhen.cn
meta_info_bak: 26.mzhen.cn
chunkserver: all
replica: default(3)
机器配置:16*Xeon 2.27, 16GB, 2TB * 2(7200k, raid5, XFS 文件系统), 1Gbps
测试发现,CPU利用率不足10%,网络速度一般在400-700Mbps。实际瓶颈应该在硬盘IO。
---------1.写性能---------
1.1-测试程序
FCbenchmark/load-data.cpp
1.2-测试结果
单文件连续写,平均时间5GB/80秒(62.5MB/s)
多文件(10MB/文件)连续写,平均时间5GB/80秒(62.5MB/s)
1.3-异常情况
集群中的4台服务器只有3台接收写数据,记为ABC。手工停掉B的chunkserver进程,则D会开始写入数据。
重启集群,仍然只有3台机器接收数据,但变为ABD。
目前还不清楚造成这一现象的原因。
---------2.读性能---------
2.1-测试程序
FCbenchmark/scan-data.cpp
2.2-测试结果
单文件顺序读,5GB/70秒左右(71.4MB/s)
单文件随机读,读取5MB后随机跳转,5GB/95秒左右(52.6MB/s)
2.3-异常情况
2.4-读写同时进行-不同文件
5GB写入时间,115秒左右(43.4MB/s)
5GB读取时间,140秒左右(35.7MB/s)
2.5-读写同时进行-相同文件
可以进行,速度和2.4节基本一致。
---------3.灾备---------
3.1-写过程灾备-chunkserver
在全速写入数据时,停掉某台机器的chunkserver服务。
写数据程序得到如下提示,
06-04-2010 16:11:01.683 INFO - (KfsWrite.cc:472) Write failed...chunk = 1046, version = 1, offset = 25165824, error = -113
06-04-2010 16:11:01.684 INFO - (KfsWrite.cc:304) Daisy-chain: 192.168.1.37 30000 192.168.1.38 30000 192.168.1.35 30000 ; Will retry allocation/write on chunk 1046 due to error code: -113
06-04-2010 16:12:01.690 INFO - (KfsWrite.cc:372) Forced allocation: chunk=1046, version=2
之后继续写入过程。可以观察到现存机器的数据量持续增加,写入速度没有明显变化。
写入完成后尝试读取该文件,没有出现异常
3.2-写过程灾备-metaserver
在全速写入数据时,停掉metaserver进程。
写数据程序得到如下提示,
Connect: : Connection refused,并不断重复(10分钟以上)
此时重新启动metaserver,写入过程自动恢复。
3.3-读过程灾备-chunkserver
在全速读取数据时,停掉chunkserver进程。
读过程继续,速度不变。
继续停止chunkserver进程,当保存所需数据的所有chunkserver都停掉后,读取程序得到如下提示,
06-05-2010 13:41:29.005 INFO - (KfsRead.cc:150) Read done from on dir1/perf3: @offset: 30571233281: asked: 5120000, returning 4833281, errorcode = 1
3.4-读过程灾备-metaserver
在全速读取数据时,停掉metaserver进程。
读取程序得到如下提示,
Connect: : Connection refused
06-05-2010 13:45:17.965 INFO - (KfsRead.cc:150) Read done from on dir1/perf3: @offset: 6576668672: asked: 5120000, returning 2588672, errorcode = 1048576
Connect: : Connection refused
06-05-2010 13:45:32.967 INFO - (KfsRead.cc:150) Read done from on dir1/perf3: @offset: 6576668672: asked: 5120000, returning 0, errorcode = 0
之后程序退出。
3.5-数据受损-chunkserver
删除chunkserver上的数据,重新启动chunkserver。
日志中得到如下提示,
06-05-2010 13:52:20.006 INFO - (Replicator.cc:123) Starting re-replication for chunk 16282 with size 67108864
06-05-2010 13:52:20.008 INFO - (Replicator.cc:138) Offset: 67108864 is past end of chunk 67108864
可以认为系统自动开始了数据恢复。
3.6-数据受损-metaserver
删除metaserver上的元数据,重新启动整个集群。
日志中得到如下提示,
06-05-2010 14:05:52.480 INFO - (LayoutManager.cc:263) Non-existent chunk id = 17885 => stale
尝试读取之前写入的文件,提示文件不存在。
注意1,
配置文件machines.cfg中指定的backup_path不起作用。
注意2,
如果没有手工回复metaserver的元数据,而直接重启了metaserver进程,metaserver会自动重建元数据,并且会擦掉集群中所有数据。