어느 날 밤 NFS 서비스를 다시 시작하려고 했으나 다음과 같은 오류 메시지가 나타났습니다.
kernel: [81818.428785] nfsd: unable to allocate nfsd_file_hashtbl
rpc.nfsd[15567]: error starting threads: errno 12 (Cannot allocate memory)
systemd[1]: nfs-server.service: Main process exited, code=exited, status=1/FAILURE
시스템의 버프/캐시에 여전히 12GB 이상의 RAM이 남아 있다는 점을 고려하면 이는 이상한 오류입니다. 내가 이해한 바로는 버프/캐시 메모리는 커널이 정보를 캐시하기 위해 사용하는 메모리이지만 애플리케이션에 RAM이 필요한 경우에도 사용할 수 있습니다.
그런 다음 다음 명령을 실행했습니다.
sync && echo 3 > /proc/sys/vm/drop_caches
메모리는 버퍼링/캐시에서 해제 상태로 이동되고 NFS는 문제 없이 시작됩니다.
내가 읽은 모든 내용은 이것이 기본적으로 최악의 행동 중 하나임을 암시합니다.
내 질문은 이것이 NFS의 버그입니까 아니면 다른 것입니까? 이것은 매우 인기 있는 주제인 것 같고 이것이 괜찮은지 논쟁하고 있는 것이 아닙니다. 제가 보고할 수 있는 것은 NFS를 실행했을 때 아무 문제 없이 시작되었다는 것뿐입니다. 그 이유를 알고 싶습니다.
저는 proxmox 6.3-6, NFS 버전 1:1.3.4-2.5+deb10u1이 설치된 Debian 10을 실행하고 있습니다.
편집하다:
또한 proxmox 관련 문제도 발견했습니다(예: VNC 콘솔이 작동하지 않거나 다른 노드에 연결되지 않음). 두 노드 모두에서 위 명령을 실행하면 이러한 문제가 모두 해결되었습니다.