阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MogileFS分布式文件系统搭建详解

469次阅读
没有评论

共计 10484 个字符,预计需要花费 27 分钟才能阅读完成。

MogileFS 是一套开源的分布式存储软件,适用于存储海量小文件。由 tracker,mogstore,database 三个部分组成。
Tracker:它通过数据库来保存元数据信息,包括站点 domain、class、host 等;主要功能包括监控后端 Storage 节点,及指示 Storage 节点完成数据的添加、删除、查询,及节点之间数据的复制等。
mogstored 实际存储数据的位置,默认监听在 7500 端口,接受客户端的文件存储请求。
database:用来做数据 key  value 映射,可用 mysql,还保存节点设置的全局信息

MogileFS 工作流程图:

MogileFS 分布式文件系统搭建详解

实验环境 tracker 节点 martin
storage 节点 martin lucia

部署 Tracker Nodes
[root@martin ~]# yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
 
cpan 
          install MogileFS::Server
          install MogileFS::Utils
 
———————————————————————-
—- Unsatisfied dependencies detected during —-
—-  DORMANDO/MogileFS-Server-2.72.tar.gz  —-
    MogileFS::Client [requires]
    Sys::Syscall [requires]
    Perlbal [requires]
    Test::More [requires]
    Net::Netmask [requires]
    Danga::Socket [requires]
    IO::AIO [requires]
 
—- Unsatisfied dependencies detected during —-
—-  DORMANDO/MogileFS-Client-1.17.tar.gz  —-
    IO::WrapTie [requires]
    Test::More [requires]
—- Unsatisfied dependencies detected during —-
—-      DORMANDO/Perlbal-1.80.tar.gz      —-
    Danga::Socket [requires]
    BSD::Resource [requires]
—- Unsatisfied dependencies detected during —-
—-        MLEHMANN/IO-AIO-4.34.tar.gz      —-
    Canary::Stability [build_requires]
  DORMANDO/MogileFS-Server-2.72.tar.gz
  /usr/bin/make install  — OK

#Sys::Syscall 的 0.25 版本 数据副本只能保存一份  需要降级到 0.23
 
[root@martin ~]# wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
[root@martin ~]# tar xf Sys-Syscall-0.23.tar.gz 
[root@martin ~]# cd Sys-Syscall-0.23
[root@martin Sys-Syscall-0.23]# perl Makefile.PL 
[root@martin Sys-Syscall-0.23]# make && make install

 初始化数据库:
12345678 mysql> create database mogilefs;
Query OK, 1 row affected (0.02 sec)
 
