2012年8月20日 星期一

handout about building hypertable-0.9.6.1 (tarball)

Evironment:
       host : CentOS-6.0
       kernel: 2.6.32-71.el6.x86_64 #1 SMP
       MemTotal:        7891424 kB(/proc/meminfo)
       CPU(Quad core)      : Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz
       HDD: 1TB*2 (LVM ==> 2T)
       

       guest: CentOS-6.0
       kernel: 2.6.32-71.el6.x86_64 #1 SMP
       MemTotal:        1G
       CPU *1
       HDD: 100GB 

yum install gcc gcc-c++ make ntpdate cmake java-1.6.0-openjdk java-1.6.0-openjdk-devel
yum install icu libicu libicu-devel   #for libboost_regex.so
rpm -Uvh http://ftp.sjtu.edu.cn/sites/download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
yum install log4cpp log4cpp-devel expat expat-devel uuid uuid-devel libuuid libuuid-devel python python-devel fuse fuse-libs fuse-devel openssl openssl-devel ant zlib-devel

rpm -ivh xfsprogs-3.1.1-7.el6.x86_64.rpm xfsprogs-devel-3.1.1-7.el6.x86_64.rpm

yum install sigar sigar-devel bzip2 bzip2-devel rrdtool libevent-devel cronolog libedit-devel readline readline-devel
#if you need jemalloc jemalloc-devel , then install it via yum instal...

/usr/sbin/ntpdate -b time.stdtime.gov.tw;/sbin/hwclock --systohc --utc

cd /usr/local
wget http://hi.baidu.com/cpuramdisk/item/3410d0ccc53e3f0b0ad93a00
#or
#wget http://download.oracle.com/berkeley-db/db-4.8.26.tar.gz
tar -zxvf db-4.8.26.tar.gz
cd db-4.7.25/build_unix/
../dist/configure --enable-cxx (--enable-java;)(root permission is neccessary)
make
make install
echo “/usr/local/BerkeleyDB.4.8/lib” >> /etc/ld.so.conf.d /BerkeleyDB.conf
sudo /sbin/ldconfig

#I had been installed for boost-1.41.x via yum, but hypertable may not be built successful, an error
#hypertable struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >
#when you re-install boost_1_49_0 as below, you may need to re-build kfs too.
#I recommend you remove /usr/local/kfs-0.5/build , and re-build it . Otherwise, you will get errors.
#That errors will be something link "libboost_regex-mt.so ..."
cd /usr/local
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.49.0/boost_1_49_0.tar.gz
tar -zxvf boost_1_49_0.tar.gz
cd boost_1_49_0/tools/build/v2/
./bootstrap.sh
./b2 install --prefix=/usr/local
cd /usr/local/boost_1_49_0/
./bootstrap.sh --with-icu --with-libraries=regex,filesystem,chrono,date_time,exception,iostreams,locale,program_options,python,random,serialization,signals,system,test,thread,timer,wave
./b2
./b2 install
ln -s /usr/local/boost_1_49_0/stage/lib/libboost_regex.a /usr/lib64/libboost_regex.a
ln -s /usr/local/boost_1_49_0/stage/lib/libboost_regex.so /usr/lib64/libboost_regex.so
ln -s /usr/local/boost_1_49_0/stage/lib/libboost_regex.so.1.49.0 /usr/lib64/libboost_regex.so.1.49.0


cd /usr/local
wget http://ftp.heanet.ie/mirrors/sourceforge/k/project/ko/kosmosfs/kosmosfs/kfs-0.5/kfs-0.5.tar.gz
tar -zxvf kfs-0.5.tar.gz
mkdir -p kfs-0.5/build
cd kfs-0.5/build
vi ../CMakeLists.txt
#line 110(after  'set (CMAKE_BUILD_TYPE "Debug")' ) : add 2 lines java setting
    set (JAVA_INCLUDE_PATH "/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include")
   set (JAVA_INCLUDE_PATH2 "/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include")

#line 137: fill fuse setting
SET(Fuse_LIBRARY_DIR "/lib64")
SET(Fuse_INCLUDE_DIR "/usr/include")

cmake -D CMAKE_BUILD_TYPE=RelWithDebInfo /usr/local/kfs-0.5
gmake
gmake install

cd ..
ant jar

vi ~/.bashrc
export CLASSPATH=${CLASSPATH}:/usr/local/kfs-0.5/build/kfs-0.5.jar

