NFS 存储以及 rsync 备份工具

1、NFS(network file system)网络文件共享服务

适合于中小型网站集群架构。
 大型网站,会用到分布式文件系统 Moosefs( mfs),glusterfs,FastDFS
 功能:经过网络让不一样的主机系统之间能够共享文件或目录。

NFS在企业中的应用场景
在企业架构的工做环境中,NFS网络文件系统通常用来存储共享视频、图片、附件等静态资源文件,通常是把网站用户上传的文件都放到NFS共享里。
NFS 存储以及 rsync 备份工具
NFS 存储以及 rsync 备份工具
NFS 工做原理
NFS 存储以及 rsync 备份工具
NFS的RPC服务,在Centos5.X下称为portmap,在Centos6.X下称为rpcbind
NFS软件列表
一、nfs-utils:这个NFS服务主程序
包括rpc.nfsd、rpc.mountd 两个daemons和相关文档说明及执行命令文件等。
二、rpcbind:Centos6.x下面RPC的主程序。node

安装:yum install nfs-utils rpcbind -y
查看:rpm -qa nfs-utils rpcbind
/etc/init.d/rpcbind status==========查看rpcbind服务是否开启。
/etc/init.d/rpcbind start  ==========启动rpcbind服务。
netstat -lntup|grep rpcbind========查看rpcbind服务的端口。
lsof -i :111 或 netstat -lntup|grep 111==========知道端口查看对应的服务。
chkconfig --list rpcbind===========查看rpcbind服务是否开机自启动。
rpcinfo -p localhost==========查看rpc里有没有nfs的端口信息。
chkconfig nfs on    ==========设置nfs开机自启动。
注意:rpcbind先启动,nfs再启动。rpcbind重启后,rpcinfo -p localhost里就没有nfs的数据了。
  肯定rpcbind服务和nfs服务前后启动顺序(less /etc/init.d/rpcbind,less  etc/init.d/nfs    看chkconfig后面的数字)
   之后开机自启动服务命令放到/etc/rc.local里面。
ps -ef|egrep "rpc|nfs"========查看rpc和nfs多个服务进程。

配置NFS服务端
一、NFS服务端配置文件路径:/etc/exports,默认是空的。
二、/etc/exports配置文件格式
NFS共享的目录 NFS客户端地址1(参数1,参数2....) 客户端地址2(参数1,参数2.....)
NFS共享的目录 NFS客户端地址(参数1,参数2....) 使用第二个格式
实*例一:共享/data目录给192.168.153.整个网段的主机读写*
(即实现将nfs server上的/data目录共享给192.168.153.
,整个网段的主机可读写,在nfs-server上执行,ip地址为192.168.153.134。)
答:也能够用exportfs -o rw,sync 192.168.153.134:/data
NFS 存储以及 rsync 备份工具git

/etc/init.d/nfs reload 至关于 exportfs -rv ===============平滑生效
(reload和exportfs -r做用同样的缘由):
[root@nfs-server ~]# grep "reload" -A 1 /etc/init.d/nfs
  reload | force-reload)
        /usr/sbin/exportfs -r

在客户端执行挂载:github

mount -t nfs 192.168.153.134:/data /mnt=============挂载
      df -h============查看挂载
      mount==========查看挂载
      cat /proc/mounts=====查看挂载
      ls /mnt/==========查看挂载点/mnt/,就会读到目录/data/下的文件。
      (sync读写到磁盘)

在客户端实现挂载服务端/data目录 (umount 卸载挂载)shell

首先查看服务端可否挂载 showmount -e loaclhost,再肯定客户端可否挂载 showmount -e 192.168.153.134
     mount -t nfs 192.168.153.134:/data /mnt重启以后就没有了,因此将mount -t nfs 192.168.153.134:/data /mnt放到/etc/rc.local永久生效。

在客户端/mnt建立文件,权限不够安全

在服务端执行cat /var/lib/nfs/etab查看权限配置的参数:65534
     而后grep 65534 /etc/passwd查看有权限的用户
     最后改变属主 chown -R nfsnobody /data       (-R递归)

在服务端在/data下建立文件,在客户端显示属主是root。
(注意:若是出现NO route to host,说明防火墙拦截;而后把防火墙关掉 /etc/init.d/iptables stop;最后检查是否连上 telnet 192.168.153.134 111)
mount挂载参数
若是追求极致:能够用以下参数挂载。(了解便可,默认就有这些参数)性能优化

mount -t nfs -o bg,hard,intr,rsize=131072,wsize=131072 192.168.153.134:/data /mnt
   mount -t==============指定文件类型
   hard      ==============硬挂载,通常配合intr使用
   rsize,wsize==========读和写的传输能力,数值越大传输越快。
 若是想优化挂载,就把rsize和wsize的值加大。

man nfs后的 -o重要参数服务器

sync======读写到磁盘
   rw    ======以可读可写的方式挂载一个文件系统
   noexec======在挂载的文件系统中不容许直接执行任何二进制的程序
   noatime=======不更新文件系统上的inode访问时间
   nodiratime=======不更新文件系统上目录inode访问时间
   nosuid========不容许suid生效
   remount=======尝试从新挂载一个已经挂载了的文件系统

有关案例:
1、fstab修改错误致使系统没法启动故障修复案例
维护模式或救援模式:mount -o rw,remount / 而后修改/etc/fstab
2、文件系统只读故障修复案例
维护模式或救援模式:mount -o rw,remount /
mount挂载性能优化参数选项网络

一、安全挂载参数
      mount -t nfs -o nosuid,noexec,nodev,rw 192.168.153.134:/data /mnt
   二、性能优化挂载
        ① 禁止更新目录及文件时间戳挂载
        mount -t nfs -o noatime,nodiratime 192.168.153.134:/data /mnt
        ② 安全加优化的挂载方式
        mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 192.168.153.134:/data /mnt

