Saya memiliki jaringan lokal kecil yang memiliki kotak Gentoo dan kotak Windows. Saya memasang share yang berasal dari kotak Windows ke kotak Gentoo dengan perintah seperti:
mount -t cifs -o username=WindowsUsername,password=thepassword,uid=pistos //192.168.0.103/Users /mnt/windowsbox
Sebagian besar waktu, semuanya Hanya Bekerja, dan saya dapat membaca dan menulis tanpa masalah. Namun, setiap beberapa minggu sekali, koneksi atau titik pemasangan tampaknya mati atau hang, sehingga setiap proses yang mencoba mengakses titik pemasangan macet dalam keadaan D (disk, atau I / O tunggu). Proses-proses ini menjadi tahan terhadap sinyal TERM dan KILL. Memutuskan hubungan dan menghubungkan kembali kotak Windows dari jaringan tidak membantu. Keadaan beku berlangsung selama 5+ menit. Ini benar-benar membuat frustasi dan menghalangi pekerjaan normal, karena itu membekukan dialog Save As, ls
perintah, dll. Jika saya mengeluarkan a umount
pada titik mount, itu juga hang, atau melaporkan bahwa titik mount sedang digunakan. Akhirnya, kondisi mati teratasi dengan sendirinya, dan titik pemasangan dilepas, atau menjadi mungkin umount
tanpa penundaan.
Dugaan saya adalah ini terjadi ketika koneksi / mount idle, atau ketika mesin Windows idle. Saya tidak begitu yakin.
Mengapa ini terjadi, dan apa yang bisa saya lakukan untuk mencegahnya? Atau bagaimana saya bisa berhasil membunuh proses D-state ini sesuka hati?
Mungkin terkait: Gunung CIFS menunggu dibaca
Jawaban:
Tidak yakin mengapa masalah terjadi, tetapi sebagai solusinya, sudahkah Anda mencoba meletakkan sesuatu seperti
touch /mnt/windowsbox/keepalive.txt
atauecho "I am still alive." >/mnt/windowsbox/keepalive.txt
dijalankan melalui cron setiap menit? Dengan begitu koneksi harus tetap aktif.sumber
*/5 * * * *
dalam jadwal crontabSaya juga mengalami ini setiap beberapa bulan.
sudo umount -l
adalah solusi saya. /programming//a/96288/2097284sumber
Jawaban potensial lainnya menyarankan menulis ke file di mount secara berkala melalui cron. Saya akan menyarankan sebaliknya menggunakan program smbclient untuk terhubung ke share dan putuskan.
Saya menulis skrip bash seperti ini untuk mencapai itu:
Perintah ini membuat koneksi baru ke share dan kemudian menjalankan perintah keluar, segera mematikan koneksi yang baru saja dibuat pada baris perintah. Seharusnya ada 8 garis miring sebelum nama server dan 4 sebelum nama berbagi, karena garis miring terbalik harus diloloskan, dan lolos harus diloloskan ketika berada di dalam string yang dikutip ganda. Mungkin ada cara yang lebih cerdas untuk melakukan ini, tetapi ini tampaknya berhasil.
Mungkin ada cara untuk membuat ini lebih dapat diandalkan dengan membuatnya membuat koneksi terbuka selama beberapa menit pada suatu waktu, tetapi itu sedikit keluar dari liga saya.
sumber
//servername/sharname
cara ini lebih mudah di tempat-tempat di mana Anda perlu banyak melarikan diri.