linux 分布式文件系统
分布式文件系统(DFS)
指文件系统管理的物理存储资源不一定直接连接在本地节点上
而是通过计算机网络与节点相连
分布式文件系统的设计基于客户机/服务器模式
一个典型的网络可能包括多个多个用户访问的服务器
对等特性允许一些系统扮演客户机和服务器的双重角色
分布式文件系统的特点
分布式文件系统可以有效解决数据的存储和管理难题
将固定于摸个地点的某个文件系统,扩展到任意多个地点/多个文件系统
众多的节点组成一个文件系统网络
每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输
使用分布式文件系统时,无需关心数据是存储在哪个节点上
或者是从哪个节点获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据
衡量分布式文件系统的优劣
数据的存储方式
无论采用何种存储方式,目的都是为了保证数据的存储安全和方便获取
数据的读取速率
包括响应用户读取文件的请求,定位数据文件所在的节点,读取实际硬盘中数据文件的时间
不同节点间的数据传输时间以及一部分处理器的处理时间等
数据的安全机制
采取冗余,备份,镜像等方式
常用的分布式文件系统
Lustre
一个大规模的,安全可靠的,具备高可用的集群文件系统,他是由sun公司开发和维护
Hadoop
不仅是一个用于存储的分布式文件系统,而是设计用来在由通过计算机设备组成的大型集群上执行分布式应用的框架
OpenAFS
一套开源的分布式文件系统,允许系统之间通过局域网和广域网来分享档案和资源
googleFS
一个可扩展分布式文件系统,用于大型的,分布式的,对大量数据进行访问的应用
服务器角色
与单机的文件系统不同,分布式文件系统不是将这些数据放在一块硬盘上,由上层操作系统来管理
数据存放在一个服务器集群上,由集群中的服务器各尽其责,通力合作,提供整个文件系统的服务
重要的服务器包括:
主控服务器
数据服务器
主控服务器:
master管理各个数据服务器收集它们的信息,了解所有数据服务器的生存现状
然后给它们分配任务
主控服务器上放着所有的文件目录信息,要找一个文件,必须先访问它
数据服务器:
存放数据的服务器,设计为冗余模式
主要的工作模式就是定期向主控服务器汇报其状况,然后等待并处理命令,更快更安全的存放好数据
数据分布
以块的方式存储
把文件数据切成数据块,将数据块存储在数据服务器上
以独立文件的方式存储
每台数据服务器存储独立的文件,每台数据服务器存储相同的文件,实现冗余及负载均衡
——————————————————————————————————————————————————————————
FastDFS
一款开源分布式文件系统,用纯c语言实现,支持linux freebsd aix等unix系统
功能包括文件存储,文件同步,文件访问 文件上传,下载等
解决了大容量存储和负载均衡的问题
特别适合以文件为载体的在线服务,如相册网站,视频网站等
FastDFS服务器端有两个角色:跟踪器(tracker)和存储节点(storage)
跟踪器:主要做调度工作,在访问上起负载均衡的作用
存储节点:完成文件管理的所有功能,即存储,同步和提供存取接口,同时对文件的元数据进行管理
FastDFS系统结构
跟踪器和存储节点都可以由一台或多台服务器构成
跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务
跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减小
采用了分组存储方式
集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和
一个组由一台或多台存储服务器组成,同组内的多台存储节点服务器之间是互备关系
同组存储服务器上的文件是完全一致的
文件上传,下载,删除等操作可以在组内任意一台存储服务器节点上进行
一个组的存储容量为该组内存储服务器容量最小那个
采用分组存储方式的好处是灵活,可控性较强
一个分组服务器访问压力大时,可以在该组增加存储服务器来充服务能力(纵向扩容)
当系统容量不足时,可以增加组来扩充(横向扩容)
不同组内的存储服务器之间不会相互通信,同组内的存储服务器之间会相互连接进行文件同步
binlog中只记录文件名,不记录问价内容
文件同步只在同组内的存储服务器之间进行,采用push方式,即源头服务器同步给目标服务器
搭建配置FastDFS服务器
环境:准备4台服务器,第一台作为tracker,后三台作为storage并为storage准备磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/st1.img 20G
qemu-img create -f qcow2 /var/lib/libvirt/images/st2.img 20G
qemu-img create -f qcow2 /var/lib/libvirt/images/st3.img 20G
地址规划:主机tarcker :192.168.4.1
主机storage1:192.168.4.2
主机storage2:192.168.4.3
主机storage3:192.168.4.4
FastDFS官网:http://bbs.chinaunix.net/forum-240-1.html
安装配置tracke服务器(源码安装,别忘了gcc gcc-c++)
需要三个依赖包
libevent-devel-1.4.13-4.el6.x86_64.rpm
libevent-doc-1.4.13-4.el6.noarch.rpm
libevent-headers-1.4.13-4.el6.noarch.rpm
[root@tracker ~]# yum -y install lib*
[root@tracker ~]# tar -xf FastDFS_v4.06.tar.gz
[root@tracker FastDFS]# ./make.sh
[root@tracker FastDFS]# ./make.sh install
[root@tracker FastDFS]# cp init.d/fdfs_trackerd /etc/init.d/
[root@tracker ~]# mkdir -pv /data/fastdfs
[root@tracker FastDFS]# vim /etc/fdfs/tracker.conf(修改配置文件)
# the base path to store data and log files
base_path=/data/fastdfs(工作目录,写刚刚创建的目录)
# max concurrent connections this server supported
max_connections=4096(最大线程数,默认256)
# if use storage ID instead of IP address
# default value is false
# since V4.00
use_storage_id = true(默认false,改为true)
[root@tracker FastDFS]# cp conf/storage_ids.conf /etc/fdfs/(拷贝配置文件)
[root@tracker FastDFS]# vim /etc/fdfs/storage_ids.conf(修改配置文件)
1000001 group1 192.168.4.2(写storage的主机)
1000001 group1 192.168.4.3
1000001 group1 192.168.4.4
[root@tracker FastDFS]# /etc/init.d/fdfs_trackerd start; chkconfig fdfs_trackerd on
[root@tracker FastDFS]# netstat -tlnp | grep :22122(查看端口,确定服务启动)
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2490/fdfs_trackerd
安装配置storage服务器,及准备磁盘(三台主机主机做相同的操作)
需要三个依赖包
libevent-devel-1.4.13-4.el6.x86_64.rpm
libevent-doc-1.4.13-4.el6.noarch.rpm
libevent-headers-1.4.13-4.el6.noarch.rpm
[root@storage1 ~]# yum -y install lib*
[root@storage1 ~]# tar -xf FastDFS_v4.06.tar.gz
[root@storage1 FastDFS]# ./make.sh
[root@storage1 FastDFS]# ./make.sh install
[root@storage1 FastDFS]# cp init.d/fdfs_storaged /etc/init.d/
[root@storage1 ~]# mkdir -pv /data/fastdfs
[root@storage1 ~]# vim /etc/fdfs/storage.conf(修改配置文件)
# the base path to store data and log files
base_path=/data/fastdfs(工作目录)
max_connections=4096(最大并发数)
store_path_count=1(几个路径写几个)
store_path0=/data/fastdfs(第一条路径)
tracker_server=192.168.4.1:22122(tracker服务器地址)
upload_priority=10(优先级)
[root@storage1 ~]# parted /dev/vdb(分区)
(parted) mklabel gpt
(parted) mkpart primary ext4 1M -1
[root@storage1 ~]# mkfs.ext4 /dev/vdb1(格式化)
[root@storage1 ~]# blkid /dev/vdb1(查看uuid号)
/dev/vdb1: UUID="75889d5b-a85b-4028-b50d-c5dfc6bd136f" TYPE="ext4"
[root@storage1 ~]# vim /etc/fstab(开机自动挂载)
UUID=75889d5b-a85b-4028-b50d-c5dfc6bd136f /data/fastdfs/ ext4 defaults 0 0
[root@storage1 ~]# mount -a(检查配置文件有没有错误)
[root@storage1 ~]# /etc/init.d/fdfs_storaged start; chkconfig fdfs_storaged on
storage会为用户创建辅助文件
[root@storage1 ~]# cat /data/fastdfs/data/.data_init_flag 初始化信息
[root@storage1 ~]# cat /data/fastdfs/data/storage_stat.dat 统计信息
[root@storage1 ~]# cat /data/fastdfs/data/sync/binlog.index 当前binlog文件索引号
[root@storage1 ~]# cat /data/fastdfs/data/sync/binlog.000 日志
配置FastDFS客户端
[root@python ~]# mkdir bin(创建一个bin目录)
[root@tracker ~]# cd /usr/local/bin/(在服务器端把配置文件复制过去)
[root@tracker ~]# scp fdfs_delete_file fdfs_upload_file fdfs_download_file fdfs_test /etc/fdfs/client.conf 192.168.4.5:/root/bin
[root@python bin]# vim client.conf
# the base path to store log files
base_path=/root/bin(工作目录)
tracker_server=192.168.4.1:22122(tracker主机ip)
[root@python bin]# ./fdfs_upload_file client.conf /etc/passwd(测试上传文件)
group1/M00/00/00/wKgEAlnHD3CAM8WTAAAEIOv-_n85532326(文件存放处及上传后的文件名)
[root@python bin]# ./fdfs_download_file client.conf group1/M00/00/00/wKgEAlnHD3CAM8WTAAAEIOv-_n85532326 passwd(测试下载。下载后的文件名)
[root@python bin]# ./fdfs_delete_file client.conf group1/M00/00/00/wKgEAlnHD3CAM8WTAAAEIOv-_n85532326(删除文件)
[root@storage1 ~]# ls /data/fastdfs/data/00/00/(storage服务器端查看上传的文件)
配置web访问,在storage服务器上安装nginx fastdfs-nginx-module(nginx模块)
[root@storage1 ~]# yum -y install pcre ocre-devel zlib zlib-decel
[root@storage1 ~]# tar -xf fastdfs-nginx-module_v1.16.tar.gz
[root@storage1 ~]# tar -xf nginx-1.8.0.tar.gz
[root@storage1 ~]# useradd -s /sbin/nologin nginx
[root@storage1 nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/root/fastdfs-nginx-module/src/
[root@storage1 nginx-1.8.0]# make
[root@storage1 nginx-1.8.0]# make install
[root@storage1 ~]# cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/(把配置文件拷贝到/etc/fdfs下)
[root@storage1 ~]# vim /etc/fdfs/mod_fastdfs.conf
tracker_server=192.168.4.1:22122(tracker服务器ip)
url_have_group_name = true(改为true)
store_path0=/data/fastdfs(本地存储路劲)
[root@storage1 ~]# vim /usr/local/nginx/conf/nginx.conf(修改nginx配置文件)
location / {
ngx_fastdfs_module;
}
[root@storage1 ~]# /usr/local/nginx/sbin/nginx(启动服务)
ngx_http_fastdfs_set pid=10522
客户端测试,先上传文件,再通过web方式查看
[root@python bin]# ./fdfs_upload_file client.conf /root/xx.txt
group1/M00/00/00/wKgEAlnHG_2AKp4iAAAAC7Shv9I745.txt
[root@python bin]# firefox http://192.168.4.2/group1/M00/00/00/wKgEAlnHG_2AKp4iAAAAC7Shv9I745.txt
——————————————————————————————————————————————————————————————————————————————
linux 分布式文件系统的更多相关文章
- Ceph:一个开源的 Linux PB 级分布式文件系统
探索 Ceph 文件系统和生态系统 M. Tim Jones , 自由作家 简介: Linux®持续不断进军可扩展计算空间,特别是可扩展存储空间.Ceph 最近才加入到 Linux 中令人印象深刻的 ...
- 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇
分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...
- 分布式文件系统(HDFS)与 linux系统文件系统 对比
初次接触分布式文件系统,有很多迷惑.通过参考网络文章,这里进行对比一下Hadoop 分布式文件系统(HDFS)与 传统文件系统之间的关系: Linux 文件系统 分布式文件系统 块 块对应物理磁盘 ...
- Linux - 搭建FastDFS分布式文件系统
1. FastDFS简介 说明:FastDFS简介部分的理论知识全部来自于博主bojiangzhou的 <用FastDFS一步步搭建文件管理系统>,在此感谢博主的无私分享.当然最最要感谢的 ...
- 分布式文件系统 FastDFS 5.0.8 & Linux CentOS 6.7 安装配置
原文:http://blog.csdn.net/wlwlwlwl015/article/details/52619851 前言 项目中用到文件服务器,有朋友推荐用fastdfs,所以就了解学习了一番, ...
- 07.Linux系统-Fastdfs分布式文件系统-互为主从配置搭建部署
Fastdfs分布式文件系统-互为主从配置部署 1.安装基础依赖 yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl ...
- 分布式文件系统 - FastDFS 简单了解一下
别问我在哪里 也许我早已不是我自己,别问我在哪里,我一直在这里. 突然不知道说些什么了... 初识 FastDFS 记得那是我刚毕业后进入的第一家公司,一个技术小白进入到当时的项目组后,在开发中上传用 ...
- 【从零开始学习Hadoop】--2.HDFS分布式文件系统
1. 文件系统从头说2. Hadoop的文件系统3. 如何将文件复制到HDFS3.1 目录和文件结构3.2 FileCopy.java文件的源代码3.3 编译3.4打包3.5 运行3.6 检查结果 1 ...
- HDFS分布式文件系统资源管理器开发总结
HDFS,全称Hadoop分布式文件系统,作为Hadoop生态技术圈底层的关键技术之一,被设计成适合运行在通用硬件上的分布式文件系统.它和现有的分布式文件系统有很多共同点,但同时,它和其他的分布式 ...
随机推荐
- java面向对象基础(一)
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- 溢出问题:overflow后最后一排文字显示不全
溢出字体会显示在padding区域(http://www.divcss5.com/css-hack/c680.shtml) section#xinwen li a h3{ border-bottom: ...
- JS学习--DOM
1.概念 文档对象模型DOM,定义访问和处理HTML文档的标准方法.DOM将HTML呈现为带有元素.属性和文本的树结构(节点树). 2.document.getElementById("id ...
- 基础知识全面LINUX
学习Linux系统的重要性应该不用多说,下面我就对Linux的基础知识进行一个全面而又简单的总结.不过建议大家还是装个Linux系统多练习,平时最好只在Linux环境下编程,这样会大有提高. linu ...
- ELK日志管理搭建
目录: 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Kibana 五.安装Nginx 六.安装Logstash 七.安装Logstash-forwarder 八.测试 系统环 ...
- 计算机中RAM和ROM
1.RAM(RamdomAccessMemory): 易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等. 2.ROM(Read Only Memory): 只读存储器.断电 ...
- java中自定义异常类
hello,大家好,今天跟大家分享一下java中如何自定义异常,以后如果有新的心得,再添加,欢迎前辈指导... 首先,上Api,看一下异常和错误的父类: 然后,现在假设我有个循环(i=0;i<1 ...
- c#实现自然排序效果,按1,2,11而不是1,11,12,区分字母文字和数字
排序有时候要考虑后缀.这样看起来比较自然. 参考了codeproject上一篇文章:http://www.codeproject.com/Articles/22978/Implementing-the ...
- iOS-MD5加密、SHA1加密
1.MD5加密 ///MD5加密************************************** + (NSString *)md5:(NSString *)inputString{ co ...
- BZOJ 4566: [Haoi2016]找相同字符 [后缀自动机]
4566: [Haoi2016]找相同字符 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 275 Solved: 155[Submit][Statu ...