1.技术背景介绍;

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2.基础环境介绍;

主机名 IP地址规划 相关软件源码包汇总 服务器角色

Nginx_fastdfs1 192.168.1.190 Nginx.1.8.0.tar.gz fastdfs .v5.05.tar.gz libfastcommon-master.zip fastdfs-nginx-module_v1.16.tar.gz Storage/tracker

Nginx_fastdfs2 192.168.1.200 Storage/tracker

3.软件功能介绍; (1) libfastcommon 源码包介绍;

libfastcommon是从开源软件FastDFS和FastDHT中提取出来的公共C函数库。 它提供了字符串处理、链表、哈希表、日志记录、配置文件读取、socket操作、base64编码、url编码、md5等常用函数库。还包括http的一个简单的client,可以获取url内容(目前仅支持GET方式)。 这些代码已经在FastDFS和FastDHT中使用,比较简洁、稳定。FastDFS已经在Linux、FreeBSD、AIX下进行了编译并通过了测试.

(2)fastdfs-nginx-module_v1 介绍; 我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS 的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝 的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块。其使用非常简单。

(3) fastdfs 介绍; FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 stDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。 存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接 口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。 跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。 为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。 在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。 当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。 FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

(4).上传交互过程;

  1. client询问tracker上传到的storage,不需要附加参数;
  2. tracker返回一台可用的storage;
  3. client直接和storage通讯完成文件上传。 FastDFS file download

(5).下载交互过程

  1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
  2. tracker返回一台可用的storage;
  3. client直接和storage通讯完成文件下载。 需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用

3.部署环境准备;

注意:(两台机器同样执行以下操作)

(1).安装环境依赖包

yum install -y zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip

(2).创建fastdfs 运行用户;

useradd -s /sbin/nologin fastdfs

(3).创建数据存储目录;

mkdir -p /export/fastdfs/{storage,tracker} [root@nginx_Fastdfs1 ~]# ll /export/fastdfs/ total 8 drwxr-xr-x 4 fastdfs fastdfs 4096 Jun 6 22:09 storage drwxr-xr-x 4 fastdfs fastdfs 4096 Jun 6 21:12 tracker

[root@nginx_Fastdfs2 ~]# ll /export/fastdfs/ total 8 drwxr-xr-x 4 fastdfs fastdfs 4096 Jun 6 21:59 storage drwxr-xr-x 4 fastdfs fastdfs 4096 Jun 6 21:03 tracker

4.Fastdfs部署详情;

注意:(2台服务器需要同样执行如下操作)

(1).部署libfastcommon; mkdir /usr/local/fastdfs_packages cd /usr/local/fastdfs_packages wget https:///happyfish100/libfastcommon/archive/master.zip unzip master.zip cd libfastcommon-master/ ./ ./ install

(2)部署fastdfs cd /usr/local/fastdfs_packages wget http://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source %20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.05/ FastDFS_v5.05.tar.gz tar zxf FastDFS_v5.05.tar.gz && cd FastDFS ./ && ./ install \cp pa conf/*.conf /etc/fdfs/ cd /etc/fdfs/ mv *.sample /opt/ #备份模板文件; chown -R fastdfs: /export/fastdfs

注意:配置tracker 和 storage Nginx_fastdfs1 和Nginx_fastdfs2分别配置;

(3) Nginx_fastdfs1机器(配置tracker 和 storage 配置文件;)

[root@nginx_Fastdfs1 fdfs]# tree /etc/fdfs/ /etc/fdfs/ ├── client.conf ├── mod_fastdfs.conf ├── storage.conf └── tracker.conf 0 directories, 4 files

storage 配置