cd /usr/local/kfs-0.5/src/cc/access
vi kfs_setup.py
kfsext = Extension('kfs',
                include_dirs = ['/usr/local/kfs-0.5/src/cc/', '/usr/local/include/boost/'],
## use full path name in it.

python kfs_setup.py /usr/local/kfs-0.5/build/lib/ build
python kfs_setup.py /usr/local/kfs-0.5/build/lib/ install
python kfs_setup.py /usr/local/kfs-0.5/build/lib/ install --home=/usr/local/kfs-0.5/build/lib


vi ~/.bashrc
export PYTHONPATH=${PYTHONPATH}:/usr/local/kfs-0.5/build/lib/lib64/python
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/kfs-0.5/build/lib


wget http://mirror.yandex.ru/mandriva/devel/cooker/SRPMS/contrib/release/re2-0-1.src.rpm
rpm -ivh re2-0-1.src.rpm
cd ~/rpmbuild/SOURCES/
tar -zxvf re2.tar.gz
cd re2
make;make install

cd /usr/local
wget http://snappy.googlecode.com/files/snappy-1.0.4.tar.gz
tar -zxvf snappy-1.0.4.tar.gz
cd snappy-1.0.4
./configure; make; make install

#<optional> if you don't need ceph file system, skip this step
cd /usr/local
wget http://ceph.newdream.net/download/ceph-0.22.2.tar.gz
tar xzvf ceph-0.49.tar.gz
cd ceph-0.49
./configure; make; make install

cd /usr/local
wget http://archive.apache.org/dist/thrift/0.8.0/thrift-0.8.0.tar.gz
tar -zxvf thrift-0.8.0.tar.gz
cd  thrift-0.8.0
./configure
make
make install
/sbin/ldconfig

wget http://magelan.googlecode.com/files/hyperic-sigar-1.6.4.zip
unzip hyperic-sigar-1.6.4.zip
cp hyperic-sigar-1.6.4/sigar-bin/include/*.h /usr/local/include
cp hyperic-sigar-1.6.4/sigar-bin/lib/libsigar-amd64-linux.so /usr/local/lib


echo "/usr/local/lib" >> /etc/ld.so.conf.d/normal.conf
/sbin/ldconfig


cd /usr/local
http://hypertable.googlecode.com/files/hypertable-0.9.6.1-src.tar.gz
tar -zxvf hypertable-0.9.6.1-src.tar.gz
cd hypertable-0.9.6.1

#if you don't wanna kosmosBroker, skip this step
vi CMakeLists.txt
#update "find_package(Kfs)" into
find_package(Kfs REQUIRED)

vi cmake/FindKfs.cmake
#Add a line about Line 33: (after "find_path(Kfs_INCLUDE_DIR kfs/KfsClient.h "...)
  /usr/local/kfs-0.5/build/include

#Update  Line 42:  (after  "find_library(${lib}_LIB NAMES ${lib}")
#before
  find_library(${lib}_LIB NAMES ${lib}
    PATHS /opt/kfs/lib/static /opt/kfs/lib /opt/local/lib /usr/local/lib
#after
  find_library(${lib}_LIB NAMES ${lib}
    PATHS /opt/kfs/lib/static /opt/kfs/lib /opt/local/lib /usr/local/lib /usr/local/kfs-0.5/build/lib

#Add a line about Line 54: (after "find_library(Crypto_LIB "...)
find_library(regex_LIB NAMES boost_regex PATHS /usr/local/lib)

#Update  Line 59:  (after  "if (Kfs_INCLUDE_DIR AND kfsClient_LIB)...")
#before
if (Kfs_INCLUDE_DIR AND kfsClient_LIB)
  set(Kfs_FOUND TRUE)
  set( Kfs_LIBRARIES ${kfsClient_LIB} ${kfsIO_LIB} ${kfsCommon_LIB}
                     ${qcdio_LIB} ${Crypto_LIB})

#after
if (Kfs_INCLUDE_DIR AND kfsClient_LIB)
  set(Kfs_FOUND TRUE)
  set( Kfs_LIBRARIES ${kfsClient_LIB} ${kfsIO_LIB} ${kfsCommon_LIB}
                     ${qcdio_LIB} ${Crypto_LIB} ${regex_LIB})

mkdir build
cd build
cmake ../
gmake
gmake install
#all bin file default will copy to /opt/hypertable/.

--------------------------KFS Deployment----------------------------------------------------


ssh-keygen -t dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

cd /usr/local/kfs-0.5/scripts

vi ../webui/all-machines.txt
HT248

vi machines.cfg
# KFS Machine configuration file
[metaserver]
node: HT248
clusterkey: kfs
rundir: /home/kfs/meta
baseport: 20000
[chunkserver1]
node: HT248
rundir: /home/kfs/chunk1
baseport: 30000
space: 200 G
[chunkserver2]
node: HT248
rundir: /home/kfs/chunk2
baseport: 40000
space: 200 G


#single node
python kfssetup.py -f machines.cfg -b ../build -w ../webui -s

#multiple nodes
python kfssetup.py -f machines.cfg  -b ../build -w ../webui

#startup

python kfslaunch.py -f machines.cfg  -s
# after startup kfs , if webui didn't listen 20050 port . you should :
# (1) stop kfs
# (2) remove /home/kfs directory
# (3) re-setup kfs (python kfssetup.py -f machines.cfg ...)
# (4) check server.conf and all-machines.txt are exist at /home/kfs/meta/webui/
# (5) if webui config is ok , startup kfs . you could elinks to 20050 port
#      otherwise , go step (1) again.


#stop
python kfslaunch.py -f machines.cfg  -S

#Checking
/usr/local/kfs-0.5/build/bin/tools/kfsping -m -s HT248 -p 20000
Up servers: 2
s=192.168.65.155, p=30000, rack=65, used=0(GB), free=43.8144(GB), util=0%, nblocks=0, lastheard=8 (sec), ncorrupt=0, nchunksToMove=0, numDrives=1
s=192.168.65.155, p=40000, rack=65, used=0(GB), free=43.8144(GB), util=0%, nblocks=0, lastheard=8 (sec), ncorrupt=0, nchunksToMove=0, numDrives=1

/usr/local/kfs-0.5/build/bin/tools/kfsping -c -s HT248 -p 20000
Meta-server:  0
Total-space: 0 (MB)
Used-space: 0 (MB)

/usr/local/kfs-0.5/build/bin/tools/kfsping -c -s HT248 -p 30000
Meta-server: kfs 20100
Total-space: 44866 (MB)
Used-space: 0 (MB)

/usr/local/kfs-0.5/build/bin/tools/kfsping -c -s HT248 -p 40000
Meta-server: kfs 20100
Total-space: 44866 (MB)
Used-space: 0 (MB)


elinks -dump http://HT248:20050/

                                    KFS Status

   Started at               : Tue Aug 21 11:32:37 2012
   Total space              : 400.00 GB
   Used space               : 0.00 bytes
   WORM mode                : Disabled
   Number of alive nodes    : 2
   Number of dead nodes     : 0
   Number of retiring nodes : 0

                                All Nodes
    Chunkserver  # of drives Used   Free   Used% # of blocks Last heard
   172.16.43.248      1      0(GB) 200(GB) 0.00            0   11 (sec)
   172.16.43.248      1      0(GB) 200(GB) 0.00            0   11 (sec)

cd /usr/local/kfs-0.5/build/bin/tools

[root@kfs tools]# ./cptokfs -s HT248 -p 20000 -d ~/install.log -k /
08-17-2012 12:44:19.994 DEBUG - (KfsClient.cc:636) Connecting to metaserver at: kfs:20000

[root@kfs tools]# ./cpfromkfs -s HT248 -p 20000 -d ~/sean.ply -k /install.log
08-17-2012 12:46:32.648 DEBUG - (KfsClient.cc:636) Connecting to metaserver at: kfs:20000
[root@kfs tools]# diff ~/sean.ply ~/install.log


[root@kfs tools]# dd if=/dev/urandom of=/root/random bs=65536 count=1024
1024+0 records in
1024+0 records out
67108864 bytes (67 MB) copied, 7.49119 s, 9.0 MB/s
[root@kfs tools]# ./cptokfs -s kfs -p 20000 -d ~/random -k /
08-17-2012 13:22:14.467 DEBUG - (KfsClient.cc:636) Connecting to metaserver at: kfs:20000
[root@kfs tools]# ./cpfromkfs -s kfs -p 20000 -d ~/random.back -k /random
08-17-2012 13:22:44.098 DEBUG - (KfsClient.cc:636) Connecting to metaserver at: kfs:20000
[root@kfs tools]# md5sum ~/random
9c9bc92c27e40ef7e54b6f858d3d2852  /root/random
[root@kfs tools]# md5sum ~/random.back
9c9bc92c27e40ef7e54b6f858d3d2852  /root/random.back


[root@kfs tools]# ./kfsshell -s HT248 -p 20000
KfsShell> ls -l
aabb/   Aug 16 17:23    (dir)
boost_1_40_0.tar.gz     Aug 16 18:07    4096
cshrc   Aug 16 16:43    100
db-4.8.26.tar.gz        Aug 16 16:37    4096
dumpster/       Aug 16 16:29    (dir)
install.log     Aug 17 12:44    15470
testkfs Aug 17 10:01    4096
user/   Aug 16 17:16    (dir)

或者

[root@kfs tools]# cd /root/code/kfs/scripts
[root@kfs scripts]# vi kfsshell.py
#    cmd = "%s/tools/KfsShell -s %s -p %d" % (bindir, node, port)
    cmd = "%s/tools/kfsshell -s %s -p %d" % (bindir, node, port)
[root@kfs scripts]# python kfsshell.py -f machines.cfg -b /root/code/kfs/build/bin
KfsShell>

------------------------------Mount Fuse----------------------------------------------------


vi /usr/local/kfs-0.5/build/bin/kfs.prp
metaServer.name=HT248
metaServer.port=20000

cd /usr/local/kfs-0.5/scripts
python kfslaunch.py -f machines.cfg  -s


[root@kfs scripts]# cd ../build/bin
[root@kfs bin]# mkdir /mnt/kfs
[root@kfs bin]# ./kfs_fuse /mnt/kfs -f

--------------------------KFS MakeFile of Examples------------------------------------------

AR=ar
ARFLAGS=-cr
RL=ranlib
RLFLAGS=
CC=g++
CXXFLAGS=-I. -Wall
CP=cp
LDFLAGS=
ifneq ($(RELEASE),yes)
CXXFLAGS += -g
LDFLAGS += -g
endif
CXXFLAGS += -I../src/cc/ -I/usr/include/ -I../src/cc/libkfsClient/
LDFLAGS += -L../build/lib/static/
EXTLIBS=-lkfsClient -lkfsCommon -lkfsIO -lqcdio -lpthread -lrt -lssl
DOWNLOAD_SRC= \ KfsSample_main.cc OBJ_DOWNLOAD=$(DOWNLOAD_SRC:.cpp=.o,.cc=.o)
TARGETS=testkfs
all: $(TARGETS)
testkfs: $(OBJ_DOWNLOAD)
    $(CC) $(LDFLAGS) $(CXXFLAGS) -o $@ $^ $(EXTLIBS)
%.o:%.cpp
    $(CC) $(CXXFLAGS) -c -o $@ $<
clean:
    rm -f *~ $(OBJS) $(TARGETS)

#testing
./testkfs  -s 192.168.65.155 -p 20000


[FAQ]

(1)boost version maybe cause problem(error) when hypertable making source code , such as
       hypertable struct std::basic_string<char, std::char_traits<char>, std::allocator<char> > ...
   see boost installation recommend above.
(2)libboost_regex.so may cause a error in 98% progression. because kosmosBroker could not find it.
   vi /usr/local/hypertable-x.x.x.x/cmake/FindKfs.cmake , and reference above see what you could do in it.
(3) rpm and yum
   1) find something in yum server, for example libcrypto.so.6
     yum provides \*/libcrypto.so.6
   2) find something in rpm that already installed
     rpm -ql vsftpd

     <if not installed , and you got the rpm file>
     rpm -qpl vsftpd.x.x.rpm

     <rpm infomation>
     rpm -qi(p) vsftpd(.x.x.rpm)

     <what rpm package do the shell command when installing>
     rpm -q(p) --scripts vsftpd(.x.x.rpm)

     <rpm version number>
     rpm -q(p) --qf '%{VERSION}' vsftpd(.x.x.rpm)
          
    

