web-dev-qa-db-ja.com

LinuxクライアントからCIFS共有のディスククォータ使用量を表示するにはどうすればよいですか?

Windows Server2012を実行しているリモートマシンに共有をマウントするLinuxクライアントがいくつかあります。/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 も使用してみましたが、CIFS共有に対して何も出力しないため、これはおそらくNFSマウントでのみ機能します。

~$ quota -v
~$
6
ali_m

SMBプロトコルのバージョンにマウントオプションを指定しない場合、デフォルトの1.0が使用されます。クォータのレポートは、SMBプロトコルバージョン2.0以降でのみサポートされます。 SMB fstabのバージョンは次のように指定されます。

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
zwobot

以下のユーザースペースツールを使用して、クォータ情報を照会できます。

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のカーネルサポートには、4.20カーネルで最初に導入されたCIFS_QUERY_INFO IOCTLが必要であり、SMB2以降を使用するマウントポイントに対してのみ実装されます。mount.cifs(8)versオプションを参照してください。

0
user1097713