分佈式文件系統mfs(moosefs)搭建與配置

一、MFS 特性:
1. Free(GPL)
2. 通用文件系統,不需要修改上層應用就可以使用
3. 可以在線擴容,體系架構可伸縮性極強。
4. 部署簡單。
5. 高可用,可設置任意的文件冗餘程度(提供比 raid1+0 更高的冗餘級別,而絕對不會影響讀或寫的性能,只會加速)
6. 可回收在指定時間內刪除的文件( “ 回收站 ” 提供的是系統級別的服務,不怕誤操作了,提供類似 oralce 的閃回等高級 dbms 的即時回滾特性)
7. 提供 netapp,emc,ibm 等商業存儲的 snapshot 特性。(可以對整個文件甚至在正在寫入的文件創建文件的快照)
8. google filesystem 的一個 c 實現。
9. 提供 web gui 監控接口。
10. 提高隨機讀或寫的效率。
11. 提高海量小文件的讀寫效率。
可能的瓶頸:
1. master 本身的性能瓶頸。mfs 系統 master 存在單點故障如何解決?

moosefs+drbd+heartbeat來保證 master 單點問題?不過在使用過程中不可能完全不關機和間歇性的網絡中斷!
2. 體系架構存儲文件總數的可遇見的上限。(mfs 把文件系統的結構緩存到 master 的內存中,文件越多,master 的內存消耗越大,8g 對應 2500w 的文件數,2 億文件就得 64GB 內存 )。
master 服務器 CPU 負載取決於操作的次數,內存的使用取決於文件和文件夾的個數。
二、MFS 文件系統結構:
包含 4 種角色:
管理服務器 managing server (master)
元數據日誌服務器 Metalogger server(Metalogger)
數據存儲服務器 data servers (chunkservers)
客戶機掛載使用 client computers

各種角色作用:
1. 管理服務器:負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復,多節點拷
貝。
2. 元數據日誌服務器: 負責備份 master 服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在 master server 出問題的時候接替其進行工作。
3. 數據存儲服務器:負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸。
4. 客戶端:通過 fuse 內核接口掛接遠程管理服務器上所管理的數據存儲服務器,看起來共享的文件系統和本地 unix 文件系統使用一樣的效果。

原始的讀/寫速度很明顯是主要取決於所使用的硬盤的性能、網絡的容量和拓撲結構的,使用的硬
盤和網絡的吞吐量越好,整個系統的性能也就會越好。

三、MFS部署:

實驗環境: 172.25.44.1    server1.example.com    Master

                        172.25.44.2    server2.example.com    Chunkserver

                        172.25.44.3    server3.example.com    Chunkserver

                        172.25.44.4    server4.example.com    Client

                        iptables selinux disabled

