軟件篇-分布式文件系統(tǒng)(一) - FastDFS介紹與普通安裝

分布式文件系統(tǒng)

1.分布式文件系統(tǒng)是什么

分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點上全肮,而是通過計算機網(wǎng)絡(luò)與節(jié)點(可簡單的理解為一臺計算機)相連。分布式文件系統(tǒng)的設(shè)計基于客戶機/服務(wù)器模式友浸。一個典型的網(wǎng)絡(luò)可能包括多個供多用戶訪問的服務(wù)器片吊。另外吓揪,對等特性允許一些系統(tǒng)扮演客戶機和服務(wù)器的雙重角色监憎。例如庆揩,用戶可以“發(fā)表”一個允許其他客戶機訪問的目錄膳叨,一旦被訪問洽洁,這個目錄對客戶機來說就像使用本地驅(qū)動器一樣

上述來自百度百科的介紹。通俗來說就是:

  • 傳統(tǒng)的文件系統(tǒng)管理的文件是存儲在本機菲嘴。例如我們在桌面創(chuàng)建個文件饿自,或者刪除文件都是在本機上操作汰翠,

  • 分布式文件系統(tǒng)管理的文件存儲在很多機器上,這些機器通過網(wǎng)絡(luò)相互連接昭雌,被統(tǒng)一管理复唤。無論是上傳還是下載文件都通過管理中心來訪問。如圖:

    image-20200429093622376.png

2.分布式文件系統(tǒng)類型

分布式文件系統(tǒng)類型有很多城豁,主流的幾種類型如下:

  • NFS

    最早由Sun微系統(tǒng)公司作為TCP/IP網(wǎng)上的文件共享系統(tǒng)開發(fā)苟穆。Sun公司估計大約有超過310萬個系統(tǒng)在運行NFS,大到大型計算機唱星、小至PC機雳旅,其中至少有80%的系統(tǒng)是非Sun平臺

  • AFS

    AFS是一種分布式的文件系統(tǒng)用來共享與獲得在計算機網(wǎng)絡(luò)中存放的文件。AFS使得用戶獲得網(wǎng)絡(luò)文件就像本地機器般方便间聊。AFS文件系統(tǒng)被稱為“分布式”是因為文件可以分散地存放在很多不同的機器上攒盈,但這些文件對于用戶而言是可及的,用戶可以通過一定的方式得到這些文件哎榴。

  • GFS

    Google公司為了存儲海量搜索數(shù)據(jù)而設(shè)計的專用文件系統(tǒng)型豁。是一個可擴展的分布式文件系統(tǒng),用于大型的尚蝌、分布式的迎变、對大量數(shù)據(jù)進行訪問的應(yīng)用。它運行于廉價的普通硬件上飘言,并提供容錯功能衣形。它可以給大量的用戶提供總體性能較高的服務(wù)

  • KFS

    是開始軟件自主研發(fā)基于JAVA的純分布式文件系統(tǒng),通過HTTP WEB為企業(yè)的各種信息系統(tǒng)提供底層文件存儲及訪問服務(wù),搭建企業(yè)私有云存儲服務(wù)平臺

  • DFS

    DFS是AFS的一個版本姿鸿,作為開放軟件基金會(OSF)的分布式計算環(huán)境DCE中的文件系統(tǒng)部分谆吴。

    如果文件的訪問僅限于一個用戶,那么分布式文件系統(tǒng)就很容易實現(xiàn)苛预【淅牵可惜的是,在許多網(wǎng)絡(luò)環(huán)境中這種限制是不現(xiàn)實的热某,必須采取并發(fā)控制來實現(xiàn)文件的多用戶訪問腻菇,表現(xiàn)為如下幾個形式:

    • 只讀共享 任何客戶機只能訪問文件,而不能修改它昔馋,這實現(xiàn)起來很簡單筹吐。

    • 受控寫操作 采用這種方法,可有多個用戶打開一個文件绒极,但只有一個用戶進行寫修改骏令。而該用戶所作的修改并不一定出現(xiàn)在其它已打開此文件的用戶的屏幕上。

    • 并發(fā)寫操作 這種方法允許多個用戶同時讀寫一個文件垄提。但這需要操作系統(tǒng)作大量的監(jiān)控工作以防止文件重寫榔袋,并保證用戶能夠看到最新信息周拐。這種方法即使實現(xiàn)得很好,許多環(huán)境中的處理要求和網(wǎng)絡(luò)通信量也可能使它變得不可接受

