我有几个 Linux 客户端在运行 Windows Server 2012 的远程计算机上安装共享。相关行如下/etc/fstab
所示:
//server.address.com/share /media/share cifs rw,user,noauto,_netdev,soft,cred=/etc/samba/cred/share 0 0
如果我用来df
查询可用空间量,我会得到:
~$ df -kh /media/share
Filesystem Type Size Used Avail Use% Mounted on
//server.address.com/share cifs 1.8T 1.1T 803G 57% /media/share
我使用以下方法获得基本相同的使用情况统计数据stat -f
:
~$ stat -f /media/share
File: "/media/share"
ID: 0 Namelen: 4096 Type: cifs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 483183820 Free: 210294051 Available: 210294051
Inodes: Total: 0 Free: 0
这里,4096 * 210294051 / 2^30 = 802.2GB 可用。但是我知道事实上共享几乎已完全填满 - 从 Windows 客户端我看到使用了 1.79/1.80T。
我怀疑这种差异可能与这个问题根据该讨论主题(始于 2012 年),CIFS 内核客户端不支持报告配额使用情况。我还没有发现有关该主题的任何新信息(我的客户端运行 Ubuntu 14.04、内核 v3.13.0-46-generic、mount.cifs v6.0)。
我尝试使用该nounix
标志进行安装,但仍然得到不正确的使用情况统计数据:
~$ df -kh /media/share
Filesystem Type Size Used Avail Use% Mounted on
//server.address.com/share cifs 1.8T 1.1T 803G 57% /media/share
~$ stat -f /media/share
File: "/media/share"
ID: 0 Namelen: 4096 Type: cifs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 483183820 Free: 210294040 Available: 210294040
Inodes: Total: 0 Free: 0
我也尝试过使用quota
,但这可能只适用于 NFS 挂载,因为它没有为我的 CIFS 共享打印任何内容:
~$ quota -v
~$
答案1
如果您没有为 SMB 协议版本指定挂载选项,则将使用默认值 1.0。只有 SMB 协议版本 2.0 及更高版本支持报告配额。fstab 中的 SMB 版本指定如下:
man mount.cifs
...
OPTIONS
...
vers=
SMB protocol version. Allowed values are:
· 1.0 - The classic CIFS/SMBv1 protocol. This is the default.
· 2.0 - The SMBv2.002 protocol. This was initially introduced in Windows Vista Service Pack 1, and Windows Server 2008.
Note that the initial release version of Windows Vista spoke a slightly different dialect (2.000) that is not
supported.
· 2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.
· 3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.
Note too that while this option governs the protocol version used, not all features of each version are available.
因此,只需在示例中添加 vers=2.0 或更高版本即可df
正确报告配额:
//server.address.com/share /media/share cifs rw,user,noauto,_netdev,soft,cred=/etc/samba/cred/share,vers=2.0 0 0
答案2
您可以使用下面的用户空间工具来查询配额信息。
https://github.com/kenneth-dsouza/smb2quota
# smb2quota.py /test
Amount Used | Quota Limit | Warning Level | Percent Used | Status | SID
70.0 kiB | 16.0 EiB | 16.0 EiB | N/A | Ok | S-1-5-32-544
480.0 MiB | 500.0 MiB | 450.0 MiB | 96.0 | Warning | S-1-5-21-3363399803-746912020-2622272238-1001
4.0 MiB | 16.0 EiB | 16.0 EiB | N/A | Ok | S-1-5-18
请注意:
内核对 smb2quota 的支持需要 CIFS_QUERY_INFO IOCTL,该 IOCTL 最初在 4.20 内核中引入,并且仅适用于使用 SMB2 或更高版本的挂载点(请参阅 mount.cifs(8) vers 选项)