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]#

nfsmount

その他パフォーマンス確認
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]#

nfstest

参考:
ネットワーク診断 ( nuttcp )
NFS(Network File System)の概要
NFS Serverとして動かす
net.core.somaxconnについて調べてみた


ディスクとメモリーへの書き込み速度確認
ddコマンドで128Mのブロックサイズを2回書き込んだ速度確認

ディスク: real 0m7.087s
メモリー: real 0m0.788s
約9倍の書き込み速度の違いが見られる。

ファイルシステムへの書き込み速度

[root@HOME001 local]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home001-lv_root
                       47G  2.5G   42G   6% /
tmpfs                 947M     0  947M   0% /dev/shm
/dev/sda1             485M   36M  424M   8% /boot
/dev/mapper/vg_home001-lv_home
                      4.6G  322M  4.0G   8% /home
[root@HOME001 local]# time dd if=/dev/zero of=/usr/local/tmp/tmpfs bs=128M count=2
2+0 records in
2+0 records out
268435456 bytes (268 MB) copied, 7.06478 s, 38.0 MB/s

real    0m7.087s
user    0m0.001s
sys     0m0.949s
[root@HOME001 local]# rm -f /usr/local/tmp/*

[root@HOME001 local]# free
             total       used       free     shared    buffers     cached
Mem:       1938948     200436    1738512          0      10720      94452
-/+ buffers/cache:      95264    1843684
Swap:      4161528          0    4161528
[root@HOME001 local]#

tmpfs(メモリー)への書き込み速度

[root@HOME001 local]# mount -t tmpfs -o size=512m tmpfs /usr/local/tmp
[root@HOME001 local]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home001-lv_root
                       47G  2.5G   42G   6% /
tmpfs                 947M     0  947M   0% /dev/shm
/dev/sda1             485M   36M  424M   8% /boot
/dev/mapper/vg_home001-lv_home
                      4.6G  322M  4.0G   8% /home
tmpfs                 512M     0  512M   0% /usr/local/tmp
[root@HOME001 local]# time dd if=/dev/zero of=/usr/local/tmp/tmpfs bs=128M count=2
2+0 records in
2+0 records out
268435456 bytes (268 MB) copied, 0.770854 s, 348 MB/s

real    0m0.788s
user    0m0.000s
sys     0m0.784s
[root@HOME001 local]#

[root@HOME001 local]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home001-lv_root
                       47G  2.5G   42G   6% /
tmpfs                 947M     0  947M   0% /dev/shm
/dev/sda1             485M   36M  424M   8% /boot
/dev/mapper/vg_home001-lv_home
                      4.6G  322M  4.0G   8% /home
tmpfs                 512M  257M  256M  51% /usr/local/tmp
[root@HOME001 local]# free
             total       used       free     shared    buffers     cached
Mem:       1938948     462820    1476128          0      10720     356596
-/+ buffers/cache:      95504    1843444
Swap:      4161528          0    4161528
[root@HOME001 local]#

tempfs

fstabに追記して常時起動

[root@HOME001 local]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home001-lv_root     47G  2.5G   42G   6% /
tmpfs                             947M     0  947M   0% /dev/shm
/dev/sda1                         485M   36M  424M   8% /boot
/dev/mapper/vg_home001-lv_home    4.6G  322M  4.0G   8% /home
[root@HOME001 local]# vi /etc/fstab

[root@HOME001 local]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Nov 25 06:08:34 2012
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_home001-lv_root /                       ext4    defaults        1 1
UUID=d0a823c7-d51e-42de-b422-2f3ab5d82d96 /boot                   ext4    defaults        1 2
/dev/mapper/vg_home001-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_home001-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
# add for memory disk
tmpfs                   /usr/local/tmp          tmpfs   defaults,size=512m 0 0
[root@HOME001 local]#


[root@HOME001 local]# mount -a
[root@HOME001 local]# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_home001-lv_root     47G  2.5G   42G   6% /
tmpfs                             947M     0  947M   0% /dev/shm
/dev/sda1                         485M   36M  424M   8% /boot
/dev/mapper/vg_home001-lv_home    4.6G  322M  4.0G   8% /home
tmpfs                             128M     0  512M   0% /usr/local/tmp
[root@HOME001 local]#