3.FastDFS

3.1 介紹

FastDFS是由淘寶的余慶先生所開發(fā)的一個輕量級凰兑、高性能的開源分布式文件系統(tǒng)妥粟。百度百科的介紹如下:

image-20200429100330476.png

簡單總結(jié)為,其特點如下:

  • 文件存儲
  • 文件同步
  • 文件訪問(文件上傳吏够,下載)
  • 大容量的存儲和負載均衡
  • 在線擴容勾给。

特別適合一些大容量存儲的系統(tǒng)。例如相冊網(wǎng)站锅知,視頻網(wǎng)站等等播急。當(dāng)然除了FastDFS例外還有一些其他的分布式系統(tǒng)也能存儲。例如上面介紹的那些分布式文件系統(tǒng)售睹。還是有HDFS(Hadoop),TFS(淘寶)等等

3.2 架構(gòu)圖

image-20200429100935217.png

解釋:

  • Client 是我們?nèi)ミB接FastDFS的客戶端桩警。例如我們是java客戶端去連接,那么client就是 java客戶端
  • Track Server 跟蹤服務(wù)器 相當(dāng)于我們的管理中心昌妹,主要做調(diào)度工作捶枢,負責(zé)調(diào)度Storage 節(jié)點和Client之間的通信。同時在訪問上也有負載均衡的作用飞崖,以及記錄storage節(jié)點運行狀態(tài)烂叔。是連接Client和Storage server的樞紐
  • Storage Server 存儲服務(wù)器。主要存儲文件和元數(shù)據(jù)(meta data),每一個strorage 都會啟動一個單獨的線程向 跟蹤服務(wù)器集群(Track cluster)里面的 Track匯報其狀態(tài)信息固歪。例如 磁盤的使用情況蒜鸡,文件同步情況,上傳下載次數(shù)等等昼牛。這其實跟微服務(wù)思想很相似术瓮。每一個服務(wù)向注冊中心發(fā)送心跳康聂。
  • Group 文件組贰健,一個組里面包含了多臺 Storage Server,加入上傳到同一組的內(nèi)的任何個一臺機器后,同組內(nèi)其他機器就會同步到其他信息上恬汁,相當(dāng)于其他機器就是這臺機器的副本伶椿。達到文件備份效果。不同的組保存的數(shù)據(jù)是獨立的氓侧,相互不干擾脊另,不通信。假如當(dāng)所有的組文件存儲滿了约巷,我們還可以再增加組偎痛,這就是水平擴容。
  • Track cluster 跟蹤服務(wù)器集群独郎,多臺跟蹤服務(wù)器組成
  • Storage cluster 存儲服務(wù)器集群踩麦,多個組構(gòu)成

