NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
05/06/2023
Lượt xem

Hướng dẫn cài đặt Filesystem Quotas trên Ubuntu 20.04

05/06/2023
20 phút đọc
Lượt xem

Đánh giá

5/5 - (77 bình chọn)

Quotas được sử dụng để giới hạn dung lượng đĩa mà người dùng hoặc nhóm có thể sử dụng trên filesystem. Nếu không có những giới hạn này, người dùng có thể làm đầy đĩa của máy và gây ra sự cố cho những người dùng và dịch vụ khác. Trong bài viết hôm nay, Vietnix sẽ hướng dẫn bạn cách cài đặt Filesystem Quotas trên Ubuntu 20.04

Bước 1: Thiết lập công cụ Quota để cài đặt Filesystem Quotas trên Ubuntu 20.04

Đầu tiên, bạn cần có một máy chủ Ubuntu 20.04 với tài khoản user non-root có quyền sudo. Nếu chưa có máy chủ Ubuntu, bạn có thể tham khảo các gói dịch vụ thuê VPS Việt nam tại Vietnix. Hiện tại, Vietnix đang cung cấp nhiều gói VPS tốc độ cao với cấu hình đa dạng, có hỗ trợ hệ điều hành Ubuntu và có chi phí phải chăng, chỉ từ 89.000VND/Tháng.

Để cài đặt và kiểm tra quotas, trước tiên bạn cần thiết lập công cụ dòng lệnh quota bằng cách sử dụng apt. Trước tiên hãy cập nhật package list, sau đó cài đặt package:

sudo apt update sudo apt install quota

Bạn có thể kiểm tra các công cụ đã được cài đặt hay chưa bằng cách chạy lệnh quota và trích xuất thông tin của version đó:

quota --version
Output Quota utilities version 4.05. . . .

Tùy theo phiên bản bạn đang sử dụng mà output sẽ hiện thị số version khác nhau.

Tiếp theo, hãy đảm bảo rằng bạn có các kernel module phù hợp để kiểm tra quotas.

Bước 2: Thiết lập Quota Kernel Module

Nếu bạn đang sử dụng virtual server cloud-based, thiết lập Ubuntu Linux mặc định của bạn có thể không có các kernel module cần thiết để hỗ trợ quản lý quota. Để kiểm tra, bạn sẽ sử dụng find để tìm kiếm các module quota_v1 và quota_v2 trong thư mục /lib/modules/...:

find /lib/modules/ -type f -name '*quota_v*.ko*'
Output /lib/modules/5.4.0-99-generic/kernel/fs/quota/quota_v2.ko /lib/modules/5.4.0-99-generic/kernel/fs/quota/quota_v1.ko

Ghi lại kernel version – được highlight trong đường dẫn file ở trên – vì bạn sẽ cần nó trong bước sau. Output có thể hơi khác, nhưng miễn là có hai module được liệt kê như trên, bạn có thể bỏ qua phần còn lại và chuyển sang bước tiếp theo.

Nếu bạn không nhận được kết quả nào từ lệnh trên, hãy cài đặt package linux-image-extra-virtual:

sudo apt install linux-image-extra-virtual

Thao tác này sẽ cung cấp các kernel module cần thiết để triển khai quota. Chạy lại lệnh find trước đó để chắc chắn rằng quá trình cài đặt đã thành công.

Tiếp theo, bạn sẽ cần cập nhật các tùy chọn mount filesystem của bạn để bật quota trên filesystem root của bạn.

Bước 3: Cập nhật tùy chọn Mount Filesystem

Để kích hoạt quota trên một filesystem cụ thể, bạn cần gắn nó với một vài tùy chọn liên quan đến quota được chỉ định. Bạn có thể thực hiện việc này bằng cách cập nhật mục nhập của filesystem trong file cấu hình /etc/fstab. Mở file nano hoặc bằng text editor:

sudo nano /etc/fstab

Nội dung của file này sẽ ra như sau:

LABEL=cloudimg-rootfs   /        ext4   defaults        0 0 LABEL=UEFI      /boot/efi       vfat      defaults        0 0

File fstab này là từ một virtual server. Máy tính để bàn hoặc laptop có thể sẽ hiển thị file fstab khác nhau, nhưng trong hầu hết các trường hợp, bạn sẽ có một / hoặc filesystem root đại diện cho tất cả dung lượng đĩa của bạn.

