淘寶分布式文件系統(tǒng)TFS安裝配置手冊(cè):NameServer配置
ns.conf 中注意修改的項(xiàng)目
public->log_level=debug #日志文件的級(jí)別 public->port = 8108 #nameserver監(jiān)聽端口 public->work_dir=/usr/local/tfs #工作目錄,也就是tfs的安裝目錄 public->dev_name= eth0 #網(wǎng)絡(luò)設(shè)備,即通信網(wǎng)卡,一般用內(nèi)網(wǎng) public->ip_addr = 192.168.119.145 #本機(jī)IP地址(vip),配置ha時(shí)為vip,沒配置可以為主ns的ip
nameserver->ip_addr_list = 192.168.119.145|192.168.119.147 #nameserver IP地址列表(master, salve的ip地址,只能以’|'分隔) nameserver->block_max_size = 67108864 #Block size的***值, 單位(字節(jié)),必須 >= dataserver的mainblock_size,推薦設(shè)置一致。
nameserver->max_replication = 3 #Block ***備份數(shù), default: 2,單臺(tái)dataserver時(shí),需要配置為1 nameserver->min_replication = 3 #Block 最小備份數(shù), default: 2,#單臺(tái)dataserver時(shí),需要配置為1 nameserver->cluster_id = 1 # 集群號(hào)
ns.conf 內(nèi)容 (其中有中文,要保存為UTF-8,不帶標(biāo)簽)
[public] #log file size default 1GB #日志文件的size,默認(rèn) 1GB log_size=1073741824
#保留日志文件的個(gè)數(shù),默認(rèn) 64 log_num = 64
#log file level default debug #日志文件的級(jí)別, default info,線上使用建議設(shè)為info,調(diào)試設(shè)為debug #dubug級(jí)日志量會(huì)很大 log_level=debug
#main queue size default 10240 #工作隊(duì)列size, 默認(rèn) 10240 task_max_queue_size = 10240
#listen port #nameserver監(jiān)聽端口 port = 8108
#work directoy #工作目錄,也就是tfs的安裝目錄 work_dir=/usr/local/tfs
#device name #網(wǎng)絡(luò)設(shè)備,即通信網(wǎng)卡,一般用內(nèi)網(wǎng) dev_name= eth0
#work thread count default 4 #工作線程池 default 4 thread_count = 4
#ip addr(vip) #本機(jī)IP地址(vip),配置ha時(shí)為vip,沒配置可以為主ns的ip ip_addr = 192.168.119.145
[nameserver]
#系統(tǒng)保護(hù)時(shí)間,單位(秒), default: 300 #保護(hù)時(shí)間內(nèi)不進(jìn)行任何操作,包括添加block等 safe_mode_time = 300
#nameserver IP地址列表(master, salve的ip地址,只能以’|'分隔) #單臺(tái)nameserver時(shí),另一個(gè)ip配置為無效ip即可 ip_addr_list = 192.168.119.145|192.168.119.147
#Ip地址 mask #用于區(qū)分dataserver所在的子網(wǎng),選擇不同子網(wǎng)的dataserver備份數(shù)據(jù) group_mask = 255.255.255.255
#Block size的***值, 單位(字節(jié)) #必須 >= dataserver的mainblock_size,推薦設(shè)置一致。 block_max_size = 83886080
#Block ***備份數(shù), default: 2,單臺(tái)dataserver時(shí),需要配置為1 max_replication = 3
#Block 最小備份數(shù), default: 2,#單臺(tái)dataserver時(shí),需要配置為1 min_replication = 3
#DataServer 容量使用的百分比, default: 98 use_capacity_ratio = 98
#Block使用的百分比, default: 95 block_max_use_ratio = 98
#heart interval time(seconds) #Dataserver 與 nameserver 的心跳時(shí)間, 單位(秒), default: 2 heart_interval = 2
# object dead max time(seconds) default # object 死亡的***時(shí)間, 單位(秒), default: 86400 object_dead_max_time = 3600
# cluster id defalut 1 # 集群號(hào) cluster_id = 1
# block lost, replicate ratio # Block當(dāng)前備份數(shù)與***備份數(shù)百分比,如果大于這個(gè)百分比,就開始復(fù)制 replicate_ratio_ = 50
#每個(gè)DataServer 主可寫塊的大小, default: 3 max_write_filecount = 16
#dataserver 與 nameserver 的心跳線程池的大小, default: 2 heart_thread_count = 2
#dataserver 與 nameserver 的心跳工作隊(duì)列的大小, default: 10 heart_max_queue_size = 10
#replicate block wait time #block 缺失備份時(shí), 需要等待多長時(shí)間才進(jìn)行復(fù)制, 單位(秒), default: 240 repl_max_time = 60
#block進(jìn)行壓縮的比例, block 刪除的文件的比例達(dá)到這個(gè)值時(shí)進(jìn)行壓縮 compact_delete_ratio = 15
#block進(jìn)行壓縮時(shí), dataserver的***負(fù)載,超出這個(gè)值dataserver,不進(jìn)行壓縮 compact_max_load = 200
# object 死亡的***時(shí)間, 單位(秒), default: 86400 object_dead_max_time = 86400
# object 清理的時(shí)間, 單位(秒), default: 300 object_clear_max_time = 300
#nameserver上出現(xiàn)租約等待時(shí), 阻塞線程***個(gè)數(shù), 這個(gè)值***是工作線程的一半 max_wait_write_lease = 15
#租約刪除的最長時(shí)間, 單位(小時(shí)), default: 1 lease_expired_time = 3
#***租約超時(shí)時(shí)間 max_lease_timeout = 3000
#清理租約的閥值, default: 102400 cleanup_lease_threshold = 102400
#創(chuàng)建計(jì)劃的間隔時(shí)間, 單位(秒), default: 30 build_plan_interval = 10
#計(jì)劃超時(shí)時(shí)間, 單位(秒), default: 120 run_plan_expire_interval = 120
#創(chuàng)建計(jì)劃的百分比, 計(jì)劃數(shù)量 = dataserver 數(shù)量 * build_plan_ratio build_plan_ratio = 25
#定時(shí)dump統(tǒng)計(jì)信息的間隔時(shí)間, 單位(微秒), default: 60000000 dump_stat_info_interval = 60000000
#創(chuàng)建計(jì)劃等待時(shí)間, 主要用有很多緊急復(fù)制時(shí),單位(秒), default: 2 build_plan_default_wait_time = 2
#負(fù)載均衡時(shí)block相關(guān)的個(gè)數(shù)(這個(gè)參數(shù)有點(diǎn)問題, 以后會(huì)改成百分比), default: 5 balance_max_diff_block_num = 5
#每次新增Block的個(gè)數(shù), default: 3 add_primary_block_count = 3
#存儲(chǔ)block桶的個(gè)數(shù), default: 32 block_chunk_num = 32
#每個(gè)任務(wù)處理的預(yù)期時(shí)間, 單位(微秒), default: 200 task_percent_sec_size = 200
#每個(gè)任務(wù)隊(duì)列的***size task_max_queue_size = 10000
#同步日志緩沖區(qū)slot的大小, 超出這個(gè)值會(huì)寫入磁盤, default: 1 oplog_sync_max_slots_num = 1024
#同步日志線程池的大小, default: 1 oplog_sync_thread_num = 1
———-啟動(dòng)nameserver————– 執(zhí)行scripts目錄下的tfs /usr/local/tfs/scripts/tfs start_ns
查看監(jiān)聽端口:netstat -ltnp
———-停止nameserver————–
/usr/local/tfs/scripts/tfs stop_ns
—————驗(yàn)證—————–
[root@localhost scripts]# netstat -tnlppa |grep 147
——–列出dataserver的block塊———— 首先保證服務(wù)已經(jīng)全部啟動(dòng)! 確認(rèn)防火墻沒有阻止到連接! 查看dataserver連接情況: 在nameserver端執(zhí)行ssm命令查看檢查到的dataserver的一些基本情況。 /usr/local/tfs/bin/ssm -s 192.168.119.147:8108 (要使用主ns的IP與端口,請(qǐng)注意根據(jù)實(shí)際情況修改) server -b \\隨即列出dataserver的block塊
server -w \\隨機(jī)列出dataserver的可寫塊
圖:略。 machine -a \\列出dataserver的使用報(bào)道。
這里需要注意如果用server -b 、-w后面的BLOCK數(shù)字,如果是0,說明沒有可寫塊。檢測(cè)ns ads ds的配置文件,包括備份個(gè)數(shù)、主塊大小知否一致. 如果看到上面的信息,那基本沒問題了。
———–用tfstool上傳一張圖片————- “客戶端首先向nameserver發(fā)起寫請(qǐng)求,nameserver需要根據(jù)dataserver上的可寫塊,容量和負(fù)載加權(quán)平均來選擇一個(gè)可寫的 block。并且在該block所在的多個(gè)dataserver中選擇一個(gè)作為寫入的master,這個(gè)選擇過程也需要根據(jù)dataserver的負(fù)載以 及當(dāng)前作為master的次數(shù)來計(jì)算,使得每個(gè)dataserver作為master的機(jī)會(huì)均等。master一經(jīng)選定,除非master宕機(jī),不會(huì)更 換,一旦master宕機(jī),需要在剩余的dataserver中選擇新的master。返回一個(gè)dataserver列表。 客戶端向master dataserver開始數(shù)據(jù)寫入操作。master server將數(shù)據(jù)傳輸為其他的dataserver節(jié)點(diǎn),只有當(dāng)所有dataserver節(jié)點(diǎn)寫入均成功時(shí),master server才會(huì)向nameserver和客戶端返回操作成功的信息。“
也就是說客戶端發(fā)起一個(gè)請(qǐng)求,nameserver先根據(jù)dataserver的 容量和負(fù)載 來選擇一個(gè)dataserver來做為所有dataserver的master(除非master宕機(jī),不會(huì)更換,宕機(jī)則自動(dòng)重新選擇)然后根據(jù) ns.conf的配置的備份數(shù)全部寫入,才向nameserver和客戶端返回操作成功信息。
/usr/local/tfs/bin/tfstool -s 192.168.119.147:8108 (這是備ns,不是主,還未配置HA呢,使用它的上傳失敗了) /usr/local/tfs/bin/tfstool -s 192.168.119.145:8108 (這是主ns ,請(qǐng)注意根據(jù)實(shí)際情況修改)
這里我使用put上傳/opt/666.jpg這張圖。TFS目前限制了文件大小為2M,適合于一些小于2M數(shù) 據(jù)的存放。終端默認(rèn)上傳命令put ,超過2M用putl,回車后會(huì)返回一大堆字符,注意看***一行是fail還是success,如果是fail,請(qǐng)檢測(cè)下配置文件、端口等。如果是 success則說明已經(jīng)上傳上去。
上傳666.jpg大小 是58407字節(jié)
可以看到 blockid=349,size=58407,ip=192.168.119.214:9998
查349這個(gè)塊的信息。
在ns、ds中隨便找一臺(tái)機(jī)器,執(zhí)行:
/usr/local/tfs/bin/ds_client -d 192.168.119.214:9998
可以看到塊349中有一個(gè)文件,文件名是:T0oRJTByJT1RCvBVdK
—————–讀最文件————————
read_file_data 349 1 /opt/777/jpg
成功了,到 /opt/777/jpg,去看一看文件。