chmod
NFSサーバーを高速化する方法はありますか?
chmod
スクリプトを実行するたびに複数のファイルを実行します。ローカルで実行する場合はほぼすぐに完了しますが、NFSサーバーをターゲットにするには10〜20分かかります。
メモ:これはSolarisにあります。
答え1
ヒント#1
最初の疑いは、コマンドを実行するシステムにこのプログラムがどのようにインストールされているかです。mount
コマンドを表示し、showmount -e
システムにエクスポートする方法を確認してください。
ヒント#2
次のことは、実行中の実際のコマンドを調べて、strace
どの機能が最も長くかかるかを確認することです。
たとえば、
$ strace -s 2000 chmod u+w afile
execve("/bin/chmod", ["chmod", "u+w", "afile"], [/* 27 vars */]) = 0
brk(NULL) = 0x1143000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fad70431000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=33236, ...}) = 0
mmap(NULL, 33236, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fad70428000
close(3) = 0
...
...
arch_prctl(ARCH_SET_FS, 0x7fad70425740) = 0
mprotect(0x7fad70206000, 16384, PROT_READ) = 0
mprotect(0x60c000, 4096, PROT_READ) = 0
mprotect(0x7fad70432000, 4096, PROT_READ) = 0
munmap(0x7fad70428000, 33236) = 0
brk(NULL) = 0x1143000
brk(0x1164000) = 0x1164000
brk(NULL) = 0x1164000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=106070960, ...}) = 0
mmap(NULL, 106070960, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fad6991b000
close(3) = 0
umask(0) = 022
stat("afile", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
fchmodat(AT_FDCWD, "afile", 0644) = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
私の考えでは、Solarisではこれに相当するものですが、提案を受けることができることtruss
を願っています。
ヒント#3
これはどのNFSプロトコルですか? NFSv3またはv4?全体的なパフォーマンスに影響を与える可能性がある2つのオプションに関連するいくつかのオプションがあります。
たとえば、たとえば、ファイルを次にエクスポートして
/etc/exports
共有しないことを確認します。async
sync
/export/raid0/home 192.168.*/24(rw,secure,no_root_squash,async,wdelay)
インストールオプションが
async
クライアントに含まれていることを確認してください。また、サーバーがアクセスしているファイルのinodeからatimeを更新する必要がないことを確認してください。
以下は、過去に調整した多くのオプションを強調するnixcraftのリストです。
推奨マウントコマンド NFS 調整オプション
- ノック:アクセス制御リスト(ACL)処理を無効にします。
- 夜:ファイルを作成するときに新しい属性検索を無効にします。
- サイズ: NFS サーバーからファイルを読み取るときに NFS が使用するバイト数。 rsizeはサーバーとクライアント間でネゴシエートされ、両方がサポートできる最大ブロックサイズを決定します。このオプションで指定する値は使用可能な最大サイズですが、実際に使用されるサイズは小さい場合があります。注:このサイズをサポートされている最大ブロックサイズより小さい値に設定すると、パフォーマンスに悪影響を及ぼします。
- サイズ: NFS サーバーにファイルを書き込むときに NFS が使用するバイト数。 wsizeはサーバーとクライアントの間でネゴシエートされ、両方がサポートできる最大ブロックサイズを決定します。このオプションで指定する値は使用可能な最大サイズですが、実際に使用されるサイズは小さい場合があります。注:このサイズをサポートされている最大ブロックサイズより小さい値に設定すると、パフォーマンスに悪影響を及ぼします。
- ノアテム:この値を設定すると、NFSサーバーがinodeアクセス時間を更新できなくなります。ほとんどのアプリケーションは必ずしもこの値を必要としないため、この更新を安全に無効にできます。
- ノーディラタイム:この値を設定すると、NFSサーバーがディレクトリアクセス時間を更新できなくなります。これはnoatimeのディレクトリ設定と同じです。
- ノック: すべての形式の属性キャッシュを完全に無効にします。これはかなりのパフォーマンスの低下を引き起こしますが、両方のNFSクライアントがサーバーのパブリックエクスポートに積極的に書き込むと合理的な結果が得られます。