mysql> grant all on mogilefs.* to ‘mogilefs’@’192.168.*.*’ identified by ‘222222’;
Query OK, 0 rows affected (0.01 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

1 [root@martin ~]# mogdbsetup –dbhost=192.168.1.222 –dbname=mogilefs –dbuser=mogilefs –dbpass=222222  –dbrootpass=123321

12345678910111213141516171819202122 mysql> show tables;
+———————-+
| Tables_in_mogilefs  |
+———————-+
| checksum            |
| class                |
| device              |
| domain              |
| file                |
| file_on              |
| file_on_corrupt      |
| file_to_delete      |
| file_to_delete2      |
| file_to_delete_later |
| file_to_queue        |
| file_to_replicate    |
| fsck_log            |
| host                |
| server_settings      |
| tempfile            |
| unreachable_fids    |
+———————-+

添加启动用户:(只能以普通用户)

[root@martin ~]# useradd -r mogilefs

配置文件:
[root@martin Sys-Syscall-0.23]# mkdir /etc/mogilefs
[root@martin Sys-Syscall-0.23]# cd /etc/mogilefs

[root@martin mogilefs]# vim mogilefsd.conf
daemonize = 1              #是否在后台以守护进程运行
pidfile = /var/run/mogilefsd/mogilefsd.pid
db_dsn = DBI:mysql:mogilefs:host=localhost;port=3306;mysql_connect_timeout=5  #连接数据库的信息
db_user = mogilefs          #数据库上的用户名
db_pass = mogilefs          #用户名对应的密码
listen = 0.0.0.0:7001      #监听的地址和端口
conf_port = 7001            #配置接口
query_jobs = 10            #用于查询的进程数 可调大  看需求
delete_jobs = 1            #用于删除操作的进程数 可调大  看需求
replicate_jobs = 5          #用于复制的进程数 可调大  看需求
reaper_jobs = 1            #用于回收资源的进程数 可调大  看需求

运行时目录:
[root@martin mogilefs]# mkdir /var/run/mogilefsd
[root@martin mogilefs]# chown -R mogilefs /var/run/mogilefsd

启动脚本:
[root@martin mogilefs]# su – mogilefs -c “mogilefsd -c /etc/mogilefs/mogilefsd.conf –daemon”

[root@martin mogilefs]# ss -lntup|grep 7001
tcp    LISTEN    0      128                    *:7001                  *:*      users:((“mogilefsd”,41047,6))

部署 Storage Nodes

yum -y install make gcc unzip perl perl-CPAN perl-YAML perl-Time-HiRes  perl-DBD-MySQL 
 
cpan         
              install MogileFS::Server    #其中依赖自动解决
              install MogileFS::Utils

#Sys::Syscall 的 0.25 版本 数据副本只能保存一份  需要降级到 0.23
 
[root@martin ~]# wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.23.tar.gz
[root@martin ~]# tar xf Sys-Syscall-0.23.tar.gz 
[root@martin ~]# cd Sys-Syscall-0.23
[root@martin Sys-Syscall-0.23]# perl Makefile.PL 
[root@martin Sys-Syscall-0.23]# make && make install

if /etc/mogilefs/ not exist
1 [root@lucia ~]# mkdir /etc/mogilefs/

if user mogilefs not exist
1 [root@lucia ~]# useradd -r  mogilefs

[root@martin mogilefs]# vim /etc/mogilefs/mogstored.conf

maxconns = 10000  #最大并发连接数
httplisten = 0.0.0.0:7500  #http 监听的地址
mgmtlisten = 0.0.0.0:7501  #管理接口监听地址
docroot =/mydata/mogilefs/data    #用于存储的目录

[root@martin mogilefs]# mkdir /mydata/mogilefs/data -p
[root@martin mogilefs]# chown -R mogilefs.mogilefs /mydata/mogilefs/

启动脚本:
[root@martin mogilefs]# su – mogilefs -c “mogstored -c /etc/mogilefs/mogstored.conf –daemon”
 
[root@martin mogilefs]# ss -lntup |grep 7500
tcp    LISTEN    0      128                    *:7500                  *:*      users:((“mogstored”,41190,4))
 
[root@martin mogilefs]# ss -lntup |grep 7501
tcp    LISTEN    0      128                    *:7501                  *:*      users:((“mogstored”,41190,9))

 

Tracker Nodes
[root@martin mogilefs]# mogadm  –trackers=192.168.1.222:7001 check
 
Checking trackers…
  192.168.1.222:7001 … OK
Checking hosts…
No devices found on tracker(s).

123456 [root@martin mogilefs]# mogadm check
Checking trackers…
  127.0.0.1:7001 … OK
 
Checking hosts…
No devices found on tracker(s).

12345678 [root@martin ~]# mogstats -h
Usage:
    mogstats –db_dsn=”DBI:mysql:mfs:host=mfshost” –db_user=”mfs”
            –db_pass=”mfs” –verbose –stats=”devices,files”
    mogstats –stats=”all”
    mogstats [all options in ~/.mogilefs.conf]
 
valid stats: all, delete-queue, devices, domains, fids, files, general-queues, replication, replication-queue

为 trackers 添加 mysql 信息
[root@martin ~]# vim .mogilefs.conf  #家目录下
 
–db_dsn=”DBI:mysql:mogilefs:host=192.168.1.222″
–db_user=”mogilefs”
–db_pass=”222222″
–verbose 
–stats=”devices,files”

添加主机 node1 node2:

[root@martin ~]# mogadm  –trackers=192.168.1.222:7001 host add node1 –ip=192.168.1.222 –status=alive
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001 host add node2 –ip=192.168.1.223 –status=alive

查看添加主机:
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001 host list
node1 [1]: alive
  IP:      192.168.1.222:7500
node2 [2]: alive
  IP:      192.168.1.223:7500

为节点添加设备 列出设备:

[root@martin ~]# mogadm  –trackers=192.168.1.222:7001  device add node1 001  #001 设备 id  不可重用
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001  device add node2 002
 
[root@martin ~]# mogadm  –trackers=192.168.1.222:7001  device list
node1 [1]: alive
                    used(G)    free(G)  total(G)  weight(%)
  dev1:  alive      0.000      0.000      0.000        100
node2 [2]: alive
                    used(G)    free(G)  total(G)  weight(%)
  dev2:  alive      0.000      0.000      0.000        100

创建对应设备 dev
[root@martin ~]# cd /mydata/mogilefs/data
[root@martin data]# mkdir dev1
[root@martin data]# chown -R mogilefs.mogilefs dev1/
 
[root@lucia ~]# cd /mydata/mogilefs/data/
[root@lucia data]# mkdir dev2
[root@lucia data]# chown -R mogilefs.mogilefs dev2/

创建 domain:
[root@martin ~]# mogadm –trackers=martin:7001 domain add files
 
[root@martin ~]# mogadm –trackers=martin:7001 domain list
domain              class                mindevcount  replpolicy  hashtype  #默认最小副本个数 2
——————– ——————– ————- ———— ——-
 files                default                  2        MultipleHosts() NONE

上传文件

[root@martin ~]# mogupload  –trackers=martin:7001 –domain=files –key=’/install.log’ –file=’install.log’
[root@martin ~]# moglistkeys –trackers=martin:7001 –domain=files
/install.log

[root@martin Sys-Syscall-0.23]# mogfileinfo –trackers=martin:7001 –domain=files –key=’/install.log’
– file: /install.log
    class:              default
  devcount:                    2
    domain:                files
      fid:                    4
      key:        /install.log
    length:                21712
 – http://192.168.1.223:7500/dev2/0/000/000/0000000004.fid
 – http://192.168.1.222:7500/dev1/0/000/000/0000000004.fid

MogileFS 分布式文件系统搭建详解

存储节点下线设置

[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host mark node2 down
 
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host mark node2 down
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host list
node1 [1]: alive
  IP:      192.168.1.222:7500
node2 [2]: down
  IP:      192.168.1.223:7500
 
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 device list
node1 [1]: alive
                    used(G)    free(G)  total(G)  weight(%)
  dev1:  alive      0.375      2.428      2.803        100
 
node2 [2]: down
                    used(G)    free(G)  total(G)  weight(%)
  dev2:  alive      0.239      2.563      2.803        100

上线:
[root@martin Sys-Syscall-0.23]# mogadm –trackers=192.168.1.222:7001 host mark node2 alive

class 设置:
123456 [root@martin mogilefs]# mogadm –trackers=martin:7001 class add files class0 –mindevcount=2
[root@martin mogilefs]# mogadm –trackers=martin:7001 class list               
 domain              class                mindevcount  replpolicy  hashtype
——————– ——————– ————- ———— ——-
 files                class0                    2        MultipleHosts() NONE   
 files                default                  2        MultipleHosts() NONE

结合 nginx 实现反向代理:

nginx_mogilefs_module-1.0.4 下载地址

Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是 www.linuxidc.com

具体下载目录在 /2016 年资料 / 6 月 /10 日 /MogileFS 分布式文件系统搭建详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

FileMD5SHA1
nginx_mogilefs_module-1.0.4.tar.gz2466aa02b225ad2aa1af22e6e50a9d2f4f6b774096a77aa8c550d8fd6a3f5d39a661d8ed
nginx_mogilefs_module-1.0.4.zip4667d8b805aa4ecc94c7353d79a1020a8d86fa4f0fcb60cdd73195f77fbadf45ac51a875

[root@marvin nginx-1.6.3]# ./configure  –prefix=/usr/local/nginx1.6.3    \
–error-log-path=/var/log/nginx/error.log  \
–http-log-path=/var/log/nginx/access.log  \
–pid-path=/var/run/nginx/nginx.pid    \
–lock-path=/var/lock/nginx.lock  \
–with-http_ssl_module \
–with-http_flv_module  \
–with-http_stub_status_module  \
–with-http_gzip_static_module  \
–http-client-body-temp-path=/var/tmp/nginx/client/  \
–http-proxy-temp-path=/var/tmp/nginx/proxy/  \
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi/  \
–http-uwsgi-temp-path=/var/tmp/nginx/uwsgi  \
–http-scgi-temp-path=/var/tmp/nginx/scgi  \
–with-pcre \
–user=nginx  \
–group=nginx \
–add-module=/tools/nginx_mogilefs_module-1.0.4 |tee /tmp/nginx.out

[root@marvin extra]# vim /usr/local/nginx/conf/nginx.conf
# 添加
 upstream trackers {
    server martin:7001 weight=1;
    server lucia:7001  weight=1;
    }
 
 
[root@marvin extra]# vim /usr/local/nginx/conf/extra/demo.conf 
# 添加
        location /file {
                mogilefs_tracker trackers;
#              mogilefs_tracker 192.168.1.222:7001;
                mogilefs_domain files;
                mogilefs_pass {
                        proxy_pass $mogilefs_path;
                        proxy_hide_header Content-Type;
                        proxy_buffering off;
                }
        }

上传图片:

[root@martin ~]# mogupload  –trackers=martin:7001 –domain=files –key=’/kuli.png’ –file=’kuli.png’

MogileFS 分布式文件系统搭建详解

over

MogileFS 设置 Memcached http://www.linuxidc.com/Linux/2012-03/56905.htm

在 MogileFS 中使用 Nginx http://www.linuxidc.com/Linux/2012-03/56904.htm

在开源分布式文件系统 MogileFS 中使用 Nginx http://www.linuxidc.com/Linux/2012-03/56573.htm

分布式文件系统 MogileFS 的使用 http://www.linuxidc.com/Linux/2015-09/122947.htm

自定义 Nagios 监控 MogileFS 存储节点脚本 http://www.linuxidc.com/Linux/2011-12/49394.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-06/132160.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10484字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7963231
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...