2012-05-05 01:15:57|  分類: 分布式文件系統 |  標簽:淘寶tfs  tfs  tfs分布式文件系統  分布式文件系統  |字號 訂閱

from:博客地址:
http://blog.163.com/a12333a_li/ 
李坤山

2012-5-8 修改:
使用了centos5.4 64位系統
tfs -Version=2.1.1
#行表示注釋

對于淘寶TFS分布式文件系統的功能、原理、優勢等就不多做介紹了,這里主要說明配置方面。
如果你對TFS一無所知,那直接跳到第(四)部份,看看它能做什么吧。
有想了解的同學可訪問TFS開源官網:

         tfs相關文檔:http://code.taobao.org/p/tfs/wiki/index/

tfs交流論壇:http://code.taobao.org/p/tfs/issues/

新浪微博: @淘寶tfs


系統環境:
3臺 64位centos5.4    1G內存
nameserver    192.168.41.140
dataserver1    192.168.41.141
dataserver2    192.168.41.142  
下面的一些配置不考慮單機跑多個dataserver、 dataserver+ nameserver 的情況.
一些普通的命令我就不注釋了,不明白的可以新浪微博上@li_83  

一:
下載安裝(亦可參照官網):
svn co http://code.taobao.org/svn/tfs/branches/tfs-dev-2.1.1  tfs   //版本
yum install -y libuuid-devel zlib-devel mysql-devel     //一些基本庫
yum install  e4fsprogs e4fsprogs-devel -y     //ext4
svn checkout http://code.taobao.org/svn/tb-common-utils/trunk/ tb-common-utils
cd    tb-common-utils/
export TBLIB_ROOT="/usr/local/tb/lib"    //定于tbsys和tbnet的安裝目錄
chmod 777 build.sh 
./build.sh 
cd  ..
cd  tfs-1.4
./build.sh init
./configure --prefix=/usr/local/tfs
make
#如果make出錯執行以下語句
find ./ -name  Makefile -exec sed -i 's/\-Werror//g' {} \;    //忽烈一些警告信息
#如果提示數據庫出錯 
#修改mysql_database_helper.cpp 
#include </usr/local/mysql/include/mysql/mysql.h>   //原文值<mysql.h>根據自己的mysql路徑修改,可用find查找.
#include </usr/local/mysql/include/mysql/errmsg.h> //原文<errmsg.h >同上
#如果提示
checking if MySQL version is >= 5.1.48... no  到mysql去下個   MySQL高于5.1.48的rpm包,我用的是5.1.62.下載地址:
#http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/MySQL-server-community-5.1.62-1.rhel5.x86_64.rpm
#http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/MySQL-devel-community-5.1.62-1.rhel4.x86_64.rpm
#如果提示找不到/usr/local/tfs/scripts/cs_sync  
# 把tfs下的cs_sync.sh復制成cs_sync 執行:cp -a ./scripts/cs_sync.sh /usr/local/tfs/scripts/cs_sync
make
make install
到這里安裝就結束了,其實任何工具安裝都不難,難的是怎么配置,維護,調優。嗯,繼續吧

二:
配置:
目前的情況
tfs安裝在 /usr/local/tfs 
tbsys、tbnet 安裝在  /usr/local/tb/
 /usr/local/tfs/conf/共有三個文件需要配置:
ns.conf、ads.conf和ds.conf 
其中
ns.conf  用于啟動nameserver                        
//只運行dataserver的服務器不用配置。
ads.conf和ds.conf   用于啟動dataserver     //只運行nameserver的服務器不用配置。
nameserver和dataserver的啟動順序不限
這里直接貼測試后的配置文件:
a)      ns.conf  ns.conf  ns.conf  ns.conf  ns.conf  ns.conf  ns.conf  ns.conf  ns.conf 
nameserver   IP  192.168.41.151  需要修改的加深了

cat  ns.conf
[public]
##日志文件的size,默認 1GB
log_size=1073741824

#保留日志文件的個數,默認 64
log_num = 4

#日志文件的級別, 默認 debug
log_level = error       //不然日志會很大

#工作隊列size,  默認  10240
task_max_queue_size = 10240

#nameserver監聽端口
port =8888

#工作目錄,也就是tfs的安裝目錄
work_dir=/usr/local/tfs