2、rsync 备份工具(先比较,在同步)

rsync是一款开源的、快速的、多功能的、可实现全量和增量的本地或远程数据同步备份的优秀工具。
一个rsync至关于scp,cp,rm,可是还优于他们每个命令。架构

scp  远程拷贝
      cp   本地拷贝
      rm   删除功能
     rsync能够是一个网络服务(port端口 socket服务)

rsync命令是客户端命令参数:并发

-a(archive)归档模式,表示以递归方式传输文件,并保持全部文件属性
      -v(verbose)详细模式输出,传输时的进度等信息
      -z(compress)传输时进行压缩以提升传输效率,--compress-level=HUM可按级别压缩
      -r(recursive)对子目录以递归模式,即目录下的全部目录都一样传输
      -t(times)保持文件时间信息
      -o(owner)保持文件属主信息
      -p(perms)保持文件权限
      -g(group)保持文件属组信息
      -P(progress)显示同步的过程及传输时的进度等信息
      -D(devices)保持设备文件信息
      -l(link)保留软连接

第一种工做模式:local(本地)

rsync -avz /etc/hosts /tmp/    =====cp 增量同步到/tmp/下,若是同样不一样步。   # -avz保持属性
      rsync -avz --delete /null/ /tmp/ =====rm 前面有啥,后面有啥;前面没有,后面的删掉,绝对同样。

第二种工做模式:(remote shell 远程的shell)

push(推):
      rsync -avzP -e 'ssh -p 22' /tmp/ root@192.168.153.133:/tmp/    # -e指定隧道,-p 22 隧道的端口
       pull(拉):
      rsync -avzP -e 'ssh -p 22' root@192.168.153.133:/tmp/ /tmp/

rsync配置文件:/etc/rsyncd.conf
NFS 存储以及 rsync 备份工具

启动rsync服务:rsync --daemon
查看进程:ps -ef|grep rsync|grep -v grep
杀进程:pkill 进程名=========pkill rsync
              killall 进程名=========killall rsync
              kill pid(-9强制,不建议用)=======kill -HUP `cat /var/run/rsyncd.pid`(平缓)
取端口号:netstat -lntup|grep rsync
                  ss -lntup|grep rsync
                  lsof -i :873
链接远程主机:telnet 192.168.153.136 
链接远程主机rsync端口:telnet 192.168.153.136 873
查看防火墙状态:/etc/init.d/iptables status    关闭:/etc/init.d/iptables stop
安全优化:rsync --daemon --address=192.168.153.136 只有访问192.168.153.136这个ip才和你对话,其余的都不理你。

rsync配置服务端

useradd rsync -s /sbin/nologin -M 添加虚拟用户,不建立家目录。
    mkdir /backup  
    chown -R rsync /backup/    客户端连上就是rsync权限
    echo "rsync_backup:oldboy" >/etc/rsync.password 建立帐户和密码的文件
    chmod 600 /etc/rsync.password  把这个文件权限改为600

总步骤:
服务端配置 rsync
一、在rsync配置文件里加上上面那些配置
NFS 存储以及 rsync 备份工具
客户端配置rsync

一、建立密码文件
     echo "oldboy" >/etc/rsync.password
     chmod 600 /etc/rsync.passsword
     ls -ld /etc/rsync.password
     cat /etc/rsync.password
  二、rsync(推、拉)
     push(推):  rsync -avz /tmp/ rsync_backup@192.168.153.136::backup --password-file=/etc/rsync.password
     pull(拉): rsync -avz rsync_backup@192.168.153.136::backup /tmp/ --password-file=/etc/rsync.password
rsync优势:
增量备份同步,支持socket(daemon),集中备份。

rsync缺点:

一、大量小文件同步的时候,对比时间较长,有的时候,rsync进程中止。
                    解决:a、打包同步。 b、 drbd(文件系统同步复制block)
                   二、同步大文件,10G这样的大文件有时也会出现问题,中断。未完整同步以前,是隐藏文件,同步完成后改成正常文件。

客户端rsync命令排除:
NFS 存储以及 rsync 备份工具
客户端定时同步:
NFS 存储以及 rsync 备份工具
添加到定时任务(crontab -e)
NFS 存储以及 rsync 备份工具

3、实时同步:(inotify或sersync)

inotify是一种强大的、细粒度的、异步的文件系统事件监控机制。
在nfs上安装inotify

一、mkdir -p /home/oldboy/tools   ###建立存放的目录
二、cd /home/oldboy/tools/  
三、wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  ###inotity下载的网址
四、ls -l /proc/sys/fs/inotify/    ###看是否支持
五、tar zxf inotify-tools-3.14.tar.gz   cd inotify-tools-3.14   ###解包并切换路径
六、./configure --prefix=/usr/local/inotify-tools-3.14     ###软件包安装到/usr/local/inotify-tools-3.14 路径下
七、make && make install
八、ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools   ###建立软连接

工具集介绍:(cd /usr/local/inotify-tools && ll bin)
一、inotifywait:监控目录的变化,守护进程。
二、inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计。
NFS实时监控/data目录的变化(create,close_write,delete增,改,删)
/usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,close_write,delete /data
NFS 存储以及 rsync 备份工具
脚本实现NFS服务器与backup实时同步(inotify.sh)(200到300张并发环境)
NFS 存储以及 rsync 备份工具
--delete 无差别同步
而后将 /bin/sh server/scripts/inotify.sh & 放到/etc/rc.local里
实时同步的优化
NFS 存储以及 rsync 备份工具
inotify 优缺点:
NFS 存储以及 rsync 备份工具
NFS 存储以及 rsync 备份工具

相关文章
相关标签/搜索