NFS 存儲以及 rsync 備份工具

一、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軟件列表
1、nfs-utils:這個NFS服務主程序
包括rpc.nfsd、rpc.mountd 兩個daemons和相關文檔說明及執行命令文件等。
2、rpcbind:Centos6.x下面RPC的主程序。

安裝: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服務端
1、NFS服務端配置文件路徑:/etc/exports,默認是空的。
2、/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 備份工具

 /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

在客戶端執行掛載:

      mount -t nfs 192.168.153.134:/data /mnt=============掛載
      df -h============查看掛載
      mount==========查看掛載
      cat /proc/mounts=====查看掛載
      ls /mnt/==========查看掛載點/mnt/,就會讀到目錄/data/下的文件。
      (sync讀寫到磁盤) 

在客戶端實現掛載服務端/data目錄 (umount 卸載掛載)

     首先查看服務端能否掛載 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=======嘗試重新掛載一個已經掛載了的文件系統

有關案例:
一、fstab修改錯誤導致系統無法啓動故障修復案例
維護模式或救援模式:mount -o rw,remount / 然後修改/etc/fstab
二、文件系統只讀故障修復案例
維護模式或救援模式:mount -o rw,remount /
mount掛載性能優化參數選項

   1、安全掛載參數
      mount -t nfs -o nosuid,noexec,nodev,rw 192.168.153.134:/data /mnt
   2、性能優化掛載
        ① 禁止更新目錄及文件時間戳掛載
        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

二、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/ [email protected]:/tmp/    # -e指定隧道,-p 22 隧道的端口
       pull(拉):
      rsync -avzP -e 'ssh -p 22' [email protected]:/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
1、在rsync配置文件里加上上面那些配置
NFS 存儲以及 rsync 備份工具
客戶端配置rsync

  1、創建密碼文件
     echo "oldboy" >/etc/rsync.password
     chmod 600 /etc/rsync.passsword
     ls -ld /etc/rsync.password
     cat /etc/rsync.password
  2、rsync(推、拉)
     push(推):  rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password
     pull(拉): rsync -avz [email protected]::backup /tmp/ --password-file=/etc/rsync.password
rsync優點:
                增量備份同步,支持socket(daemon),集中備份。

rsync缺點:

                   1、大量小文件同步的時候,對比時間較長,有的時候,rsync進程停止。
                    解決:a、打包同步。 b、 drbd(文件系統同步複製block)
                   2、同步大文件,10G這樣的大文件有時也會出現問題,中斷。未完整同步之前,是隱藏文件,同步完成後改爲正常文件。

客戶端rsync命令排除:
NFS 存儲以及 rsync 備份工具
客戶端定時同步:
NFS 存儲以及 rsync 備份工具
添加到定時任務(crontab -e)
NFS 存儲以及 rsync 備份工具

三、實時同步:(inotify或sersync)

inotify是一種強大的、細粒度的、異步的文件系統事件監控機制。
在nfs上安裝inotify

1、mkdir -p /home/oldboy/tools   ###創建存放的目錄
2、cd /home/oldboy/tools/  
3、wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  ###inotity下載的網址
4、ls -l /proc/sys/fs/inotify/    ###看是否支持
5、tar zxf inotify-tools-3.14.tar.gz   cd inotify-tools-3.14   ###解包並切換路徑
6、./configure --prefix=/usr/local/inotify-tools-3.14     ###軟件包安裝到/usr/local/inotify-tools-3.14 路徑下
7、make && make install
8、ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools   ###創建軟鏈接

工具集介紹:(cd /usr/local/inotify-tools && ll bin)
1、inotifywait:監控目錄的變化,守護進程。
2、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 備份工具

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章