서버 : RHEL 5.9 / smbd 3.0.33-클라이언트 : 모두 현재 mount.cifs (5.2)를 사용하고 있지만 다양 함
이미이 문제를 해결했지만 보편적 인 문서화가 필요하다고 느낀 이러한 오류 코드를 찾아내는 것은 악몽이었습니다.
증상 : 특정 cifs 클라이언트에서 Linux samba 서버로의 예측 불가능하고 간헐적 인 마운트 실패 모든 리눅스 클라이언트는 pam_mount 사용자 홈에 로그인합니다. 무작위로, 산발적으로 홈 디렉토리는 하나의 머신 에서 실패하기 시작했습니다 . 로그인 및 마운트는 다른 모든 클라이언트에서 계속 작동합니다. 처음에는 손상된 클라이언트에 대한 비정상적인 활동이 smbd를 괴롭히는 것이라고 생각했지만 사용량이 줄어든 후에도 간헐적 인 오류가 남아 있습니다.
수동 마운트 시도가 실패하고보고합니다.
Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
<debug enable="1"/>
pam_mount에서 자세한 정보를 얻으려면 /etc/security/pam_mount.conf.xml에 설정하십시오 .
command: 'mount' '-t' 'cifs' '//my_server/watdo' '/home/watdo' '-o' 'user=watdo,uid=666,gid=666'
pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0)
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0)
pam_mount(mount.c:64): Errors from underlying mount program:
pam_mount(mount.c:68): mount error(12): Cannot allocate memory
pam_mount(mount.c:68): Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)`
/var/log/kern.log도이 이벤트에 대해보고했습니다.
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'echo 1> / proc / fs / cifs / cifsFYI' 는 mount.cifs 디버그를 크랭크 합니다 (/ var / log / debug에 기록). 다음은 좋은 부분입니다 (친숙해 보이는가?).
CIFS Session Established successfully
For smb_command 117
Sending smb: total_len 88
cifs_sync_mid_result: cmd=117 mid=54307 state=4
Mapping smb error code 0xc0000205 to POSIX err -12
이 시점에서 말 그대로 클라이언트 측에서 사용 가능한 다른 정보는 없습니다. cifs 마운트 요청이 종료되고 클라이언트가 거의 즉시 죽습니다. mount.cifs error (12)는 매우 유익하지 않습니다 (man page는 도움이되지 않습니다, thx guys). 광범위한 인터넷 검색에서이 오류는 일반적인 오류 코드이며 정보가없는 것으로 확인되었습니다.
서버 확인 시간! log level = 3
/etc/samba/smb.conf에서 smbd로 설정 합니다 (Samba 사용하기 책에서 : "3 이상의 레벨은 개발자가 사용하고 엄청난 양의 암호 정보를 덤프합니다."lol!). 관련 행은 다음과 같습니다.
[2013/02/08 10:18:03, 3] smbd/error.c:error_packet_set(106)
error packet at smbd/reply.c(514) cmd=117 (SMBtconX) NT_STATUS_INSUFF_SERVER_RESOURCES
거의 .mbs 메일 링리스트 아카이브 에서 개인 smb 연결에 대한 공유 제한이있는 것으로 확인 된 유사한 문제를보고하는 사람이 있다는 것을 발견했습니다. 서버에서 열린 공유를 나열하십시오.
smbstatus -S | grep <serverIP> | wc -l
2048을 반환했습니다 . 매우 눈에.니다.
실제로 'IPC $'에 대한 smbstatus -S
공개 된 수천 개의 항목 의 출력을 검사합니다 . IPC $의 Samba 문서 는 익명 공유 브라우징 및 "일부 다른 리소스"에 대한 액세스와 관련이 있다고 밝혔다. /etc/samba/smb.conf의 서버에서 호스트 거부를 설정했습니다.
[IPC$]
hosts deny = 0.0.0.0/0
지금 잘 작동합니다. 자, 여기에 뭔가가 미래에 가난한 영혼을 도울 수 있기를 바랍니다.
나는 사이트의 정신에서 질문을 할 것 같다 : 왜 smbd가 IPC $ 주식을 정리하지 않을까? 클라이언트 연결 당 하나가 아닌 공유에 대한 사용자 연결 당 하나의 IPC $를 설정하는 이유는 무엇입니까? 클라이언트 측에서 IPC $ 공유 생성을 비활성화 할 수 있습니까? 주당 최대 연결 수를 늘리는 방법이 있습니까 (이 경우에는 도움이되지 않았습니까)? 나는 문서에서 그것을 보지 못했다.