#網絡設備,即通信網卡,一般用內網
dev_name= eth0

#工作線程池 default  4
thread_count = 4

#本機IP地址(vip),配置ha時為vip,沒配置可以為主ns的ip
ip_addr = 192.168.41.140

[nameserver]

#系統保護時間,單位(秒), default: 300
#保護時間內不進行任何操作,包括添加block等
safe_mode_time = 300 

#nameserver IP地址列表(master, salve的ip地址,只能以'|'分隔)
#單臺nameserver時,另一個ip配置為無效ip即可
ip_addr_list = 192.168.41.140|192.168.0.2

#Ip地址 mask
#用于區分dataserver所在的子網,選擇不同子網的dataserver備份數據 
group_mask = 255.255.255.255

#Block size的最大值, 單位(字節)  
block_max_size = 7549747     //這個值到底怎么配置好,有待實驗。 必須 >= dataserver的mainblock_size,推薦設置一致。 
#Block 最大備份數, default: 2   
#單臺dataserver時,需要配置為1
max_replication = 1

#Block 最小備份數, default: 2
#單臺dataserver時,需要配置為1
min_replication = 1

#DataServer 容量使用的百分比, default: 98
use_capacity_ratio = 98

#Block使用的百分比, default: 95
block_max_use_ratio = 98

#Dataserver 與 nameserver 的心跳時間, 單位(秒), default: 2
heart_interval = 2

# object 死亡的最大時間, 單位(秒), default: 86400
object_dead_max_time = 3600

# 集群號 
cluster_id = 1

# Block當前備份數與最大備份數百分比,如果大于這個百分比,就開始復制
replicate_ratio_ = 50

#每個DataServer 主可寫塊的大小, default: 3
max_write_filecount = 16

#dataserver 與 nameserver 的心跳線程池的大小, default: 2
heart_thread_count = 2 

#dataserver 與 nameserver 的心跳工作隊列的大小, default: 10
heart_max_queue_size = 10

#block 缺失備份時, 需要等待多長時間才進行復制, 單位(秒), default: 240
repl_max_time = 60

#block進行壓縮的比例, block 刪除的文件的比例達到這個值時進行壓縮
compact_delete_ratio =  15  

#block進行壓縮時, dataserver的最大負載,超出這個值dataserver,不進行壓縮
compact_max_load = 200

# object 清理的時間, 單位(秒), default: 300
object_clear_max_time = 300

#nameserver上出現租約等待時, 阻塞線程最大個數, 這個值最好是工作線程的一半
max_wait_write_lease = 15

#租約刪除的最長時間, 單位(小時), default: 1
lease_expired_time = 3

#最大租約超時時間
max_lease_timeout = 3000

#清理租約的閥值, default: 102400
cleanup_lease_threshold = 102400

#創建計劃的間隔時間, 單位(秒), default: 30
build_plan_interval = 10

#計劃超時時間, 單位(秒), default: 120
run_plan_expire_interval = 120

#創建計劃的百分比, 計劃數量 = dataserver 數量 * build_plan_ratio
build_plan_ratio = 25

#定時dump統計信息的間隔時間, 單位(微秒), default: 60000000
dump_stat_info_interval = 60000000 

#創建計劃等待時間, 主要用有很多緊急復制時,單位(秒), default: 2
build_plan_default_wait_time = 2 

#負載均衡時block相關的個數(這個參數有點問題, 以后會改成百分比), default: 5
balance_max_diff_block_num = 5

#每次新增Block的個數, default: 3
add_primary_block_count = 3

#存儲block桶的個數, default: 32
block_chunk_num = 32

#每個任務處理的預期時間, 單位(微秒), default: 200
task_percent_sec_size = 200 

#每個任務隊列的最大
size 
task_max_queue_size = 10000

#同步日志緩沖區slot的大小, 超出這個值會寫入磁盤, default: 1
oplog_sync_max_slots_num = 1024

#同步日志線程池的大小, default: 1
oplog_sync_thread_num = 1


b1)   ds.conf  ds.conf  ds.conf  ds.conf  ds.conf  ds.conf  ds.conf  ds.conf  ds.conf  ds.conf 
dataserver1    192.168.41.141   總的有2個文件 ds.conf 、ads.conf  [dataserver2]只要改下對應的IP即可
cat  ds.conf
[public]
#日志文件的size,默認 1GB
log_size = 1073741824
#保留日志文件的個數, 默認  64
log_num = 4

