Cách đặt quota hệ thống tệp trên Ubuntu 18.04
Quota được sử dụng để giới hạn dung lượng đĩa mà user hoặc group có thể sử dụng trên hệ thống file . Nếu không có giới hạn như vậy, user có thể làm đầy đĩa của máy và gây ra sự cố cho user và dịch vụ khác.Trong hướng dẫn này, ta sẽ cài đặt các công cụ dòng lệnh để tạo và kiểm tra quota đĩa, sau đó đặt quota cho user mẫu.
Yêu cầu
Hướng dẫn này giả sử bạn đã đăng nhập vào server Ubuntu 18.04, với user không root, đã bật sudo, như được mô tả trong Cài đặt server ban đầu với Ubuntu 18.04 .
Các kỹ thuật trong hướng dẫn này thường hoạt động trên các bản phân phối Linux khác với Ubuntu, nhưng có thể yêu cầu một số điều chỉnh.
Bước 1 - Cài đặt Công cụ quota
Để đặt và kiểm tra quota , trước tiên ta cần cài đặt công cụ dòng lệnh quota bằng apt
. Hãy cập nhật danh sách gói của ta , sau đó cài đặt gói:
sudo apt update sudo apt install quota
Bạn có thể xác minh các công cụ đã được cài đặt bằng cách chạy lệnh quota
và yêu cầu thông tin version của nó:
quota --version
OutputQuota utilities version 4.04. . . .
Sẽ ổn nếu kết quả của bạn hiển thị số version hơi khác.
Tiếp theo, ta sẽ đảm bảo ta có các module nhân thích hợp để theo dõi quota .
Bước 2 - Cài đặt module nhân quota
Nếu bạn đang sử dụng server ảo dựa trên cloud , cài đặt Ubuntu Linux mặc định của bạn có thể không có các module kernel cần thiết để hỗ trợ quản lý quota . Để kiểm tra, ta sẽ sử dụng find
để tìm kiếm các quota_v1
và quota_v2
module trong /lib/modules/...
folder :
find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'
Output/lib/modules/4.15.0-45-generic/kernel/fs/quota/quota_v1.ko /lib/modules/4.15.0-45-generic/kernel/fs/quota/quota_v2.ko
Phiên bản kernel của bạn - được đánh dấu trong đường dẫn file ở trên - có thể sẽ khác, nhưng miễn là hai module được liệt kê, bạn đã sẵn sàng và có thể bỏ qua phần còn lại của bước này.
Nếu bạn không nhận được kết quả nào từ lệnh trên, hãy cài đặt gói linux-image-extra-virtual
:
sudo apt install linux-image-extra-virtual
Điều này sẽ cung cấp các module nhân cần thiết để thực hiện quota . Chạy lại lệnh find
trước đó để xác minh cài đặt thành công.
Tiếp theo, ta sẽ cập nhật các tùy chọn mount
của hệ thống file của ta để kích hoạt quota trên hệ thống file gốc của ta .
Bước 3 - Cập nhật các tùy chọn mount hệ thống file
Để kích hoạt quota trên một hệ thống file cụ thể, ta cần gắn nó với một số tùy chọn liên quan đến quota được chỉ định. Ta thực hiện việc này bằng cách cập nhật mục nhập của hệ thống file trong file cấu hình /etc/fstab
. Mở file đó trong editor yêu thích của bạn ngay bây giờ:
sudo nano /etc/fstab
Nội dung của file này sẽ tương tự như sau:
LABEL=cloudimg-rootfs / ext4 defaults 0 0 LABEL=UEFI /boot/efi vfat defaults 0 0
Tệp fstab
này là từ một server ảo. Máy tính để bàn hoặc notebook có thể sẽ có fstab
hơi khác, nhưng trong hầu hết các trường hợp, bạn sẽ có /
hoặc hệ thống file gốc đại diện cho tất cả dung lượng ổ đĩa của bạn.
Cập nhật dòng trỏ đến hệ thống file root bằng cách thay thế tùy chọn defaults
bằng các tùy chọn được đánh dấu sau:
LABEL=cloudimg-rootfs / ext4 usrquota,grpquota 0 0 . . .
Thay đổi này sẽ cho phép ta bật cả quota user ( usrquota
) và quota dựa trên group ( grpquota
) trên hệ thống file . Nếu bạn chỉ cần cái này hay cái kia, bạn có thể bỏ đi tùy chọn không sử dụng. Nếu dòng fstab
của bạn đã có một số tùy chọn được liệt kê thay vì defaults
, bạn nên thêm các tùy chọn mới vào cuối bất cứ thứ gì đã có ở đó, đảm bảo phân tách tất cả các tùy chọn bằng dấu phẩy và không có dấu cách.
Mount hệ thống file để làm cho các tùy chọn mới có hiệu lực:
sudo mount -o remount /
Lưu ý: Hãy chắc chắn rằng không có khoảng trống giữa các tùy chọn được liệt kê trong file /etc/fstab
. Nếu bạn đặt một không gian sau ,
dấu phẩy, bạn sẽ thấy một lỗi như sau:
Outputmount: /etc/fstab: parse error
Nếu bạn thấy thông báo này sau khi chạy lệnh mount
trước đó, hãy mở lại file fstab
, sửa bất kỳ lỗi nào và lặp lại lệnh mount
trước khi tiếp tục.
Ta có thể xác minh các tùy chọn mới đã được sử dụng để mount hệ thống file bằng cách xem file /proc/mounts
. Ở đây, ta sử dụng grep
để chỉ hiển thị mục nhập hệ thống file root trong file đó:
cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota,data=ordered 0 0
Lưu ý hai tùy chọn mà ta đã chỉ định. Bây giờ ta đã cài đặt các công cụ của bạn và cập nhật các tùy chọn hệ thống file của bạn , ta có thể bật hệ thống quota .
Bước 4 - Bật quota
Cuối cùng trước khi bật hệ thống quota , ta cần chạy lệnh quotacheck
theo cách thủ công một lần:
sudo quotacheck -ugm /
Lệnh này tạo các file /aquota.user
và /aquota.group
. Các file này chứa thông tin về các giới hạn và cách sử dụng hệ thống file và chúng cần tồn tại trước khi ta bật tính năng giám sát quota . Các tham số quotacheck
mà ta đã sử dụng là:
-
u
: chỉ định rằng file quota dựa trên user sẽ được tạo -
g
: cho biết rằng một file quota dựa trên group sẽ được tạo -
m
: vô hiệu hóa việc đếm lại hệ thống file ở dạng chỉ đọc trong khi thực hiện kiểm đếm ban đầu của quota . Việc nhắc lại hệ thống file là chỉ đọc sẽ cho kết quả chính xác hơn trong trường hợp user đang tích cực lưu file trong quá trình này, nhưng không cần thiết trong quá trình cài đặt ban đầu này.
Nếu bạn không cần phải kích hoạt do user hay quota group dựa trên, bạn có thể rời khỏi tương ứng quotacheck
tùy chọn.
Ta có thể xác minh các file thích hợp đã được tạo bằng cách liệt kê folder root :
ls /
Outputaquota.group bin dev home initrd.img.old lib64 media opt root sbin srv tmp var vmlinuz.old aquota.user boot etc initrd.img lib lost+found mnt proc run snap sys usr vmlinuz
Nếu bạn không bao gồm các tùy chọn u
hoặc g
trong lệnh quotacheck
, file tương ứng sẽ bị thiếu. Bây giờ ta đã sẵn sàng để bật hệ thống quota :
sudo quotaon -v /
Server của ta hiện đang theo dõi và thực thi quota , nhưng ta chưa cài đặt quota nào! Tiếp theo, ta sẽ đặt quota đĩa cho một user .
Bước 5 - Cấu hình quota cho user
Có một số cách để ta có thể đặt quota cho user hoặc group . Ở đây, ta sẽ xem xét cách đặt quota bằng cả edquota
và setquota
.
Sử dụng edquota
để đặt quota user
Ta sử dụng edquota
lệnh để ed nó quota s. Hãy chỉnh sửa quota user sammy mẫu của ta :
sudo edquota -u sammy
Tùy chọn -u
chỉ định rằng đây là quota user
mà ta sẽ chỉnh sửa. Thay vào đó, nếu bạn muốn chỉnh sửa quota của một group , hãy sử dụng -g
chọn -g
ở vị trí của nó.
Thao tác này sẽ mở file trong editor mặc định của bạn, tương tự như cách crontab -e
mở file tạm thời để bạn chỉnh sửa. Tệp sẽ trông giống như sau:
Disk quotas for user sammy (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/vda1 40 0 0 13 0 0
Phần này liệt kê tên user và uid
, các hệ thống file đã bật quota trên chúng và khối - và giới hạn sử dụng dựa trên inode . Đặt quota dựa trên inode sẽ giới hạn số lượng file và folder mà user có thể tạo, dù dung lượng đĩa mà họ sử dụng. Hầu hết mọi người sẽ muốn quota dựa trên khối, đặc biệt giới hạn việc sử dụng không gian đĩa. Đây là những gì ta sẽ cấu hình.
Lưu ý: Khái niệm về khối không được chỉ rõ và có thể thay đổi tùy thuộc vào nhiều yếu tố, bao gồm cả công cụ dòng lệnh nào đang báo cáo chúng. Trong bối cảnh cài đặt quota trên Ubuntu, khá an toàn khi cho rằng 1 khối tương đương với 1 kilobyte dung lượng đĩa.
Trong danh sách trên, sammy user của ta đang sử dụng 40 khối hoặc 40KB dung lượng trên ổ đĩa /dev/vda1
. Cả hai giới hạn soft
và hard
đều bị vô hiệu hóa với giá trị 0
.
Mỗi loại quota cho phép bạn đặt cả giới hạn mềm và giới hạn cứng . Khi user vượt quá giới hạn mềm, họ vượt quá quota , nhưng họ không bị ngăn chặn ngay lập tức để tiêu thụ thêm dung lượng hoặc inodes. Thay vào đó, một số thời gian được đưa ra: user có - theo mặc định - bảy ngày để sử dụng lại đĩa của họ theo giới hạn mềm. Khi hết thời gian gia hạn bảy ngày, nếu user vẫn vượt quá giới hạn mềm thì sẽ được coi là giới hạn cứng. Giới hạn cứng ít được tha thứ hơn: tất cả việc tạo khối hoặc inode mới ngay lập tức bị tạm dừng khi bạn đạt đến giới hạn cứng được chỉ định. Điều này hoạt động như thể đĩa hết dung lượng: ghi sẽ không thành công, không tạo được file tạm thời và user sẽ bắt đầu thấy các cảnh báo và lỗi khi thực hiện các việc thông thường.
Hãy cập nhật user sammy của ta để có quota khối với giới hạn mềm 100MB và giới hạn cứng 110MB:
Disk quotas for user sammy (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/vda1 40 100M 110M 13 0 0
Lưu và đóng file . Để kiểm tra quota mới, ta có thể sử dụng lệnh quota
:
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1000): Filesystem space quota limit grace files quota limit grace /dev/vda1 40K 100M 110M 13 0 0
Lệnh xuất ra trạng thái quota hiện tại của ta và cho thấy rằng quota của ta là 100M
trong khi giới hạn của ta là 110M
. Điều này tương ứng với các giới hạn mềm và cứng tương ứng.
Lưu ý: Nếu bạn muốn user của bạn có thể kiểm tra quota của chính họ mà không có quyền truy cập sudo
, bạn cần cấp cho họ quyền đọc các file quota mà ta đã tạo ở Bước 4. Một cách để làm điều này là tạo users
group , làm cho các file đó có thể đọc được bởi group users
và sau đó đảm bảo tất cả user của bạn cũng được đặt trong group .
Để tìm hiểu thêm về các quyền của Linux, bao gồm quyền sở hữu của user và group , vui lòng đọc Giới thiệu về Quyền của Linux
Sử dụng setquota
để đặt quota user
Không giống như edquota
, setquota
sẽ cập nhật thông tin quota của user của ta trong một lệnh duy nhất mà không có bước chỉnh sửa tương tác. Ta sẽ chỉ định tên user và các giới hạn mềm và cứng cho cả quota dựa trên block và inode, và cuối cùng là hệ thống file để áp dụng quota cho:
sudo setquota -u sammy 200M 220M 0 0 /
Lệnh trên sẽ tăng gấp đôi giới hạn quota dựa trên khối của sammy lên 200 megabyte và 220 megabyte. 0 0
cho các giới hạn cứng và mềm dựa trên inode cho biết chúng vẫn chưa được đặt. Điều này là bắt buộc ngay cả khi ta không đặt bất kỳ quota dựa trên inode nào.
, hãy sử dụng lệnh quota
để kiểm tra công việc của ta :
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1000): Filesystem space quota limit grace files quota limit grace /dev/vda1 40K 200M 220M 13 0 0
Bây giờ ta đã đặt một số quota , hãy tìm hiểu cách tạo báo cáo quota .
Bước 6 - Tạo báo cáo quota
Để tạo báo cáo về việc sử dụng quota hiện tại cho tất cả user trên một hệ thống file cụ thể, hãy sử dụng lệnh repquota
:
sudo repquota -s /
Output*** Report for user quotas on device /dev/vda1 Block grace time: 7days; Inode grace time: 7days Space limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 1696M 0K 0K 75018 0 0 daemon -- 64K 0K 0K 4 0 0 man -- 1048K 0K 0K 81 0 0 nobody -- 7664K 0K 0K 3 0 0 syslog -- 2376K 0K 0K 12 0 0 sammy -- 40K 100M 110M 13 0 0
Trong trường hợp này, ta đang tạo một báo cáo cho hệ thống file /
root . Lệnh -s
yêu cầu repquota
sử dụng các số có thể đọc được của con người khi có thể. Có một số user hệ thống được liệt kê, có thể không có quota được đặt theo mặc định. Sammy user của ta được liệt kê ở dưới cùng, với số tiền được sử dụng và các giới hạn mềm và cứng.
Cũng lưu ý Block grace time: 7days
chú thích Block grace time: 7days
và cột gia grace
. Nếu user của ta đã vượt quá giới hạn mềm, cột gia grace
sẽ hiển thị thời gian họ còn lại để quay lại dưới giới hạn.
Trong bước tiếp theo, ta sẽ cập nhật thời gian gia hạn cho hệ thống quota của ta .
Bước 7 - Cấu hình Thời gian Gia hạn cho Mức trung bình
Ta có thể cấu hình khoảng thời gian mà user được phép vượt qua giới hạn mềm. Ta sử dụng lệnh setquota
để thực hiện :
sudo setquota -t 864000 864000 /
Lệnh trên đặt cả thời gian gia hạn khối và inode thành 864000 giây hoặc 10 ngày. Cài đặt này áp dụng cho tất cả user và cả hai giá trị phải được cung cấp ngay cả khi bạn không sử dụng cả hai loại quota (khối so với inode).
Lưu ý các giá trị phải được chỉ định bằng giây.
Chạy lại hạn repquota
để kiểm tra xem các thay đổi có hiệu lực hay không:
sudo repquota -s /
OutputBlock grace time: 10days; Inode grace time: 10days . . .
Những thay đổi phải được phản ánh ngay lập tức trong kết quả hạn repquota
.
Kết luận
Trong hướng dẫn này, ta đã cài đặt các công cụ dòng lệnh quota
, xác minh nhân Linux của ta có thể xử lý quota giám sát, cài đặt quota dựa trên khối cho một user và tạo báo cáo về việc sử dụng quota hệ thống file của ta .
Phụ lục: Thông báo lỗi phổ biến liên quan đến quota
Sau đây là một số lỗi phổ biến bạn có thể gặp khi cài đặt và thao tác với quota hệ thống file .
quotaon Outputquotaon: cannot find //aquota.group on /dev/vda1 [/] quotaon: cannot find //aquota.user on /dev/vda1 [/]
Đây là một lỗi mà bạn có thể thấy nếu bạn đã cố gắng để bật quota (sử dụng quotaon
) trước khi chạy ban đầu quotacheck
lệnh. Các quotacheck
lệnh tạo ra aquota
hoặc quota
file cần thiết để bật hệ thống quota . Xem Bước 4 để biết thêm thông tin.
quotaon Outputquotaon: using //aquota.group on /dev/vda1 [/]: No such process quotaon: Quota format not supported in kernel. quotaon: using //aquota.user on /dev/vda1 [/]: No such process quotaon: Quota format not supported in kernel.
Đây quotaon
lỗi là nói cho ta biết rằng kernel của ta không hỗ trợ quota , hoặc ít nhất là không hỗ trợ đúng version (có cả một quota_v1
và quota_v2
version ). Điều này nghĩa là các module nhân mà ta cần chưa được cài đặt hoặc không được tải đúng cách. Trên Server Ubuntu, nguyên nhân có thể xảy ra nhất là sử dụng hình ảnh cài đặt bị giảm tốc độ trên server ảo dựa trên cloud .
Nếu đúng như vậy, nó có thể được khắc phục bằng cách cài đặt gói linux-image-extra-virtual
với apt
. Xem Bước 2 để biết thêm chi tiết.
quota Outputquota: Cannot open quotafile //aquota.user: Permission denied quota: Cannot open quotafile //aquota.user: Permission denied quota: Cannot open quotafile //quota.user: No such file or directory
Đây là lỗi bạn sẽ gặp nếu bạn chạy quota
và user hiện tại của bạn không có quyền đọc các file quota cho hệ thống file của bạn. Bạn (hoặc administrator hệ thống của bạn) cần điều chỉnh các quyền đối với file một cách thích hợp hoặc sử dụng sudo
khi chạy các lệnh yêu cầu quyền truy cập vào file quota .
Để tìm hiểu thêm về các quyền của Linux, bao gồm quyền sở hữu user và group , vui lòng đọc Giới thiệu về Quyền của Linux
Các tin liên quan
Cách thực hiện kiểm tra liên tục các vai trò không thể phục hồi bằng Molecule và Travis CI trên Ubuntu 18.042019-02-01
Cách đảm bảo chất lượng mã bằng SonarQube trên Ubuntu 18.04
2019-01-11
Cách cài đặt và bảo mật Memcached trên Ubuntu 18.04
2019-01-04
Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên Ubuntu 16.04
2018-11-20
Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên Ubuntu 16.04
2018-11-20
Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên Ubuntu 18.04
2018-11-06
Cách triển khai ứng dụng Symfony 4 để sản xuất với LEMP trên Ubuntu 18.04
2018-10-18
Cách cài đặt và sử dụng Composer trên Ubuntu 18.04
2018-10-16
Làm thế nào để kiểm tra các vai trò không thể phục hồi với Molecule trên Ubuntu 18.04
2018-10-02
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 18.04 [Quickstart]
2018-07-16