本身闲着没事,在小黑上虚拟了 4 个 centos 64 的系统,用来安装分布式 fastdfs 、 nginx 负载均衡,过程一路艰辛,搞了一个通宵都没弄好,终于在次日的傍晚终于弄好了,记录一下过程。
有时候看书会犯糊涂,看完了都不知道将了啥,只有动手坐坐,啥玩意都明白差很少了。
有时候太懒了,哎,这是病,得治。
Tracker Server 192.168.55.222 /home/tracker 端口:22122 Tracker Server 192.168.55.226 /home/tracker 端口:22122 Storage1 Server 192.168.55.223 group1 /home/storage 端口:23000 Storage4 Server 192.168.55.227 group1 /home/storage 端口:23000 Storage2 Server 192.168.55.224 group2 /home/storage 端口:23000 Storage3 Server 192.168.55.225 group2 /home/storage 端口:23000 #Storage2为group2的源服务器 注意: 1.group2同组的Storage2和Storage3 FastDFS服务端口必须一致: port=23000。 2.一台服务器能够装多个组(group)但不能装同组的多个Storage,日志会报错误,日志报错缘由是"注意1" 3.Version 4.05以前fastdfs内部绑定了libevent做为http服务器.Version 4.05以后的版本删除了内置的web http服务,内置的web http服务是个累赘,不用也罢! 4.启动storage server时,一直处于僵死状态.启动storage server,storage将链接tracker server,若是连不上,将一直重试。直到链接成功,启动才算真正完成!若是集群中有2台tracker server,而其中一台tracker没有启动,可能会致使storage server一直处于僵死状态
#软件安装包存储: /usr/local/src /usr/local/fastdfs fastdfs安装目录 #基本目录列表: #建立fastdfs用户 /usr/sbin/groupadd fastdfs /usr/sbin/useradd -g fastdfs fastdfs #建立存储数据目录 mkdir -p /home/fastdfs/tracker;#建立tracker目录保存运行日志 mkdir -p /home/fastdfs/storage;#建立Storage目录保存运行日志及其data数据 # source .bashrc
################Tracker################ # vi .bashrc alias worksrc='cd /usr/local/src;ls' alias workfastdfs='cd /usr/local/fastdfs;ls' alias worktracker='cd /home/fastdfs/tracker;ls' #track启动 重启 中止 alias sertracker='service fdfs_trackerd' 配置生效 # source .bashrc
################Storage################ # vi .bashrc alias worksrc='cd /usr/local/src;ls' alias workfastdfs='cd /usr/local/fastdfs;ls' alias workstorage='cd /home/fastdfs/storage;ls' alias workfastdfs='cd /usr/local/nginx;ls' #storage启动 重启 中止 alias serstorage='service fdfs_storaged' #nginx 启动 重启 中止 alias sernginx='service nginxd' 配置生效 # source .bashrc
1.安装libevent 和 fastdfs node
#卸载系统自带libevent,自带版本太低,安装fastdfs会出错 rpm -qa|grep libevent # 或者 yum remove libevent* #下载安装libevent #worksrc; wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz; tar -zxvf libevent-2.0.19-stable.tar.gz; cd libevent-2.0.19-stable; #make clean; ./configure --prefix=/usr/local/libevent make && make install; #为libevent建立软连接到/lib库下,64位系统对应/lib64 ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5 ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 #命令汇总: worksrc;wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz;tar -zxvf libevent-2.0.19-stable.tar.gz;cd libevent-2.0.19-stable;make clean;./configure --prefix=/usr/local/libevent;make && make install;cd ../
worksrc; # 自行下载 4.07 http://sourceforge.net/projects/fastdfs/files/ # wget http://fastdfs.googlecode.com/files/FastDFS_v4.06.tar.gz tar -zxvf FastDFS_v4.07.tar.gz cd FastDFS #因为定义/usr/local/fastdfs为fastdfs安装目录,因此须要修改make.sh vim make.sh #/etc/fdfs 所有替换为 /usr/local/fastdfs/conf %s/\/etc\/fdfs/\/usr\/local\/fastdfs\/conf/g # TARGET_PREFIX=/usr/local 修改成 /usr/local/fastdfs sed -i 's:TARGET_PREFIX=.*:TARGET_PREFIX=/usr/local/fastdfs:g' make.sh # TARGET_CONF_PATH=/etc/fdfs 修改成 /usr/local/fastdfs/conf sed -i 's:TARGET_CONF_PATH=.*:TARGET_CONF_PATH=/usr/local/fastdfs/conf:g' make.sh #安装 ./make.sh C_INCLUDE_PATH=/usr/local/libevent/include LIBRARY_PATH=/usr/local/libevent/lib ./make.sh install修改 fastdfs 启动文件
# 修改 fdfs_trackerd 配置文件 vim /etc/init.d/fdfs_trackerd #替换 %s/usr\/local/usr\/local\/fastdfs/g %s/etc\/fdfs/usr\/local\/fastdfs\/conf/g #增长x权限 chmod a+x /etc/init.d/fdfs_trackerd # 修改 fdfs_storaged 配置文件 vim /etc/init.d/fdfs_storaged #替换 %s/usr\/local/usr\/local\/fastdfs/g %s/etc\/fdfs/usr\/local\/fastdfs\/conf/g #增长x权限 chmod a+x /etc/init.d/fdfs_storaged
2.安装Tracker Server - 192.168.55.222 nginx
#修改tracker.conf配置 vim /usr/local/fastdfs/conf/tracker.conf # the tracker server port port=22122 # the base path to store data and log files base_path=/home/yuqing/fastdfs -> base_path=/home/fastdfs/tracker #日志目录 # sed -i 's:base_path=.*:base_path=/home/fastdfs/tracker:g' tracker.conf reserved_storage_space = 4GB -> reserved_storage_space = 1GB # sed -i 's:reserved_storage_space=.*:reserved_storage_space = 1GB:g' tracker.conf #unix group name to run this program, #not set (empty) means run by the group of current user run_by_group= -> fastdfs #unix username to run this program, #not set (empty) means run by current user run_by_user= -> fastdfs #开启自定义server ID取代ip形式,方便内部网络服务器更换ip#**此方式要重点理解,4.0之后新特性 use_storage_id = true #使用server ID做为storage server标识 storage_ids_filename = storage_ids.conf #<id> <group_name> <ip_or_hostname> id_type_in_filename = id #文件名反解析中包含server ID,之前是ip复制storage_ids.conf文件
cp -r /usr/local/src/FastDFS/conf/storage_ids.conf /usr/local/fastdfs/conf/ #编辑storage服务器ID与IP地址的对应关系 vim /usr/local/fastdfs/conf/storage_ids.conf #<id> <group_name> <ip_or_hostname> # 100001 group1 192.168.55.223
chown -R fastdfs:fastdfs /home/fastdfs增长x权限
chmod a+x /etc/init.d/fdfs_trackerd启动 Tracker
service fdfs_trackerd start #启动过程当中出现的错误 ./fdfs_trackerd: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory #解决办法 ln -s /usr/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 #查看日志 vim /home/fastdfs/tracker/logs/trackerd.log #启动后成功的日志 #[2013-10-03 20:50:08] INFO - FastDFS v4.07, base_path=/home/fastdfs/tracker, run_by_group=fastdfs, run_by_user=fastdfs, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, accept_threads=1, work_threads=4, store#_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=10.00%, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sy#nc_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_sp#ace_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, use_storage_id=1, id_type_in_filename=id, storage_id_count=1, rotate_error_log=0, error_log_rotate_time=00:00, rotate_error_log_size=0, store_slave_file_use_link=0, use_con#nection_pool=0, g_connection_pool_max_idle_time=3600s设置开机启动 Tracker
vim /etc/rc.d/rc.local service fdfs_trackerd start附目录说明
# tracker server目录及文件结构: # ${base_path} # |__data # | |__storage_groups.dat:存储分组信息 # | |__storage_servers.dat:存储服务器列表 # |__logs # |__trackerd.log:tracker server日志文件
3.安装Storage Server -192.168.55.223
git
vim /usr/local/fastdfs/conf/storage.conf # the name of the group this storage server belongs to group_name=group1 # the name of the group this storage server belongs to # the storage server port #the storage server port port=23000 # the base path to store data and log files #日志目录 base_path=/home/yuqing/fastdfs -> /home/fastdfs/storage # store_path#, based 0, if store_path0 not exists, it's value is base_path #data数据存储目录 # the paths must be exist store_path0=/home/fastdfs/storage # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address tracker_server=192.168.209.121:22122 ->192.168.55.222:22122 #unix group name to run this program, #not set (empty) means run by the group of current user run_by_group= -> fastdfs #这儿必定填写执行的用户名,否则会启动报错,测试环境填写的 root #unix username to run this program, #not set (empty) means run by current user run_by_user= -> fastdfs #这儿必定填写执行的用户名,否则会启动报错,测试环境填写的 root设置 Storage Server 用户及组
chown -R fastdfs:fastdfs /home/fastdfs增长x权限
chmod a+x /etc/init.d/fdfs_storaged启动 Storage
service fdfs_storaged start #接下来会出现不少mkdir data path,这是系统在建立数据目录 #data path: /home/fastdfs/storage/data, mkdir sub dir... #mkdir data path: 00 ... #mkdir data path: 01 ... #mkdir data path: 02 ... #mkdir data path: 03 ... #....................... #data path: /home/fastdfs/storage/data, mkdir sub dir done.设置开机启动 Storage
vim /etc/rc.d/rc.local service fdfs_storaged start附目录说明
# storage server目录及文件结构: # ${base_path} # |__data # | |__storage_stat.dat:本地存储信息 # | |__sync # | |__ binlog.000 # | |__ binlog.index # |__logs # |__storaged.log:storage server日志文件
#建立相关用户和目录建立www用户和组 /usr/sbin/groupadd www /usr/sbin/useradd -g www www #建立nginx日志目录 mkdir -p /home/www/logs chmod a+w /home/www/logs chown -R www:www /home/www/logs安装nginx
cd /usr/local/src #下载 nginx #wget http://nginx.org/download/nginx-1.5.4.tar.gz tar -zxvf nginx-1.5.4.tar.gz cd nginx-1.5.4/ ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module make && make install #--with-http_stub_status_module 用来监控nginx的当前状态安装fastdfs-nginx-module插件
#worksrc; cd /usr/local/src # wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.15.tar.gz tar -zxvf fastdfs-nginx-module_v1.15.tar.gz #修改插件配置文件 vim /usr/local/src/fastdfs-nginx-module/src/config ngx_addon_name=ngx_http_fastdfs_module HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" CORE_INCS="$CORE_INCS /usr/local/fastdfs/include/fastdfs /usr/local/fastdfs/include/fastcommon/" CORE_LIBS="$CORE_LIBS -L/usr/local/fastdfs/lib -lfastcommon -lfdfsclient" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/usr/local/fastdfs/conf/mod_fastdfs.conf\"'" #复制mod_fastdfs.conf到/usr/local/fastdfs/conf/目录下 cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /usr/local/fastdfs/conf/上面编译时使用的动态连接库
#启动nginx报错 #./nginx: error while loading shared libraries: libfastcommon.so: cannot open shared object file: No such file or directory #解决办法 ---> 将/usr/local/fastdfs/lib 加入系统文件/etc/ld.so.conf中 vim /etc/ld.so.conf /usr/local/fastdfs/lib #更新库文件缓存ld.so.cache /sbin/ldconfig -v编译fastdfs-nginx-module模块
# 从新编译nginx cd /usr/local/src/nginx-1.5.4 ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src make; make install修改mod_fastdfs.conf配置
vim /usr/local/fastdfs/conf/mod_fastdfs.conf # the base path to store log files base_path=/tmp # if load FastDFS parameters from tracker server # since V1.12 # default value is false load_fdfs_parameters_from_tracker=true # FastDFS tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address # valid only when load_fdfs_parameters_from_tracker is true tracker_server=192.168.55.222:22122 # the port of the local storage server # the default value is 23000 storage_server_port=23000 # the group name of the local storage server group_name=group1 # if the url / uri including the group name # set to false when uri like /M00/00/00/xxx # set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx # default value is false url_have_group_name = true # path(disk or mount point) count, default value is 1 # must same as storage.conf store_path_count=1 # store_path#, based 0, if store_path0 not exists, it's value is base_path # the paths must be exist # must same as storage.conf store_path0=/home/fastdfs/storage # set the log filename, such as /usr/local/apache2/logs/mod_fastdfs.log # empty for output to stderr (apache and nginx error_log file) log_filename=/home/www/logs/mod_fastdfs.lognginx配置简洁版本
#vim /usr/local/nginx/conf/nginx.conf user www www; worker_processes 2; error_log /home/www/logs/error.log notice; pid /home/www/logs/nginx.pid; worker_rlimit_nofile 5120; events { use epoll; worker_connections 5120; } http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; server { listen 80; server_name localhost; location /group1/M00 { alias /home/fastdfs/storage/data; ngx_fastdfs_module; } } } #启动nginx /usr/local/nginx/sbin/nginx
4.安装Storage Server -192.168.55.224 github
vim /usr/local/fastdfs/conf/storage.conf # the name of the group this storage server belongs to group_name=group2 # the name of the group this storage server belongs to # the storage server port #the storage server port port=23000 # the base path to store data and log files #日志目录 base_path=/home/yuqing/fastdfs -> /home/fastdfs/storage # store_path#, based 0, if store_path0 not exists, it's value is base_path #data数据存储目录 # the paths must be exist store_path0=/home/fastdfs/storage #unix group name to run this program, #not set (empty) means run by the group of current user run_by_group= -> fastdfs #这儿必定填写执行的用户名,否则会启动报错,测试环境填写的 root #unix username to run this program, #not set (empty) means run by current user run_by_user= -> fastdfs #这儿必定填写执行的用户名,否则会启动报错,测试环境填写的 root # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address tracker_server=192.168.xxx.xxxx:22122 -> tracker_server=192.168.55.222:22122
#启动 Storage service fdfs_storaged restart #接下来会出现不少mkdir data path,这是系统在建立数据目录 #data path: /home/fastdfs/storage/data, mkdir sub dir... #mkdir data path: 00 ... #mkdir data path: 01 ... #mkdir data path: 02 ... #mkdir data path: 03 ... #....................... #data path: /home/fastdfs/storage/data, mkdir sub dir done.
#worksrc; cd /usr/local/src # wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.15.tar.gz tar -zxvf fastdfs-nginx-module_v1.15.tar.gz #修改插件配置文件 vim /usr/local/src/fastdfs-nginx-module/src/config ngx_addon_name=ngx_http_fastdfs_module HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" CORE_INCS="$CORE_INCS /usr/local/fastdfs/include/fastdfs /usr/local/fastdfs/include/fastcommon/" CORE_LIBS="$CORE_LIBS -L/usr/local/fastdfs/lib -lfastcommon -lfdfsclient" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/usr/local/fastdfs/conf/mod_fastdfs.conf\"'" #复制mod_fastdfs.conf到/usr/local/fastdfs/conf/目录下 cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /usr/local/fastdfs/conf/上面编译时使用的动态连接库
#将/usr/local/fastdfs/lib 加入系统文件/etc/ld.so.conf中 vim /etc/ld.so.conf /usr/local/fastdfs/lib #更新库文件缓存ld.so.cache /sbin/ldconfig编译fastdfs-nginx-module模块
# 从新编译nginx cd /usr/local/src/nginx-1.5.4 ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src make; make install修改mod_fastdfs.conf配置
vim /usr/local/fastdfs/conf/mod_fastdfs.conf # the base path to store log files base_path=/tmp # if load FastDFS parameters from tracker server # since V1.12 # default value is false load_fdfs_parameters_from_tracker=true # FastDFS tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address # valid only when load_fdfs_parameters_from_tracker is true tracker_server=192.168.25.11:22122 # the port of the local storage server # the default value is 23000 storage_server_port=23000 # the group name of the local storage server group_name=group2 # if the url / uri including the group name # set to false when uri like /M00/00/00/xxx # set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx # default value is false url_have_group_name = true # path(disk or mount point) count, default value is 1 # must same as storage.conf store_path_count=1 # store_path#, based 0, if store_path0 not exists, it's value is base_path # the paths must be exist # must same as storage.conf store_path0=/home/fastdfs/storage # set the log filename, such as /usr/local/apache2/logs/mod_fastdfs.log # empty for output to stderr (apache and nginx error_log file) log_filename=/home/www/logs/mod_fastdfs.lognginx配置简洁版本
#vim /usr/local/nginx/conf/nginx.conf user www www; worker_processes 2; error_log /home/www/logs/error.log notice; pid /home/www/logs/nginx.pid; worker_rlimit_nofile 5120; events { use epoll; worker_connections 5120; } http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; server { listen 80; server_name localhost; location /group2/M00 { alias /home/fastdfs/storage/data; ngx_fastdfs_module; } } } #启动nginx /usr/local/nginx/sbin/nginx
5.安装Storage Server - 192.168.55.225
web
6.测试及使用fastdfs-192.168.55.222 shell
#修改 client.conf vim /usr/local/fastdfs/conf/client.conf base_path=/home/yuqing/fastdfs-> base_path=/home/fastdfs/tracker tracker_server=192.168.209.121:22122 -> tracker_server=192.168.55.222:22122 #或 sed -i 's:base_path=.*:base_path=/home/fastdfs/tracker:g' /usr/local/fastdfs/conf/client.conf sed -i 's:tracker_server=.*:tracker_server=192.168.55.222\:22122:g' /usr/local/fastdfs/conf/client.conf
#upload cd /usr/local/fastdfs/bin ./fdfs_upload_file /usr/local/fastdfs/conf/client.conf /tmp/t1.jpg #-—————————————————————————————————————— #group1/M00/00/00/oYYBAFJNRnGASWekAAAXkpktHxI423.jpg查看文件信息
./fdfs_file_info /usr/local/fastdfs/conf/client.conf group1/M00/00/00/oYYBAFJNQiiAYIXzAAAXkpktHxI095.jpg #———————————————————————————————————————— source storage id: 100001 source ip address: 192.168.55.223 file create timestamp: 2013-10-03 18:26:57 file size: 6034 file crc32: 2569871122 (0x992D1F12)测试上传
./fdfs_test /usr/local/fastdfs/conf/client.conf upload /tmp/t1.jpg #———————————————————————————————————————— This is FastDFS client test program v4.07 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. [2013-10-04 02:20:19] DEBUG - base_path=/home/fastdfs/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=1, 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.55.223, port=23000 group_name=group1, ip_addr=192.168.55.223, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/oYYBAFJNRWeAHhGuAAAXkpktHxI578.jpg source ip address: 192.168.55.223 file timestamp=2013-10-03 18:22:31 file size=6034 file crc32=2569871122 example file url: http://192.168.55.223/group1/M00/00/00/oYYBAFJNRWeAHhGuAAAXkpktHxI578.jpg storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/oYYBAFJNRWeAHhGuAAAXkpktHxI578_big.jpg source ip address: 192.168.55.223 file timestamp=2013-10-03 18:22:31 file size=6034 file crc32=2569871122 example file url: http://192.168.55.223/group1/M00/00/00/oYYBAFJNRWeAHhGuAAAXkpktHxI578_big.jpg
#监控storage /usr/local/fastdfs/bin/fdfs_monitor /usr/local/fastdfs/conf/storage.conf #若是存在多个多个组,只须要监控其中一个组,就能调出全部组的状态 #删除组内服务器storage和查看各个组内服务器状态 /usr/local/fastdfs/bin/fdfs_monitor /usr/local/fastdfs/conf/client.conf delete group2 192.168.55.223 /usr/local/fastdfs/bin/fdfs_monitor /usr/local/fastdfs/conf/client.conf storage server有7个状态,以下(数值从1~7): # FDFS_STORAGE_STATUS:INIT :初始化,还没有获得同步已有数据的源服务器 # FDFS_STORAGE_STATUS:WAIT_SYNC :等待同步,已获得同步已有数据的源服务器 # FDFS_STORAGE_STATUS:SYNCING :同步中 # FDFS_STORAGE_STATUS:DELETED :已删除,该服务器从本组中摘除 # FDFS_STORAGE_STATUS:OFFLINE :离线 # FDFS_STORAGE_STATUS:ONLINE :在线,尚不能提供服务 # FDFS_STORAGE_STATUS:ACTIVE :在线,能够提供服务
#调整防火墙的规则,开放端口:22122 iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT /etc/init.d/iptables save #调整防火墙的规则,开放端口:23000 iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT /etc/init.d/iptables save #启动tracker进程: /etc/init.d/fdfs_trackerd start #查看trackerd状态: /etc/init.d/fdfs_trackerd status #查看trackerd监听的端口: netstat -plantu | grep tracker #启动Storage进程: /etc/init.d/fdfs_storaged start #查看Storage进程: ps -ef | grep storaged | grep -v grep
存储节点采用了分组(group)的方式。存储系统由一个或多个group组成,group与group之间的文件是相互独立的,全部group的文件容量累加就是整个存储系统中的文件容量。一个group能够由一台或多台存储服务器组成,一个group下的存储服务器中的文件都是相同的,group中的多台存储服务器起到了冗余备份和负载均衡的做用(一个组的存储容量为该组内存储服务器容量最小的那个,不一样组的Storage server之间不会相互通讯,同组内的Storage server之间会相互链接进行文件同步)。 apache
在group中增长服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
vim
当存储空间不足或即将耗尽时,能够动态添加group。只须要增长一台或多台服务器,并将它们配置为一个新的group,这样就扩大了存储系统的容量。
centos
FastDFS只有两个角色:Tracker server和Storage server。Tracker server做为中心结点,其主要做用是负载均衡和调度。Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存量不多。另外,客户端(应用)和Storage server访问Tracker server时,Tracker server扫描内存中的分组和Storage server信息,而后给出应答。由此能够看出Tracker server很是轻量化,不会成为系统瓶颈。
浏览器
FastDFS中的Storage server在其余文件系统中一般称做Trunk server或Data server。Storage server直接利用OS的文件系统存储文件。FastDFS不会对文件进行分块存储,客户端上传的文件和Storage server上的文件一一对应(FastDFS中的文件标识分为两个部分:组名和文件名,两者缺一不可)
可以完成基于这两个做者的博文,wangying 、 zrwm thk。