NFS機能確認について
Linuxカーネルが古かったり、ネットワークカードが古いとPCI-ExpressやGB Etherのスループット
を出し切れないとの事でNFSマウントを利用して検証してみようと思いましたが、
なかなかDiscardや再送が発生する処理を出し切れてないので検証出来てません。
とりあえずNFSのレビューだけ取り合えず行いました。
メモ:
LinuxのカーネルがRHEL6などでないと、ネットワーク処理(送受信)が1コアでしか処理できず、
処理しているCPUコアが100%になってしまい処理が遅延してしまうとの事。
新しいLinuxカーネルではTx/Rx Multiqueueが改善されていて、複数のCPUコアを使用してネットワーク
送受信を処理出来るそうです。Linuxカーネルのバージョンによっては、パケットロスが発生するとの事。
CentOSであれば5.7、6以降を利用する方がいいとの事。
net.core.somaxconn(net.core.somaxconnはTCPソケットが受け付けた接続要求を格納するキュー)
などがディフォルトで128なので設定変更して暫定対応する方法も検討しても良いかもしれません。
NFSサービス用基本アプリ確認
[root@HOME001 nfs_dir]# /sbin/chkconfig --list rpcbind rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@HOME001 nfs_dir]# /sbin/chkconfig --list nfslock nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@HOME001 nfs_dir]# /sbin/chkconfig --list nfs nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@HOME001 nfs_dir]# [root@HOME001 nfs_dir]# service rpcbind status rpcbind (pid 1174) を実行中... [root@HOME001 nfs_dir]# [root@HOME001 nfs_dir]# service nfslock status rpc.statd (pid 1192) を実行中... [root@HOME001 nfs_dir]# [root@HOME001 nfs_dir]# service nfs status rpc.svcgssd は停止しています rpc.mountd (pid 2565) を実行中... nfsd (pid 2630 2629 2628 2627 2626 2625 2624 2623) を実行中... rpc.rquotad (pid 2561) を実行中... [root@HOME001 nfs_dir]#
NFS設定ファイル確認しサービスの有効化
[root@HOME001 nfs_dir]# cat /etc/hosts.allow | grep ALL ALL : 192.168.11.0/255.255.255.0 [root@HOME001 nfs_dir]# cat /etc/hosts.deny | grep ALL ALL:ALL [root@HOME001 nfs_dir]# [root@HOME001 nfs_dir]# vi /etc/exports [root@HOME001 home]# cat /etc/exports /home/nfs_dir 192.168.11.0/255.255.255.0(rw,sync,no_root_squash) [root@HOME001 nfs_dir]# exportfs -ra [root@HOME001 nfs_dir]# showmount -e Export list for HOME001.localdomain: /home/nfs_dir 192.168.11.0/255.255.255.0 [root@HOME001 nfs_dir]# exportfs -v /home/nfs_dir 192.168.11.0/255.255.255.0(rw,wdelay,no_root_squash,no_subtree_check) [root@HOME001 nfs_dir]# [root@HOME001 home]# cat /proc/fs/nfs/exports # Version 1.2 # Path Client(Flags) # IPs /home/nfs_dir 192.168.11.0/255.255.255.0(rw,no_root_squash,sync,wdelay,no_subtree_check,uuid=549fba92:c5d34bdc:ad460fad:a3888c8a) [root@HOME001 home]#
NFSクライアント側でのマウント
[root@HOME002 home]# mkdir nfs_home001 [root@HOME002 ~]# mount -t nfs -o rw home001:/home/nfs_dir /home/nfs_home001 [root@HOME002 ~]# df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/hda2 9.7G 4.6G 4.7G 50% / /dev/hda1 251M 19M 220M 8% /boot tmpfs 125M 0 125M 0% /dev/shm home001:/home/nfs_dir 4.6G 382M 4.0G 9% /home/nfs_home001 [root@HOME002 ~]# [root@HOME002 nfs_home001]# hostname HOME002.localdomain [root@HOME002 nfs_home001]# pwd /home/nfs_home001 [root@HOME002 nfs_home001]# touch test_nfs | echo "test for nfs" > test_nfs [root@HOME002 nfs_home001]# ls -lh 合計 4.0K -rw-r--r-- 1 root root 13 1月 18 11:46 test_nfs [root@HOME002 nfs_home001]#
もし再起動しれも継続的に利用する場合はfstabに追記
[root@HOME002 nfs_home001]# cat /etc/fstab LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 LABEL=SWAP-hda3 swap swap defaults 0 0 home001:/home/nfs_dir /home/nfs_home001 nfs defaults 0 0 [root@HOME002 nfs_home001]#
その他パフォーマンス確認
64MのファイルをNFSマウント上に作成中にnuttcpで0.1秒毎に確認して再送が発生の有無確認。
クライアントを増やして検証してみる。
dd if=/dev/zero of=/home/nfs_home001/nfs_check_file bs=64K count=1024
[root@HOME002 tools]# ./nuttcp -v -i0.1 192.168.11.10 nuttcp-t: v7.1.6: socket nuttcp-t: buflen=65536, nstream=1, port=5101 tcp -> 192.168.11.10 nuttcp-t: time limit = 10.00 seconds nuttcp-t: connect to 192.168.11.10 with mss=1448, RTT=1.683 ms nuttcp-t: send window size = 16384, receive window size = 87380 nuttcp-t: available send window = 12288, available receive window = 65535 nuttcp-r: v7.1.6: socket nuttcp-r: buflen=65536, nstream=1, port=5101 tcp nuttcp-r: interval reporting every 0.10 seconds nuttcp-r: accept from 192.168.11.11 nuttcp-r: send window size = 22120, receive window size = 87380 nuttcp-r: available send window = 16590, available receive window = 65535 0.0625 MB / 0.10 sec = 5.2407 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4874 Mbps 0 retrans 0.1875 MB / 0.10 sec = 15.7282 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4862 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4856 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4861 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4850 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4862 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4858 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4858 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4858 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4859 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4856 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4859 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2428 Mbps 0 retrans 0.1875 MB / 0.10 sec = 15.7293 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4851 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4862 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4859 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4854 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4861 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2427 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2429 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2430 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2428 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2427 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2428 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2431 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4854 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4861 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4860 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4859 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4823 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4881 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4857 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4856 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4857 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4837 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4861 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4840 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4858 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4865 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4851 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4861 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4862 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4863 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4860 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4836 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4860 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4864 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4861 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4848 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4839 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4862 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2427 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2430 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2428 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2428 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2429 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2430 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2429 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2425 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2431 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2430 Mbps 0 retrans 0.0625 MB / 0.10 sec = 5.2424 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4860 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4854 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4866 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans 0.1250 MB / 0.10 sec = 10.4860 Mbps 0 retrans 0.0000 MB / 0.10 sec = 0.0000 Mbps 0 retrans nuttcp-t: 7.5625 MB in 10.13 real seconds = 764.50 KB/sec = 6.2628 Mbps nuttcp-t: retrans = 0 nuttcp-t: 121 I/O calls, msec/call = 85.72, calls/sec = 11.95 nuttcp-t: 0.0user 5.9sys 0:10real 58% 0i+0d 0maxrss 0+5pf 0+417csw nuttcp-r: 7.5625 MB in 10.13 real seconds = 764.43 KB/sec = 6.2622 Mbps nuttcp-r: 5566 I/O calls, msec/call = 1.86, calls/sec = 549.43 nuttcp-r: 0.0user 0.1sys 0:10real 1% 0i+0d 324maxrss 0+21pf 5658+47csw [root@HOME002 tools]#
参考:
ネットワーク診断 ( nuttcp )
NFS(Network File System)の概要
NFS Serverとして動かす
net.core.somaxconnについて調べてみた