Dòng được đánh dấu cho biết tên của thiết bị được gắn kết, vị trí thiết bị được gắn kết, loại file system và các tùy chọn gắn kết được sử dụng. Số 0 đầu tiên cho biết sẽ không có bản sao lưu nào được thực hiện và số 0 thứ hai cho biết sẽ không có quá trình kiểm tra lỗi nào được thực hiện khi khởi động.

Trỏ đến filesystem root bằng cách thay thế tùy chọn defaults bằng các lựa chọn được đánh dấu sau:

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0 . . .

Thay đổi này sẽ cho phép chúng ta kích hoạt cả quota dựa trên người dùng ( usrquota) và dựa trên nhóm ( grpquota) trên filesystem. Nếu bạn chỉ cần một trong hai, bạn có thể bỏ tùy chọn mà bạn không cần. Nếu dòng fstab của bạn đã có một số tùy chọn được liệt kê thay vì defaults, thì bạn nên thêm các tùy chọn mới vào cuối bất kỳ tùy chọn nào đã có, bạn nên phân tách tất cả các tùy chọn bằng dấu phẩy và không chứa dấu cách.

Remount lại filesystem để các tùy chọn mới có hiệu lực:

sudo mount -o remount /

Ở đây, flag-o được sử dụng để pass tùy chọn remount.

Lưu ý: Hãy đảm bảo rằng không có khoảng cách giữa các tùy chọn được liệt kê trong file /etc/fstab của bạn. Nếu bạn đặt dấu cách sau dấu phẩy ,, bạn sẽ thấy lỗi như sau:

Output mount: /etc/fstab: parse error

Nếu bạn thấy thông báo này sau khi chạy lệnh mount, hãy mở lại file fstab, sửa mọi lỗi và lặp lại lệnh mount một lần nữa.

Bạn có thể kiểm tra các tùy chọn mới đã được sử dụng để gắn kết filesystem bằng cách xem file /proc/mounts. Ở đây, sử dụng grep để chỉ hiển thị mục filesystem root trong file đó:

cat /proc/mounts | grep ' / '
Output /dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota 0 0

Bạn hãy lưu ý hai tùy chọn vừa được chỉ định. 

Bước 4: Kích hoạt Quotas

Trước khi kích hoạt quota system, chạy lệnh quotacheck như sau:

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ề giới hạn và cách sử dụng filesystem và chúng cần có sẵn trước khi bạn bật giám sát quota. Các tham số quotacheck được sử dụng là:

  • u: Chỉ định rằng file quota dựa trên người dùng sẽ được tạo.
  • g: Cho biết rằng file quota dựa trên nhóm sẽ được tạo.
  • m: Tắt tính năng sắp xếp lại filesystem dưới dạng read-only trong khi thực hiện kiểm đếm quota ban đầu. Việc sắp xếp lại filesystem dưới dạng read-only sẽ cho kết quả chính xác hơn trong trường hợp người dùng đang cố muốn lưu file trong suốt quá trình, nhưng không cần thiết trong quá trình thiết lập ban đầu.

Nếu bạn không cần bật quota dựa trên người dùng hoặc nhóm, bạn có thể bỏ qua tùy chọn quotacheck tương ứng.

Bạn có thể kiểm tra các file thích hợp đã được tạo bằng cách liệt kê ra thư mục root:

ls /
Output aquota.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 chọn các tùy chọn u hoặc g trong lệnh quotacheck thì file tương ứng sẽ bị thiếu.

Tiếp theo, bạn sẽ phải thêm các quota module vào kernel Linux. Ngoài ra, bạn có thể khởi động lại server của mình để hoàn thành tác vụ tương tự. Nếu không thì thêm bằng phương pháp thủ công, thay thế phiên bản kernel được đánh dấu bằng phiên bản mà bạn tìm thấy trong Bước 2:

sudo modprobe quota_v1 -S 5.4.0-99-generic sudo modprobe quota_v2 -S 5.4.0-99-generic

Kích hoạt quota system:

sudo quotaon -v /
quotaon Output /dev/vda1 [/]: group quotas turned on /dev/vda1 [/]: user quotas turned on

Bước 5: Định cấu hình Quotas cho người dùng

Có một số cách bạn có thể cài đặt quotas cho người dùng hoặc nhóm. Tại đây, Vietnix sẽ giới thiệu cho bạn hai cách cài đặt quotas bằng hai lệnh edquota và setquota.

Sử dụng edquota để cài đặt quotas cho người dùng

Sử dụng lệnh edquota để chỉnh sửa quotas. Chỉnh sửa quotas của người dùng vietnix mẫu như sau:

