아무것도 실행되지 않는 경우에도 로드가 10보다 큰 Ubuntu(12.04) NFS 서버가 있습니다.
특히 스토리지는 5개의 논리 볼륨(LVM)과 일부 ext4 파티션이 있는 iSCSI 장치를 통해 제공됩니다. 모든 서비스가 중지되고 내보내기가 없더라도(즉, 클라이언트 트래픽 없음) 로드는 10입니다. iostat를 실행하면 하나의 특정 매핑된 장치(/dev/dm-1)가 항상 기록되는 것을 볼 수 있습니다(출력을 올바르게 해석한 경우).
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 0.00 0.00 0.00 0 0
sdb 342.00 0.00 9.21 0 9
dm-0 0.00 0.00 0.00 0 0
dm-1 615.00 0.00 11.71 0 11
(sdb는 iSCSI 장치가 나타나는 위치이고, dm-n은 각 논리 볼륨입니다). 저는 실제로 실행 중인 다른 모든 서비스를 (거의) 모두 중지했는데, NFS 서버를 시작하면 로드가 올라가고, 중지하면 로드가 줄어든다고 자신 있게 말할 수 있습니다. 무슨 일이야? 디스크에 기록되는 내용을 어떻게 확인할 수 있나요? (lsof를 시도했지만 프로세스가 표시되지 않았습니다).
추가하다필요에 따라 정보를 추가합니다.
가동 시간설명하다:
18:27:15 up 1 day, 9:59, 2 users, load average: 14.22, 12.42, 11.55
가상 머신 상태설명하다:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 1 960 865924 51604 23204424 0 0 43 4 7 20 0 2 86 12
통계자료설명하다:
Linux 3.2.0-26-generic-pae (leitrim) 12/25/2012 _i686_ (8 CPU)
06:33:53 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
06:33:53 PM all 0.08 0.04 0.96 11.62 0.00 0.88 0.00 0.00 86.43
dstat -cdD sdb -ng 60 3
----total-cpu-usage---- --dsk/sdb-- -net/total- ---paging--
usr sys idl wai hiq siq| read writ| recv send| in out
0 1 86 12 0 1| 324k 8729k| 0 0 | 1B 8B
0 1 87 12 0 1| 17k 8953k|8064k 9652k| 0 0
0 1 86 12 0 1|1229B 9081k|8010k 9796k| 0 68B
0 1 89 10 0 1|3209B 8364k|7703k 9014k| 0 0
RPC 정보
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /run/rpcbind.sock portmapper superuser
100000 3 local /run/rpcbind.sock portmapper superuser
100024 1 udp 0.0.0.0.172.13 status 116
100024 1 tcp 0.0.0.0.229.210 status 116
100024 1 udp6 ::.137.98 status 116
100024 1 tcp6 ::.175.197 status 116
100021 1 udp 0.0.0.0.171.56 nlockmgr superuser
100021 3 udp 0.0.0.0.171.56 nlockmgr superuser
100021 4 udp 0.0.0.0.171.56 nlockmgr superuser
100021 1 tcp 0.0.0.0.153.54 nlockmgr superuser
100021 3 tcp 0.0.0.0.153.54 nlockmgr superuser
100021 4 tcp 0.0.0.0.153.54 nlockmgr superuser
100021 1 udp6 ::.206.206 nlockmgr superuser
100021 3 udp6 ::.206.206 nlockmgr superuser
100021 4 udp6 ::.206.206 nlockmgr superuser
100021 1 tcp6 ::.132.23 nlockmgr superuser
100021 3 tcp6 ::.132.23 nlockmgr superuser
100021 4 tcp6 ::.132.23 nlockmgr superuser
100003 2 tcp 0.0.0.0.8.1 nfs superuser
100003 3 tcp 0.0.0.0.8.1 nfs superuser
100227 2 tcp 0.0.0.0.8.1 - superuser
100227 3 tcp 0.0.0.0.8.1 - superuser
100003 2 udp 0.0.0.0.8.1 nfs superuser
100003 3 udp 0.0.0.0.8.1 nfs superuser
100227 2 udp 0.0.0.0.8.1 - superuser
100227 3 udp 0.0.0.0.8.1 - superuser
100003 2 tcp6 ::.8.1 nfs superuser
100003 3 tcp6 ::.8.1 nfs superuser
100227 2 tcp6 ::.8.1 - superuser
100227 3 tcp6 ::.8.1 - superuser
100003 2 udp6 ::.8.1 nfs superuser
100003 3 udp6 ::.8.1 nfs superuser
100227 2 udp6 ::.8.1 - superuser
100227 3 udp6 ::.8.1 - superuser
100005 1 udp 0.0.0.0.154.132 mountd superuser
100005 1 tcp 0.0.0.0.217.173 mountd superuser
100005 1 udp6 ::.165.76 mountd superuser
100005 1 tcp6 ::.141.19 mountd superuser
100005 2 udp 0.0.0.0.183.55 mountd superuser
100005 2 tcp 0.0.0.0.214.84 mountd superuser
100005 2 udp6 ::.233.222 mountd superuser
100005 2 tcp6 ::.211.16 mountd superuser
100005 3 udp 0.0.0.0.188.56 mountd superuser
100005 3 tcp 0.0.0.0.158.62 mountd superuser
100005 3 udp6 ::.152.158 mountd superuser
100005 3 tcp6 ::.201.200 mountd superuser
답변1
좀 더 조사한 후에는 내 질문에 적어도 부분적으로 대답할 수 있습니다.
- NFS 클라이언트 중 하나에서 미친 듯이 실행 중인 프로세스로 인해 장치 중 하나에 대한 쓰기가 발생했습니다. 한 번에 하나의 클라이언트를 닫음으로써 이를 달성합니다. 어떤 클라이언트가 NFS 서버에 쓰고 있는지 확인하는 명령이 있으면 좋겠지만 클라이언트가 있으면 찾을 수 없습니다.