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 備份工具

相關文章
相關標籤/搜索