sudo edquota -u vietnix

Tùy chọn -u chỉ định rằng đây là quotas user mà bạn sẽ chỉnh sửa. Thay vào đó, nếu bạn muốn chỉnh sửa quotas của nhóm, hãy sử dụng tùy chọn -g ở vị trí đó.

Thao tác này sẽ mở một file trong text editor mặc định của bạn, tương tự như cách crontab -e mở một file tạm thời để bạn chỉnh sửa. File sẽ hiển thị như sau:

Disk quotas for user vietnix (uid 1000):   Filesystem                   blocks       soft       hard     inodes     soft     hard   /dev/vda1                        40          0          0         13        0        0

Thao tác này liệt kê tên người dùng và uid, các filesystem có quotas được bật cũng như việc sử dụng và giới hạn dựa trên block– và inode – . Đặt quotas dựa trên inode sẽ giới hạn số lượng file và thư mục mà người dùng có thể tạo, bất kể dung lượng ổ đĩa họ sử dụng. Hầu hết mọi người sẽ muốn quotas dựa trên block, giới hạn cụ thể việc sử dụng dung lượng ổ đĩa. 

Lưu ý: Khái niệm về block không rõ ràng, có thể thay đổi tùy thuộc vào nhiều yếu tố như công cụ dòng lệnh nào đang report chúng. Trong danh sách trên, người dùng vietnix của bạn đang sử dụng 40 block 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 một giá trị 0.

Mỗi loại quotas cho phép bạn đặt cả giới hạn soft và giới hạn hard . Khi người dùng vượt quá giới hạn soft sẽ vượt quá quotas, nhưng người dùng không bị chặn ngay lập tức về việc tiêu tốn thêm dung lượng hoặc inode. Thay vào đó, một số thời hạn sẽ được đưa ra.

Theo mặc định, người dùng có bảy ngày để lấy lại quyền sử dụng đĩa dưới giới hạn soft. Khi kết thúc thời gian gia hạn bảy ngày, nếu người dùng vẫn vượt quá giới hạn soft thì nó sẽ được coi là giới hạn hard. 

Giới hạn hard sẽ bị siết chặt hơn, tất cả việc tạo block hoặc inode mới sẽ bị tạm dừng ngay lập tức khi bạn đạt đến giới hạn hard được cho phép. Điều này có nghĩa là đĩa hoàn toàn hết dung lượng bạn sẽ không thể ghi thêm được bất cứ thứ gì, các file tạm thời sẽ không được tạo và người dùng sẽ bắt đầu thấy các cảnh báo và lỗi trong khi thực hiện các tác vụ thông thường.

Hãy cập nhật người dùng vietnix của bạn để có quotas block với giới hạn soft 100 MB và giới hạn hard 110 MB:

Disk quotas for user vietnix (uid 1000):   Filesystem                   blocks       soft       hard     inodes     soft     hard   /dev/vda1                        40       100M       110M         13        0        0

Lưu và đóng tập tin. Để kiểm tra quotas mới, bạn có thể sử dụng lệnh quota:

sudo quota -vs vietnix
Output Disk quotas for user vietnix (uid 1000):      Filesystem   space   quota   limit   grace   files   quota   limit   grace       /dev/vda1     40K    100M    110M              13       0       0

Output cho biết trạng thái quotas hiện tại của bạn và cho biết rằng quotas của bạn là 100M trong khi giới hạn của bạn là 110M. Điều này tương ứng với các giới hạn soft và hard tương ứng.

Lưu ý: Nếu muốn người dùng tự kiểm tra quotas mà không cần quyền sudo, bạn cần cấp quyền cho người dùng đọc được file quotas đã tạo ở Bước 4. Để thực hiện, bạn tạo nhóm users và làm cho file đó có thể đọc được trong nhóm users, sau đó đảm bảo tất cả người dùng của bạn được đặt trong nhóm.

Sử dụng setquota để cài đặt quotas cho người dùng

Không giống như edquotasetquota sẽ cập nhật thông tin quotas của người dùng của bạn trong một lệnh duy nhất mà không cần bước chỉnh sửa tương tác. Bạn sẽ chỉ định tên người dùng và các giới hạn soft và hard cho cả quotas dựa trên block và inode, và cuối cùng là filesystem để áp dụng quotas:

sudo setquota -u vietnix 200M 220M 0 0 /

