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
 