[root@nginx_Fastdfs1 /]# cat /etc/fdfs/storage.conf group_name=group1 base_path=/export/fastdfs/storage store_path0=/export/fastdfs/storage tracker_server=192.168.1.190:22122 tracker_server=192.168.1.200:22122 http.server_port=80 disabled=false bind_addr=192.168.1.190 client_bind=true port=23000 connect_timeout=30 network_timeout=60 heart_beat_interval=30 stat_report_interval=60 max_connections=256 buff_size = 256KB work_threads=2 disk_rw_separated = true disk_rw_direct = false disk_reader_threads = 1 disk_writer_threads = 1 sync_wait_msec=50 sync_interval=0 sync_start_time=00:00 sync_end_time=23:59 write_mark_file_freq=500 store_path_count=1 subdir_count_per_path=256 log_level=info run_by_group= run_by_user= allow_hosts=* file_distribute_path_mode=0 file_distribute_rotate_count=100 fsync_after_written_bytes=0 sync_log_buff_interval=10 sync_binlog_buff_interval=10 sync_stat_file_interval=300 thread_stack_size=512KB upload_priority=10 if_alias_prefix= check_file_duplicate=0 key_namespace=FastDFS keep_alive=0 http.disabled=false httphttp.domain_name= http.trunk_size=256KB http.need_find_content_type=true

tracker.conf 配置;

[root@nginx_Fastdfs1 fdfs]# cat /etc/fdfs/tracker.conf base_path=/export/fastdfs/tracker disabled=false bind_addr=192.168.1.190 port=22122 connect_timeout=30 network_timeout=60 max_connections=256 work_threads=2 store_lookup=2 store_group=group2 store_server=0 store_path=0 download_server=0 reserved_storage_space = 4GB log_level=info run_by_group= run_by_user= allow_hosts=* sync_log_buff_interval = 10 check_active_interval = 120 thread_stack_size = 64KB storage_ip_changed_auto_adjust = true storage_sync_file_max_delay = 86400 storage_sync_file_max_time = 300 use_trunk_file = false slot_min_size = 256 slot_max_size = 16MB trunk_file_size = 64MB http.disabled=false http.server_port=8080 http.check_alive_interval=30 http.check_alive_type=tcp http.check_alive_uri=/status.html http.need_find_content_type=true

mod_fastdfs.conf 配置

[root@nginx_Fastdfs1 /]# cat /etc/fdfs/mod_fastdfs.conf group_name=group1 base_path=/export/fastdfs/storage store_path0=/export/fastdfs/storage tracker_server=192.168.1.190:22122 tracker_server=192.168.1.200:22122 url_have_group_name = true

client.conf 配置

[root@nginx_Fastdfs1 fdfs]# cat client.conf tracker_server=192.168.1.190:22122 tracker_server=192.168.1.200:22122

(3) Nginx_fastdfs2机器(配置tracker 和 storage 配置文件;)

[root@nginx_Fastdfs2 ~]# tree /etc/fdfs/ /etc/fdfs/ ├── client.conf ├── mod_fastdfs.conf ├── storage.conf └── tracker.conf 0 directories, 4 files

storage.conf 配置;

[root@nginx_Fastdfs2 ~]# cat /etc/fdfs/storage.conf base_path=/export/fastdfs/storage store_path0=/export/fastdfs/storage tracker_server=192.168.1.200:22122 tracker_server=192.168.1.190:22122 http.server_port=80 disabled=false group_name=group1 bind_addr=192.168.1.200 client_bind=true port=23000 connect_timeout=30 network_timeout=60 heart_beat_interval=30 stat_report_interval=60 max_connections=256 buff_size = 256KB work_threads=2 disk_rw_separated = true disk_rw_direct = false disk_reader_threads = 1 disk_writer_threads = 1 sync_wait_msec=50 sync_interval=0 sync_start_time=00:00 sync_end_time=23:59 write_mark_file_freq=500 store_path_count=1 subdir_count_per_path=256 log_level=info run_by_group= run_by_user= allow_hosts=* file_distribute_path_mode=0 file_distribute_rotate_count=100 fsync_after_written_bytes=0 sync_log_buff_interval=10 sync_binlog_buff_interval=10 sync_stat_file_interval=300 thread_stack_size=512KB upload_priority=10 if_alias_prefix= check_file_duplicate=0 key_namespace=FastDFS keep_alive=0 http.disabled=false httphttp.domain_name= http.trunk_size=256KB http.need_find_content_type=true

tracker.conf 配置

