FastDFS

文件系统管理的物理存储资源不一定在本地,而是通过计算机网络与节点相连
C/S模式
对等性允许一些系统扮演客户机和服务器的双重角色

特点
分布式文件系统可有效解决数据存储和管理难题
将固定于某个地点的某个文件系统扩展到任意多个地点或文件系统
众多节点组成一个文件系统网络
每个节点可以分布在不同地点通过网络通信和数据传输
人们在时用分布式文件系统时无需关心数据 存 取 在哪个节点上 只需像本地文件系统一样管理即可

衡量分布式文件系统的优劣
数据储存方式 读取速率 安全机制
常用的分布式文件系统
Lustre HadoopHDFS OpenAFS googleFs

服务器角色 分布式文件系统不将这些数据放在一块磁盘上 有上层操作系统管理存放在一个服务器集群上
主要包括
主控服务器 数据服务器
数据分布
以块的方式存储 以独立的文件的方式存储

FastFDS
开源的分布式文件系统 纯C实现 解决大容量和负载均衡的问题
服务端的角色(都可以是一台或多台组成)
跟踪器 tracker 主要调度 在访问上起负载均衡
存储节点 storage 文件管理所有功能:存储 同步 提供存储接口 对文件元数据管理
不同组之间不会通信 同组内采用binlog日志记录上传、删除、更新等操作,只记录文件名,同组内采用push推送方式同步

50
1 安装fastdfs:
#yum install -y gcc gcc-c++
#yum -y install libevent #依赖包
#cd /fastdfs/
#yum -y install libevent-*
#tar -zxf FastDFS_v4.06.tar.gz
#cd FastDFS
#vim INSTALL #查看如何安装
#./make.sh
#./make.sh install
#ls /etc/fdfs/ #配置文件
client.conf http.conf mime.types storage.conf tracker.conf

2 修改配置文件
#vim /etc/fdfs/tracker.conf
22 base_path=/data/fastdfs #数据和日志的储存路径 必须存在
182 use_storage_id = true #使用 serverID作为storage server
186 storage_ids_filename = storage_ids.conf
:wq
#mkdir -p /data/fastdfs

3 修改storage_id文件,指定储存主机 组
#cp FastDFS/conf/storage_ids.conf /etc/fdfs/
#vim /etc/fdfs/storage_ids.conf
100001 group1 192.168.4.51
100002 group1 192.168.4.52


51/52
1 配置储存空间
#fdisk /dev/vdb #分区
#mkdir -p /data/fastdfs
#blkid
#vim /etc/fstab
UUID="05e78063-8d99-4d53-980d-410a792d9636" /data/fastdfs ext4 defaults 0 0
#mount -a

2 安装fastdfs:
#yum install -y gcc gcc-c++
#yum -y install libevent #依赖包
#cd /fastdfs/
#yum -y install libevent-*
#tar -zxf FastDFS_v4.06.tar.gz
#cd FastDFS
#vim INSTALL #查看如何安装
#./make.sh
#./make.sh install
#ls /etc/fdfs/ #配置文件
client.conf http.conf mime.types storage.conf tracker.conf

3 修改配置文件
#vim /etc/fdfs/storage.conf
37 base_path=/data/fastdfs
96 store_path_count=1
100 store_path0=/data/fastdfs
109 tracker_server=192.168.4.50:22122


50
1 启动tracke控制端 50
#cp FastDFS/init.d/fdfs_trackerd /etc/init.d/
#chmod +x /etc/init.d/fdfs_trackerd

#/etc/init.d/fdfs_trackerd start
#/etc/init.d/fdfs_trackerd status
#netstat -utnalp | grep :22122
#ps -C fdfs_trackerd
#echo "/etc/init.d/fdfs_trackerd start" >> /etc/rc.local    #开机自启
or
#chkconfig --add fdfs_trackerd
#chkconfig fdfs_trackerd on
#service fdfs_trackerd start
#service fdfs_trackerd status
#netstat -utnalp | grep :22122

#ls /data/fastdfs/  
data  logs

51/52
2 启动storage
#cp FastDFS/init.d/fdfs_storaged /etc/init.d/
#chmod +x /etc/init.d/fdfs_storaged

#/etc/init.d/fdfs_storaged start
#/etc/init.d/fdfs_storaged status
#netstat -utnalp  | grep :23000
#ps -C  fdfs_trackerd
#echo  "/etc/init.d/fdfs_storaged start" >> /etc/rc.local
or
#chkconfig --add fdfs_storaged
#chkconfig fdfs_storaged on
#service fdfs_storaged start
#service fdfs_storaged status
#netstat -utnalp | grep :22122

#ls /data/fastdfs
#ls /data/fastdfs/data

配置客户端 254
#ping -c 2 192.168.4.50

添加 提供访问命令(上传 下载) 254
#echo $PATH
#mkdir /root/bin
#scp 192.168.4.50:/usr/local/bin/fdfs_* /root/bin/
编辑链接主控节点的配置文件
#mkdir /etc/fdfs
#scp 192.168.4.50:/etc/fdfs/client.conf /etc/fdfs

#vim /etc/fdfs/client.conf  #链接主控节点的配置文件
10 base_path=/data/fastdfs 
14 tracker_server=192.168.4.50:22122
:wq
#mkdir -p /data/fastdfs

测试254:
上传测试
#测试命令 指定控制器 执行的操作 要操作对象
#fdfs_test /etc/fdfs/client.conf upload /etc/passwd
上传文件
#操作命令 选择主控制器 要操作的文件
#fdfs_upload_file /etc/fdfs/client.conf /etc/passwd
group1/M00/00/00/wKgEM1pdL--AXOYCAAAJc9bJYf01080037

下载文件:
#fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgEM1pdL--AXOYCAAAJc9bJYf01080037 passwd

#fdfs_test /etc/fdfs/client.conf download group1 M00/00/00/wKgEM1pdL--AXOYCAAAJc9bJYf01080037 passwd    #查详细操作 注意格式

删除文件:
#fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgEM1pdL--AXOYCAAAJc9bJYf01080037 #直接删除

#fdfs_test /etc/fdfs/client.conf delete group1 M00/00/00/wKgEM1pdL--AXOYCAAAJc9bJYf01080037 #看删除具体的操作

配置web访问
51/52
在storage上安装nginx
#cd /fastdfs/
#tar -xf fastdfs-nginx-module_v1.16.tar.gz
#tar -xf nginx-1.7.10.tar.gz
#cd nginx-1.7.10
#useradd nginx
#yum install pcre-devel zlib-devel -y
#./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--add-module=../fastdfs-nginx-module/src/
#make && make install

修改配置文件
#vim /usr/local/nginx/conf/nginx.conf
43 location / {
44 # root html;
45 # index index.html index.htm;
46 ngx_fastdfs_module;
47 }
48

#cp /fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
#vim /etc/fdfs/mod_fastdfs.conf 
tracker_server=192.168.4.50:22122
group_name=group1
url_have_group_name = true
store_path0=/data/fastdfs

#service fdfs_storaged restart
#/usr/local/nginx/sbin/nginx 

测试
#fdfs_upload_file /etc/fdfs/client.conf /tedu.jpg
group1/M00/00/00/wKgENFpdQ3qAAbYqAAAJc9bJYf04433108

http://192.168.4.71/group1/M00/00/00/wKgENFpdQ3qAAbYqAAAJc9bJYf04433108