Di sini saya memiliki server Samba (Debian 5.0) yang dikonfigurasi untuk meng-host profil Windows XP.
Klien terhubung ke server ini dan mengerjakan profil mereka secara langsung pada share samba (profil tidak disalin secara lokal).
Sesekali, klien mungkin tidak mematikan dengan benar dan dengan demikian Windows tidak membebaskan kunci file. Saat melihat tabel penguncian samba, kita dapat melihat bahwa banyak file masih terkunci meskipun klien tidak terhubung lagi. Dalam kasus kami, ini tampaknya terjadi dengan lockfiles yang dibuat oleh Mozilla Thunderbird dan Firefox. Berikut adalah contoh dari tabel penguncian samba:
# smbstatus -L | grep DENY_ALL | head -n5
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
15494 10345 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user1 app.profile/user1.thunderbird/parent.lock Mon Nov 22 07:12:45 2010
18040 10454 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user2 app.profile/user2.thunderbird/parent.lock Mon Nov 22 11:20:45 2010
26466 10056 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user3 app.profile/user3.firefox/parent.lock Mon Nov 22 08:48:23 2010
Kita dapat melihat bahwa file dibuka oleh Windows dan mengenakan kunci DENY_ALL.
Sekarang ketika klien menghubungkan kembali ke berbagi ini dan mencoba untuk membuka file-file itu, samba mengatakan bahwa mereka dikunci dan menolak akses.
Apakah ada cara untuk mengatasi situasi ini atau saya kehilangan sesuatu?
Edit: Kami ingin menghindari menonaktifkan kunci file di server samba karena ada yang alasan yang baik untuk memiliki orang-orang yang aktif.
sumber
Lihatlah:
dan lihat apakah itu akan memperbaiki masalah Anda atau tidak.
Dari
smb.conf
halaman manual:Sunting :
Saya baru saja memikirkan solusi lain yang mungkin. Anda dapat melakukan sesuatu seperti ini di bagian yang dimaksud.
Ini hanya akan mencegah membuka kunci pada file .lock.
sumber
Beberapa orang yang sangat pintar di Samba memutuskan untuk menghapus opsi ini dan tidak ada pengganti untuk itu.
Sejauh ini untuk kompatibilitas SMB, karena ini memang perilaku win default.
Kecuali jika pengguna berpengalaman dalam baris perintah linux dan cara membunuh file / proses yang terbuka, Anda harus me-restart SMBD ke atau server itu sendiri untuk menghapus ini.
Sungguh luar biasa, Samba.org.
sumber
reset on zero vc
opsi ini masih tercantum dalam manual, dan juga ditampilkan olehtestparm
. Jadi apakah itu kembali, atau itu benar-benar belum dihapus.Saya mengalami masalah yang sama, klien jatuh saat menyalin file besar dan file itu terkunci setelah reboot. Untungnya hal ini tidak terlalu sering terjadi, tetapi masih cukup mengganggu karena harus membunuh proses samba.
reset on zero vc
tampaknya hanya solusi, tetapi itu seharusnya dihapus dari Samba4, meskipun Versi 4.7.6 pada Fedora (27) masih memilikinya (mungkin ditambal oleh RH). Lagipula itu tidak akan banyak membantu, seperti yang dikatakan halaman manual, bahwa itu hanya berfungsi dengan SMB1 (yang seharusnya tidak digunakan lagi) dan tidak melakukan apa-apa pada koneksi SMB2 dan SMB3, satu-satunya cara yang tersisa untuk menangani ini disebutkan dalam utas yang ditautkan oleh Micheal . Saya tidak tahu alasan di balik penghapusan dan apa yang sangat buruk tentang itureset on zero vc
, Saya akan mempertimbangkan menggunakan batas waktu tcp untuk tujuan ini lebih seperti peretasan. Pokoknya sesuatu yang masuk akal bisa jadi misalnyaIni akan mematikan koneksi sekitar 40 detik (30 + 3 * 3) setelah komunikasi terakhir, yang biasanya lebih dari cukup untuk melihat crash dan reboot (mengingat bahwa tumpukan tcp server cukup pintar untuk menutup koneksi ketika klien menolak paket keepalive-nya setelah reboot).
Perhatikan bahwa ini meningkatkan beban pada jaringan Anda, tetapi saya ragu itu bahkan terlihat bahkan dengan banyak klien.
sumber
deadtime = 10
atau lebih akan menghapusnya, tetapi dengan kunci file melekat pada koneksi SMB3_11 selamanya itu tidak berpengaruh, karena deadtime tidak akan diperiksa sementara kunci file untuk PID masih ada. Sangat membuat frustrasi.deadtime
tidak melakukan apa-apa jika klien Anda memiliki file terbuka, jadi pertanyaannya adalah, file mana yang tetap terbuka. Tapi itu mungkin masalah yang sama sekali berbeda dari yang dibahas di sini, jadi Anda harus membuka pertanyaan baru untuk ini.socket options
Saran saya hanya membantu dengan koneksi yang tidak ditutup dengan benar (karena klien macet, pemadaman jaringan dll.), Tetapi mungkin tidak jika klien WX Anda hanya terhubung ke server tanpa tindakan lebih lanjut atau menggunakan beberapa jenis sesi anonim (yangnobody.nogroup
menyarankan ).12345 someuser somegroup...
pada satu entri, kemudian 80012345 nobody nogroup ...
entri, tetapi hanya segelintir kunci file (bukan 800). Sangat aneh. Mempengaruhi 3 situs klien saya sekarang.Anda dapat menonaktifkan kunci pembuka berdasarkan per-saham dengan yang berikut:
Jenis oplock default adalah Level1. Pembuka level2 diaktifkan berdasarkan per-saham dalam file smb.conf. Sebagai alternatif, Anda dapat menonaktifkan oplock pada basis per file di dalam share:
Jika Anda mengalami masalah dengan kunci pembuka, seperti yang terlihat dari entri log Samba, Anda mungkin ingin memainkannya dengan aman dan menonaktifkan kunci pembuka dan pembuka kunci Level2.
Menonaktifkan Kernel Oplocks Kernel oplocks adalah parameter smb.conf yang memberitahukan Samba (jika kernel UNIX memiliki kemampuan untuk mengirim klien Windows istirahat oplock) ketika proses UNIX berusaha untuk membuka file yang di-cache. Parameter ini membahas berbagi file antara UNIX dan Windows dengan oplocks yang diaktifkan pada server Samba: proses UNIX dapat membuka file yang di-Oplock (di-cache) oleh klien Windows dan proses smbd tidak akan mengirim oplock break, yang mengekspos file ke risiko korupsi data. Jika kernel UNIX memiliki kemampuan untuk mengirim istirahat oplock, maka parameter buka kunci kernel memungkinkan Samba untuk mengirim istirahat oplock. Kernel oplock diaktifkan berdasarkan per-server dalam file smb.conf.
Standarnya adalah no.
Sumber
sumber