Server: RHEL 5.9 / smbd 3.0.33 - Client: vari, sebbene tutti usassero l'attuale mount.cifs (5.2)
Ho già risolto questo problema, ma è stato un tale incubo dare la caccia a questi codici di errore e ho pensato che avesse bisogno di una documentazione universale.
Sintomi : errore di montaggio imprevedibile e intermittente da uno specifico client cifs al server samba di linux. Tutti i miei client Linux pam_mount user homes al login. A caso, e sporadicamente, i montaggi di home dir hanno iniziato a fallire su una macchina. Accessi e montaggi hanno continuato a funzionare perfettamente su tutti gli altri client. Inizialmente pensavo che una insolita quantità di attività sul client non funzionante causasse il freak di smbd, ma i guasti intermittenti sono persistiti anche dopo che l'utilizzo è diminuito.
Il tentativo di montare manualmente non riesce e segnala:
Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Impostare <debug enable="1"/>
in /etc/security/pam_mount.conf.xml per ottenere maggiori informazioni da pam_mount:
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)`
Anche /var/log/kern.log ha riferito di questo evento:
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'echo 1> / proc / fs / CIFS / cifsFYI' manovelle fino mount.cifs debug (scritture / var / log / debug). Ecco la parte buona (sembra familiare?):
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
A questo punto non ci sono letteralmente altre informazioni disponibili sul lato client. La richiesta di mount cifs viene disattivata e il client muore quasi immediatamente. L'errore mount.cifs (12) è piuttosto poco informativo (la pagina man non aiuta, grazie ragazzi). Un'ampia ricerca su Internet rivela che questo è un codice di errore comune, lo conferma anche come non informativo.
È ora di controllare sul server! Imposta log level = 3
per smbd in /etc/samba/smb.conf (dal libro Using Samba: "I livelli sopra 3 sono usati dagli sviluppatori e scaricano enormi quantità di informazioni criptiche." Lol!). Ecco la linea pertinente:
[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
Quasi lì ... dall'archivio della mailing list smb ho trovato qualcuno che riportava una sorta di problema simile, identificato come limite di condivisione ancorato su una singola connessione smb. Elenco condivisioni aperte sul server:
smbstatus -S | grep <serverIP> | wc -l
restituito il 2048 . Molto evidente.
Esaminando effettivamente l'output di migliaia di voci smbstatus -S
rivelate per "IPC $". I documenti Samba su IPC $ rivelano che è coinvolto nella navigazione condivisa anonima e nell'accesso ad "alcune altre risorse". Ho impostato l'host deny sul server in /etc/samba/smb.conf:
[IPC$]
hosts deny = 0.0.0.0/0
Funziona benissimo ora. OK, speriamo che qualcosa qui aiuti qualche povera anima in futuro.
Immagino che nello spirito del sito farò una domanda: perché smbd non dovrebbe ripulire le azioni IPC $? Perché stabilire una connessione IPC $ per utente a una condivisione anziché una per connessione client? È possibile disabilitare la creazione della condivisione $ IPC dal lato client? C'è un modo per aumentare il numero massimo di connessioni per condivisione (non che ciò avrebbe aiutato in questo caso)? Non l'ho visto nei documenti.