Xử lý vấn đề full Inode 100% trên CyberPanel do php Sessions

Thực tế mình sử dụng CyberPanel cho nhiều dự án cho cá nhân thì chưa gặp trường hợp này tuy nhiên các khách hàng của mình thì có gặp 1 số trường hợp nên đây là bài viết lưu trữ cũng như chia sẽ đến mọi người cách để fix lỗi Full Inode 100% trên CyberPanel (php Sessions Full disk)

Inode là gì?

Trong hệ thống file của Linux (hệ điều hành phổ biến trên VPS), “inode” là một cấu trúc dữ liệu dùng để lưu trữ thông tin về các file và thư mục. Mỗi file, thư mục, hoặc liên kết tượng trưng (symbolic link) trên VPS đều được gán một inode riêng. Inode chứa các thông tin như:

  • Kích thước file
  • Vị trí lưu trữ trên ổ cứng
  • Quyền truy cập (ai được đọc, ghi, thực thi)
  • Thời gian tạo/sửa file

Tuy nhiên, inode không chứa nội dung file mà chỉ là “chỉ mục” để hệ thống biết file/thư mục đó nằm ở đâu.

Full Inode 100% là gì?

Trên VPS, số lượng inode là có giới hạn, tùy thuộc vào cấu hình của nhà cung cấp hosting. Khi bạn nghe “Full Inode 100%”, điều đó có nghĩa là VPS của bạn đã sử dụng hết toàn bộ số inode được cấp. Nói cách khác, bạn không thể tạo thêm file, thư mục hay bất kỳ đối tượng nào mới, ngay cả khi dung lượng ổ cứng (dung lượng GB) vẫn còn trống.

Khi bạn gặp lỗi Full Inode 100%, điều này có thể gây ra nhiều vấn đề như:

  • Không thể tạo file mới
  • Không thể cài đặt phần mềm
  • Các ứng dụng có thể ngừng hoạt động
  • Website có thể không hoạt động

Ví dụ:

Bạn có VPS với dung lượng 20GB và giới hạn 100.000 inode.

Nếu bạn tạo 100.000 file nhỏ (dù mỗi file chỉ vài KB), bạn sẽ dùng hết inode, dù dung lượng 20GB chưa đầy. Đây là điều nhiều người lầm tưởng và đặt chấm hỏi tại sao dung lượng còn nhiều thế mà không thể tạo file mới và gặp ngay thông báo lỗi (no space left on device…)

Nguyên nhân khiến Inode đầy 100%

Có quá nhiều tệp nhỏ

  • Các hệ thống CMS như WordPress có thể sinh ra nhiều tệp cache, session, hoặc logs.
  • Thư mục /tmp chứa nhiều tệp tạm chưa được dọn dẹp.
  • Tệp thư rác trong /var/spool/mail hoặc /var/log/.

Thư mục chứa quá nhiều tệp con

  • Crawler hoặc bot sinh ra nhiều session tạm thời.
  • Đầy Inodes do session PHP tạo ra (case gặp phải trên CyberPanel)
  • Spam email trên máy chủ

Cấu hình inode giới hạn thấp

  • Một số VPS giá rẻ hoặc phân vùng ổ đĩa có giới hạn inode thấp từ lúc cài đặt.

Cách check Inode trên VPS

Kiểm tra tình trạng inode: Đăng nhập vào VPS qua SSH, gõ lệnh:

df -i

Bạn sẽ thấy giới hạn Inode ngay lập tức, ví dụ trong hình giới hạn là

root@127:~# df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev            240633    438  240195    1% /dev
tmpfs           252323    636  251687    1% /run
/dev/vda1      1943040 481633 1461407   25% /
tmpfs           252323     29  252294    1% /dev/shm
tmpfs           252323      3  252320    1% /run/lock
tmpfs           252323     18  252305    1% /sys/fs/cgroup
/dev/loop0       96000   2926   93074    4% /var/tmp
tmpfs           252323   2226  250097    1% /tmp
tmpfs           252323     22  252301    1% /run/user/0

Tổng quan về tình trạng sử dụng inode

Phân vùng chính (/dev/vda1):

  • Tổng số inode: 1,943,040
  • Đã sử dụng: 481,633 (25%)
  • Còn trống: 1,461,407 (75%)

