Samba 報告可用空間不足
在我的 NAS 出現一些問題後,我切換到了 Debian/Lenny。我已經設法安裝和配置了我需要的大部分軟體,但是我在使用 Samba 時遇到了障礙。我可以訪問共享並讀取所有文件,但如果我嘗試發送任何內容,它會告訴我空間不足。
我使用的是 Windows,所以我打開了命令提示符並執行
> dir \\MyNAS.home\Public 1 File(s) 44,814,336 bytes 12 Dir(s) 507, 998, 060, 544 bytes free
報告的可用空間是正確的(~500GB),那麼問題是什麼?以下是我的 smb.conf:
[global] workgroup = MEDUS realm = WORKGROUP netbios name = MyNAS map to guest = bad user server string = My Book Network Storage load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes log file = /var/log/samba/log.smbd max log size = 50 dead time = 15 security = share auth methods = guest, sam_ignoredomain, winbind:ntdomain encrypt passwords = yes passdb backend = smbpasswd:/opt/etc/samba/smbpasswd create mask = 0664 directory mask = 0775 local master = no domain master = no preferred master = no socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536 min receivefile size = 128k use sendfile = yes dns proxy = no idmap uid = 10000-65000 idmap gid = 10000-65000 don't descend = /proc, /dev, /etc admin users = null passwords = yes guest account = nobody unix extensions = no [Public] path=/shares/internal/PUBLIC guest ok = yes read only = no dfree cache time = 10 dfree command = /opt/etc/samba/dfree
我自己添加的
dfree command
參數,試圖解決問題(這不起作用)。但是,我懷疑 NAS 無論如何都在報告正確的磁碟空間,這從我上面使用的命令的結果可以明顯看出。我也嘗試過使用該
block size
命令,但無濟於事。我能夠在共享上創建一個空文本文件,然後我反复編輯並保存了該文件——它在 130 字節左右停止。有誰知道問題可能是什麼?
在瀏覽了我的 smb.conf 文件並註釋掉幾乎所有內容後,我發現問題是由配置設置引起的
min receivefile size
。此選項在處理 SMBwriteX 呼叫時更改 smbd(8) 的行為。在非簽名 SMB/CIFS 連接上大於此值的任何傳入 SMBwriteX 呼叫都不會以正常方式處理,而是將傳遞給任何底層核心 recvfile 或 splice 系統呼叫(如果沒有這樣的呼叫,Samba 將在使用者中模擬空間)。這允許零拷貝直接從網路套接字緩衝區寫入文件系統緩衝區記憶體(如果可用)。它可能會提高性能,但建議進行使用者測試。如果設置為零,Samba 以正常方式處理 SMBwriteX 呼叫。要啟用 POSIX 大型寫入支持(SMB/CIFS 寫入高達 16Mb),此選項必須為非零。最大值為 128k。大於 128k 的值將被靜默設置為 128k。
在 conf 文件中註釋掉這一行解決了這個問題,我猜這就是當您使用其他人推薦的配置設置時會發生的情況。無論如何,我不確定我是否完全理解此設置的作用。
是否啟用配額?檢查:
sudo quotacheck -avugm
嘗試禁用它:
sudo quotaoff -fvpa