Lệnh trên sẽ tăng gấp đôi giới hạn quotas dựa trên block của vietnix thành 200 megabyte và 220 megabyte. Giới hạn hard và soft 0 0 dựa trên inode cho biết rằng chúng vẫn chưa được cài đặt. Điều này là bắt buộc ngay cả khi bạn không đặt bất kỳ quotas nào dựa trên inode.

Dùng lệnh quota để kiểm tra lại:

sudo quota -vs vietnix
Output Disk quotas for user vietnix (uid 1000):      Filesystem   space   quota   limit    grace   files   quota   limit   grace       /dev/vda1     40K    200M    220M              13       0       0

Bước 6: Tạo báo cáo quotas

Để tạo báo cáo về việc sử dụng quotas hiện tại cho tất cả người dùng trên một filesystem 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 vietnix      --       40K    200M    220M               13     0     0

Trong trường hợp này, bạn đang tạo báo cáo cho filesystem root / . Lệnh -s cho biết repquota sử dụng human-readable numbers khi có thể. Danh sách trên đã liệt kê ra một vài người dùng hệ thống, có thể không có quotas được đặt theo mặc định. Người dùng vietnix được liệt kê ở dưới cùng, với số lượng được sử dụng và giới hạn soft và hard.

Lưu ý chú thích Block grace time: 7days và cột grace. Nếu người dùng của bạn vượt quá giới hạn soft, cột grace sẽ hiển thị lượng thời gian còn lại để họ không vượt quá giới hạn.

Bước 7: Định cấu hình Grace Period cho việc vượt mức quotas

Có thể cấu hình khoảng thời gian mà người dùng được phép vượt quá giới hạn soft bằng cách sử dụng lệnh setquota:

sudo setquota -t 864000 864000 /

Lệnh trên cài đặt cả thời gian gia hạn block và inode thành 864000 giây hoặc 10 ngày. Cài đặt này áp dụng cho tất cả người dùng và phải cung cấp cả hai giá trị ngay cả khi bạn không sử dụng cả hai loại quotas (block so với inode).

Lưu ý rằng các giá trị phải được chỉ định bằng giây.

Chạy lại repquota để kiểm tra xem các thay đổi có hiệu lực không:

sudo repquota -s /
Output Block grace time: 10days; Inode grace time: 10days . . .

Những thay đổi sẽ được hiển thị ngay lập tức trong output repquota.

Một số lỗi thường gặp khi thiết lập quotas

Sau đây là một số lỗi phổ biến mà bạn có thể gặp khi thiết lập và thao tác quotas cho filesystem.

quotaon Output quotaon: cannot find //aquota.group on /dev/vda1 [/] quotaon: cannot find //aquota.user on /dev/vda1 [/]

Đây là lỗi mà bạn có thể gặp phải nếu cố gắng bật quotas (bằng cách sử dụng quotaon) trước khi chạy lệnh quotacheck. Lệnh quotacheck tạo các file aquota hoặc quota cần thiết để bật hệ thống quota system. Xem lại Bước 4 để biết thêm thông tin.

quotaon Output quotaon: 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.

Lỗi quotaon này cho biết kernel không hỗ trợ quotas hoặc ít nhất là không hỗ trợ đúng phiên bản (có cả phiên bản quota_v1 và quota_v2). Điều này có nghĩa là các kernel module bạn cần chưa được cài đặt hoặc tải không đúng cách. Trên Ubuntu Server, nguyên nhân xảy ra rất có thể là do sử dụng hình ảnh cài đặt được pared-down trên virtual server cloud-based.

Nếu bạn gặp trường hợp này, bạn có thể khắc phục bằng cách cài đặt package linux-image-extra-virtual có apt. Xem Bước 2 để biết thêm chi tiết.

Nếu lỗi này vẫn còn sau khi cài đặt, hãy xem lại Bước 4. Đảm bảo rằng bạn đã sử dụng đúng các lệnh modprobe hoặc đã khởi động lại máy chủ của mình.

quota Output quota: 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ẽ thấy nếu bạn chạy quota và người dùng hiện tại của bạn không có quyền đọc các file quota cho filesystem của bạn. Bạn (hoặc quản trị viên hệ thống của bạn) sẽ cần điều chỉnh quyền của 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.

Lời kết

Như vậy, qua những bước hướng dẫn trên bạn đã có thể biết cách cài đặt Filesystem Quotas trên Ubuntu 20.04. Nếu có bất kỳ thắc mắc nào trong quá trình thao tác, bạn có thể để lại bình luận bên dưới để được hỗ trợ thêm.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG