Server: RHEL 5.9 / smbd 3.0.33 - Clients: verschiedene, obwohl alle aktuelle mount.cifs (5.2) verwendeten
Ich habe dieses Problem bereits gelöst, aber es war ein Albtraum, diese Fehlercodes aufzuspüren. Ich hatte das Gefühl, dass eine universelle Dokumentation erforderlich ist.
Symptome : Unvorhersehbarer, zeitweise auftretender Mount-Fehler von einem bestimmten cifs-Client auf einen Linux-Samba-Server. Alle meine Linux-Clients pam_mount Benutzerheime bei der Anmeldung. Zufällig und sporadisch versagten die Home-Dir-Reittiere auf einer Maschine. Logins und Mounts funktionierten auf allen anderen Clients weiterhin einwandfrei. Anfangs dachte ich, dass eine ungewöhnliche Menge an Aktivitäten auf dem kaputten Client dazu führte, dass smbd ausfiel, aber zeitweise auftretende Fehler blieben auch nach dem Erlöschen der Nutzung bestehen.
Der Versuch, von Hand zu mounten, schlägt fehl und meldet Folgendes:
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"/>
Stellen Sie in /etc/security/pam_mount.conf.xml ein, um weitere Informationen von pam_mount zu erhalten:
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 hat auch über dieses Ereignis berichtet:
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'echo 1> / proc / fs / CIFS / cifsFYI' Kurbeln bis mount.cifs debug (Schreiben in / var / log / debug). Hier ist der gute Teil (kommt mir bekannt vor?):
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
Zu diesem Zeitpunkt sind buchstäblich keine weiteren Informationen auf der Client-Seite verfügbar. cifs mount request erlischt und der Client stirbt fast sofort. Der mount.cifs-Fehler (12) ist ziemlich uninformativ (Manpage hilft nicht, Jungs). Ausgiebige Internetrecherchen haben ergeben, dass dies ein häufiger Fehlercode ist, und bestätigen, dass er nicht aussagekräftig ist.
Zeit, auf dem Server zu überprüfen! Set log level = 3
für smbd in /etc/samba/smb.conf (aus dem Buch Mit Samba: „Level über 3 sind für die Verwendung durch die Entwickler und Dump enorme Mengen an kryptischen Informationen.“ Lol!). Hier ist die relevante Zeile:
[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
Fast da ... aus dem SMB-Mailinglistenarchiv habe ich jemanden gefunden, der ein ähnliches Problem gemeldet hat, das als gebundenes Freigabelimit für eine einzelne SMB-Verbindung identifiziert wurde. Liste offener Freigaben auf dem Server:
smbstatus -S | grep <serverIP> | wc -l
kehrte 2048 . Sehr auffällig.
Die Ausgabe von smbstatus -S
ergab tatsächlich Tausende von Einträgen für "IPC $". Samba-Dokumente auf IPC $ offenbaren, dass es sich um das anonyme Durchsuchen von Freigaben und den Zugriff auf "einige andere Ressourcen" handelt. Ich habe host deny auf dem Server in /etc/samba/smb.conf eingestellt:
[IPC$]
hosts deny = 0.0.0.0/0
Funktioniert jetzt super. OK, hoffentlich hilft hier etwas einer armen Seele irgendwann in der Zukunft.
Ich schätze, im Geiste der Site werde ich eine Frage stellen: Warum sollte smbd IPC $ -Anteile nicht bereinigen? Warum sollte ein IPC $ pro Benutzerverbindung zu einer Freigabe eingerichtet werden, anstatt einer pro Clientverbindung? Können Sie die Erstellung von IPC $ -Freigaben auf der Clientseite deaktivieren? Gibt es eine Möglichkeit, die maximale Anzahl von Verbindungen pro Aktie zu erhöhen (nicht, dass dies in diesem Fall geholfen hätte)? Ich habe es nicht in den Dokumenten gesehen.