Sunucu: RHEL 5.9 / smbd 3.0.33 - İstemciler: çeşitli, hepsi geçerli mount.cifs kullanıyor olsa da (5.2)
Bu sorunu zaten çözdüm, ancak bu hata kodlarını avlamak öyle bir kabustu ki evrensel belgelemeye ihtiyaç duyduğunu hissettim.
Belirtiler : Belirli bir cifs istemcisinden linux samba sunucusuna öngörülemeyen, aralıklı bağlama hatası. Tüm linux müşterilerim pam_mount kullanıcı evlerini girişte. Rastgele ve ara sıra ev dirsekleri bir makinede arızalanmaya başladı . Girişler ve bağlantılar diğer tüm istemcilerde kusursuz bir şekilde çalışmaya devam etti. Başlangıçta kırık istemcideki alışılmadık miktarda aktivitenin smbd'nin çıldırmasına neden olduğunu düşündüm, ancak kullanım kaybolduktan sonra bile aralıklı arızalar devam etti.
Elle monte etme denemesi başarısız olur ve raporlar:
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'tan daha fazla bilgi almak için /etc/security/pam_mount.conf.xml dosyasında ayarlayın :
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 da bu olayla ilgili şunları bildirdi:
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'eko 1> / proc / fs / cifs / cifsFYI' Cranks kadar mount.cifs ayıklama (/ var / log / debug yazıyor). İşte iyi kısmı (tanıdık görünüyorsun?):
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
Bu noktada tam anlamıyla müşteri tarafında başka bilgi mevcut değildir. cifs mount isteği söner ve istemci hemen ölür. mount.cifs hatası (12) oldukça bilgilendirici değildir (man sayfası yardımcı olmaz, thx guys). Kapsamlı internet araması, bunun yaygın bir hata kodu olduğunu ortaya koyuyor ve aynı zamanda bilgilendirici olmadığını da doğruladı.
Sunucu üzerinde kontrol zamanı! Set log level = 3
/etc/samba/smb.conf SMBD için (kullanma Samba kitaptan: "3'ün üzerinde Düzeyleri geliştiriciler tarafından kullanılmak içindir ve şifreli bilgilerin büyük miktarlarda dökümü." Lol!). İlgili satır:
[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
Neredeyse orada ... smb posta listesi arşivinden benzer bir sorunu bildiren birini buldum, bireysel bir smb bağlantısında sabit bir pay limiti olarak tanımlandı. Sunucudaki açık paylaşımları listeleyin:
smbstatus -S | grep <serverIP> | wc -l
2048 döndü . Çok dikkat çekici.
Aslında çıktısını inceleyerek smbstatus -S
ortaya binlerce 'IPC $' için girişlerden. IPC $ üzerindeki Samba dokümanları, anonim paylaşım taraması ve "diğer bazı kaynaklara" erişim ile ilgili olduğunu ortaya koyuyor. /Etc/samba/smb.conf dizininde sunucuda host inkar ayarladım:
[IPC$]
hosts deny = 0.0.0.0/0
Şimdi harika çalışıyor. Tamam, umarım burada bir şeyler gelecekte biraz zaman zaman bazı fakir ruhlara yardımcı olur.
Sanırım sitenin ruhu içinde bir soru soracağım: Neden smbd IPC $ paylaşımları temizlemek olmaz? İstemci bağlantısı başına bir bağlantı yerine neden bir paylaşıma kullanıcı başına bir IPC $ oluşturmalıyım? IPC $ paylaşım oluşturmayı istemci tarafından devre dışı bırakabilir misiniz? Paylaşım başına maksimum # bağlantıyı artırmanın bir yolu var mı (bu durumda bu yardımcı olabilirdi)? Belgelerde görmedim.