2012年8月10日 星期五

[KFS](KosmosFS) 安裝方法二

這次修改原本的安裝,多數以rpm packages安裝為主
(1)系統環境準備
    此次使用的環境,使用為virtual machine來實現
       host : CentOS-6.0
       kernel: 2.6.32-71.el6.x86_64 #1 SMP
       MemTotal:        7891424 kB(/proc/meminfo)
       CPU(Quad core)      : Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz
       HDD: 1TB*2 (LVM ==> 2T)
       

       guest: CentOS-6.0
       kernel: 2.6.32-71.el6.x86_64 #1 SMP
       MemTotal:        1G
       CPU *1
       HDD: 100GB

       KFS的環境使用virtual machine的NAT環境,也把dhcp打開
       guest總共佈建4台,1台metaserver, 3台chunkserver
       這4台/etc/hosts設定如下
         192.168.65.1 mserver    #yum/ftp server
         192.168.65.150 t01nn    #metaserver
         192.168.65.151 t01d1    #chunkserver1
         192.168.65.152 t01d2    #chunkserver2
         192.168.65.153 t01d3    #chunkserver3
(2)系統安裝
使用kickstart檔來進行初期的部署(4台guest都照此安裝),所有rpm在這個階段都安裝完成,簡單描述幾個重點
        :
        selinux --disabled
        firewall --disabled
        :

        bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
        :
        #在host,我們佈建了vsftpd以及httpd,
        #預設在/var/ftp/pub,/var/www/html(soft link to /var/ftp/pub)
        install
        url --url=http://192.168.65.1/pub
        :
        clearpart --drives=sda --all --initlabel
        part / --asprimary --fstype="ext4" --ondisk=sda --grow --size=1024
        part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
        part swap --fstype="swap" --ondisk=sda --recommended
        :


        #這裡將要安裝的套件一併在下面一一指定安裝
        %packages
        @core
        @server-policy
        ftp
        telnet
        ntpdate
        gcc
        gcc-c++
        make
        cmake
        log4cpp
        boost
        boost-devel
        expat
        openssl-devel
        java-1.6.0-openjdk
        java-1.6.0-openjdk-devel
        uuid
        uuid-devel
        libuuid
        libuuid-devel
        ant
        python
        python-devel

        fuse-devel
        fuse-libs
        %end

        %post
        #接下來的設定,可依個人喜好,把系統預設安裝的設定項,在這裡一併完成
        #筆者在這裡接連把下列的設定一併完成
        # 1.  /etc/sysconfig/network-scripts/ifcfg-eth0  設定網卡
        # 2.  /etc/sysconfig/network   設定hostname
        #      /etc/hosts
        #      /etc/resolv.conf
        # 3.  安裝xfsprogs相關套件,由於預設CentOS 6.0的安裝光碟沒有,於是下載後
        #      置入yum/ftp server上,在%post時補充安裝
        #      xfsprogs-3.1.1-7.el6.x86_64.rpm
        #      xfsprogs-devel-3.1.1-7.el6.x86_64.rpm

        # 4.  kfs-0.5.tar.gz的安裝 --> /usr/local/kfs-0.5
        #      詳細安裝可見[KFS](KosmosFS) 安裝方法一
        # 5.  /usr/local/kfs-0.5/scripts/machines.cfg
        # 6.  /usr/local/kfs-0.5/conf/machines.txt
        # 7.  /usr/local/kfs-0.5/conf/ChunkServer.prp
        # 8.  Fuse掛載KFS
        #      詳細安裝可見KFS mount by Fuse
        # 9.  設定方便的scripts, 可將kfs setup, start, stop及mount等 指令設置成scripts
        # 10. 更新套件,如果在這個步驟啟動KFS,fuse mount KFS時,
        #       可能會發生coredump。有可能的原因Centos 6.0是預設rpm套件太舊。
        #       筆者經過以下套件更新後,KFS mount即恢復正常(沒有一一試過是哪個太舊)
        #       如果不想輸入這麼長的一串更新套件,可以直接連上Centos 預設的yum server
        #       進行yum update即可
        #        rpm -Uvh ~/pkgs/boost-1.41.0-11.el6_1.2.x86_64.rpm  \
        #                       ~/pkgs/boost-date-time-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-devel-1.41.0-11.el6_1.2.x86_64.rpm  \
        #                       ~/pkgs/boost-filesystem-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-graph-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-iostreams-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-program-options-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-python-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-regex-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-serialization-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-signals-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-system-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-test-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-thread-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/boost-wave-1.41.0-11.el6_1.2.x86_64.rpm \
        #                       ~/pkgs/cpp-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/expat-2.0.1-11.el6_2.x86_64.rpm \
        #                       ~/pkgs/fuse-devel-2.8.3-4.el6.x86_64.rpm \
        #                       ~/pkgs/fuse-libs-2.8.3-4.el6.x86_64.rpm \
        #                       ~/pkgs/gcc-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/gcc-c++-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/libblkid-2.17.2-12.7.el6.x86_64.rpm \
        #                       ~/pkgs/libgcc-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/libgomp-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/libstdc++-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/libstdc++-devel-4.4.6-4.el6.x86_64.rpm \
        #                       ~/pkgs/libuuid-2.17.2-12.7.el6.x86_64.rpm \
        #                       ~/pkgs/libuuid-devel-2.17.2-12.7.el6.x86_64.rpm \
        #                       ~/pkgs/make-3.81-20.el6.x86_64.rpm \
        #                       ~/pkgs/ntpdate-4.2.4p8-2.el6.centos.x86_64.rpm \
        #                       ~/pkgs/openssl-1.0.0-20.el6_2.5.x86_64.rpm \
        #                       ~/pkgs/openssl-devel-1.0.0-20.el6_2.5.x86_64.rpm \
        #                       ~/pkgs/python-2.6.6-29.el6_2.2.x86_64.rpm \
        #                       ~/pkgs/python-devel-2.6.6-29.el6_2.2.x86_64.rpm \
        #                       ~/pkgs/python-libs-2.6.6-29.el6_2.2.x86_64.rpm \
        #                       ~/pkgs/telnet-0.17-47.el6.x86_64.rpm \
        #                       ~/pkgs/util-linux-ng-2.17.2-12.7.el6.x86_64.rpm \
        #                       ~/pkgs/java-1.6.0-openjdk-1.6.0.0-1.48.1.11.3.el6_2.x86_64.rpm \
        #                       ~/pkgs/java-1.6.0-openjdk-devel-1.6.0.0-1.48.1.11.3.el6_2.x86_64.rpm

 (3)系統啟動
     系統啟動需要再執行以下作業
     1)ssh password-less
        利用這篇ssh password-less session config的做法 ,將t01nn, t01d1, t01d2, t01d3這幾台都設定為彼此不需要密碼登入
     2)在t01d1, t01d2, t01d3都執行以下指令
           rsync -av /usr/local/kfs-0.5/ t01d1:/usr/local/kfs-0.5/
           rsync -av /usr/local/kfs-0.5/ t01d2:/usr/local/kfs-0.5/
           rsync -av /usr/local/kfs-0.5/ t01d3:/usr/local/kfs-0.5/
    3)setup your KFS
         cd /usr/local/kfs-0.5/scripts
          python kfssetup.py -f machines.cfg -m ../conf/machines.txt -b ../build -w ../webui
    4) start up your KFS
          python /usr/local/kfs-0.5/scripts/kfslaunch.py -f /usr/local/kfs-0.5/scripts/machines.cfg -m /usr/local/kfs-0.5/conf/machines.txt -s

    5) mount your KFS
         /usr/local/kfs-0.5/build/bin/kfs_fuse /mnt/kfs -f -o allow_other
     
後記:
目前的安裝方法,己經縮短安裝時間, 約20分鐘即可在Virtual Machine將這4台KFS架設完成,但為求日後便利:
1)可以製作便利的ssh password-less scripts, 日後在主機異動時,可以快速設定
2)  可以製作便利的server-cnf-update scripts, 便利日後主機異動時,更新設定
     machines.txt machines.cfg ChunkServer.prp
     rsync...
3)自製kfs rpm,讓安裝更快速便利(目前kfs安裝約要5分鐘左右)且更適合大量部署
     

2012年8月4日 星期六

yum download cache & yum.conf

Sometimes, we always want to keep what you just download the packages (.rpm) via yum install ... command. Once you cloud change working directory to /var/cache/yum/.../... , and then all packages had gone after yum was completed.
/etc/yum.conf allow you to keep the cached packages and other parameter for more functions.

cachedir=/var/cache/yum    #cached packages destination
keepcache=0                #1 for keeping packages, 0 will remove the package after installed
metadata_expire=1800   # in seconds

Otherwise, you could man yum.conf for more information .

文章分類