nfs調優思路

nfs的調優有兩個方面:

  • 性能調優

  • 安全性的保障


其中,性能調優方面可以分爲三個方向來進行:

  • 磁盤層(nfs server端上磁盤讀寫的性能)

  • 應用層(針對於nfs建立的應用程序)

  • 網絡層(nfs依賴的傳輸網絡)


磁盤層面的調優可以通過劃分raid來進行

client端和server端的調優都需要考慮到,下面有幾個常用的調優措施:

1、通過設置nfs數據塊大小來調優

[root@toolbox ~]# cat /proc/mounts

192.168.x.x:/data /mnt nfs rw,vers=3,rsize=32768,wsize=32768,hard,proto=tcp,timeo=600,retrans=2,sec=sys,addr=192.168.x.x 0 0

其中rsize=32768,wsize=32768指的是rpc讀寫數據包的分片大小。若設置的過小,則會增大rpc傳輸數據包的數量,也就會相應地增大網絡的流量。因此設置這個參數的時候,需要考慮到機器的網絡環境。通常情況下,高帶寬的機器可以相應地將這個參數設置大一點。


2、通過設置MTU值來調優

MTU值代表了系統的最大可傳輸單元,系統的默認值是1500。通過netstat -i可以看出網卡的相關信息

[root@toolbox ~]# netstat -i

Kernel Interface table

Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0      1500 68955307      0      0 0      88410056      0      0      0 BMRU

lo       65536    17310      0      0 0         17310      0      0      0 LRU

通過修改MTU的大小可以確保數據包傳輸的次數。可以通過修改/etc/sysconfig/network-scripts/ifcfg-eth0或ifconfig eth0 mtu 9000 up來修改

注意:由於一些正在運行的進程可能不兼容新的MTU值,所以這會存在一些丟包的風險。


3、通過timeo和restrans來調優

timeo表示等待回傳數據包的時間,默認值是0.7。請注意,這裏的單位是一秒的10分之一,即如果設置爲4個單位,則nfs客戶端會等待4/10秒後再開始回傳數據包。

testrans表示客戶端重試回傳的總次數,如果超過了這個限制就會報出一個超時。

[root@toolbox ~]# mount 192.168.0.102:/data /mnt -o timeo=4,retrans=4

可通過netstat -r來查看當前的nfs rpc傳輸情況:

[root@toolbox ~]# nfsstat -r

Client rpc stats:

calls      retrans    authrefrsh

5          0          0


4、開啓多線程調優

nfs默認採用了8並行進程來提供服務。如果有大量連接訪問到nfs,則可以適當提高這個值。

下面將nfs並行進程提高到16個

[root@toolbox ~]# cat /etc/sysconfig/nfs

```

RPCNFSDCOUNT=16

```


5、通過rpc同步或異步來調優

當nfs收到讀寫請求後,會通過rpc協議傳輸到server端,然後在server端上通過調用vfs的接口來對磁盤進行操作。同步(sync)請求只能夠一個接一個的執行。異步(async)請求的接受和執行是分開的。異步的調用可以保證一定較短的相應時間。

注意:異步的操作在高頻數據訪問的場景下可能會產生一些數據丟失、宕機的故障發生,最好在一些對數據不敏感的業務使用異步。

[root@toolbox ~]# mount 192.168.0.101:/data /mnt -o rw,async


6、調整socket接收隊列來調優

在傳輸大文件的過程中通常會需要申請大內存,這涉及到兩個參數rmem、wmem,分別代表了接受和發送隊列的長度。通常調高此值可以在傳輸大文件場景下提高速率,但這意味着需要更多的內存,這就會帶來oom的風險。

可以通過調整/etc/sysctl.conf來調整

echo 219136 > /proc/sys/net/core/rmem_default

echo 219136 > /proc/sys/net/core/rmem_max

echo 219136 > /proc/sys/net/core/wmem_default

echo 219136 > /proc/sys/net/core/wmem_max


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