Disk quotas cho phép quản trị viên Windows kiểm soát và giới hạn lượng không gian đĩa mà người dùng sử dụng trên hệ thống tệp của server và trạm làm việc. Windows Server hỗ trợ hai loại disk quotas: File Server Resource Manager quotas và NTFS quotas. Mặc dù FSRM quotas linh hoạt và tiện lợi hơn, trong một số trường hợp NTFS quotas có thể dùng hiệu quả. Ví dụ, để giới hạn kích thước thư mục roaming profile (nhưng không phải User Profile Disks) và thư mục home được redirect trên RDS host, thư mục cá nhân người dùng trên FTP server và site IIS, v.v. Trong bài này, chúng tôi sẽ hướng dẫn cách cấu hình NTFS disk quotas cho người dùng Windows.
Hiểu về NTFS Disk Quotas trong Windows
Bạn có thể dùng disk quotas Windows để giới hạn kích thước tối đa của tệp và thư mục cho mỗi người dùng để họ không tiêu thụ hết không gian đĩa với dữ liệu của mình. Disk quotas có sẵn trong cả phiên bản server và desktop Windows.
Các tính năng chính và hạn chế của NTFS quotas:
- Quotas chỉ có thể áp dụng cho toàn bộ volume (phân vùng) định dạng NTFS. Loại quota này không hoạt động trên ổ ReFS;
- Quotas áp dụng cho tất cả người dùng lưu trữ dữ liệu trên phân vùng này. Bạn không thể áp dụng quota cho một nhóm người dùng hoặc thư mục riêng biệt. Trong trường hợp này tốt hơn dùng FSRM;
- Quyền sở hữu tệp và thư mục được xác định bằng cách kiểm tra bản ghi Owner trong security descriptor NTFS;
- Mặc định, Windows quét phân vùng bật disk quotas và tính tổng kích thước tệp của mỗi người dùng mỗi giờ một lần;
- Khi dùng nén NTFS, kích thước tệp gốc (trước nén) được tính.
Có các kịch bản sau cho việc sử dụng NTFS disk quotas:
- Giám sát sử dụng đĩa — xem thống kê sử dụng không gian đĩa của người dùng trên server;
- Giám sát và thông báo — ngoài kịch bản đầu tiên, khi quota bị vượt quá, sự kiện được ghi trong Event Viewer với thông tin username và mức sử dụng quota;
- Kiểm soát sử dụng đĩa — nếu quota bị vượt quá, người dùng không thể lưu tệp mới.
Bật Disk Quotas trên Windows 10/Windows Server 2016
Xét trường hợp cấu hình NTFS quotas trên ổ chứa dữ liệu người dùng trên Windows Server 2016. Trong tất cả các phiên bản Windows trước (bắt đầu từ Windows 2003), NTFS disk quotas được cấu hình theo cách giống nhau.
Mở cửa sổ thuộc tính ổ đĩa bạn muốn bật quotas, đi đến tab Quota. Sau đó nhấp Show Quota Settings:

Để bật quotas cho volume này, tích Enable quota management.
Các tùy chọn sau có thể được tích tùy thuộc vào kịch bản sử dụng quota:
- Deny disk space to users exceeding quota limit – ngăn người dùng vượt quá giới hạn quota ghi vào đĩa;
- Limit disk space to — đặt giới hạn tổng kích thước tệp cho một người dùng;
- Log event when a user exceeds their quota limit – ghi sự kiện trong Event Viewer nếu người dùng vượt quá giới hạn quota;
- Log event when a user exceeds their warning level – ghi sự kiện khi đạt ngưỡng cảnh báo quota.
Không khuyến khích bật tùy chọn "Deny disk space to users exceeding quota limit" ngay lập tức. Tốt hơn là ước lượng mức sử dụng đĩa hiện tại của người dùng. Trong ví dụ của chúng tôi, chúng ta muốn giới hạn mỗi người dùng 1 GB không gian đĩa trên server.

Lưu thay đổi (Apply). Sau một thời gian (tùy thuộc vào kích thước đĩa và số lượng tệp), Windows sẽ tính tổng sử dụng không gian đĩa của mỗi người dùng.
Nhấp vào nút Quota Entries. Bạn sẽ thấy bảng kết quả hiển thị quotas và kích thước không gian hiện tại được dùng bởi mỗi người dùng (có tệp trên hệ thống tệp). Ở đây bạn có thể thấy ngay người dùng nào đã vượt quá disk quotas của họ.