[root@HOME001 local]# time dd if=/dev/zero of=/usr/local/tmp/tmpfs bs=128M count=2
2+0 records in
2+0 records out
268435456 bytes (268 MB) copied, 0.776067 s, 346 MB/s

real    0m0.793s
user    0m0.001s
sys     0m0.789s
[root@HOME001 local]#

再起動後もマウントされている事を確認済み

fstab

関連スレ
MYSQL with tempfs


rsyslogとsyslogの動作確認。
最近インストールした新しいバージョンのCentOSにはrsyslogがインストールされていて、
古いシステムにはsyslogがインストールされていたので簡易互換性確認。
rsyslogは通信にTCPを利用するので、UDPで通信するsyslogよりも通信が安定しているとの事。

SYSLOGサーバー側(RSYSLOG)

[root@HOME001 log]# uname -a
Linux HOME001.localdomain 2.6.32-279.el6.i686 #1 SMP Fri Jun 22 10:59:55 UTC 2012 i686 i686 i386 GNU/Linux
[root@HOME001 log]#

[root@HOME001 log]# ps -awef|grep syslog | grep -v grep
root      3290     1  0 15:12 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -r -m 0
[root@HOME001 log]# /sbin/rsyslogd -v
rsyslogd 5.8.10, compiled with:
        FEATURE_REGEXP:                         Yes
        FEATURE_LARGEFILE:                      Yes
        GSSAPI Kerberos 5 support:              Yes
        FEATURE_DEBUG (debug build, slow code): No
        32bit Atomic operations supported:      Yes
        64bit Atomic operations supported:      Yes
        Runtime Instrumentation (slow code):    No

See http://www.rsyslog.com for more information.
[root@HOME001 log]#


[root@HOME001 log]# egrep 514 /etc/rsyslog.conf
#$UDPServerRun 514
$UDPServerRun 514
#$InputTCPServerRun 514
$InputTCPServerRun 514
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
[root@HOME001 log]#

[root@HOME001 log]# cat /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
# SYSLOGD_OPTIONS="-c 5"
SYSLOGD_OPTIONS="-r -m 0"
[root@HOME001 log]#

SYSLOGクライアント側(SYSLOG)

[root@HOME002 ~]# uname -a
Linux HOME002.localdomain 2.6.18-53.1.21.el5 #1 SMP Tue May 20 09:34:18 EDT 2008 i686 i686 i386 GNU/Linux
[root@HOME002 ~]#

[root@HOME002 ~]# /sbin/syslogd -v
syslogd 1.4.1
[root@HOME002 ~]#

[root@HOME002 ~]# cat /etc/syslog.conf | grep 192.168.11.10
*.info;mail.none;authpriv.none;cron.none                @192.168.11.10
authpriv.*                                              @192.168.11.10
[root@HOME002 ~]# 

SYSLOGクライアントからイベントを送信

[root@HOME002 ~]# logger -p user.info "TEST Message01" (ファシリティ:user、プライオリティ:info を指定テスト)
[root@HOME002 ~]# logger -p user.info "TEST Message02" (ファシリティ:user、プライオリティ:info を指定テスト)
[root@HOME002 ~]# logger -p user.info "TEST Message03" (ファシリティ:user、プライオリティ:info を指定テスト)
[root@HOME002 ~]#

SYSLOGサーバー側

[root@HOME001 log]# tail -f /var/log/messages
Jan  2 18:33:37 home002 root: TEST Message01 (ファシリティ:user、プライオリティ:info を指定テスト)
Jan  2 18:33:42 home002 root: TEST Message02 (ファシリティ:user、プライオリティ:info を指定テスト)
Jan  2 18:33:46 home002 root: TEST Message03 (ファシリティ:user、プライオリティ:info を指定テスト)

基本動作確認
test
その他イベントもsecure,messageログに記録されている事を確認済み。

参考:
http://www.imamura.biz/blog/srv/syslog/9
http://hp.vector.co.jp/authors/VA022911/tec/centos/syslog.htm


Windowsでは名前解決したアドレスはローカルキャッシュに残っているが、
Linuxではローカルキャッシュに残って無いので場合によっては、
名前解決の処理やネットワークの負荷を軽減する為にLinuxでも利用した方が良い場合がある。
但し、便利な反面ローカルにキャッシュが残っている事を認識してないと問題解決に
時間がかかる場合があるので、運用者は常に認識しておいた方が良いかと。

