Servidor: RHEL 5.9 / smbd 3.0.33 - Clientes: varios, aunque todos usaban mount.cifs actual (5.2)
Ya resolví este problema, pero fue una pesadilla buscar estos códigos de error. Sentí que necesitaba una documentación universal.
Síntomas : error de montaje impredecible e intermitente de un cliente cifs específico al servidor Linux Samba. Todos mis clientes de Linux pam_mount usuarios de inicio de sesión. Aleatoriamente, y esporádicamente, los montajes del directorio de inicio comenzaron a fallar en una máquina. Los inicios de sesión y las monturas continuaron funcionando perfectamente en todos los demás clientes. Inicialmente, pensé que una cantidad inusual de actividad en el cliente dañado estaba causando que smbd se volviera loco, pero las fallas intermitentes persistieron incluso después de que el uso disminuyó.
Intentar montar a mano falla e informa:
Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Establezca <debug enable="1"/>
en /etc/security/pam_mount.conf.xml para obtener más información de 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)`
/var/log/kern.log también informó sobre este evento:
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'echo 1> / proc / fs / CIFS / cifsFYI' manivelas hasta mount.cifs depuración (escrituras en / var / log / debug). Aquí está la buena parte (¿parece familiar?):
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
En este punto, literalmente, no hay otra información disponible en el lado del cliente. La solicitud de montaje cifs se apaga y el cliente muere casi de inmediato. El error mount.cifs (12) es bastante poco informativo (la página del manual no ayuda, gracias). La búsqueda exhaustiva en Internet revela que este es un código de error común, también lo confirma como poco informativo.
¡Hora de revisar el servidor! Establecido log level = 3
para smbd en /etc/samba/smb.conf (del libro Using Samba: "Los niveles superiores a 3 son para uso de los desarrolladores y descargan enormes cantidades de información críptica". ¡Jaja!). Aquí está la línea relevante:
[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
Casi allí ... desde el archivo de la lista de correo smb encontré a alguien que informaba una especie de problema similar, identificado como un límite de compartición vinculado en una conexión smb individual. Enumere los recursos compartidos abiertos en el servidor:
smbstatus -S | grep <serverIP> | wc -l
regresó en 2048 . Muy conspicuo.
En realidad, examinando la salida de miles de entradas smbstatus -S
reveladas para 'IPC $'. Los documentos de Samba en IPC $ revelan que está involucrado con la exploración anónima de acciones y el acceso a "algunos otros recursos". Configuré host deny en el servidor en /etc/samba/smb.conf:
[IPC$]
hosts deny = 0.0.0.0/0
Funciona muy bien ahora. Bien, espero que algo aquí ayude a alguna pobre alma en algún momento en el futuro.
Supongo que, en el espíritu del sitio, haré una pregunta: ¿por qué smbd no limpiaría las acciones de IPC $? ¿Por qué establecer una conexión IPC $ por usuario a un recurso compartido en lugar de una por conexión de cliente? ¿Se puede deshabilitar la creación de acciones IPC $ desde el lado del cliente? ¿Hay alguna manera de aumentar el número máximo de conexiones por acción (no es que esto hubiera ayudado en este caso)? No lo vi en los documentos.