[root@nginx_Fastdfs2 ~]# cat /etc/fdfs/tracker.conf base_path=/export/fastdfs/tracker disabled=false bind_addr=192.168.1.200 port=22122 connect_timeout=30 network_timeout=60 max_connections=256 work_threads=2 store_lookup=2 store_group=group2 store_server=0 store_path=0 download_server=0 reserved_storage_space = 4GB log_level=info run_by_group= run_by_user= allow_hosts=* sync_log_buff_interval = 10 check_active_interval = 120 thread_stack_size = 64KB storage_ip_changed_auto_adjust = true storage_sync_file_max_delay = 86400 storage_sync_file_max_time = 300 use_trunk_file = false slot_min_size = 256 slot_max_size = 16MB trunk_file_size = 64MB http.disabled=false http.server_port=8080 http.check_alive_interval=30 http.check_alive_type=tcp http.check_alive_uri=/status.html http.need_find_content_type=true

mod_fastdfs.conf 配置

[root@nginx_Fastdfs2 ~]# cat /etc/fdfs/mod_fastdfs.conf group_name=group1 base_path=/export/fastdfs/storage store_path0=/export/fastdfs/storage tracker_server=192.168.1.200:22122 tracker_server=192.168.1.190:22122 url_have_group_name = true client.conf 配置

[root@nginx_Fastdfs2 ~]# cat /etc/fdfs/client.conf tracker_server=192.168.1.200:22122 tracker_server=192.168.1.190:22122

5.Fastdfs结合nginx;

(1).软件部署以及配置调整; cd /usr/local/fastdfs_packages wget http://nginx.org/download/nginx-1.8.0.tar.gz http://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download tar zxf fastdfs-nginx-module_v1.16.tar.gz

注意:修改模块中对应的路径,否则模块不能正确安装加载; cd fastdfs-nginx-module/src vi conf #更改如下,去掉local,并指定lib64(64系统) CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/ CORE_LIBS="$CORE_LIBS -L/usr/lib64 -lfastcommon -lfdfsclient"

(2).nginx 添加fastdfs-nginx-module模块; ulimit -SHn 102400 useradd -s /sbin/nologin nginx tar zxf nginx-1.8.0.tar.gz cd nginx-1.8.0 ./configure --user=nginx --group=nginx --add-module=../fastdfs-nginx-module/src/ --prefix=/usr/local/nginx --with-http_stub_status_module--with-http_ssl_module --with-http_realip_module make && make install

(3).nginx 配置fastdfs;

nginx_Fastdfs1 配置;

[root@nginx_Fastdfs1 nginx-1.8.0]# cat /usr/local/nginx/conf/nginx.conf user nginx; worker_processes 1; events { worker_connections 1024; } http{ server { listen 80; server_name 192.168.1.190; root /webdata/; index index.html index.htm; location / { if (!-e $request_filename) { rewrite ^(.)$ /index.html last; } location /group1/M00 { root /export/fastdfs/storage/data/; ngx_fastdfs_module; } location ~ ..(gif|jpg|jpeg|png|bmp|swf|js)$ {

fastcgi_cache cache_one; #nginx.conf 开启cache才行,否则然启动报错

   fastcgi_cache_valid 200 10m;
   fastcgi_cache_valid 304 3m;
   fastcgi_cache_valid 301 302 1h;
   fastcgi_cache_valid any 1m;
   fastcgi_cache_min_uses 1;
   fastcgi_cache_use_stale error timeout invalid_header http_500;
   fastcgi_cache_key $host$request_uri;
   access_log off;
   }
   }
access_log off;

} }

nginx_Fastdfs2 配置;

[root@nginx_Fastdfs2]# cat /usr/local/nginx/conf/nginx.conf events { worker_connections 1024; } http{ server { listen 80; server_name 192.168.1.200; root /webdata/; index index.html index.htm; location / { if (!-e $request_filename) { rewrite ^(.)$ /index.html last; } location /group1/M00 { root /export/fastdfs/storage/data/; ngx_fastdfs_module; } location ~ ..(gif|jpg|jpeg|png|bmp|swf|js)$ {
#fastcgi_cache cache_one; #nginx.conf 开启cache,否则启动报错 fastcgi_cache_valid 200 10m; fastcgi_cache_valid 304 3m; fastcgi_cache_valid 301 302 1h; fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_key $host$request_uri; access_log off; } } access_log off; } }

6.fastdfs服务管理; (1)编写启动脚本; [root@nginx_Fastdfs1]# cat /etc/init.d/fdfs_storaged #!/bin/bash

fdfs_storaged Starts fdfs_storaged

chkconfig: 2345 99 01

