在做分布式文件存储的时候,常常用到两个工具,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. dubbox开发rest+json指南【转】

    http://dangdangdotcom.github.io/dubbox/rest.html 目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 RE ...

  2. Windows Mobile 6.0 SDK和中文模拟器下载

    [转] Windows Mobile 6.0 SDK和中文模拟器下载 Windows Mobile 6.5 模拟器 2010年12月06日 星期一 07:48 转载自 zhangyanle86 终于编 ...

  3. java05

    RGB(红绿蓝)- 全0就是黑色,全是最高255就是白色. //第一步类 package cn.bjsxt.test; import java.awt.Color; import java.awt.F ...

  4. core dump + LINUX 内核系列博客

    参考:http://www.cnblogs.com/ahuo/category/72819.html http://blog.csdn.net/tenfyguo/article/details/815 ...

  5. The Tangled Web (Web之困)第四章 摘要

    1. HTML语法: 由Tag组成层级结构,标签视为名,而值插在当中. 关键组成符:<, >, ', ", & 2. 解析模式: 文件开头<!DOCTYPE> ...

  6. SVN源代码泄露

    1. 联想b2b站SVN源代码泄露 开启Firefox,输入:b2b.thinkworldshop.com.cn/.svn/entries Webserver返回如下信息:

  7. BigInteger和BigDecimal大数相加问题

    package cn.hncu.big; import java.math.BigDecimal; public class BigDecimalDemo { public static void m ...

  8. IP地址基础知识

    IP地址基础知识 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 一 OSI/RM模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 二 TCP/IP模型 数据链路层( ...

  9. iOS9.0之后不支持http请求解决方案

    打开info.plist文件,添加关键字 NSAppTransportSecurity 类型 Dictionary 在 NSAppTransportSecurity 下添加关键字 NSAllowsAr ...

  10. 移动端和PC端通用的三级导航菜单栏

    免责声明: 本博客发布的所有信息资料都将尽可能注明出处.作者及日期,本人无意侵犯他人相关权益,如无意中侵犯了哪个媒体或个人的权益或知识产权,请留言或来信告之,本人将立即给予删除. Demo下载地址:h ...