Skip to content Skip to main navigation Skip to footer

[Resolved] xfs_quota: cannot set limits: Function not implemented Directadmin

Tổng quan về lỗi xfs_quota: cannot set limits: Function not implemented Directadmin

Lỗi xfs_quota: cannot set limits: Function not implemented Directadmin có thể sẽ xuất hiện khi bạn điều chỉnh dung lượng sử dụng của một người dùng trên Directadmin hoặc ngay khi khởi tạo user đầu tiên.

Việc đầu tiên bạn cần làm là SSH vào VPS hoặc Server của bạn. Nếu bạn chưa biết cách SSH vào SSH vào VPS hoặc Server của bạn thì bạn có thể tham khảo bài viết hướng dẫn sau:

Nguyên nhân lỗi này là do phân vùng trên VPS hoặc Server của bạn không có phân vùng /home, bạn có thể xem bằng cách sử dụng lệnh df -h, ví dụ như VPS dưới đây của mình cũng không có phân cùng /home:

FilesystemSizeUsedAvailUse%Mounted on
devtmpfs1.9G01.9G0%/dev
tmpfs1.9G24K1.9G1%/dev/shm
tmpfs1.9G17M1.9G1%/run
tmpfs1.9G01.9G0%/sys/fs/cgroup
/dev/mapper/centos_sv3-root28G4.3G24G16%/
/dev/sda11014M193M822M19%/boot
tmpfs379M0379M0%/run/user/0
xfs_quota: cannot set limits: Function not implemented Directadmin

Xử lý lỗi xfs_quota: cannot set limits: Function not implemented Directadmin

Trước khi bước vào bước xử lý lỗi này bạn cần kiểm tra filesystem của bạn ở định dạng EXT4 hay XFS, để kiểm tra bạn sử dụng lệnh sau:

AZDIGI Tutorial
mount | grep ' / '
    

Sau khi sử dụng lệnh này xong bạn sẽ xác định được mình dùng định dạng nào.

Dưới đây là 2 trường hợp và VPS hay Server của bạn sẽ nằm trong 1 trong 2 trường hợp bên dưới:

AZDIGI Tutorial
Trường hợp 1: /dev/sda3 on / type ext4 (rw,usrquota,grpquota)
Trường hợp 2: /dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
    

Trường hợp một là hệ thống của bạn đang sử dụng định dạng ext4, còn trường hợp 2 là xfs. Tùy theo mỗi trường hợp mà bạn chọn cách khắc phục như bên dưới.

Nếu là EXT4:

Với trường hợp là ext4 thì cách giải quyết khá là đơn giản, bạn chỉ cần thêm dòng:

AZDIGI Tutorial
use_xfs_quota=0
    

Vào trong tập tin cấu hình Directadmin tại đường dẫn sau:

AZDIGI Tutorial
/usr/local/directadmin/conf/directadmin.conf
    

Sau đó khởi động lại dịch vụ Directadmin với lệnh sau:

AZDIGI Tutorial
service directadmin restart
    

Như vậy là bạn đã khắc phục được lỗi “xfs_quota: cannot set limits: Function not implemented Directadmin” đối với hệ thống sử dụng định dạng EXT4.

Đối với hệ thống XFS

Đối với hệ thống xfs thì sẽ khác với ext3/ext4 trước đó. Nhưng trước hết bạn nên kiểm tra lại một lần nữa cho chắc.

Bước 1: Kiểm tra phân vùng trên linux

Chúng ta vẫn sẽ kiểm tra lại với lệnh df -h để xem lại các phân vùng hiện tại:

FilesystemSizeUsedAvailUse%Mounted on
devtmpfs1.9G01.9G0%/dev
tmpfs1.9G24K1.9G1%/dev/shm
tmpfs1.9G17M1.9G1%/run
tmpfs1.9G01.9G0%/sys/fs/cgroup
/dev/mapper/centos_sv3-root28G4.3G24G16%/
/dev/sda11014M193M822M19%/boot
tmpfs379M0379M0%/run/user/0

Như chúng ta có thể thấy /home không phải là một phân vùng vì nó không hiển thị trên bảng này. Bởi vì nó nằm ở bên trong /. Tiếp theo chúng ta đi tiếp đến bước 2.

Bước 2: Xác nhận rằng / thực sự đang sử dụng hệ thống tệp XFS

Ta sử dụng lại lệnh sau để xác định phân vùng / có đang sử dụng định dạng tệp xfs không

AZDIGI Tutorial
mount | grep ' / '
    

Chúng ta sẽ có kết quả như bên dưới:

AZDIGI Tutorial
[root@sv3 ~]# mount | grep ' / '
/dev/mapper/centos_sv3-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
    
xfs_quota: cannot set limits: Function not implemented Directadmin