#日志文件的級別,  默認  debug
log_level = error
#工作隊列size,  默認  10240
task_max_queue_size = 10240
#dataserver監聽端口
port = 9998
#工作目錄 tfs安裝目錄
work_dir=/usr/local/tfs
#網絡設備 一般值內網,與nameserver通信的網卡
dev_name= eth0
#工作線程池 default 4
thread_count = 4
#本機IP地址
ip_addr = 192.168.41.141
[dataserver]
#NameServer 地址 如果有ha,用ha的vip地址
ip_addr = 192.168.41.140

#!nameserver IP地址列表(master, salve的ip地址,只能以'|'分隔)  nameserver主從IP
ip_addr_list = 192.168.41.140|192.168.0.2
#NameServer 監聽的端口,必須寫nameserver上配置的端口
port = 8888
#備集群NameServer的vip地址, 可以不用配置
#slave_nsip = 192.168.0.2

#備集群NameServer監聽端口, 可以不用配置
#slave_nsport = 9999
#dataserver 與 nameserver心跳間隔時間, 單位(秒), default: 2
heart_interval = 2
check_interval = 2

#datafile失效時間, 單位(秒), default: 90
#expire_datafile_time = 90

#拷貝一個Block超時時間, 單位(秒), default: 180
#expire_clonedblock_time = 180

#壓縮一個Block超時時間, 單位(秒), default: 600
#expire_compactblock_time = 600
#復制Block線程池的大小, default: 2
replicate_threadcount = 2

#是否寫同步日志, defalut: 1
#write_sync_flag = 1
#block 最大size
block_max_size = 7549747       // 這個定義不是明白,跟下面的mainblock_size有什么區別,有什么聯系,待更新

#定時dump統計信息的間隔時間, 單位(秒), default: 60
dump_visit_stat_interval = 60

#io操作的閥值, 超過此值時, 會警告
#max_io_warning_time = 0

#備件類型, 1: tfs, 2: nfs
backup_type = 1

#備件路徑
backup_path = /mnt

#最大datafile值, default: 50
#max_data_file_nums = 50

#crc error的最大個數
#max_crc_error_nums = 4

#eio error的最大個數
#max_eio_error_nums_ = 6

#超時block檢測時間, 單位(秒)
#expire_checkblock_time = 86000

#cpu使用率
#max_cpu_usage = 60

#dump 統計信息的間隔時間, 單位(微秒)
#dump_stat_info_interval = 60000000

#mount路徑 很關鍵,一定要寫對,不用加id號 如hda1掛載在/data/tfs1,也就是格式化成ext4的磁盤掛載點。
mount_name = /data/tfs 
#mount 時磁盤的大小, 單位(KB)  //這個功能不知道為什么要限制
mount_maxsize = 4194304     //最大的掛載空間,如果你的/data/tfs1有1T,而這里是設置了4G ,那只有4G的塊可用空間,剩下的全部浪費。感謝hgp7369@126的提示.

#文件系統類型: 0: no initialize, 1: ext4, 2: ext3 posix fallocate, 3: ext3 ftruncate
base_filesystem_type = 1

#超級塊存存儲的保留位置,default: 0
superblock_reserve = 0

#平均文件的大小, 單位(字節)
avg_file_size = 40960

#主塊的大小, 單位(字節)   重點,需要與nameserver的配置一樣或者比它小
mainblock_size = 7549747      //每個數據存儲塊的大小 

#擴展塊的大小, 單位(字節)
extblock_size = 419430

#主塊與擴展的比例
block_ratio = 0.5   //這個參數也有帶研究

#hash桶的比例
hash_slot_ratio = 0.5
ds_thread_count = 4
#訪問控制ip mask, 可選
#access_control_ipmask = 192.168.0.1
#訪問控制文件路徑, 可選
#access_control_file = /home/xxxxx/xxxxxx/tfs/control.file

b2)  ads.conf  ads.conf  ads.conf  ads.conf  ads.conf  ads.conf  ads.conf   ads.conf 
 dataserver1   [dataserver2]的只要改下IP即可 ads實際上這個我實驗的時候沒有配置也是可以用。
