一、安装依赖代码:
0、g++ 、 gcc(需要4.2或以上版本)
1、cmake
2、liblog4cpp5 、 liblog4cpp5-dev
3、libboost-filesystem1.34.1 、 libboost-filesystem-dev 、 libboost-dev (需要1.34.1或以上版本)
4、zlib1g 、 zlib1g-dev
5、libssl0.9.8 、 libssl-dev
6、openssl 、 openssl-blacklist 、 openssl-doc 、 libssl-dev 、 openssh-server 、 openssh-blacklist 、 openssh-client
7、libfuse-dev
8、python2.5-dev
9、sun-java6-jre 、 sun-java6-jdk
配置JAVA环境变量: JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
(在0.3中,需要加入xfs-dev)
二、安装KFS(0.2.2)步骤:
1、解压压缩代码,若解压后文件为~/kfs-version。
将~/kfs-version/CMakeLists.txt中,
# Fill in the path to fuse library
SET(Fuse_LIBRARY_DIR "")
SET(Fuse_INCLUDE_DIR "")
设置补全,这样使得kfs支持Fuse扩展
2、在~/kfs-version下创建目录结构:
~/kfs-version/build
/debug -- debug 编译区
/release -- release 编译区 ,在此目录的/bin/tools下有使用kfs的脚本
/reldbg -- 用于debug的release 编译区
3、具体编译,
在~/kfs-version/build下,cmake ~/kfs-version , make , sudo make install;
在~/kfs-version/build/debug下,cmake ~/kfs-version , make , sudo make install;
在~/kfs-version/build/release下,cmake -DCMAKE_BUILD_TYPE:STRING="Release" ~/kfs-version , make , sudo make install;
在~/kfs-version/build/reldbg下,cmake -DCMAKE_BUILD_TYPE:STRING="RelWithDebInfo" ~/kfs-version , make , sudo make install;
4、安装 PYTHON扩展模块
在~/kfs-version/src/cc/access下,将 kfs_setup.py 中的:
kfsext = Extension('kfs',include_dirs = ['/home/sriram/code/kosmosfs/src/cc/'],此变量路径更改为自己的合适路径。
编译:在~/kfs-version/src/cc/access下,
python kfs_setup.py ~/kfs-version/build/lib/ build ;
sudo python kfs_setup.py ~/kfs-version/build/lib/ install。
5、为安装KFS BINARIES配置实现SSH WITH OUT PASSWD
注:1. 大致步骤为在每个节点上生成公钥并发放到其余节点上(包括本机)
2. 具体请参考--SSH配置.TXT
3. 如果不进行SSH WITH OUT PASSWD 的配置那么在安装过程中就需要不断输入SSH登录密码,而且安装有可能失败.
三、配置运行KFS:
1、编辑配置文件 ~/kfs-version/script/machines.cfg
注:在配置时,单节点与多节点配置文件有区别,原machines_local.cfg.sample有误,两个chunkserver号可以重复。
2、安装KFS BINARIES
(1) 为安装KFS BINARIES配置需实现任意两个节点之间SSH WITH OUT PASSWD(若meta上也有chunk,则保证自己能实现SSH WITH OUT PASSWD)。
假设有A需要登录B,那么需要:
在B的~/.ssh目录下,若有authorized_keys和id_rsa.pub,则只要将A的id_rsa.pub改名为A_rsa.pub放到B的~/.ssh目录下,
并将文件中内容添加到B的authorized_keys中,cat A_rsa.pub > authorized_keys.
若A中无id_rsa.pub文件,则在A的~/.ssh目录下,用命令ssh-keygen产生。
(具体请参考--SSH配置.txt。如果不进行SSH WITH OUT PASSWD 的配置那么在安装过程中就需要不断输入SSH登录密码,而且安装有可能失败。)
(2) 安装KFS BINARIES
a. 修改 kfssetup.py 将'gtar'改为'tar'
b. cd ~/kfs-version/scripts
c. 对于单个节点:python kfssetup.py -f machines.cfg -b ../build -s -w ../webui
对于多个节点:python kfssetup.py -f machines.cfg -b ../build -w ../webui
如需卸载KFS可执行代码:python kfssetup.py -f machines.cfg -b ../build/bin -U
当配置文件更新后,使用
python kfssetup.py -f machines.cfg -b ../build -w ../webui -u -s
python kfssetup.py -f machines.cfg -b ../build -w ../webui -u
升级各个chunk.
四、启动METASERVER 和 CHUNKSERVER:
在~/kfs-version/scripts下
运行启动脚本:python kfslaunch.py -f machines.cfg --start
如需停止服务:python kfslaunch.py -f machines.cfg --stop
五、启动CLINET
1、这里源码包的脚本kfsshell.py末尾有一处笔误,需改正:
在~/kfs-version/scripts下,将kfsshell.py中:
cmd = "%s/tools/KfsShell -s %s -p %d" % (bindir, node, port)"中的KfsShell替换成kfsshell。
2、python kfsshell.py -f machines.cfg -b ~/kfs-version/build/release/bin
3、然后可以进行一些诸如linux的操作:pwd,mkdir,rm,etc.
------------------------
单节点的machines.cfg的配置文件
[metaserver]
node: local00055d27e2ba
rundir: /home/gxl/program/KFS/kfs-0.2.2/meta
baseport: 20000
clusterkey: test-cluster
[chunkserver1]
node: local00055d27e2ba
rundir: /home/gxl/program/KFS/kfs-0.2.2/chunk1
baseport: 30000
space: 5 G
[chunkserver2]
node: local00055d27e2ba
rundir: /home/gxl/program/KFS/kfs-0.2.2/chunk2
baseport: 40000
space: 5 G
# 说明:
# [metaserver]
# node : 用来指定 metaserver 应该运行在哪台机器上
# rundir : 指定 metaserver 应该安装在该 node 中的哪个位置。
# baseport : 指定 metaserver 所监听的端口
# backup_path : 指定用来备份 metaserver 的 checkpoint 的位置,通常与 metaserver 在不同的机器上, kfs 会定期的用 rsync 命令来
# 将 metaserver 的 checkpoint 文件备份到该变量指定的目录。
# clusterkey : 当 KFS 运行在集群中时,需要指定这个值,用来确定 metaserver 和 chunkserver 是属于哪一个集群。为了简单,这里可以指定为一个普通的字符串,
# 如:clusterkey:kfs-cluster1
# [chunkserver1](注意:多个chunkserver时,chunk号不可相同,可用“chunkserver1”、“chunkserver2”来标识。源代码中给出的单个节点配置文件是错误的。)
# node、rundir、baseport,这三个和 metaserver 的概念是一样的。同时, chunkserver 还有另外的两项
# chunkDir : 用来指定 kfs 的 chunk 存放的目录,即数据文件的存储目前。可以指定多个,以空格分开。
# space : 指定该 chunkserver 所提供的存储容量。
----------------------------------------
多节点的machines.cfg的配置方法
# KFS Machine configuration file
[metaserver]
node: 192.168.1.136
rundir: /home/gxl/program/KFS/kfs-0.2.2/meta
baseport: 20000
backup_path: 192.168.1.136:/home/gxl/program/KFS/kfs-0.2.2/meta_bak
clusterkey: test-cluster
numservers: 4
[chunkserver1]
node: 192.168.1.136
rundir: /home/gxl/program/KFS/kfs-0.2.2/chunkS
baseport: 30000
space: 5 G
[chunkserver2]
node: 192.168.1.49
rundir: /home/gxl/program/KFS/kfs-0.2.2/chunkS
baseport: 40000
space: 5 G
[chunkserver3]
node: 192.168.1.48
rundir: /home/gxl/program/KFS/kfs-0.2.2/chunkS
baseport: 50000
space: 5 G
[chunkserver4]
node: 192.168.1.53
rundir: /home/gxl/program/KFS/kfs-0.2.2/chunkS
baseport: 60000
space: 5 G
# 各项含义说明参看单节点配置