Nếu bạn thấy tùy chọn “noquota“, thì bạn cần chuyển sang bước 3 bên dưới.

Nếu bạn không thấy “noquota“, thì bạn có thể làm theo hướng dẫn sau của Directadmin:

Bước 3: Khắc phục lỗi “xfs_quota: cannot set limits: Function not implemented Directadmin” với hệ thống xfs

Vì “noquota” là tùy chọn mount của kernel mặc định, chúng ta phải thay đổi nó trong tùy chọn khởi động kernel.

Để thay đổi chúng ta sử dụng lệnh sau:

AZDIGI Tutorial
vi /etc/default/grub
    

Tại đây bạn sẽ thấy một vài dòng cấu hình hệ thống kernel, có thể mỗi hệ thống là khác nhau tuy nhiên bạn cũng đường quá lo lắng. Dưới đây là nội dung file trên VPS của mình:

AZDIGI Tutorial
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_sv3/root rd.lvm.lv=centos_sv3/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
    

Thêm tấm ảnh minh họa nữa cho các bạn dễ nhìn.

Tại đây bạn tìm dòng có nội dung “GRUB_CMDLINE_LINUX“, như ở đây của mình là dòng số 6.

AZDIGI Tutorial
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_sv3/root rd.lvm.lv=centos_sv3/swap rhgb quiet"
    

Chúng ta bắt đầu di chuyển “dấu nháy” đến cuối dòng này, nhưng không vượt qua dấu nháy kép() nhé.

Tại đây bạn bấm “i” tiến hành để chỉnh sửa dòng. Và thêm đoạn nội dung “rootflags=uquota,pquota” vào đoạn này. Dưới đây là nội dung so sánh trước và sau khi đã chỉnh sửa.

AZDIGI Tutorial
Trước: GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_sv3/root rd.lvm.lv=centos_sv3/swap rhgb quiet"
Sau  : GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_sv3/root rd.lvm.lv=centos_sv3/swap rhgb quiet rootflags=uquota,pquota"
    

Thêm tấm hình cho các bạn dễ hình dung:

Sau khi đã thay đổi bạn nhớ lưu lại nhé. Sau đó ta tiếp tục với hai lệnh sau:

AZDIGI Tutorial
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.orig
grub2-mkconfig -o /boot/grub2/grub.cfg
    

Giải thích các lệnh trên:

Lệnh 1: Sao lưu tệp tin “grub.cfg” ra một file mới có tên “grub.cfg.orig“.
Lệnh 2: Tạo lại tập tin cấu hình grub.

Đối với một số hệ điều hành đường dẫn có thể thay đổi thành:

AZDIGI Tutorial
/boot/efi/EFI/centos/grub.cfg
    

Dưới đây là kết quả bên VPS của mình:

Sau đó bạn tiến hành khởi động lại VPS hoặc Server của bạn với lệnh “reboot.

Sau khi bạn đã đăng nhập lại được VPS hoặc Server của bạn. Chúng tại lại kiểm tra với lệnh cũ xem còn tùy chọn “noquota” không nhé.

AZDIGI Tutorial
mount | grep ' / '
    

Dưới đây là kết quả của mình:

Tùy chọn “noquota” đã không còn nữa. Và bước cuối cùng là xem tùy chọn sử dụng “xfs” có được bật trong cấu hình Directadmin không nhé, để xem ta sử dụng hai lệnh sau:

AZDIGI Tutorial
cd /usr/local/directadmin
./directadmin c | grep use_xfs_quota
    

Giải thích hai lệnh trên:

  • Lệnh 1: Di chuyển đến nơi chứa tệp tin cấu hình Directadmin
  • Lệnh 2: Xem cấu hình Directadmin use_xfs_quota đang cấu hình thông số nào

Kết quả như bên dưới là bạn có thể tiến hành đến bước cuối cùng.

AZDIGI Tutorial
use_xfs_quota=1
    

Bước cuối cùng là khôi phục lại hạn ngạch mức sử dụng dung lượng cho các user đã được khởi tạo:

AZDIGI Tutorial
echo "action=rewrite&value=quota" >> /usr/local/directadmin/data/task.queue
    

Kiểm tra lại lỗi “xfs_quota: cannot set limits: Function not implemented Directadmin” còn tồn tại không?

Để kiểm tra các bạn thử thay đổi mức dung lượng của một user sau đó nhấn “Save” để lưu lại. Sau khi nhấn lưu lại bạn sẽ thấy lỗi không còn hiển thị nữa và quá trình lưu hoàn tất.

Như vậy là bạn đã nắm được cách xử lý lỗi “xfs_quota: cannot set limits: Function not implemented Directadmin”.

Chúc các bạn thực hiện thành công.