(1)Master安裝與配置:

    [root@server1 ~]# yum install -y rpm-build

    [root@server1 ~]# rpmbuild -tb moosefs-3.0.80-1.tar.gz
    error: File /root/moosefs-3.0.80.tar.gz: No such file or directory
    [root@server1 ~]# ln -s moosefs-3.0.80-1.tar.gz moosefs-3.0.80.tar.gz
    [root@server1 ~]# rpmbuild -tb moosefs-3.0.80.tar.gz

    error: Failed build dependencies:
    fuse-devel is needed by moosefs-3.0.80-1.x86_64
    zlib-devel is needed by moosefs-3.0.80-1.x86_64
    libpcap-devel is needed by moosefs-3.0.80-1.x86_64

    注意:需要解決的依賴性有fuse-devel zlib-devel libpcap-devel gcc ,沒有安裝包的需要自己去官網下載。解決依賴性後執行:

    [root@server1 ~]# rpmbuild -tb moosefs-3.0.80.tar.gz     ##進行rpmbuild編譯

    [root@server1 ~]# cd rpmbuild/RPMS/x86_64/

    wKiom1fc-0WRmjBQAABZI7z1qvk042.png

    [root@server1 x86_64]# yum install moosefs-cgi-3.0.80-1.x86_64.rpm moosefs-cgiserv-    3.0.80-1.x86_64.rpm moosefs-master-3.0.80-1.x86_64.rpm moosefs-cli-3.0.80-1.x86_64.rpm moosefs-netdump-3.0.80-1.x86_64.rpm -y

    [root@server1 x86_64]# rpm -ql moosefs-cgi
   
 /usr/share/doc/moosefs-cgi-3.0.80
    /usr/share/doc/moosefs-cgi-3.0.80/NEWS
    /usr/share/doc/moosefs-cgi-3.0.80/README
    /usr/share/mfscgi
    /usr/share/mfscgi/acidtab.js
    /usr/share/mfscgi/chart.cgi
    /usr/share/mfscgi/err.gif
    /usr/share/mfscgi/favicon.ico
    /usr/share/mfscgi/index.html
    /usr/share/mfscgi/logomini.png
    /usr/share/mfscgi/mfs.cgi
    /usr/share/mfscgi/mfs.css
    [root@server1 x86_64]# ll /usr/share/mfscgi/*.cgi
   
 -rwxr-xr-x 1 root root   2542 Sep 18 00:01 /usr/share/mfscgi/chart.cgi
    -rwxr-xr-x 1 root root 318727 Sep 18 00:01 /usr/share/mfscgi/mfs.cgi

    注意:*.cgi要加執行權限

    啓動服務:(注意:不是在/etc/init.d下啓動)

    [root@server1 x86_64]# mfsmaster
    