cat ads.conf
[public]
#日志文件的size,default 1GB
log_size=1073741824
#保留日志文件的個數,default 64
log_num = 4 
#日志文件的級別, default debug
log_level=error
#工作隊列size,default 10240
task_max_queue_size = 10240
#監聽端口 adminserver
port = 12000
#工作目錄 tfs安裝目錄
work_dir=/usr/local/tfs
#網絡設備 一般內網網卡,與nameserver通信網卡名稱
dev_name= eth0
#工作線程池size, default 4
thread_count = 4

#本機ip地址
ip_addr = 192.168.41.141
[adminserver]
#檢測的間隔時間, 單位(秒), default: 5
check_interval = 5
#失敗的次數的閥值, default: 5
check_count = 5
#死亡個數的閥值
warn_dead_count = 3
#kill server之前等待時間
ds_fkill_waittime = 15
#dataserver啟動命令腳本
ds_script = /usr/local/tfs/bin/dataserver -f /usr/local/tfs/conf/ds.conf -d
#監控的dataserver列表
ds_index_list = 1,2,3
[nameserver]
#!NameServer的vip
ip_addr = 192.168.41.140

#!NameServer監聽的端口
port = 8888
[dataserver]
#!DataServer監聽的端口
port = 9999

#!DataServer lock file路徑
lock_file = /usr/local/tfs/logs/dataserver

#!DataServer 加載點路徑
mount_name = /data/tfs

到這里配置文件就結束了,好好理解上的一些注釋。

三:
啟動服務:
nameserver啟動:
執行scripts目錄下的tfs
cd /usr/local/tfs/scripts
./tfs start_ns 
執行正常返回:
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 
 查看監聽端口:
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 
說明nameserver啟動成功。

dataserver啟動:
首先需要格式化一個分區為ext4文件系統,并掛載到/data/tfs1至/data/tfs(i),其中i為磁盤號。注意上面的 mount_name = /data/tfs  沒有加(i) 
假設你是用虛擬機,添加一個硬盤hda,然后執行:
fdisk /dev/hda
n   //具體看fdisk用法
e   //具體看fdisk用法
 //具體看fdisk用法
mkfs.ext4 /dev/hda11
mount /dev/hda1 /data/tfs1/
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 這樣就掛載上去了
cd /usr/local/tfs/scripts 
stfs format 1   (1為掛載點的序號 具體可以看官網說明) //分配第一個存儲區
./scripts/tfs start_ds 1  //啟動dataserver的存儲區1
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 檢測與nameserver的通訊
192.168.41.141
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
192.168.41.142
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
  OK,一切正常。

四:
驗證:
首先保證服務已經全部啟動!
確認防火墻沒有阻止到連接!
查看dataserver連接情況:
在nameserver端執行ssm命令查看檢查到的dataserver的一些基本情況。
 /usr/local/tfs/bin/ssm -s 192.168.41.140:8888  
server -b    \\隨即列出dataserver的block塊
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 server -w     \\隨機列出dataserver的可寫塊 
machine -a 
  \\列出dataserver的使用報道。
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 
 這里需要注意如果用server -b 、-w后面的BLOCK數字,如果是0,說明沒有可寫塊。檢測ns  ads ds的配置文件,包括備份個數、主塊大小知否一致.
如果看到上面的信息,那基本沒問題了。
用tfstool上傳一張圖片:
這里稍微解釋下TFS寫流程的一些基礎知識,引用官網的話
客戶端首先向nameserver發起寫請求,nameserver需要根據dataserver上的可寫塊,容量和負載加權平均來選擇一個可寫的block。并且在該block所在的多個dataserver中選擇一個作為寫入的master,這個選擇過程也需要根據dataserver的負載以及當前作為master的次數來計算,使得每個dataserver作為master的機會均等。master一段選定,除非master宕機,不會更換,一旦master宕機,需要在剩余的dataserver中選擇新的master。返回一個dataserver列表。
客戶端向master dataserver開始數據寫入操作。master server將數據傳輸為其他的dataserver節點,只有當所有dataserver節點寫入均成功時,master server才會向nameserver和客戶端返回操作成功的信息。“
也就是說客戶端發起一個請求,nameserver先根據dataserver的
 容量和負載 來選擇一個dataserver來做為所有dataserver的master(除非master宕機,不會更換,宕機則自動重新選擇)然后根據ns.conf的配置的備份數全部寫入,才向nameserver和客戶端返回操作成功信息。