3.3 安裝(普通安裝 單機版)

  • 上傳要用到的軟件

    image-20200429190013391.png
  • 更新apt(切換到root用戶下枚赡,后面所有操作都在root用戶下操作)

    apt-get update
    
  • 安裝build_essential(包含了 gcc g++ make)

    apt-get install build-essential
    
  • 安裝libtool(用庫支持腳本,將共享庫的使用隱藏在一個一致的可移植的接口后面)

    apt-get install libtool
    
  • 安裝unzip 用來解壓 zip

    apt-get install unzip zip
    
  • 解壓libfastcommon(FastDFS依賴于這個)

    unzip libfastcommon-master.zip
    
  • 進入該目錄編譯安裝

    cd libfastcommon-master
    ./make.sh 
    ./make.sh install
    
  • 安裝FastDFS - 解壓FastDFS

    tar -zxvf FastDFS_v5.08.tar.gz   
    
  • 安裝FastDFS - 編譯安裝

    cd FastDFS
    ./make.sh 
    ./make.sh install
    
  • 檢驗安裝結(jié)果

    ll /etc/init.d/ | grep fdfs
    
    image-20200429190915319.png

    fdfs_storaged storage啟動腳本

    fdfs_trackerd tracker啟動腳本

  • 配置文件模板

    ll /etc/fdfs
    
    image-20200429190945695.png

    這里面都是配hi文件的模板

  • 啟動tracker

    在我們編譯安裝FastDFS過程中,Tracker 和 Storage 已經(jīng)都被安裝了谓谦,所以我們直接啟動就可以贫橙,但是Tracker和Storage所需的配置文件不同,所以我們就修改一下不同的配置文件

    • 修改Tracker配置文件反粥,先把Tracke模板配置文件復(fù)制一份

      image-20200429191053766.png
    • 打開tracker并修改

      vim ./tracker.conf
      
      image-20200429191149824.png
      image-20200429191250936.png
      image-20200429191423984.png

      當(dāng)然我們目錄是不存在的卢肃,我們就新建一個這樣的目錄

      image-20200429191515472.png
    • 啟動Tracker

      /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start #啟動
      /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart #重啟
      
  • 啟動Storage

    • 修改配置文件

      image-20200429191620289.png
    image-20200429191649192.png
    image-20200429191823486.png
    image-20200429192218488.png
    image-20200429192457692.png

    創(chuàng)建剛剛我們修改的目錄

    image-20200429192640837.png
  • 啟動

    /usr/bin/fdfs_storaged  /etc/fdfs/storage.conf start #啟動
    /usr/bin/fdfs_storaged  /etc/fdfs/storage.conf restart #重啟
    
  • 查看進程

    ps -ef | grep fdfs
    
    image-20200429193443831.png
  • 修改 client

    這個是用來測試文件上傳

    image-20200429193526672.png
    image-20200429193622116.png
    image-20200429193708819.png
    image-20200429194006449.png

4.上傳文件

  • 時序圖

    image-20200429193756997.png
  • 創(chuàng)建文件

    image-20200429193850668.png
  • 上傳文件

    image-20200429195636879.png
    group1/M00/00/00/wKiphl6pa1-ARR-tAAAABRnOxBs74.html
    # group1 組名
    # M00 對應(yīng) store_path0 也就是存儲路徑
    # 00/00 磁盤路徑
    

    查詢存儲文件的目錄

    image-20200429194122550.png
image-20200429195757269.png

5.訪問文件

5.1 為什么需要安裝Nginx

通過上面的操作我們已經(jīng)可以去上傳文件了,但是文件上傳后我們沒有辦法通過瀏覽器去進行訪問才顿。因為在FastDFS 4.x 版本以后移除了 http支持莫湘。即使沒有移除也有以下缺陷:
(借鑒:https://www.php.cn/nginx/421962.html)

在使用FastDFS部署一個分布式文件系統(tǒng)的時候,通過FastDFS的客戶端API來進行文件的上傳郑气、下載逊脯、刪除等操作。

同時通過FastDFS的HTTP服務(wù)器來提供HTTP服務(wù)竣贪。但是FastDFS的HTTP服務(wù)較為簡單军洼,無法提供負載均衡等高性能的服務(wù),所以FastDFS的開發(fā)者—淘寶的架構(gòu)師余慶先生演怎,為我們提供了Nginx上使用的FastDFS模塊(也可以叫FastDFS的Nginx模塊)匕争。

FastDFS通過Tracker服務(wù)器,將文件放在Storage服務(wù)器存儲,但是同組之間的服務(wù)器需要復(fù)制文件,有延遲的問題.假設(shè)Tracker服務(wù)器將文件上傳到了storage1。

文件ID已經(jīng)返回客戶端,這時,后臺會將這個文件復(fù)制到storage2,如果復(fù)制沒有完成,客戶端就用這個ID在192.168.1.30取文件,肯定會出現(xiàn)錯誤爷耀。

所以我們可以采用Nginx的反向代理幫助我們?nèi)ミM行進行圖片的訪問甘桑。余慶先生提供了一個Nginx的FastDFS模塊。我們只需要將這個模塊集成到Nginx里面去歹叮,通過Nginx的反向代理跑杭,這樣我們就能訪問了。

5.2 安裝Nginx

  • 安裝nginx所需要的依賴

    • openssl

      apt-get install libssl-dev
      
    • pcre

      apt-get install libpcre3 libpcre3-dev
      
    • zlib

      apt-get install zlib1g-dev 
      