open files limit has been set to: 16384
    working directory: /var/lib/mfs
    lockfile created and locked
    initializing mfsmaster modules ...
    exports file has been loaded
    topology file has been loaded
    loading metadata ...
    metadata file has been loaded
    no charts data file - initializing empty charts
    master <-> metaloggers module: listen on *:9419
    master <-> chunkservers module: listen on *:9420
    main master server module: listen on *:9421
    mfsmaster daemon initialized properly
    [root@server1 x86_64]# mfscgiserv
   
 lockfile created and locked
    starting simple cgi server (host: any , port: 9425 , rootpath: /usr/share/mfscgi)
    訪問:

    訪問172.25.44.1:9425

    wKioL1fc_F2BmrUYAABumVj1Sl0813.png

    加解析:

    wKioL1fc_Iny2eOTAAAxnm6qb28496.png

    再次訪問:

    wKiom1fc_KST5GSkAADivBgolLQ614.png

    (2)Chunkserver設置:

        安裝軟件:

        wKiom1fc_qzgePUtAABBOO0kybA253.png

        [root@server2 ~]# yum install -y *

    修改配置文件:

    [root@server2 ~]# vim /etc/mfs/mfshdd.cfg

        wKioL1fc_xuS9a8qAAApHQLOFIw500.png

        [root@server2 ~]# mkdir /mnt/chunk1    #設置共享點

        啓動服務:

    [root@server2 ~]# mfschunkserver
    open files limit has been set to: 16384
    working directory: /var/lib/mfs
    lockfile created and locked
    setting glibc malloc arena max to 8
    setting glibc malloc arena test to 1
    initializing mfschunkserver modules ...
    hdd space manager: can't create lock file '/mnt/chunk1/.lock': EACCES (Permission denied)
    hdd space manager: no hdd space defined in /etc/mfs/mfshdd.cfg file
    init: hdd space manager failed !!!
    error occurred during initialization - exiting

    權限限制,在啓動chunk server前,需確保用戶mfs有權限讀寫將要被掛載的分區

    [root@server2 ~]# chown mfs.mfs /mnt/chunk1/

    [root@server2 ~]# mfschunkserver
    open files limit has been set to: 16384
    working directory: /var/lib/mfs
    lockfile created and locked
    setting glibc malloc arena max to 8
    setting glibc malloc arena test to 1
    initializing mfschunkserver modules ...
    hdd space manager: path to scan: /mnt/chunk1/
    hdd space manager: start background hdd scanning (searching for available chunks)
    main server module: listen on *:9422
    master connection module: can't resolve master host/port (mfsmaster:9420)
    init: master connection module failed !!!
    error occurred during initialization - exiting

    修改解析(在Master後加上mfsmaster)
    wKiom1fdAEXRmlRAAAAxJiAmtno256.png

    [root@server2 ~]# mfschunkserver
    open files limit has been set to: 16384
    working directory: /var/lib/mfs
    lockfile created and locked
    setting glibc malloc arena max to 8
    setting glibc malloc arena test to 1
    initializing mfschunkserver modules ...
    hdd space manager: path to scan: /mnt/chunk1/
    hdd space manager: start background hdd scanning (searching for available chunks)
    main server module: listen on *:9422
    no charts data file - initializing empty charts
    mfschunkserver daemon initialized properly
    在另外一個Chunkserver做相同的操作(只改變共享點/mnt/chunk2)

    訪問:

    wKiom1fdAbeQdcopAAE6DEEeU8Q588.png

    

    (3)Client端設置:

    解析,在Master後面加上mfsmaster

    [root@server4 ~]# yum install -y moosefs-client-3.0.80-1.x86_64.rpm

    [root@server4 ~]# vim /etc/mfs/mfsmount.cfg    #設置掛載點

    /mnt/mfs

    [root@server4 ~]# mkdir /mnt/mfs        #創建掛載點

    [root@server4 ~]# mfsmount         #掛載
    mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
    [root@server4 ~]# df -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root  6.7G  880M  5.5G  14% /
    tmpfs                         499M     0  499M   0% /dev/shm
    /dev/sda1                     485M   33M  427M   8% /boot
    mfsmaster:9421                 13G  2.3G   11G  18% /mnt/mfs

    刷新網頁:

    wKioL1fdA6Gh8KsqAACIBd7UpHs927.png


    測試:

    在/mnt/mfs創建兩個目錄,並設置其文件存儲份數。

    [root@server4 ~]# cd /mnt/mfs/

    [root@server4 mfs]# mkdir dir1 dir2

    設置文件存儲份數,dir1爲2,dir2爲1

    wKioL1fdBZeCEtnjAABnZgDVFus850.png

    拷貝文件,查看信息:

    wKiom1fdBhOyhZ9cAABSLBp24b8801.png

    wKioL1fdBkWDX0o4AABF3oZSK5Q604.png

    關閉一個chunkserver(172.25.44.3)後,查看信息:

    wKiom1fdBqSQd1kwAABftiIYeLI744.png

    chunkserver重新啓動後,恢復正常:

    wKioL1fdBt3RdRscAAB5oaJ4F5o030.png

    恢復垃圾箱文件:

    誤刪:

    [root@server4 mfs]# rm -fr /mnt/mfs/dir2/fstab

    [root@server4 mfs]# mfsgettrashtime dir2    #查看垃圾箱中文件的保留時間
    dir2: 86400        ##86400s=1day
    [root@server4 mfs]# mkdir /mnt/mfsdeta    #創建目錄

    [root@server4 ~]# ll -d /mnt/mfsdeta/
    drwxr-xr-x 2 root root 4096 Sep 19 18:40 /mnt/mfsdeta/
    [root@server4 ~]# mfsmount -m /mnt/mfsdeta/    #掛載
    mfsmaster accepted connection with parameters: read-write,restricted_ip

    wKioL1ffU0jSuq_TAADLbVq7R_w425.png        [root@server4 ~]# cd /mnt/mfsdeta/
    [root@server4 mfsdeta]# ls

    sustained  trash
    [root@server4 mfsdeta]# cd trash/

    [root@server4 trash]# find -type f
    ./006/00000006|dir2|fstab
    [root@server4 trash]# mv ./006/00000006\|dir2\|fstab undel/    #恢復誤刪文件
    [root@server4 trash]# ls /mnt/mfs/dir2/
    fstab

    


    

    



    


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章