在做分布式文件存储的时候,常常用到两个工具,Rsync和FastDFS;这两者本质的区别在于前者的实时性相面相对较差,需要手工编写脚本同步,然后在放到定时任务(cron)中;FastDFS自动实现同组内机器互备;

Rsync架构

Rsync分为客户端和服务器端,客户端主要负责和服务器通信,获取最新的文件;这里的机制和FastDFS有区别,因为没有实时性,所以Rsync在同步的时候,会将服务器端所有的文件都比对一遍,发现有变化才会将变化的文件同步过来,如果添加了—delete指令,还会将服务器端删除的文件在客户端也删除;FastDFS因为是实时同步的,所以只要有变化,便会通知各个组内的服务器进行同步,所以他的更新机制不是逐个比对,同步的效率会更高;

客户端只有一个配置文件:rsyncd.secrets(文件名和路径可以自定义,因为是需要客户端执行的时候作为参数传递的),这个配置文件配置了登录的密码(只有密码),用户名是在指定的时候通过参数指定的;

服务器端有三个配置文件:

  1. Rsyncd.conf:核心的配置文件,这里面配置了监听的ip以及port,allow/deny host(客户端IP),log info,file block(提供同步的文件信息)以及ref files info(下面将要提到的security以及motd文件);
  2. Rsyncd.security:里面定义了user/pwd键值对,用于验证连接的客户端身份;可以定义多个;
  3. Rsync.motd:这个文件就是定义客户端连接服务器端的时候,显示的友好文字,可以清空或者自定义一些文字;

有一点需要注意,就是需要服务器点打开873端口(默认Rsync监听端口)

iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT

FastDFS

FastDFS是我国的淘宝工程师开发的,是属于轻量级的分布式文件系统;实现物理存储的水平扩展,他和HDFS最大的差别在于并不会对文件进行切割(切片存储),所以比较适用于小文件的存储;FastDFS里面有两个核心组件:Tracker Server以及Storage Server,前者用于记录文件索引,后者用于存储文件;tracker server和storeage Server是松散耦合,如果是扩容物理存储,只要增加一台机器,配置称为storage Server,指向一台Tracker server,Tracker Server就会记录新增容的服务器;因为storage将会根据配置的tracker ip以及端口,向Tracker服务器发送通知,I'm in!

一个storage server里面可以包含N个Group,每个Group里面可以包含N个Storage,每个Storage都是一个存储空间,同一个组内的Storage是互相备份关系,上面也提到了,是那种增量式的备份;一个新的storage首次和tracker通信:

  1. tracker首先会将storage Server List同步给new storage,然后在给其他old storage发送最新的列表,这样完成了新列表全group内通知,并设置new storage状态为FDFS_STORAGE_STATUS_INIT;
  2. 接着,tracker将会指定一个old Storage服务器与之同步,并同时这是new storage状态为FDFS_STORAGE_STATUS_WAIT_SYNC(如果没有文件需要更新,设置为FDFS_STORAGE_STATUS_ONLINE),一次性将所有的文件同步到new storage上面,同步完毕后,状态将会设置为FDFS_STORAGE_STATUS_ONLINE;
  3. 同步数据完毕后,new storage首次发送心跳给tracker server的时候,tracker server会将其状态设置为FDFS_STORAGE_STATUS_ACTIVE;
  4. 一个Group的存储空间是这一组机器中存储容量最小的那台机器;访问流程是客户端配置为访问一台Tracker,有这台Tracker来负责跟进文件名来确定分配那一台机器给客户单使用,客户端再向返回的storage server发送文件请求;但是安全性需要考虑;

当你需要获取/上传一个文件的时候,首先和tracker进行通信(上传不需要参数,下载需要提供文件名称,这个文件名称是当初上传的时候有FastDFS生成的),tracker中选择一个可用的storage返回,然后你在和这个storage服务器通信获取文件。