5.2.1 fastdfs-nginx-module 安裝

  • 解壓 fastdfs-nginx-module

    image-20200430091838373.png
    image-20200430091903675.png

    進入到src文件夾下

    image-20200430091952779.png

    修改配置

    # 修改配置
    vim config
    # 執(zhí)行下面命令(將配置中的/usr/local改為/usr):
    :%s+/usr/local/+/usr/+g
    

    mod_fastdfs.conf復(fù)制到/etc/fdfs

    image-20200430092751064.png

    進入/etc/fdfs下修改剛剛復(fù)制的配置文件咆耿,將下面參數(shù)修改成這樣:

    tracker_server=192.168.169.134:22122          # tracker服務(wù)IP和端口
    url_have_group_name=true                  # 訪問鏈接前綴加上組名
    store_path0=/var/fdfs/storage             # 文件存儲路徑
    

    將FastDFS一些關(guān)于Http訪問的配置文件也復(fù)制到/etc/fdfs

    image-20200430093504620.png
    image-20200430093631183.png

5.2.2 Nginx安裝

  • 解壓Nginx壓縮包

    image-20200430091517646.png
tar -zxvf nginx-1.10.0.tar.gz
  • 進入nginx目錄德谅,編譯nginx

     ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/home/wangzh/fastdfs-nginx-module/src
    
    image-20200430094032569.png
  • 編譯

    make
    
    image-20200430094724626.png

在編譯時報錯,我們只需要修改obj/MakeFile就可以了萨螺。先找到該文件

image-20200430095034940.png

編輯該文件

image-20200430095213854.png

將圖中選中部分刪除窄做,重新make

image-20200430095311786.png
  • 安裝

    make install
    
  • 配置nginx整合fastdfs-module模塊

    找到nginx產(chǎn)生的配置文件

    image-20200430095533393.png

    修改文件,增加一個server

    server {
      listen       8000;
      server_name  localhost;
      
        #域名中包含 group 交給 ngx_fastdfs_module 處理
        location ~/group([0-9])/ {
            ngx_fastdfs_module;
        }
    
        location / {
            root   html;
            index  index.html index.htm;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    
    }
    
  • 啟動

    nginx # 啟動
    nginx -s stop # 停止
    nginx -s reload # 重新加載配置
    
    image-20200430100622105.png
  • 訪問nginx

    image-20200430101135276.png
  • 訪問我們先前上傳的文件

    http://192.168.169.134:8000/group1/M00/00/00/wKiphl6pa1-ARR-tAAAABRnOxBs74.html
    
    image-20200430104836958.png

    完美慰技。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末椭盏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吻商,更是在濱河造成了極大的恐慌掏颊,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艾帐,死亡現(xiàn)場離奇詭異乌叶,居然都是意外死亡改化,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門枉昏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陈肛,“玉大人,你說我怎么就攤上這事兄裂【浜担” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵晰奖,是天一觀的道長谈撒。 經(jīng)常有香客問我,道長匾南,這世上最難降的妖魔是什么啃匿? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮蛆楞,結(jié)果婚禮上溯乒,老公的妹妹穿的比我還像新娘。我一直安慰自己豹爹,他們只是感情好裆悄,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著臂聋,像睡著了一般光稼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孩等,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天艾君,我揣著相機與錄音,去河邊找鬼肄方。 笑死冰垄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扒秸。 我是一名探鬼主播播演,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼冀瓦,長吁一口氣:“原來是場噩夢啊……” “哼伴奥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起翼闽,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拾徙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后感局,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尼啡,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡暂衡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了崖瞭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狂巢。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖书聚,靈堂內(nèi)的尸體忽然破棺而出唧领,到底是詐尸還是另有隱情,我是刑警寧澤雌续,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布斩个,位于F島的核電站,受9級特大地震影響驯杜,放射性物質(zhì)發(fā)生泄漏受啥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一鸽心、第九天 我趴在偏房一處隱蔽的房頂上張望滚局。 院中可真熱鬧,春花似錦顽频、人聲如沸核畴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谤草。三九已至,卻和暖如春莺奸,著一層夾襖步出監(jiān)牢的瞬間丑孩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工灭贷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留温学,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓甚疟,卻偏偏與公主長得像仗岖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子览妖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容