Cách khắc phục lỗi 'Disk quota exceeded' trên Linux

intermediate🐧 Linux2026-05-23| Linux (Ubuntu, Debian, CentOS, RHEL) sử dụng hệ thống tệp ext4 hoặc XFS đã cài đặt quota-tools.

Error Message

Disk quota exceeded
#quota#ổ đĩa#lưu trữ#edquota#linux

Vấn đềThật khó chịu khi bạn đang cố lưu một file cấu hình, tải xuống một package quan trọng hoặc thực hiện migrate database, nhưng hệ thống lại từ chối bằng một thông báo bí ẩn:

Disk quota exceeded

Lỗi này thường gây hiểu lầm. Bạn chạy df -h và thấy còn tới 50GB trống trên ổ đĩa vật lý. Vậy vấn đề là gì? Trên các hệ thống nhiều người dùng, quản trị viên thường thiết lập quotas (hạn ngạch)—một giới hạn nhân tạo về dung lượng dữ liệu mà một người dùng cụ thể có thể sở hữu. Khi bạn chạm tới giới hạn này, hệ thống sẽ khóa quyền ghi của tài khoản, ngay cả khi ổ cứng thực tế vẫn còn trống một nửa.

Bước 1: Chẩn đoán tình trạng sử dụngĐầu tiên, hãy xác nhận chẩn đoán. Bạn cần xem chính xác mình đã tiến gần đến giới hạn như thế nào. Lệnh quota sẽ cung cấp một bản tóm tắt về tình trạng hiện tại của bạn.

# Kiểm tra quota của chính bạn dưới định dạng dễ đọc
quota -s

Hãy quan sát kỹ các cột blocks (dung lượng thực tế) và inodes (số lượng file). Nếu giá trị "usage" khớp với "limit", bạn đã tìm ra nút thắt cổ chai. Nếu có quyền sudo, bạn có thể kiểm tra tất cả người dùng trên hệ thống cùng một lúc:

sudo repquota -as

Bước 2: Truy tìm các "hố đen" dung lượngNếu không thể tăng giới hạn, bạn cần bắt đầu xóa dữ liệu. Đừng đoán mò xem dữ liệu nằm ở đâu; hãy sử dụng du để tìm các thư mục nặng nhất trong thư mục home của bạn.

# Tìm 10 thư mục lớn nhất
du -ah ~ | sort -rh | head -n 10

Hãy chú ý đến những "thủ phạm" phổ biến sau:

  • Các runtime ẩn: Thư mục ~/.npm hoặc ~/.cache có thể dễ dàng phình to lên 2GB hoặc 3GB mà bạn không hề hay biết.- Các file log bị bỏ quên: Kiểm tra /var/www/html/logs hoặc thư mục log local của ứng dụng. Một file debug log bị lỗi có thể ngốn 500MB chỉ trong vài giờ.- Thùng rác "ma": Xóa file qua giao diện đồ họa (GUI) thường chỉ chuyển chúng vào ~/.local/share/Trash. Chúng vẫn được tính vào quota cho đến khi thư mục đó được dọn sạch.## Bước 3: Dọn dẹp nhanh chóngBạn cần đưa các dịch vụ hoạt động trở lại ngay lập tức? Các lệnh sau đây nhắm vào những nguyên nhân phổ biến nhất để giải quyết nhanh vấn đề:
# Xóa sạch cache của các trình quản lý package
npm cache clean --force
yarn cache clean

# Xóa bytecode Python tích tụ trong môi trường dev
find . -name "*.pyc" -delete

# Dọn sạch thùng rác qua terminal
rm -rf ~/.local/share/Trash/*

Bước 4: Điều chỉnh giới hạn (Dành cho Quản trị viên)Đôi khi người dùng đơn giản là cần thêm dung lượng để làm việc. Quota sử dụng giới hạn "Soft" (vùng cảnh báo) và giới hạn "Hard" (giới hạn tuyệt đối). Để thay đổi các giá trị này, hãy sử dụng edquota, lệnh này sẽ mở trình chỉnh sửa văn bản mặc định của bạn.

sudo edquota -u username

Cấu hình sẽ trông như thế này:

Disk quotas cho user dev_user (uid 1001):
  Filesystem      blocks       soft       hard     inodes     soft     hard
  /dev/sda1      1048576    2097152    2500000         45        0        0

Cập nhật các giá trị softhard cho blocks. Lưu ý rằng các giá trị này thường được tính bằng đơn vị block 1KB, vì vậy 2097152 tương đương với 2GB. Để thực hiện nhanh hơn bằng script, hãy sử dụng setquota:

# Thiết lập ngay lập tức giới hạn soft 2GB và giới hạn hard 2.5GB
sudo setquota -u username 2097152 2621440 0 0 /

Xác minh: Xác nhận kết quảĐừng vội cho rằng vấn đề đã được giải quyết chỉ vì bạn vừa xóa vài file. Hãy kiểm tra khả năng ghi bằng lệnh touch:

touch test_file && rm test_file

Nếu lệnh thực thi thành công mà không có lỗi, rào cản đã được gỡ bỏ. Hãy chạy quota -s lần cuối để đảm bảo bạn có một khoảng trống an toàn dưới giới hạn mới.

Bài học kinh nghiệm- Kiểm tra số lượng Inode: Bạn có thể còn 10GB trống nhưng vẫn gặp lỗi này nếu bạn chạm tới giới hạn inode. Điều này xảy ra nếu bạn có hàng trăm nghìn file session hoặc file log cực nhỏ.- Bẫy "Thời gian ân hạn": Khi bạn vượt quá giới hạn soft, một bộ đếm thời gian sẽ bắt đầu (thường là 7 ngày). Nếu bạn không đưa dung lượng xuống dưới giới hạn trước khi hết hạn, giới hạn soft sẽ trở thành giới hạn hard, chặn mọi thao tác ghi.- Tự động hóa cảnh báo: Hãy thiết lập một cron job đơn giản để gửi email cho người dùng khi họ sử dụng quá 80% quota. Việc dọn dẹp vào thứ Ba sẽ tốt hơn nhiều so với việc hệ thống production bị sập vào tối thứ Sáu.

Related Error Notes