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
~/.npmhoặc~/.cachecó 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/logshoặ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ị soft và hard 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.

