在我的 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 字节。
有谁知道问题可能是什么?
答案1
是否启用配额?检查:
sudo quotacheck -avugm
尝试禁用它:
sudo quotaoff -fvpa
答案2
在检查了我的 smb.conf 文件并注释掉几乎所有内容后,我发现问题是由配置设置引起的min receivefile size
。
此选项会更改 smbd(8) 在处理 SMBwriteX 调用时的行为。任何在非签名 SMB/CIFS 连接上传入的大于此值的 SMBwriteX 调用都不会以正常方式处理,但会传递给任何底层内核 recvfile 或 splice 系统调用(如果没有这样的调用,Samba 将在用户空间中模拟)。这允许从网络套接字缓冲区直接零拷贝写入文件系统缓冲区缓存(如果可用)。这可能会提高性能,但建议用户进行测试。如果设置为零,Samba 将以正常方式处理 SMBwriteX 调用。要启用 POSIX 大写入支持(SMB/CIFS 写入高达 16Mb),此选项必须为非零。最大值为 128k。大于 128k 的值将被默默设置为 128k。
在conf文件中注释掉这一行解决了这个问题,我想这就是当您使用其他人推荐的配置设置时会发生的情况。无论如何,我不确定我是否完全理解这个设置的作用。