DNSMASQのインストール

[root@HOME001 htop-0.8.3]# yum install dnsmasq
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dnsmasq.i686 0:2.48-6.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================================================
 Package                                  Arch                                  Version                                     Repository                             Size
========================================================================================================================================================================
Installing:
 dnsmasq                                  i686                                  2.48-6.el6                                  base                                  144 k

Transaction Summary
========================================================================================================================================================================
Install       1 Package(s)

Total download size: 144 k
Installed size: 281 k
Is this ok [y/N]: y
Downloading Packages:
dnsmasq-2.48-6.el6.i686.rpm                                                                                                                      | 144 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : dnsmasq-2.48-6.el6.i686                                                                                                                              1/1
  Verifying  : dnsmasq-2.48-6.el6.i686                                                                                                                              1/1

Installed:
  dnsmasq.i686 0:2.48-6.el6

Complete!
[root@HOME001 htop-0.8.3]# /sbin/chkconfig --list dnsmasq
dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@HOME001 htop-0.8.3]#

自動起動する場合は、chkconfigにて自動起動設定して下さい。

ローカルからDNSを利用出来るように設定ファイルの編集
/etc/dnsmasq.conf

 [root@HOME001 htop-0.8.3]# cat /etc/dnsmasq.conf | grep "127.0.0.1" | egrep -i -v ^#
 listen-address=127.0.0.1
 [root@HOME001 htop-0.8.3]#

1

/etc/resolv.conf

 [root@HOME001 htop-0.8.3]# cat /etc/resolv.conf | grep "127.0.0.1" | egrep -i -v ^#
 nameserver 127.0.0.1
 [root@HOME001 htop-0.8.3]#

resolv

サービスの再起動

[root@HOME001 htop-0.8.3]# /etc/init.d/dnsmasq restart
Shutting down dnsmasq:                                     [  OK  ]
Starting dnsmasq:                                          [  OK  ]
[root@HOME001 htop-0.8.3]# 

dnsmasq

ローカルで名前解決が出来るか確認

[root@HOME001 htop-0.8.3]# dig @127.0.0.1 kakaku.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @127.0.0.1 kakaku.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37234
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;kakaku.com.                    IN      A

;; ANSWER SECTION:
kakaku.com.             411     IN      A       210.129.151.129

;; Query time: 9 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 30 13:53:28 2012
;; MSG SIZE  rcvd: 44

&#91;root@HOME001 htop-0.8.3&#93;# 
&#91;/SHELL&#93;

<a href="http://variable.jp/2012/12/30/linux%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8bdns-cache/dig/" rel="attachment wp-att-2450"><img src="http://variable.jp/wp-content/uploads/2012/12/dig.jpg" alt="dig" width="624" height="351" /></a>

<a href="http://variable.jp/2012/12/30/linux%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8bdns-cache/dig-grep/" rel="attachment wp-att-2452"><img src="http://variable.jp/wp-content/uploads/2012/12/dig-grep.jpg" alt="dig-grep" width="442" height="80" /></a>

<strong>ローカルキャッシュのリフレッシュ</strong>
[SHELL]
[root@HOME001 htop-0.8.3]# /etc/init.d/dnsmasq force-reload
Shutting down dnsmasq:                                     [  OK  ]
Starting dnsmasq:                                          [  OK  ]
[root@HOME001 htop-0.8.3]#

force-reload

参考

Dnsmasq

いろいろなキャッシュ:dnsmasq, cache proxy

dnsmasqで簡易DNSサーバ


Linuxシステムにてディスクボトルネックを確認する為のコマンド

VMSTAT

