Kosmos distributed file system (KFS)是一个专门为数据密集型应用(搜索引擎,数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS分布式文件系统。 KFS使用C++实现,支持的客户端包括C++,Java和Python。
KFS系统由三部分组成,分别是metaserver、chunkserver和client library。
支持局域网及广域网分服务器存储与访问文件。
采用文件信息流与数据流分离架构,有效解决多网点环境下文件传输的速度问题。并且通过KFS数据服务器的集群提供高并发、高吞吐量文件服务,解决超高用户并发读写文件时时对存储设备的读写瓶颈及网卡的传输瓶颈。
内建文件多副本机制及名称同步机制,预防单点故障,防止因为单台设置故障导致文件无法访问或系统无法运行的问题,并能有效防止文件应为机器损坏导致的丢失问题。
支持多种高级功能:文件多版本管理、文件操作日志、文件回收站机制、文件事件驱动、文件操作事务控制

kfs安装和配置

一、安装依赖软件
1、安装log4cpp
tar xvzf log4cpp-1.0.tar.gz
cd log4cpp-1.0
./configure
make
make install

2、安装xfs
tar xvzf xfsprogs-3.0.1.tar.gz
cd xfsprogs-3.0.1
./configure
make
make install
make install-dev

3、安装cmake
tar xvzf cmake-2.6.4.tar.gz
cd cmake-2.6.4
./bootstrap
make
make install

4、安装boost
tar xvzf boost_1_39_0.tar.gz
cd boost_1_39_0


二、安装kfs
tar xvzf kfs-0.3.tar.gz
cd kfs-0.3
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RelWithDebInfo ../../kfs-0.3
gmake
gmake install

三、编译python支持
cd kfs-0.3/src/cc/access
Edit kfs_setup.py and setup the include path. Specifically,
kfsext = Extension('kfs', include_dirs = ['kfs/src/cc/', '<path to boost>'])
python kfs_setup.py ~/code/kfs/build/lib/ build
python kfs_setup.py ~/code/kfs/build/lib/ install

四、配置kfs
1、修改配置文件machines.cfs,示例如下(所有服务在同一台主机)
1 [metaserver]
2 node: 172.16.100.99
3 clusterkey: kfs-test-cluster
4 rundir: /root/kfs/meta
5 baseport: 20000
6 loglevel: INFO
7 numservers: 2
8 [chunkserver_defaults]
9 rundir: /root/kfs/chunk
10 chunkDir: /root/kfs/chunk/bin/kfschunk
11 baseport: 30000
12 space: 10 G
13 loglevel: INFO

2、安装kfs binaries
python kfssetup.py -f machines.cfg -m machines.txt -b ../build -w ../webui -s
(当所有的服务在一台主机)

注: 检查ssh localhost命令是否需要密码。 如果没有,执行下列命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
现在,再试一下ssh localhost。如果还没有起作用那么你应该检查你的ssh-agent是不是有什么问题。


3、启动kfs
python kfslaunch.py -f machines.cfg -m machines.txt -s
根据配置文件,如果成功启动kfs的话,此时meta服务将监听20000端口,chunk服务将监听30000端口。
[root@haha2 scripts]# lsof -i:20000
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
metaserve 1497 root 8u IPv4 891726 TCP *:dnp (LISTEN)