Cấu hình quota disk trong Linux Image Cấu hình quota disk trong Linux

Bài viết này giới thiệu các bạn về cách cấu hình disk quota trong hệ điều hành Linux.

1. Giới thiệu disk quota

Disk quota là công cụ để phục vụ cho việc quản lý tài nguyên đĩa cứng. Disk quota được dùng để hiện thị việc sử dụng và giới hạn đĩa cứng đối với người dùng.

Đối với disk quota cho tên người dùng hoặc nhóm sử dụng ba yếu tố quan trọng sau đây:

  • Giới hạn cứng(Hard Limit) dung lượng đĩa cứng tối đa mà người dùng có thể sử dụng.

    Ví dụ: Nếu chúng ta được chỉ định 5GB là giới hạn cứng, thì chúng ta sẽ không tạo được tệp mới có dung lượng lớn hơn 5GB.

  • Giới hạn mềm(Soft Limit) dung lượng đĩa cứng tối đa mà người dùng có thể sử dụng. Nhưng không giống như giới hạn cứng giới hạn mềm cho phép người dùng có thể sử dụng vượt dung lượng cho phép trong một khoảng thời gian cụ thể. Thời gian này được xác định trước và gọi là thời gian gia hạn(grace period). Khi người dùng vượt quá dung lượng cho phép, hệ thống sẽ gửi cảnh báo trước.

    Ví dụ: Nếu chúng ta được chỉ định dung lượng 2GB là giới hạn mềm, khi chúng ta sử dụng vượt giới hạn mềm thì sẽ nhận được thông báo cảnh báo đĩa vượt quá giới hạn. Nhưng, chúng ta vẫn có thể tạo các tệp mới cho đến khi đạt đến giới hạn cứng trong một khoản grace period.

  • Grace Period là thời gian cho phép người dùng vượt quá dung lượng đĩa cứng được cấp phép trong giới hạn mềm

    Ví dụ: Nếu chỉ định 15 ngày là Grace Period, sau khi người dùng đạt đến giới hạn cứng, họ sẽ được phép thêm 15 ngày để tạo tệp mới.

Lưu ý: chỉ chạy quotacheck giờ thấp điểm vì nó có khả năng ảnh hưởng hiệu năng hệ thống.

2. Thiết lập disk quota

2.1. Kích hoạt kiểm tra disk quota trên filesystem

2.1.1. Kích hoạt kiểm tra disk quota trên filesystem chuẩn ext4

Để có thể kích hoạt disk quota trên file system chúng ta thực hiện các bước sau:

Tạo 1 thư mục tên /data:

mkdir  /data/

Thực hiện mount thư mục:

mount /dev/sdb1 /data/

Mở và sửa đổi tập tin /etc/fstab bằng việc thêm các từ khóa usrquota(cho người dùng) và grpquota(cho nhóm).

Ví dụ: Bật kiểm tra quota cả người dùng và nhóm trên filesystem /data

UUID=XAmRdQ-f5GC-57ZW-XMb3-QzDS-43rE-4PZPbx /data ext4 defaults,usrquota,grpquota 1 1

Sau đó thực hiện mount lại phân vùng /data

mount -o remount /data

2.1.2. Kích hoạt kiểm tra disk quota trên filesystem chuẩn xfs

Để bật quota cho người dùng trên hệ thống tệp XFS chúng ta chạy lệnh:

mount –o quota /dev/sdb1 /xfs

Để bật quota cho các nhóm trên hệ thống tệp XFS chúng ta chạy lệnh:

mount –o gquota /dev/sdb1 /xfs

Chúng ta có thể gắn kết quota trong tệp /etc/fstab.

Ví dụ: Các mục trong tệp /etc/fstab bật quota cho người dùng, nhóm và dự án, tương ứng trên hệ thống tệp XFS. Những ví dụ này cũng gắn kết hệ thống tệp với quyền đọc/ghi:

[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 29 15:56:03 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=d2450d5e-83bc-4712-b9dd-af2bc461a018 /                       xfs     defaults        0 0
UUID=f884bab5-86fe-4ecd-8054-78451181f0b9 /xfs                    xfs    rw,defaults,quota,gquota,prjquota        0 0

Lấy UUID của đĩa /dev/sdb1 chúng ta thực hiện như bên dưới:

[root@localhost ~]# blkid /dev/mapper/LVMGroup1-www
/dev/mapper/LVMGroup1-www: UUID="f884bab5-86fe-4ecd-8054-78451181f0b9" TYPE="xfs"

2.2. Kiểm tra quotacheck ban đầu trên hệ thống tệp Linux

Khi chúng ta đã bật kiểm tra dung lượng đĩa trên hệ thống tệp, Để kiểm tra tất cả thông tin sử dụng cú pháp sau:

quotacheck -avug

Trong đó ý nghĩa các tùy chọn là:

  • a: Kiểm tra tất cả các hệ thống tập tin kích hoạt
  • v: Chế độ dài dòng
  • u: Kiểm tra dung lượng đĩa người dùng
  • g: Kiểm tra dung lượng đĩa nhóm

Lệnh trên sẽ tạo một tệp aquota cho người dùng và nhóm trong thư mục hệ thống.

[root@localhost ~]# ls -l /data/
total 32
-rw------- 1 root root  6144 Mar 19 13:47 aquota.group
-rw------- 1 root root  7168 Mar 19 13:47 aquota.user
drwx------ 2 root root 16384 Mar 19 13:33 lost+found

2.3. Gán disk quota cho người dùng

Sử dụng lệnh edquota để chỉnh sửa thông tin quota cho một người dùng.

Ví dụ: Thay đổi disk quota cho người dùng 'test', sử dụng lệnh edquota, sẽ mở các giá trị giới hạn cứng, giới hạn mềm trong trình chỉnh sửa như dưới đây.

Disk quotas for user ramesh (uid 1002):
  Filesystem           blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                0          0          0          0        0        0

Lệnh edquota mở cài đặt quota cho người dùng cụ thể trong trình chỉnh sửa, bạn có thể đặt các giới hạn sau:

  • Giới hạn mềm và giới hạn cứng cho kích thước disk quota cho người dùng cụ thể.
  • Giới hạn mềm và giới hạn cứng cho tổng số lượng inodes được phép cho người dùng cụ thể.

2.4. Báo cáo việc sử dụng disk quota cho người dùng và nhóm

Sử dụng lệnh repquota để báo cáo việc sử dụng hạn ngạch đĩa cho người dùng và nhóm.

repquota /data
*** Report for user quotas on device /dev/sdb
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0    

2.5. Thêm quotacheck vào công việc định kỳ hàng ngày

Thêm quotacheck vào công việc định kỳ hàng ngày.

Tạo một tệp trong thư mục /etc/cron.daily, sẽ chạy lệnh quotacheck hàng ngày. Khi thực hiện lệnh sẽ gửi đầu ra của lệnh quotacheck đến địa chỉ email.

[root@localhost ~]# cat /etc/cron.daily/quotacheck
quotacheck -avug