Samba의 testparm은 다음 메시지를 생성할 수 있습니다:
rlimit_max: rlimit_max (8192) below minimum Windows limit (16384)
이 Linux 명령을 사용하여 최대 열린 파일 제한을 늘리면 이 문제가 해결되는 것으로 보입니다 ulimit -n 16384
.
이것이 일반적인 Samba 상자에 대한 안전한 변경입니까? 부팅 시 삼바 서비스에서 사용할 수 있도록 이 설정을 어디에 저장해야 합니까?
답변1
우선, 이것은 단지 경고일 뿐입니다. MS Windows에서는 클라이언트와 서버의 파일 처리기 수가 동일해야 합니다. 그렇지 않으면 예를 들어 네트워크를 통해 파일을 복사할 때 "너무 많은 파일이 열려 있습니다"라는 메시지가 표시됩니다. 최신 Samba 버전에서는 이 문제를 자체적으로 처리합니다.
그러나 이 경고를 제거하려면 로컬 파일 제한을 변경하면 됩니다. 로컬(사용자 또는 세션) 제한과 전역(시스템 전체) 제한을 구별하는 것은 항상 유용합니다. 다음을 통해 전역 한도를 확인하세요.
cat /proc/sys/fs/file-max
글로벌 한도가 로컬 한도를 훨씬 초과할 가능성이 높습니다. 나는 일반적인 GNU/Linux 제한이 100k 범위에 있다고 생각하는데, 정말 오랫동안 살펴보지 않았습니다. 다음을 실행하여 이 값을 일시적으로 변경할 수 있습니다.
sysctl -w fs.file-max=n
또는 편집 /etc/sysctl.conf
하고 실행하여 영구적으로 sysctl -p
.
로컬 제한을 확인하려면 관련 사용자(예: Samba)로 전환하고 실행하십시오.
ulimit -Hn
ulimit -Sn
그러면 로컬 세션에 대한 하드 및 소프트 제한이 표시됩니다. 하드 제한은 시스템에 의해 적용되는 반면 소프트 제한은 로컬 세션에 의해 적용됩니다. 필요한 경우 로컬 소프트 제한을 글로벌 하드 제한까지 늘릴 수 있습니다.
다음을 실행하여 제한을 일시적으로 변경할 수 있습니다.
ulimit -Hn n
ulimit -Sn m
또는 다음을 통해 사용자 제한을 설정할 수 /etc/security/limits.conf
있으며 어떤 사용자에게 어떤 제한이 적용되는지 지정할 수도 있습니다. 예:
samba soft nofile 16384
samba hard nofile 32768
항상 그렇듯이 파일과 명령의 맨 페이지는 훨씬 더 많은 통찰력을 제공합니다. 도움이 되길 바랍니다.
답변2
제한은 /etc/security/limits.conf에서 가져옵니다.
ulimit -n을 사용하여 실제 한도를 표시합니다.
줄을 편집(또는 추가)하여 변경할 수 있습니다.
* - nofile 16385
env 매개변수를 다시 로드합니다(또는 쉘을 종료하고 쉘을 다시 입력).
답변3
간단하지만 많은 사람들이 이 질문으로 시간을 낭비한다고 생각합니다(나처럼 하하).
매개변수 제한을 구성해야 합니다.파일 없음"/etc/security/limits.conf" 또는 "/etc/security/limits.d/limit-file.conf"와 같은 다른 대체 파일에 다음과 같이 합니다.
* - nofile 16384
문제는 이 구성이 현재 세션에 적용되지 않고 변경 사항을 적용하려면 종료하고 로그인해야 하므로 TESPARM을 사용한 테스트가 실패한다는 것입니다.
세션을 다시 시작하지 않으려면 다음 명령을 적용하여 문제를 해결하십시오.
ulimit -n 16384
도움이 되었기를 바랍니다!
답변4
파일 의 오타로 인해 /etc/samba/smb.conf
이런 종류의 오류가 발생할 수 있습니다. 나는 이것을 따랐다링크내 문제를 재검토한 결과 내 문제는 "예" 대신 "예"라는 오타였습니다.