Samba

如果使用 samba 共享,Scientific Linux 6.3 會掛起

  • December 17, 2012

我有幾個執行 Scientific Linux 6.3 的筆記本。

掛起功能執行良好,除了一個問題:

當筆記本掛載 Samba 共享,通過該共享播放一些影片後,暫停功能停止工作,筆記本突然需要暫停5分鐘。

同樣,僅當他們通過 samba 共享觀看影片時才會出現此問題。

問題:為什麼?samba 是否保持打開狀態並需要 5 分鐘的超時,就在涉及掛起功能之後還是什麼?

任何關於在哪裡尋找以了解正在發生的事情的建議將不勝感激。或者我可以編寫一個 bash 腳本來檢查何時按下暫停按鈕,以便我可以對機器執行 xy* 操作。

(*xy=任何能糾正這個問題的東西)

配置 sudo 權限:

visudo
USERNAME ALL = NOPASSWD: /bin/mount //192.168.1.1/Share /home/USERNAME/Desktop/Share -t cifs*
USERNAME ALL = NOPASSWD: /bin/umount -f -a -t cifs
USERNAME ALL = NOPASSWD: /bin/umount -f -l -a -t cifs
USERNAME ALL = NOPASSWD: /sbin/modprobe -r -f cifs

======================================================================

普通使用者:

vi ~/.mountsamba.sh; chmod +x ~/.mountsamba.sh
#!/bin/bash
case $1 in

mount)
echo 'In progress...'
/usr/bin/sudo /bin/mount //192.168.1.1/Share /home/USERNAME/Desktop/Share -t cifs -o ro,bg,intr,soft,noexec,nosuid,nodev,password=,nolock
pkill nautilus
echo "MOUNTShare - `date`" | /usr/bin/logger
;;

umount)
echo 'folyamatban...'
/usr/bin/sudo /bin/umount -f -a -t cifs
/usr/bin/sudo /bin/umount -f -l -a -t cifs
sleep 5
/usr/bin/sudo /sbin/modprobe -r -f cifs
pkill nautilus
echo "UMOUNTShare - `date`" | /usr/bin/logger
;;

*)
exit 1
;;

esac

======================================================================

將圖示放在 GNOME 面板中:

gnome-terminal -x bash -c "/home/USERNAME/.mountsamba.sh mount"
gnome-terminal -x bash -c "/home/USERNAME/.mountsamba.sh umount"

======================================================================

如果你想使用 autofs:

vi /etc/auto.master
/-  /etc/auto.samba --timeout=120

vi /etc/auto.samba
/home/USERNAME/Desktop/Share    -fstype=cifs,bg,intr,soft,ro,noexec,nosuid,nodev,password=,nolock   ://192.168.1.1/Share

我的經驗是,如果連接在安裝時中斷,samba 共享的反應會非常糟糕。

可能網路在儲存之前就已關閉,因此您的系統可能正在嘗試對 samba 共享執行任何操作,而這在沒有網路連接的情況下是不可能的。一種解決方法是在掛起時自動解除安裝它(然後可能重新安裝它):

#!/bin/bash
if [ $1 == "suspend" ]; then
   umount -afl -t cifs
fi

如果您將其放入/etc/pm/sleep.d/並使其可執行,則它應該在每次掛起時執行。我無法真正測試它是否發生得足夠快,只需在評論中提供回饋即可。但是,如果程序仍在訪問共享中的文件,您將遇到問題。-l仍應將其從文件系統樹中解除安裝,-f以確保在無法訪問共享伺服器時它可以正常工作。

您可以將其擴展為有狀態並(嘗試)恢復您的掛載。

我無法找到官方消息來源。最好的方法是查看 linux 核心原始碼,查看設備被發送到掛起的順序,並查看 cifs 在掛起時嘗試做什麼等等。

引用自:https://unix.stackexchange.com/questions/43274