24 thg 5, 2013

"Set" hạn ngạch Disk Quota trên linux


Với một môi trường làm việc đa người dùng, việc giới hạn dung lượng đĩa sử dụng cho từng người dùng là cần thiết. Để thực hiện điều này, có thể có nhiều cách khác nhau, như là chia ổ đĩa cứng thành nhiều phân vùng nhỏ rồi gắn cho từng user. Cách này cũng tốt nhưng nó có nhiều nhược điểm là: thứ nhất khi các phân vùng gần đầy, việc ghi dữ liệu sẽ khó khăn; thứ hai là khi bạn cần thay đổi hạn ngạch thì sẽ khó khăn; thứ ba là đĩa cứng bị lãng phí; thứ tư là không hạn ngạch theo nhóm được. May mắn thay là bạn không cần làm như vậy, vì Linux cung cấp cho chúng ta một mô-đun là quota.
quota giúp bạn quản lý hạn ngạch đĩa cứng cho từng user cũng như group. Hạn ngạch cho group là tổng dung lượng đĩa cho các thành viên trong nhóm. Khi hạn ngạch này hết, thì cho dù user còn quota cũng không thể sử dụng.
Sử dụng quota thích hợp nhất có lẽ là cho thư mục /home. Giả sử bạn sử dụng /dev/sdb5 để gắn cho thư mục này.
1. Cấu hình để sử dụng quota
Cần cài đặt nếu máy chưa có:
Mã:
$ apt-get install quota
Để sử dụng quota cho /dev/sdb5 một cách tự động cho thư mục /home bạn cần khai báo thêm tuỳ chọn usrquota cho user và grpquota để áp dụng quota cho nhóm. Sửa file /etc/fstab từ:

Mã:
/dev/sdb5 /home ext4 defaults 1 2
thành:

Mã:
/dev/sdb5 /home ext4 defaults,usrquota,grpquota 1 2
Bạn cũng cần tạo file aquota.user, aquota.group lưu thông tin. Ở đây tôi tạo file aquota.user để đặt quota cho user làm ví dụ minh hoạ, với group bạn có thể làm tương tự.

Mã:
$ touch /home/aquota.user
Sau bước này bạn cần phải khởi động lại hệ điều hành. Có thể gắn lại sử dụng mount, nhưng không phải lúc nào cũng thành công, nhìn chung thì tốt nhất là nên khởi động lại.
2. Sử dụng quota
Khởi tạo bảng quota, bảng này chứa những thông tin file system đã được cấp phát cho từng user trong hệ thống. Bảng này sẽ tự động và trong suốt cập nhật thông tin mỗi khi user thao tác với file system. Hệ thống sẽ so sánh giá trị trong bảng này và giá trị quota mà bạn đã đặt cho các user trong quota file để xem xem user có thể sử dụng vượt quá không gian ổ cứng được phép hay không.
khởi tạo bảng quota bằng lệnh

Mã:
$ quotacheck -vagum
Để đặt giá trị quota cho user bạn dùng lệnh edquota . Ví dụ để đặt quota cho user nam bạn dùng lệnh

Mã:
$ edquota -u nam
thông tin hiện ra cho phép bạn xem xét và chỉnh sửa quota cho user tương ứng thông qua trình soạn thảo mạc định của hệ thống thường là vi. Để thay đổi sang nano bạn chạy lệnh export EDITOR=nano. Bạn cũng có thể thêm dòng này vào .bash_profile hay .bashrc.

Mã:
#Filesystem blocks soft hard inodes soft hard
/dev/sdb5 24 0 0 7 0 0
Blocks: thể hiện dung lượng ổ cứng mà user đang sử dụng, tính theo đơn vị block. Bạn không sửa trường dữ liệu này! Để biết kích thước của một block của phân vùng đĩa cứng, bạn sử dụng lệnh:

Mã:
$ dumpe2fs /dev/sdb5 | grep size
Inodes: thể hiện số lượng file tất nhiên là cả thư mục nữa của user đó. Bạn không sửa trường dữ liệu này!

Soft: thể hiện dung lượng ổ cứng lớn nhất mà user được phép dùng. Người dùng có thể sử dụng tạm thời vượt quá giá trị này nếu như Hard limit lớn hơn soft limit và chỉ trong thời gian được hạn định (grace periods tạm dịch là thời gian gia hạn). Khi đó nếu sử dụng quá dung lượng được phép trong giới hạn thời gian quy định bởi tham số “grace” user chỉ bị cảnh báo. Nếu vượt quá giá trị “grace” mà giá trị soft không được đặt lại, user sẽ không thể sử dụng thêm không gian ổ cứng.

Hard: thể hiện dung lượng ổ cứng lớn nhất mà user được phép dùng thông số này chỉ có ý nghĩa khi tham số “grade” được sử dụng. Nó thể hiện rằng user chỉ có thể vượt quá giá trị soft chứ không thể vượt quá giá trị hard (khi tham số grade được đặt).

Như bạn thấy có hai trường soft và hard. Cặp thứ nhất là dành cho block và cặp thứ hai dành cho node tức là dành cho số lượng file và thư mục. Nếu bạn là người mới bắt đầu thì chỉ nên sửa trường thứ ba và thứ tư mà thôi, và đặt chúng bằng nhau. Ví dụ bạn đặt thông tin quota cho user nam thành

Mã:
#Filesystem blocks soft hard inodes soft hard
/dev/sdb5 24 5000 5000 7 0 0
khi đó user nam không thể sử dụng dung lượng ổ cứng quá 5MB, trong trường hợp blocksize=1024.
Tham số “grace” thể hiện khoảng thời gian mà user có thể sử dụng dung lượng ổ cứng vượt quá giá trị Soft limit, mặc định nó thường là 7 ngày. Bạn có thể sử dụng các đơn vị thời gian như: seconds, minutes, hours, days, weeks, và months. Đặt giá trị cho tham số này bằng lệnh:
Mã:
$ edquota –tu # chỉnh cho user có thể bỏ -u
$ edquota –tg # chỉnh cho group

Filesystem Block grace period Inode grace period
/dev/sdb5 7days 7days
Bạn có thể ‘nhân bản’ quota, thật tiện lợi phải không nào. Ví dụ bạn có thể áp dụng quota của ‘nam’ cho ‘minh’:

Mã:
$ edquota -p nam -u minh
3. Xem thông tin về quota
Để xem thông tin quota bạn dùng lệnh quota. Ví dụ để xem thông tin quota của user nam bạn dùng lệnh

Mã:
$ quota -u nam # user nam
$ quota -g staff # nhóm staff Để thống kê thông tin quota về các nhóm và user bạn dùng

$ repquota -au # theo người dùng
$ repquota -ag # theo nhóm
$ repquota -agu # tất cả

Không có nhận xét nào:

Đăng nhận xét