1. 程式人生 > >Linux NFS掛載優化,inotify+rsync實時備份

Linux NFS掛載優化,inotify+rsync實時備份

修復 屬性 rom 可控 共享 生產場景 優化參數 包括 linux

查看客戶端掛載的參數

技術分享圖片

技術分享圖片

強制卸載


技術分享圖片

高並發情況下,可以通過明確加上noatime,以達到提升優化I/O性能


ro:以只讀方式掛載一個文件系統

rw: 以可寫的方式掛載一個文件系統

defaults(默認):這是fstab裏的默認值,包括rwsuiddevexecautonouserand async

默認情況下,都用的默認。

mount掛載性能優化參數選項

1、禁止更新目錄及文件時間戳掛載:

mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt

2、安全加優化的掛載方式

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt

3、默認掛載

mount -t nfs 172.16.1.31:/data /mnt

如果是本地文件系統

mount /dev/sdb1 /mnt -o defaults,async,noatime,data=writeback,barrier=0


一般6.6系統可使用如下參數

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime, rsize=131072,wsize=131072 172.16.1.31:/data /mnt

不過CentOS6.6默認的掛載參數性能還不錯

具體的要根據業務需要來設定

NFS內核優化建議(服務器端):

NFS內核調優;調整接收/發送套接字緩沖區大小


cat /proc/sys/net/core/rmem_default 默認
cat /proc/sys/net/core/rmem_max 最大

cat /proc/sys/net/core/wmem_default 默認
cat /proc/sys/net/core/wmem_max 最大

上述文件對應命令如下:

cat >>/etc/sysctl.conf<<EOF

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.wmem_max = 16777216

net.core.rmem_max = 16777216

EOF

執行sysctl -p生效

企業場景NFS共享存儲優化:

1ssd,多塊,raid5/raid10。網卡至少千兆(多塊bond

2、配置文件:

技術分享圖片

all_squash 不論登入NFS的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是nobody

anonuid 可以自行設定這個UID的值,這個UID必需要存在於你的/etc/passwd當中
anongid anonuid,但是變成groupID就是了
sync 資料同步寫入到內存與硬盤當中
async 資料會先暫存於內存當中,而非直接寫入硬盤

3、客戶端掛載優化配置命令:

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime, rsize=131072,wsize=131072 172.16.1.31:/data /mnt

兼顧性能安全

NFS優點:

簡單,容易上手

NFS文件系統內數據是在文件系統之上的,也就是說數據是能看得見的

部署快速,維護簡單方便,可控

可靠,從軟件層面上看,數據可靠性高

服務非常穩定

NFS局限:

存在單點故障,如果NFS Server宕機了,都不能訪問(可通過高可用彌補)

大數據高並發場合,性能有限(2千萬/日以下PV的網站不是瓶頸)

客戶端認證是基於ip和主機名,權限要根據ID識別,安全性一般(用於內網則問題不大)

NFS數據是明文的,NFS本身不對數據完整性作驗證

多臺客戶機掛載一個NFS服務器時,連接管理維護麻煩(耦合度高),尤其NFS服務端出問題後,

所有客戶端都處於掛掉狀態(測試環境可用autofs自動掛載解決,正式環境可修復NFS或強制卸載)

生產場景應該多把數據的訪問往前推,盡量把靜態存儲裏的資源通過CDN或緩存服務器提供服務

showmount一般用於從NFS客戶端檢查NFS服務器共享目錄的情況,其常用參數如下

-e 顯示NFS服務器輸出的目錄列表

-d 顯示NFS服務器提供的共享目錄

技術分享圖片

exportfs命令

exportfs -rv 命令相當於/etc/init.d/nfs reload

exportfs -o rw,sync,all_squash,anonuid=888,anongid=888 10.0.0.0/24:/data

技術分享圖片有啥卵用???


防火墻控制

一般內網環境,不需要,如果要配置的話,兩選一

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片技術分享圖片

技術分享圖片

技術分享圖片



技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

這個源比較特殊

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

inotify 可以監視的文件系統常見事件包括:
IN_ACCESS:文件被訪問
IN_MODIFY:文件被修改
IN_ATTRIB,文件屬性被修改
IN_CLOSE_WRITE,以可寫方式打開的文件被關閉
IN_CLOSE_NOWRITE,以不可寫方式打開的文件被關閉
IN_OPEN,文件被打開
IN_MOVED_FROM,文件被移出監控的目錄
IN_MOVED_TO,文件被移入監控著的目錄
IN_CREATE,在監控的目錄中新建文件或子目錄
IN_DELETE,文件或目錄被刪除
IN_DELETE_SELF,自刪除,即一個可執行文件在執行時刪除自己
IN_MOVE_SELF,自移動,即一個可執行文件在執行時移動自己

測試創建

技術分享圖片

測試刪除

技術分享圖片

測試關閉-

技術分享圖片

測試關閉-寫時,創建也能監測

技術分享圖片


簡化輸出

技術分享圖片


技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

有時重啟會失效,所以放rc.local

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片





Linux NFS掛載優化,inotify+rsync實時備份