OK,開始試試:
我們測試上傳一張a12333a_li.jpg,大小為1550162,記住這個大小,一會讀取的時候對比下。
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 /usr/local/tfs/bin/tfstool -s 192.168.41.140:8888
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 
這里我使用put上傳/root/a12333a_li.jpg這張圖,順便說下,TFS目 前限制了文件大小為2M, 適合于一些小于2M數 據的存放。終端默認上傳命令put ,超過2M用putl,回車后會返回一大堆字符,注意看最后一行是fail還是success,如果是fail,請檢測下配置文件、端口等。如果是success則說明已經上傳上去。
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 往返回的信息上找些我們要的數據 : Block ID和block中的File ID;我們傳的文件大小為1550162,下圖可以看到文件被割成2個塊 1048576和501586 ;儲存在192.168.41.141  blockid: 3022, fileid: 1
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 
 到這里文件寫入就完成了。
讀取文件:
現在我們有幾個信息:
192.168.41.141 上的 
blockid: 3022, fileid: 1   上傳了一個1550162 的文件(a12333a_li.jpg)
好的,我們上去把它取出來。取文件的機器在linux只要有ds-client這個命令文件就可以,拷過來既可用。不一定要在name\data的其中一臺上。
取之前,我們先來看個東西,看一個塊里面存了什么

/ust/local/tfs/bin/ds_client -d 192.168.41.141:9998
list_file 3022
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 上圖可以看到,block 3022 里面只有一個文件fileid 1   size為1550162(跟我們上傳的一樣大)。
取出來:

read_file_data  3022 1 /tmp/test141.jpg
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 沒有報錯。我們去看看/tmp/test141.jpg
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
 是的,我們取出來了!!!
還沒有完,tfs的強項我們還沒看到,這里展示下:
剛剛我們是去192.168.41.141取文件,我們到另一臺dataserve_192.168.41.142取看看,就當是141這臺宕機了(備注:192.168.41.142 dataserver設置的監聽端口是9999)

/ust/local/tfs/bin/ds_client -d 192.168.41.142:9999      \\同樣取blockid: 3022, fileid: 1 保存成test142.jpg淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
也是成功的!然后我們對比下test141.jpg和test142.jpg
淘寶TFS分布式文件系統 + php接口 [親測] - 李坤山 - 李坤山的斷懸的linux
是的,是一樣的!

PHP接口:
tfs的php接口暫時還依賴rcserver這點讓我覺得有點吃驚,覺得有點多余,而rcserver直接又與mysql有關系,至今我還不是很明白rcserver給的數據表里面各字段的含義。所以在php接口上,還是有點問題。
今天先把tfs的php插件先寫出來,一開始安裝這個插件真是費了很多勁,后來在雪崖(淘寶)童鞋的幫助下,終于解決了問題.
測試
環境
64位Centos的
tft --versoion  2.1.1
tail --version   2.3
php --version  5.3.9    //  5.2.x的環境沒有測試,
雪崖給的php版本是20090626
方法:
1.安裝淘寶的tair
   wget http://code.taobao.org/p/tair/file/19/tair-2.3-46.el5.x86_64.rpm
   rpm -ivh tair-2.3-46.el5.x86_64.rpm
 2.配置系統環境變量
   export TFS_ROOT='/usr/local/tfs'       //tfs的安裝目錄
   export TBLIB_ROOT='/usr/local/tb/lib'    //tbsys和tbnet的lib目錄
   export TAIR_ROOT='/opt/csr/tair-2.3'     //tair的安裝路徑