description: FastDFS storage server

BEGIN INIT INFO

Provides: $fdfs_storaged

END INIT INFO

Source function library.

. /etc/init.d/functions PRG=/usr/local/fastdfs_packages/FastDFS/storage/fdfs_storaged CONF=/etc/fdfs/storage.conf if [ ! -f $PRG ]; then echo "file $PRG does not exist!" exit 2 fi if [ ! -f /usr/local/fastdfs_packages/FastDFS/ ]; then echo "file /usr/local/fastdfs_packages/FastDFS/ does not exist!" exit 2 fi if [ ! -f /usr/local/fastdfs_packages/FastDFS/restart.sh ]; then echo "file /usr/local/fastdfs_packages/FastDFS/restart.sh does not exist!" exit 2 fi if [ ! -f $CONF ]; then echo "file $CONF does not exist!" exit 2 fi

CMD="$PRG $CONF" RETVAL=0

start() { echo -n $"Starting FastDFS storage server: " $CMD & RETVAL=$? echo return $RETVAL } stop() { /usr/local/fastdfs_packages/FastDFS/ $CMD RETVAL=$? return $RETVAL } rhstatus() { status fdfs_storaged } restart() { /usr/local/fastdfs_packages/FastDFS/restart.sh $CMD & } case "$1" in start) start ;; stop) stop ;; status) rhstatus ;; restart|reload) restart ;; condrestart) restart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart}" exit 1 esac exit $? [root@nginx_Fastdfs1]# cat /etc/init.d/fdfs_trackerd #!/bin/bash

fdfs_trackerd Starts fdfs_trackerd

chkconfig: 2345 99 01

description: FastDFS tracker server

BEGIN INIT INFO

Provides: $fdfs_trackerd

END INIT INFO

Source function library.

. /etc/init.d/functions PRG=/usr/local/fastdfs_packages/FastDFS/tracker/fdfs_trackerd CONF=/etc/fdfs/tracker.conf

if [ ! -f $PRG ]; then echo "file $PRG does not exist!" exit 2 fi

if [ ! -f /usr/local/fastdfs_packages/FastDFS/ ]; then echo "file /usr/local/bin/ does not exist!" exit 2 fi

if [ ! -f /usr/local/fastdfs_packages/FastDFS/restart.sh ]; then echo "file /usr/local/bin/restart.sh does not exist!" exit 2 fi

if [ ! -f $CONF ]; then echo "file $CONF does not exist!" exit 2 fi

CMD="$PRG $CONF" RETVAL=0

start() { echo -n $"Starting FastDFS tracker server: " $CMD & RETVAL=$? echo return $RETVAL } stop() { /usr/local/fastdfs_packages/FastDFS/ $CMD RETVAL=$? return $RETVAL } rhstatus() { status fdfs_trackerd } restart() { /usr/local/fastdfs_packages/FastDFS/restart.sh $CMD & } case "$1" in start) start ;; stop) stop ;; status) rhstatus ;; restart|reload) restart ;; condrestart) restart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart}" exit 1 esac exit $?

(2).fastdfs相关服务启动; /etc/init.d/fdfs_trackerd start /etc/init.d/fdfs_storaged start /usr/local/nginx/sbin/nginx

(3)查看进程运行情况; [root@nginx_Fastdfs1 /]# netstat -anplt |grep -E "nginx|fdfs" tcp 0 0 192.168.1.200:23000 0.0.0.0:* LISTEN 1945/fdfs_storaged
tcp 0 0 192.168.1.200:22122 0.0.0.0:* LISTEN 1937/fdfs_trackerd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1798/nginx
tcp 0 0 192.168.1.200:35036 192.168.1.200:22122 ESTABLISHED 1945/fdfs_storaged
tcp 0 0 192.168.1.200:22122 192.168.1.200:35036 ESTABLISHED 1937/fdfs_trackerd
tcp 0 0 192.168.1.200:43282 192.168.1.190:22122 ESTABLISHED 1945/fdfs_storaged
tcp 0 0 192.168.1.200:51407 192.168.1.190:23000 ESTABLISHED 1945/fdfs_storaged
tcp 0 0 192.168.1.200:22122 192.168.1.190:44927 ESTABLISHED 1937/fdfs_trackerd
tcp 0 0 192.168.1.200:22122 192.168.1.190:40724 ESTABLISHED 1937/fdfs_trackerd
tcp 0 0 192.168.1.200:23000 192.168.1.190:54332 ESTABLISHED 1945/fdfs_storaged

