研究Dropbox Server端文件系统
一、传统文件系统
可以理解成两部分:1、真正的storage区,被分割成n个扇区;2、文件系统,其实就是一个FAT表。
二、Dropbox的文件系统
例如,一个modeo.mov的文件,大小为15M。它的做法是,将其切割,每块的大小<=4M。则切割成b1,b2,b3,b4这四块,然后用SHA-256分别对它们进行hash,产生h1,h2,h3,h4。
Dropbox文件系统中几个重要的field:
USID:userspace id,及每个用户id
Path:和传统文件系统一样,文件路径
Blocklist:一个文件被分割成n块后的hash value list
JID
三、上传和下载这两个UseCase,阐述client与server交互情况
1、角色
Client: UL Client(上传的Client), DL Client(下载的Client)
Dropbox Server: MetadataServer(管理文件的metadata信息,及所属用户),BlockServer(管理文件内容)
2、Upload UseCase
detail see: https://tech.dropbox.com/2014/07/streaming-file-synchronization/
3、Download UseCase
detail see: https://tech.dropbox.com/2014/07/streaming-file-synchronization/
研究Dropbox Server端文件系统的更多相关文章
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- 详解zabbix安装部署(Server端篇)
原文:http://blog.chinaunix.net/uid-25266990-id-3380929.html Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等 ...
- Windows 作为 openssl server端时的处理
1. 跟上一个博客一样, 下载openssh 然后安装时 同时选择 server端. 2. 安装时设置密码 其他默认即可 3. xshell 创建连接. 注意 我使用的是 administrator ...
- 详解zabbix安装部署(Server端篇) (转)
Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员. 今天开始研究下Zabbix,使 ...
- Android实战简易教程-第六十六枪(server端搭建和server端Json数据交互)
学习Android有一段时间了.对server端有非常深的好奇,决定对server端的实现进行一些研究,这里实现了一个简单的小样例,用于获取server端的json数据,样例非常easy,适合刚開始学 ...
- 2.Bacula Server端安装配置
1. Bacula Server端安装配置 1.1. Bacula Server端安装 1.1.1. 安装bacula依赖包 For Centos6: yum install -y mysql ...
- Kafka源码分析(三) - Server端 - 消息存储
系列文章目录 https://zhuanlan.zhihu.com/p/367683572 目录 系列文章目录 一. 业务模型 1.1 概念梳理 1.2 文件分析 1.2.1 数据目录 1.2.2 . ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- Centos6.5 Zabbix3 server端安装(一)
一.准备阶段: 1.>关闭防火墙 /etc/init.d/iptables stop 2.>关闭selinux vim /etc/selinux/config SELINUX=disabl ...
随机推荐
- php对数组排序的例子
分享一个php数组排序的例子,介绍了和php,有关的知识.技巧.经验,和一些php源码等. <?php class='pingjiaF' frameborder='0' src='http:// ...
- 支付宝收款连接 非API
<a href="https://shenghuo.alipay.com/send/payment/fill.htm?_form_token=mMYOrAXfReOtBBCMmoaK7 ...
- Hadoop伪分布式搭建CentOS
所需软件及版本: jdk-7u80-linux-x64.tar.gz hadoop-2.6.0.tar.gz 1.安装JDK Hadoop 在需在JDK下运行,注意JDK最好使用Oracle的否则可能 ...
- Python学习教程(learning Python)--3 Python分支结构和布尔逻辑
本章节主要探讨研究Python下的分支选择结构程序设计问题. if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 ) ...
- oracle11g rman验证备份有效性
RMAN> restore validate controlfile; Starting restore at 21-NOV-13using target database control fi ...
- oracle 修改表空间存储路径
[root@yoon ~]# more /etc/oracle-releaseOracle Linux Server release 5.7 Oracle Database 11g Enterpris ...
- Windows下使用Visual Studio Code搭建Go语言环境
1.安装GO语言 下载地址: https://golang.org/dl/ Windows下直接运行安装GO语言即可. 安装成功. 安装完毕GO语言后,需要添加GOPATH环 ...
- dede 忘记密码在数据库中修改方法
如何找回或修改dedecms后台管理员登录密码呢? 一个客户把密码忘了,找了很长一会没几个靠谱的回答,dede是使用md5加密,但是,它是显示32位md5加密码从第6位开始的20位 方法是直接修改其m ...
- Objective-C中Block语法、Block使用以及通过Block实现数组排序
Block:语法块,本质上是匿名函数(没有名称的函数) 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数 在C++.JS.Swift等语言有类似语法,叫做闭包 Block语法和C语言里的 ...
- CoreLocation简单应用
1.获取locationManager let locationManager: CLLocationManager = CLLocationManager() 2.设置locationManager ...