Mặc định, cùng quota được đặt cho tất cả người dùng. Từ cửa sổ Quota Entries, bạn có thể tạo, tăng hoặc vô hiệu hóa cài đặt quota tùy chỉnh cho người dùng cụ thể.
Để tắt NTFS disk quotas cho tài khoản người dùng cụ thể, mở thuộc tính (Properties) của mục trong bảng quota và tích "Do not limit disk usage".
Quan trọng. Bạn phải tắt quotas cho tài khoản hệ thống NT Service\TrustedInstaller và NT AUTHORITY\SYSTEM, nếu không Windows có thể không hoạt động đúng.
Từ cửa sổ danh sách quota, bạn có thể export cài đặt quota của mình rồi import và áp dụng cho ổ đĩa hoặc máy tính khác.
Nếu bạn muốn hiển thị danh sách tệp được tính trong quota của người dùng cụ thể, bạn cần chọn mục menu Delete.

Hộp thoại này cho phép thay đổi chủ sở hữu tệp cụ thể (Take ownership), xóa hoặc di chuyển tệp.
Sau khi bạn sắp xếp soft quotas ở chế độ audit, bạn có thể bật tùy chọn Deny disk space to users exceeding quota limit. Điều này sẽ bật chế độ hard disk quotas. Bây giờ người dùng không thể vượt quá không gian đĩa được cấp. Lưu ý rằng kích thước ổ đĩa trong phiên người dùng hiển thị dựa trên disk quotas hiện có. Trong ví dụ này, 876 MB trong 1 GB quota còn trống cho tài khoản của tôi trên ổ C:\.

Nếu giới hạn quota bị vượt quá, người dùng nhận thông báo sau:
There is not enough space on …. xx MB is needed to copy this item. Delete or move files so you have enough space.

Cùng lúc đó, sự kiện với EventID 37 và nguồn Ntfs được ghi vào Event Viewer:
A user hit their quota limit on volume C:.

Cấu hình Disk Quotas với cài đặt Group Policy
Bạn có thể quản lý cài đặt disk quota trên máy tính và server trong miền dùng Group Policies. Cài đặt quota nằm trong phần GPO: Computer Configuration → Administrative Templates → System → Disk Quotas. Để bật disk quotas tương tự như thảo luận trên, đặt các cài đặt sau trong GPO của bạn:
- Enable Disk Quotas:
Enable - Enforce Disk Quota Limit:
Enable - Default Quota Limit And Warning Level:
Enable(Default quota limit/warning level:1 Gb) - Log Event When Quota Limit Exceeded:
Enable - Apply Policy To Removable Media:
Enable(nếu cần áp dụng quota cho removable media, bao gồm USB flash drive)

Còn lại là gán GPO này cho OU với máy tính/server cần áp dụng disk quotas và chờ cập nhật cài đặt group policy.
Disk quotas cấu hình qua GPO được áp dụng cho tất cả ổ đĩa của máy tính. Bạn không thể cấu hình loại trừ cho người dùng cụ thể.
Quản lý Disk Quotas bằng Command Prompt/PowerShell
NTFS quotas cũng có thể quản lý từ command prompt. Để làm vậy, lệnh fsutil quota được dùng.
Để bật soft quota cho ổ đĩa, dùng lệnh:
fsutil quota track E:
Để bật hard NTFS quota, chạy:
fsutil quota enforce E:
Để tắt hoàn toàn disk quotas, dùng lệnh:
fsutil quota disable E:
Để lấy cài đặt quota hiện tại cho ổ chỉ định, chạy:
fsutil quota query e:

Lấy danh sách người dùng đã vượt quá disk quotas của họ:
fsutil quota violations
Để thay đổi ngưỡng quota cho người dùng cụ thể, dùng lệnh:
fsutil quota modify E: 2000000000 100000000 corp\aabrams
Kích thước quota chỉ định bằng byte (2 GB trong ví dụ này). Giá trị đầu tiên là kích thước tối đa dữ liệu người dùng trên ổ (hard quota), giá trị thứ hai là ngưỡng cảnh báo (warning level).
Tìm tần suất cập nhật disk quotas (giây):
fsutil behavior query quotanotify
Mặc định, quotas cập nhật mỗi giờ một lần.

Không có cmdlet PowerShell tích hợp sẵn để quản lý NTFS disk quotas. Tuy nhiên, chúng có thể quản lý dùng lớp WMI Win32_DiskQuota. Ví dụ, script PowerShell sau sẽ hiển thị thông tin về quota người dùng hiện tại.
$strCom = "."
$colItems = get-wmiobject -class "Win32_DiskQuota" -namespace "root\CIMV2" -computername $strCom
foreach ($objItem in $colItems) {
write-host "Quota usage: " $objItem.DiskSpaceUsed
write-host "Quota Hard Limit: " $objItem.Limit
write-host "Drive: " $objItem.QuotaVolume
write-host "Status: " $objItem.Status
write-host "Username: " $objItem.User
write-host "Quota Warning Limit: " $objItem.WarningLimit
}