3.編譯安裝tfs的php插件
   cd /root/tfs/src/phpclient
  /usr/local/php/bin/phpize --clean                                                                                             
  /usr/local/php/bin/phpize
  ./configure --with-php-config=/usr/local/php/bin/php-config
   cp -a  ../new_client/fsname.h  ./              //否則make的時候會提示錯誤
   cp -a  ../common   ./   //否則make的時候會提示錯誤 
   find ./ -name  Makefile -exec sed -i 's/\-Werror//g' {} \;      //否則make的時候會提示錯誤
   make
   make install   
   之后會生成在/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/(路徑跟php的安裝環境有關系)下生成一個tfs_client.so 文件,把它添加到php.ini里面即可。
  查看插件是否生效方式  /usr/local/php/bin/php  -m  當然,你也可以用phpinfo的形式來看
  淘寶TFS分布式文件系統 + php接口 - 李坤山 - 李坤山VS斷懸
 php的插件就到這里結束。
 php接連tfs中間還有個rcserver,這個問題還沒解決,把我的問題貼出來,如果有誰已經解決,一定要告訴我,謝謝了!
 rcserver我跟tfs的nameserver放在同一臺。
 rcserver依賴mysql數據庫,我們把數據庫放在192.168.41.158
 cd tfs/sql/rcs
 mysql -uroot -p 
 >create database tfs_stat;
 >exit
  mysql tfs_stat <./create_table.sql
  mysql tfs_stat <./rc_test_info.sql
這樣數據庫里面的數據是淘寶提供的一些測試數據,需要改成自己環境的配置,這里我測試了很久,都沒辦法php解決接連問題,給的錯誤提示沒看明白錯在哪里。
cd /usr/local/tfs/conf
vi rc.conf   輸入:
######
[public]
    log_level = info     (方便調試,線上感覺用error好點)
    log_num = 20
    log_size = 134217728
    work_dir = /usr/local/tfs

    thread_count = 4
    ip_addr = 192.168.41.140    //rcserver所在的IP
    dev_name = eth0        
    port = 7777   //監聽端口

[rcserver]
    rc_monitor_interval = 60
    rc_stat_interval = 30
    rc_update_interval = 10
    rc_db_info = 192.168.41.158:3306:tfs_stat    //數據庫信息
    rc_db_user = a12333a_li    //數據庫用戶
    rc_db_pwd = 123456           //數據庫密碼
#######
   啟動rc服務:
    /usr/local/tfs/scripts/tfs start_rc
   淘寶TFS分布式文件系統 + php接口 - 李坤山 - 李坤山VS斷懸
   然后切回到php的那臺
  cd  tfs/tests/phpclient     //源包的目錄
  執行
  /usr/local/php/bin/php  test.php 192.168.41.140:7777     tappkey00001                192.168.41.142 
  PHP          rcserver:port                key(在數據庫里面)        本機IP
 我就栽在這里了,老是提示錯誤,錯誤提示:

 淘寶TFS分布式文件系統 + php接口 - 李坤山 - 李坤山VS斷懸
 這是為什么呢。。。
待更新....
2012.6.16

分享到:        
閱讀(3328)| 評論(9)| 轉載 (0) |舉報

最近讀者

登錄后,您可以在此留下足跡。
       

評論

點擊登錄|昵稱:
 
10-16 09:41
天上一片云
請問博主知不知道TFS如何支持http訪問的?TFS沒有目錄結構,難道所有文件都在/目錄下?
回復
09-05 10:47
木葉
博主,在PHP插件第步的步驟能不能詳細的解說一下個步驟的操作,感覺有點看不懂,
回復
09-06 11:46
 李坤山 回復 木葉
跟php的版本有關系,不知道你使用的是php幾。
“php --version  5.3.9    //  5.2.x的環境沒有測試,雪崖給的php版本是20090626”
雪崖是TFS的開發人員。
回復
09-05 11:10
木葉
博主 如果PHP是RPM包安裝的,要怎么來支持TFS呢
回復
09-05 10:47
木葉

第3步那里

回復
08-20 13:57
請教一下博主,TFS和ZooKeeper相比怎么樣啊,比如易用性、速度之類 的
回復
謝謝博主,太給力了,學習了
回復
05-07 13:36
ds中的mount_name所填寫的路徑必須存在,不然ds將無法啟動,親身經歷,覺得淘寶應該改一下
mount_maxsize 這個要根據盤符的可用大小來設定,如果盤有1T,但是使用默認的配置大小,那就是這個盤只有4G的空間可用來存放文件,別的空間將不會被利用到
回復
05-08 23:21
謝謝關注。
ds中的mount_name所填寫的路徑必須存在,這個是必須的,否則在stfs format n 分配存儲區的時候就應該出錯了。存儲區分配成功后,系統馬上分配了很多mainblock_size 大小的塊文件。ls /data/tfs1/
回復