chmod
NFS 서버 속도를 높이는 방법이 있습니까 ?
chmod
스크립트를 실행할 때마다 여러 파일을 실행합니다 . 로컬로 실행할 때는 거의 즉시 완료되지만 NFS 서버를 대상으로 할 때는 10~20분 정도 걸립니다.
노트:이것은 솔라리스에 있습니다.
답변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? 전반적인 성능에 영향을 미칠 수 있는 두 가지 옵션과 관련된 몇 가지 옵션이 있으며, 귀하의 상황에 따라 이를 조사해 보겠습니다.
예를 들어:예를 들어, 파일을 다음으로 내보내고
/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 클라이언트가 모두 서버의 공개 내보내기에 적극적으로 쓸 때 합리적인 결과를 얻을 수 있습니다.