KVM + NFS 디스크 성능 저하

KVM + NFS 디스크 성능 저하

상황: KVM을 사용하여 3개의 VM을 호스팅하는 Ubuntu 서버가 있습니다. 모든 게스트와 호스트는 /var의 특정 하위 폴더에 있는 동일한 파일에 액세스해야 합니다. 따라서 하위 폴더는 NFS를 통해 내보내집니다. 우리의 문제는 게스트가 호스트 속도의 절반만으로 디렉터리에서 읽고 쓸 수 있다는 것입니다. 내보내기 테이블은 다음과 같습니다

alice@host:~$ cat /etc/exports
/home/videos 192.168.10.0/24(rw,sync,no_root_squash)

여기서 호스트의 IP는 192.168.10.2이고 VM은 192.168.10.1{1..3}입니다. /home/videos는 /var의 특정 하위 폴더에 대한 심볼릭 링크입니다. 특히 /var/videos/genvids입니다.

다음은 VM fstab의 관련 줄입니다.

192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=4096,wsize=4096  0 0

하드 디스크의 지속적인 데이터 속도는 ~155MB/s이며 hdparm -tT 및 dd의 출력으로 확인됩니다.

alice@host:~$ dd if=/home/videos/4987_1359358478.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 2.04579 s, 154 MB/s

VM 내에서는 상황이 다르게 보입니다.

bob@guest:~$ dd if=/mnt/nfs/4959_3184629068.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 4.60858 s, 68.3 MB/

파일 시스템의 페이지 크기에 블록 크기를 맞추는 것은 만족스러운 효과가 없었습니다.

bob@guest:~$ dd if=/mnt/nfs/4925_1385624470.mp4 of=/dev/null bs=4096 count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 5.77247 s, 71.0 MB/s

NFS 성능에 대한 다양한 페이지를 참조했는데, 가장 관련성이 높은 것은NFS FAQ파트 B 및 해당성능 튜닝어떻게. 대부분의 힌트가 적용되지 않습니다. 다른 것들은 결과를 개선하지 못했습니다.거기 ~이다 스레드 여기디스크 성능과 KVM을 다루는 것입니다. 그러나 NFS 측면은 다루지 않습니다.이것스레드는 그렇습니다. 그러나 우리의 경우에는 네트워크 속도가 제한 요인이 아닌 것 같습니다.

완전한 그림을 제공하기 위해 이것은 심볼릭 링크가 해결되고 모든 활성 내보내기 옵션이 표시된 내보내기 etab의 내용입니다.

alice@host:~$ cat /var/lib/nfs/etab
/var/videos/genvids 192.168.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,
no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,
anonuid=65534,anongid=65534)

이 맥락에서 나를 괴롭히는 것(그리고 내가 이해하지 못하는 것)은 nfsd의 procfile 출력입니다.

alice@host:~$ cat /proc/net/rpc/nfsd
...
th 8 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
...

세 번째 열 이상의 경우 VM 내의 디스크에서 읽은 후 0이 아닌 예상 값을 갖게 됩니다. 그러나 nfsstat에서는 실제로 읽기 작업이 있었다고 알려줍니다.

alice@host:~$ nfsstat
...
Server nfs v3:
null         getattr      ...
9     0%     15106     3% ...
read         write        ...
411971   95% 118       0% ...
...

따라서 주제가 매우 복잡하므로 다른 곳을 찾아봐야 할지, 이에 대한 쉬운 해결책이 있는지 알고 싶습니다.

답변1

결과적으로 문제는 예상보다 해결하기가 더 쉬웠습니다. 튜닝크기 조정그리고크기VM fstab의 옵션이 트릭을 수행했습니다. 해당 라인은 이제

192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=32768,wsize=32768  0 0

나에게는 이것이 가치가 있다면 최고의 성능을 기대했기 때문에 이것은 분명하지 않았습니다.크기 조정그리고크기디스크의 블록 크기(4096)를 충족하고 NIC의 MTU(9000)보다 크지 않습니다. 분명히 이 가정은 틀렸다.

정확한 지속 디스크 데이터 속도는 파일에 따라 다르다는 점은 주목할 만합니다. 크기가 9GB인 두 개의 유사한 파일의 경우 155MB/s(파일 1)에서 140MB/s(파일 2) 사이의 속도를 관찰했습니다. 따라서 한 파일의 데이터 속도가 감소하더라도 다른 파일의 데이터 속도는 여전히 최대일 수 있습니다.

관련 정보