/dev/vda1 là phân vùng quan trọng nhất, nơi hệ thống file chính được lưu trữ. Với chỉ 25% inode đã được sử dụng.

Các phân vùng khác cũng đang ở mức sử dụng inode rất thấp:

  • /dev/loop0: 4% sử dụng

Các phân vùng tmpfs: hầu hết đều dưới 1% sử dụng

Kiểm tra thư mục có nhiều inode

Ở trên là ví dụ để bạn hiểu về inode, nếu bạn gặp trường hợp inode full 100% thì nó sẽ báo % sử dụng là bạn sẽ biết được vấn đề, tiếp theo bạn cần kiểm tra vấn đề cụ thể chạy lệnh dưới đây để tìm thư mục chứa nhiều file

find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

Ví dụ đầu ra như sau:

root@127:~# find / -xdev -type f | cut -d “/” -f 2 | sort | uniq -c | sort -n
1 aquota.group
1 aquota.user
1 cyberpanel.swap
1 snap
1 webadmin.csr
310 boot
900 etc
2625 root
6840 var
158271 home
223969 usr

Đây là phân tích chi tiết:

  1. Thư mục có ít file:
    • aquota.group: 1 file
    • aquota.user: 1 file
    • cyberpanel.swap: 1 file
    • snap: 1 file
    • webadmin.csr: 1 file
    • boot: 310 files
    • etc: 900 files
  2. Thư mục có số lượng file trung bình:
    • root: 2,625 files
    • var: 6,840 files
  3. Thư mục có nhiều file:
    • home: 158,271 files
    • usr: 223,969 files

Theo kết quả này, phần lớn file tập trung ở hai thư mục:

  • /home: Chứa 158,271 files (có thể bao gồm website, dữ liệu người dùng)
  • /usr: Chứa 223,969 files (hệ thống, ứng dụng cài đặt)

Kết hợp với thông tin df -i từ trước đó cho thấy bạn đang sử dụng 25% tổng số inode, tình hình vẫn ở mức an toàn. Tuy nhiên, số lượng file trong /home khá cao, điều này gợi ý rằng có thể có nhiều website hoặc ứng dụng được host trên VPS này.

Nếu bạn muốn quản lý tốt hơn, có thể tập trung vào thư mục /home để kiểm tra:

  1. Các file tạm thời hoặc cache từ các website
  2. Logs tích lũy
  3. Các bản sao lưu cũ không cần thiết
  4. File cache từ các plugin WordPress (nếu bạn đang sử dụng)

Dù hiện tại không gặp vấn đề với inode, việc duy trì thói quen dọn dẹp định kỳ vẫn là cách tốt để tránh gặp vấn đề trong tương lai.

Xử lý Full Inode 100% trên CyberPanel

1. Tìm và xoá các file session

Sử dụng lệnh dưới đây để tìm các file có định dạng sess_ trong thư mục /var/lib/lsphp/session/ và xoá đi. Bạn không thể sử dụng rm -rf để xoá file sẽ gặp lỗi -bash: /usr/bin/rm: Argument list too long

find /var/lib/lsphp/session/ -name 'sess_*' -delete

Ngoài ra bạn có thể copy script bên dưới để xoá. Script này được viết bởi usmannasir cũng chính là tác giả của CyberPanel.

bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/CPScripts/setup_php_sessions.sh)

2. Đặt cron xoá

Bạn nên đặt cron để xoá tự động theo lịch ví dụ chạy mỗi ngày 1 lần.

Để đặt cron job chạy mỗi ngày 1 lần, lúc 12h đêm, bạn cần thêm chúng vào crontab của hệ thống. Bạn có thể mở crontab bằng lệnh sau:

crontab -e

Sau đó, thêm dòng sau vào cuối file:

0 0 * * * find /var/lib/lsphp/session/ -name 'sess_*' -delete

Sau đó lưu và thoát là xong.

Ngoài ra bạn nên đọc qua bài viết để tránh để ổ cứng bị đầy do log nữa là đẹp

5/5 - (56 votes)

donate Nếu bạn thấy bài viết có ích bạn có thể donate cho team hoặc chia sẻ bài viết này. Ngoài ra bạn có thể yêu cầu thêm bài viết tại đây
user

Yêu thích Võ thuật và Công nghệ thông tin, thích viết và chia sẽ về 2 lĩnh vực này thế thôi :D

Bài viết liên quan