[root@HOME001 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1663492  10488 167444    0    0    62    19   31   58  1  0 97  2  0
[root@HOME001 ~]#

IOSTAT

[root@HOME001 ~]# iostat
Linux 2.6.32-279.el6.i686 (HOME001.localdomain)         2012年12月29日  _i686_  (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.66    0.00    0.54    1.83    0.00   96.98

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.70       142.88        44.06     284638      87784
dm-0              7.92       129.00        44.04     256994      87728
dm-1              0.16         1.29         0.00       2576          0
dm-2              0.06         0.46         0.01        922         24

[root@HOME001 ~]# 

[root@HOME001 iotop-0.4.4]# iostat -d -x
Linux 2.6.32-279.el6.i686 (HOME001.localdomain)         2012年12月29日  _i686_  (1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.67     3.11    1.39    0.39    88.43    27.72    65.42     0.21  115.80  11.72   2.08
dm-0              0.00     0.00    1.57    3.42    80.07    27.33    21.51     1.78  356.10   3.90   1.95
dm-1              0.00     0.00    0.10    0.00     0.77     0.00     8.00     0.00    5.24   2.16   0.02
dm-2              0.00     0.00    0.05    0.05     0.37     0.38     7.93     0.00   16.82  12.62   0.12

[root@HOME001 iotop-0.4.4]#

[root@HOME001 iotop-0.4.4]# iostat -d -x dm-0 15 10
Linux 2.6.32-279.el6.i686 (HOME001.localdomain)         2012年12月29日  _i686_  (1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
dm-0              0.00     0.00    1.53    3.32    77.73    26.54    21.51     1.73  356.00   3.92   1.90

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
dm-0              0.00     0.00    0.00    0.20     0.00     1.60     8.00     0.02  112.33 112.33   2.25

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

iostat

iostat-part

Iotop
http://guichaz.free.fr/iotop/

Linux has always been able to show how much I/O was going on (the bi and bo columns of the vmstat 1 command).
Iotop is a Python program with a top like UI used to show of behalf of which process is the I/O going on.
It requires Python ≥ 2.5 (or Python ≥ 2.4 with the ctypes module) and a Linux kernel ≥ 2.6.20 with the
TASK_DELAY_ACCT CONFIG_TASKSTATS, TASK_IO_ACCOUNTING and CONFIG_VM_EVENT_COUNTERS options on.

必要なカーネルとPythonのバージョン確認

[root@HOME001 tools]# uname -r
2.6.32-279.el6.i686
[root@HOME001 tools]# python -V
Python 2.6.6
[root@HOME001 tools]#

uname_python

ダウンロードとインストール

[root@HOME001 tools]# wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz
--2012-12-29 07:12:15--  http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz
guichaz.free.fr をDNSに問いあわせています... 212.27.63.130
guichaz.free.fr|212.27.63.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 30334 (30K) [application/x-gzip]
`iotop-0.4.4.tar.gz' に保存中

100%[=============================================================================>] 30,334      21.8K/s 時間 1.4s

2012-12-29 07:12:17 (21.8 KB/s) - `iotop-0.4.4.tar.gz' へ保存完了 [30334/30334]

[root@HOME001 tools]# tar zxvf iotop-0.4.4.tar.gz
iotop-0.4.4/
iotop-0.4.4/COPYING
iotop-0.4.4/PKG-INFO
iotop-0.4.4/NEWS
iotop-0.4.4/iotop/
iotop-0.4.4/iotop/__init__.py
iotop-0.4.4/iotop/netlink.py
iotop-0.4.4/iotop/ioprio.py
iotop-0.4.4/iotop/version.py
iotop-0.4.4/iotop/data.py
iotop-0.4.4/iotop/ui.py
iotop-0.4.4/iotop/genetlink.py
iotop-0.4.4/iotop/vmstat.py
iotop-0.4.4/.gitignore
iotop-0.4.4/iotop.py
iotop-0.4.4/ChangeLog
iotop-0.4.4/setup.py
iotop-0.4.4/README
iotop-0.4.4/iotop.1
iotop-0.4.4/setup.cfg
iotop-0.4.4/THANKS
iotop-0.4.4/bin/
iotop-0.4.4/bin/iotop
[root@HOME001 tools]#

[root@HOME001 iotop-0.4.4]# ./setup.py install
running install
running build
running build_py

install

iotopの実行

[root@HOME001 iotop-0.4.4]# /usr/bin/iotop
Total DISK READ:       0.00 B/s | Total DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    4 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    5 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    7 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [events/0]
    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [cgroup]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khelper]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
[root@HOME001 iotop-0.4.4]#


[root@HOME001 iotop-0.4.4]# iotop -bto --iter=1
07:27:50 Total DISK READ:       0.00 B/s | Total DISK WRITE:       0.00 B/s
    TIME  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
[root@HOME001 iotop-0.4.4]#

iotop

iotop_optopm

以下パッケージでも入手可能との事
sudo aptitude install iotop
sudo yum install iotop
sudo emerge iotop
sudo pacman -Sy iotop

参考
http://guichaz.free.fr/iotop/

Using iotop to check I/O and swap

htopでパフォーマンス確認


来年から再びシステムスキル、英語スキル、マネージメントスキルを磨いてもう少し成長して
さらにこの先15~20年活躍する為に、先ずは検証環境を構築しておこうと思いCentOSをダウンロード。

CentOS
https://www.centos.org/
Download -> Asia
http://www.centos.org/modules/tinycontent/index.php?id=32
Japan
http://ftp.riken.jp/Linux/centos/6/isos/i386/
http://ftp.riken.jp/Linux/centos/6/isos/i386/CentOS-6.3-i386-bin-DVD1.iso
http://ftp.riken.jp/Linux/centos/6/isos/i386/CentOS-6.3-i386-bin-DVD2.iso

http://ftp.riken.jp/Linux/centos/6/isos/i386/sha1sum.txt
541f98e36a7034ab3b470ddf5e2232df3829983e CentOS-6.3-i386-bin-DVD1.iso
44d9e8652af683b844138ea2ea03e6772c18a613 CentOS-6.3-i386-bin-DVD2.iso
c596411085110dbb67fb030e667ae054afb413c8 CentOS-6.3-i386-minimal.iso
51dcbf68ddc0fc2907ecbba055bf041dc8ae7ca9 CentOS-6.3-i386-netinstall.iso
7cb1ea7eb35e4ee7112d4cd6b56528562cabc65a CentOS-6.3-i386-LiveCD.iso
f34c3f9c6880bffe6344aa6a0381275689f0bf02 CentOS-6.3-i386-LiveDVD.iso
0a4b92455c3838e5a9c1488882fe4322c3793c8c CentOS-6.3-i386-bin-DVD1to2.torrent
94605b80c6c9139a0d18d3db5a66f52c6bc04828 CentOS-6.3-i386-LiveCD.torrent
57eccb30f99903ca1d27923b0eceaff21a65c1c7 CentOS-6.3-i386-LiveDVD.torrent

ダウンロードしたイメージの整合性確認

D:\CentOS6.3>sha1sum CentOS-6.3-i386-bin-DVD1.iso
541f98e36a7034ab3b470ddf5e2232df3829983e *CentOS-6.3-i386-bin-DVD1.iso

D:\CentOS6.3>sha1sum CentOS-6.3-i386-bin-DVD2.iso
44d9e8652af683b844138ea2ea03e6772c18a613 *CentOS-6.3-i386-bin-DVD2.iso

D:\CentOS6.3>

sha1sum

あとはDVDにイメージを焼いて、DVDから起動してインストールしておく。


HDDの速度を測りたい場合は、hdparm コマンドを使用して調査する事が出来ます。

[root@colinux data]# /bin/df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/cobd0 3.8G 2.6G 1009M 73% /
tmpfs 126M 0 126M 0% /dev/shm
/dev/shm 32M 0 32M 0% /usr/local/tmp
[root@colinux data]# /sbin/hdparm -v /dev/cobd0

/dev/cobd0:
readonly = 0 (off)
readahead = 256 (on)
HDIO_GETGEO failed: Inappropriate ioctl for device
[root@colinux data]# /sbin/hdparm -t /dev/cobd0

/dev/cobd0:
Timing buffered disk reads: 74 MB in 3.07 seconds = 24.10 MB/sec

hdparm

-T
ベンチマーク及び比較目的で、キャッシュ読み込みを測定する。
有意な結果を得るためには、少なくとも数メガバイトの空きメモリがあり、
他にアクティブなプロセスがない状態で、この操作を 2, 3 回繰り返すべきである。
これは、ディスクアクセスなしに、Linux のバッファキャッシュから直接読み出す速度を表示する。
これは、テスト環境下でのプロセッサ・キャッシュ・メモリの基本的な処理能力を測定するものである。
-t フラグが同時に指定された場合には、 -T の出力を元にした補正係数が -t 操作の結果に加味される。

-t
ベンチマーク及び比較目的で、デバイス読み込みを測定する。
有意な結果を得るためには、少なくとも数メガバイトの空きメモリがあり、
他にアクティブなプロセスがない状態で、この操作を 2, 3 回繰り返すべきである。
これはデータのキャッシュがない状態から、バッファキャッシュを通してディスクを読み出す
速度を表示する。これは、ファイルシステムのオーバーヘッドなしに、そのドライブが
Linux でどれだけ連続データ読み込み速度を維持できるかを測定するものである。
測定の正確さを上げたいのであれば、 -t の実行の間に BLKFLSBUF ioctl を使って
バッファキャッシュをクリアする。 -T フラグが同時に指定された場合には、 -T の出力
を元にした補正係数が -t 操作の結果に加味される。

hdparm_t

ハードディスクの設定の表示や変更は、hdparmコマンドを使って行うことができる。
ただし変更すれば必ず良い結果がもたらされるというわけではなく、man hdparm
を実行すればhdparmコマンドの全オプションを見ることができ、危険なオプションについては
「DANGEROUS」と表記されている。

※最初に試す最適化は、転送の高速化のためにドライブが直接メモリ
にデータを保存できるようにするDMA(Direct Memory Access)を使用する。
/sbin/hdparm -d1 /dev/hda
※multcountは、一度の操作で読み取ることのできるセクタ数を示すパラメータ。

hdparm_man

最小値と最大値を捨て、残りの値の平均を取り適切な測定結果を得る。
for ((i=0;i<6;i++)) do /sbin/hdparm -t /dev/cobd0; done

hdparm_loop

    参考サイト


Linuxのパフォーマンスを改善する3つのTips


ファイルシステムのアクセスを最適化する


hdparm でハードディスクを高速化する


HDDのアクセスが妙に遅く感じるときは


MYSQLのオプションファイル(設定ファイル)は複数存在する場合があります。
複数の設定ファイルが存在した場合、後ろで定義したオプションの方が前で定義した
同一オプションより優先されます。

コマンドラインオプションは全ての設定ファイルよりも優先されます。

Windows
Windows上のMySQL Serverは、以下の表にリストされている設定ファイルを、リストの上から順に読み込みます。
同じ設定が複数の設定ファイルに記述されている場合は、最後に読み込まれた設定が有効になります。
=====================================================
ファイル名 目的
=====================================================
WINDIR\my.ini グローバルオプション
C:\my.cnf グローバルオプション
INSTALLDIR\my.ini グローバルオプション
defaults-extra-file --defaults-extra-file=pathで指定されたファイル(あれば)

WINDIR ユーザのWindowsディレクトリの場所を表しています。一般的に、C:\WINDOWS もしくは C:\WINNTになります。以下のコマンドを使用して WINDIR 環境変数の値から正確なロケーションを割り出すことができます。

Unix or Linux
Unix系のプラットフォーム上のMySQL Serverは、以下の設定ファイルを表の上にリストされている順に読み込みます。
同じ設定が複数の設定ファイルに記述されている場合は、最後に読み込まれた設定が有効になります。
=====================================================
ファイル名 目的
=====================================================
/etc/my.cnf グローバルオプション
$MYSQL_HOME/my.cnf サーバ固有のオプション
defaults-extra-file --defaults-extra-file=pathで指定されたファイル(あれば)
~/.my.cnf ユーザ固有のオプション

MYSQL_HOMEはサーバ固有のファイルmy.cnfを含むディレクトリへのパスを含む環境変数です。
MYSQL_HOME がセットされていない状態で mysqld_safe プログラムを使ってサーバをスタートさせると、
mysqld_safe は次のように MYSQL_HOME をセットしようとします。

BASEDIR と DATADIR をそれぞれ、MySQLベースディレクトリとデータディレクトリのパスネームの代理に立てます。
DATADIRにはmy.cnfファイルが存在し、BASEDIRには存在しない場合、mysqld_safeはMYSQL_HOMEをDATADIRにセットします。
または、もしMYSQL_HOMEがセットされておらず、my.cnfファイルがDATADIRに存在しない場合、mysqld_safeはBASEDIRにMYSQL_HOMEをセットします。
MySQL 5.1ではDATADIRのmy.cnfファイルのロケーションとしての使用は認証されていません。BASEDIR の方が良い場所です。
一般的にDATADIRは/usr/local/mysql/dataでバイナリインストールに、または/usr/local/varでソースインストールに使用されます。