[root@nginx_Fastdfs2 ~]# netstat -anplt |grep -E "nginx|fdfs" tcp 0 0 192.168.1.190:22122 0.0.0.0:* LISTEN 1603/fdfs_trackerd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1573/nginx
tcp 0 0 192.168.1.190:23000 0.0.0.0:* LISTEN 1612/fdfs_storaged
tcp 0 0 192.168.1.190:22122 192.168.1.190:54669 ESTABLISHED 1603/fdfs_trackerd
tcp 0 0 192.168.1.190:23000 192.168.1.200:51407 ESTABLISHED 1612/fdfs_storaged
tcp 0 0 192.168.1.190:22122 192.168.1.200:43282 ESTABLISHED 1603/fdfs_trackerd
tcp 0 0 192.168.1.190:40724 192.168.1.200:22122 ESTABLISHED 1603/fdfs_trackerd
tcp 0 0 192.168.1.190:44927 192.168.1.200:22122 ESTABLISHED 1612/fdfs_storaged
tcp 0 0 192.168.1.190:54332 192.168.1.200:23000 ESTABLISHED 1612/fdfs_storaged
tcp 0 0 192.168.1.190:54669 192.168.1.190:22122 ESTABLISHED 1612/fdfs_storaged

7.fastdfs 功能测试; nginx_Fastdfs1 机器测试; [root@nginx_Fastdfs1]# fdfs_test /etc/fdfs/client.conf upload test.jsp This is FastDFS client test program v5.05 Copyright (C) 2008, Happy Fish / YuQing FastDFS may be copied only under the terms of the GNU General Public License V3, which may be found in the FastDFS source kit. Please visit the FastDFS Home Page http://www.csource.org/ for more detail. [2016-06-07 03:04:04] DEBUG - base_path=/tmp, connect_timeout=30, network_timeout=30, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0 tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.1.190, port=23000 server 2. group_name=, ip_addr=192.168.1.200, port=23000 group_name=group1, ip_addr=192.168.1.190, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgBvldVySWAObaSAAAAAAAAAAA284.jsp source ip address: 192.168.1.190 file timestamp=2016-06-07 03:04:05 file size=0 file crc32=0 example file url: http://192.168.1.190/group1/M00/00/00/wKgBvldVySWAObaSAAAAAAAAAAA284.jsp storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKgBvldVySWAObaSAAAAAAAAAAA284_big.jsp source ip address: 192.168.1.190 file timestamp=2016-06-07 03:04:05 file size=0 file crc32=0 example file url: http://192.168.1.190/group1/M00/00/00/wKgBvldVySWAObaSAAAAAAAAAAA284_big.jsp

nginx_Fastdfs2 机器测试; [root@nginx_Fastdfs2 ~]# fdfs_test /etc/fdfs/client.conf upload test.jsp This is FastDFS client test program v5.05 Copyright (C) 2008, Happy Fish / YuQing FastDFS may be copied only under the terms of the GNU General Public License V3, which may be found in the FastDFS source kit. Please visit the FastDFS Home Page http://www.csource.org/ for more detail. [2016-06-07 03:06:33] DEBUG - base_path=/tmp, connect_timeout=30, network_timeout=30, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0 tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.1.190, port=23000 server 2. group_name=, ip_addr=192.168.1.200, port=23000 group_name=group1, ip_addr=192.168.1.200, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgByFdVybiAcFDfAAAAAAAAAAA902.jsp source ip address: 192.168.1.200 file timestamp=2016-06-07 03:06:32 file size=0 file crc32=0 example file url: http://192.168.1.200/group1/M00/00/00/wKgByFdVybiAcFDfAAAAAAAAAAA902.jsp storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKgByFdVybiAcFDfAAAAAAAAAAA902_big.jsp source ip address: 192.168.1.200 file timestamp=2016-06-07 03:06:32 file size=0 file crc32=0 example file url: http://192.168.1.200/group1/M00/00/00/wKgByFdVybiAcFDfAAAAAAAAAAA902_big.jsp