Rsync和FastDFS的更多相关文章

  1. FastDFS文件系统(二) fastdfs和其他文件系统区别

    FastDFS文件系统(二) fastdfs和其他文件系统区别 一.概述 普通存储方案:Rsync.DAS(IDE/SATA/SAS/SCSI等块).NAS(NFS.CIFS.SAMBA等文件系统). ...

  2. rsync是类unix系统下的数据镜像备份工具

    http://baike.baidu.com/view/1183189.htm   Ubuntu安装: sudo apt-get install rsync RedHat: yum install r ...

  3. 利用Inotify和Rsync将webproject文件自己主动同步到多台应用server

    背景:须要搭建一套跟线上一模一样的环境,用来预公布,这是当中的web分发的一个小模块的实现过程. 1 工具以及环境简单介绍 1.1,Inotify工具 Inotify,它是一个内核用于通知用户空间程序 ...

  4. 【架构设计】分布式文件系统 FastDFS的原理和安装使用

    本文地址 分享提纲: 1.概述 2. 原理 3. 安装 4. 使用 5. 参考文档 1. 概述 1.1)[常见文件系统] Google了一下,流行的开源分布式文件系统有很多,介绍如下:   -- mo ...

  5. rsync 笔记之 list

    通过 rsync --list-only 可以列出可用的 文件/目录或者 module 下面两者的含义是完全不同的: rsync --list-only root@192.168.4.140: 使用系 ...

  6. FASTDFS调研报告(V1.0)

    之前的文章,现在放出来,以供参阅. 一.fastdfs简介 FastDFS是一个轻量级的开源分布式文件系统 FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡 Fas ...

  7. 网站文件系统发展&&分布式文件系统fastDFS

    网站文件系统发展 1.单机时代的图片服务器架构 初创时期由于时间紧迫,开发人员水平也很有限等原因.所以通常就直接在website文件所在的目录下,建立1个upload子目录,用于保存用户上传的图片文件 ...

  8. FastDFS 安装及使用

    FastDFS 安装及使用 2012-11-17 13:10:31|  分类: Linux|举报|字号 订阅     Google了一下,流行的开源分布式文件系统有很多,介绍如下:   mogileF ...

  9. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

随机推荐

  1. DHTMLX 前端框架 建立你的一个应用程序教程(三)--添加一个菜单

    菜单的介绍 这篇我们介绍将菜单组建添加到上节中的布局中: 我们不对菜单做任何处理  只是在这里填充作为界面的一部分. 这里我们介绍的是dhtmlxMenu 组件. 这个组件的数据我们可以从XML或者J ...

  2. Android 自定义View修炼-【2014年最后的分享啦】Android实现自定义刮刮卡效果View

    一.简介: 今天是2014年最后一天啦,首先在这里,我祝福大家在新的2015年都一个个的新健康,新收入,新顺利,新如意!!! 上一偏,我介绍了用Xfermode实现自定义圆角和椭圆图片view的博文& ...

  3. c结构体初始化问题

    结构体中的数组的初始化问题 我的代码 C/C++ code #include <stdio.h> #include <stdlib.h> struct a { int leng ...

  4. 如何在Linux上安装Storm

    Storm是开源的分布式实时计算系统,能够让数据流处理变得简单.可靠,也因此在大数据领域有广泛的实际 应用.下面介绍一下如何在Linux系统上安装Storm.根据Storm官网介绍,安装Storm软件 ...

  5. iOS应用审核的通关秘籍

    磨刀不误砍柴工.作为手机应用开发者,你需要向应用商店提交应用审核,迅速通过审核可以让你抢占先机.对苹果iOS应用开发者来说尤其如此.苹果应用商店的审核近乎吹毛求疵,下面这些清单可以让你知道苹果会在哪些 ...

  6. C#后台验证身份证号码的一个方法

    简单的调用了正则表达式进行简单的验证,记下来留着以后备用 if ((!Regex.IsMatch(txtID.Text, @"^(^\d{15}$|^\d{18}$|^\d{17}(\d|X ...

  7. JavaScript如何获得Select下拉框选中的值

    js代码: var mySelect = document.getElementById("resultList2"); var mySelectText = mySelect.o ...

  8. ASP.net程序在本地操作正确,新电脑不正确的处理经验

    一.可能是计算机操作系统位数不兼容的问题,如下处理后即可.

  9. linux下神奇的script命令

    script 是一个神奇命令,script 能够将终端的会话过程录制下来,然后使用 scriptreplay 就可以将其录制的结果播放给他人观看.script 的好处就在于你在终端中的所有操作.敲过的 ...

  10. ADB操作多台设备

    1.adb devices 查看所有连接设备. 2.adb -s <设备名> shell 指定device来执行adb shell. 3.adb -s <设备名> <指令 ...