Bagaimana cara memeriksa penggunaan inode di HestiaCP? Apa yang menyebabkan ketidakmampuan untuk menulis file meskipun ruang disk masih banyak?

Beberapa hari yang lalu, seorang teman mengirim pesan kepada saya larut malam dan mengatakan bahwa servernya mengalami kerusakan.

Gejala spesifiknya sangat aneh: situs web tiba-tiba mulai menampilkan kesalahan, log tidak dapat ditulis, dan membuat file baru akan langsung memberi tahu bahwa disk penuh.

Namun ketika dia memeriksa dengan `df -h`, dia terkejut menemukan bahwa disk tersebut jelas memiliki puluhan gigabyte ruang kosong. Bagaimana mungkin disk itu penuh?

Saat itu juga saya langsung bilang padanya, "Saudaraku, bukan hanya ruang penyimpananmu yang penuh, Inode-mu juga kelebihan beban."

Dia menjawab dengan tanda tanya: Sebenarnya apa itu Inode?

Faktanya, banyak orang bereaksi persis sama seperti dia ketika pertama kali terjebak dalam perangkap ini, karena tidak ada seorang pun di sekolah yang pernah mengajarkan hal ini kepada mereka.

Mari kita jelaskan terlebih dahulu apa itu Inode.

Anggap saja seperti kartu indeks perpustakaan, dan Anda akan mudah memahaminya.

Ruang disk itu seperti rak buku; berapa banyak buku yang bisa Anda letakkan di dalamnya tergantung pada kapasitasnya, yang mudah dipahami oleh semua orang.

Inode itu seperti kartu indeks untuk setiap buku, yang mencatat nama, lokasi, dan siapa yang memindahkannya.

Di Linux , setiap file dan setiap direktori harus menempati sebuah inode, tidak peduli seberapa kecil ukuran file tersebut.

Sekalipun itu berkas kosong, sistem tetap akan menggunakan kartu indeks untuknya.

Sistem ini memiliki batasan jumlah total file yang dapat dibuat; batasan ini adalah jumlah total innode.

Setelah inode habis digunakan, meskipun disk Anda masih memiliki ratusan gigabyte ruang kosong, sistem operasi akan menolak untuk membuat file baru apa pun.

Log tidak dapat ditulis, cache tidak dapat dibuat, dan situs web mengalami kerusakan total—itulah pemandangan aneh yang Anda saksikan.

Sejujurnya, ini adalah situasi yang sangat rumit karena pesan kesalahan dikirim dari lokasi yang tidak Anda lihat.

Trik pertama adalah menggunakan `df -i` untuk mendapatkan gambaran umum secara cepat.

Di lingkungan HestiaCP , Anda cukup masuk ke terminal melalui SSH dan mengetik baris ini.

df -i

Ini akan mencantumkan jumlah total innode, jumlah yang digunakan, dan jumlah yang tersisa untuk setiap partisi yang terpasang.

Pada output tersebut, terdapat kolom bernama IUse%, yang merupakan metrik kunci yang harus Anda perhatikan.

Jika IUse% suatu partisi mencapai 100%, meskipun partisi tersebut masih memiliki banyak ruang disk, partisi tersebut tidak akan lagi dapat membuat file atau log baru.

Saya menyarankan kepada teman saya untuk menjalankan ini terlebih dahulu, agar dapat menentukan apakah masalahnya ada pada Inode dalam hitungan detik , yang akan jauh lebih cepat daripada menebak-nebak.

Metode kedua adalah menggunakan `find` untuk menghitung secara tepat pengguna tertentu.

Setelah memastikan bahwa masalahnya ada pada innode, langkah selanjutnya adalah mencari tahu siapa yang menggunakan kartu indeks secara berlebihan.

HestiaCP memiliki direktori beranda terpisah untuk setiap pengguna. Anda dapat dengan mudah menghitung jumlah total file dan direktori di bawah direktori situs web tertentu.

find /home/用户名/web/你的域名/public_html | wc -l

Ganti "username" dan "your domain name" dengan jalur sebenarnya. Angka murni yang dikembalikan oleh terminal adalah jumlah semua file dan folder di direktori tersebut.

Setiap file atau direktori sesuai dengan satu inode, jadi angka ini mewakili penggunaan inode.

Bagaimana cara memeriksa penggunaan inode di HestiaCP? Apa yang menyebabkan ketidakmampuan untuk menulis file meskipun ruang disk masih banyak?

Jika Anda terlalu malas untuk memeriksa setiap pengguna satu per satu dan ingin melihat distribusi penggunaan semua pengguna di seluruh situs sekaligus, ada juga perintah perulangan tunggal.

for d in /home/*; do echo -n "$d: "; find "$d" 2>/dev/null | wc -l; done

Baris ini akan mencetak jumlah total file di setiap direktori pengguna di bawah /home, sehingga memudahkan untuk mengetahui direktori pengguna mana yang memiliki jumlah file yang異常 tinggi.

Strategi ketiga adalah mengidentifikasi subdirektori yang paling banyak mengonsumsi yodium.

Terkadang Anda tahu sebuah situs web memiliki nilai Inode yang sangat tinggi, tetapi Anda tetap tidak dapat mengetahui apa yang salah dengan layar yang penuh dengan file tersebut.

Dalam kasus seperti itu, Anda perlu menelusuri satu tingkat lebih dalam untuk menemukan subfolder yang berisi sejumlah besar file kecil, seperti direktori cache, direktori sesi, dan direktori log—ini adalah area yang paling bermasalah.

find /home/用户名/web/你的域名/public_html -type d -exec sh -c 'echo -n "{}: "; find "{}" -maxdepth 1 | wc -l' \; | sort -n -r -k 2 | head -n 10

Perintah ini akan menampilkan 10 subfolder teratas yang paling banyak menggunakan file.

Jalur yang berada di bagian paling atas daftar adalah tempat sejumlah besar file kecil terkumpul bersama.

Saya memberi tahu teman saya bahwa itu mungkin semacam plugin caching yang diam-diam menghasilkan file-file kecil, dan menjalankan baris kode ini pada dasarnya akan mengkonfirmasinya.

Tips keempat adalah memeriksa batas kuota menggunakan repquota.

Jika server Anda mengaktifkan kuota sistem file Linux, Anda dapat melihat masalah ini dari perspektif yang berbeda.

repquota -a

Perintah ini akan menampilkan batas file dan penggunaan file aktual untuk semua pengguna.

Perhatikan baik-baik bagian Batasan File pada output; kolom yang digunakan menunjukkan berapa banyak file yang telah digunakan.

Kolom "soft" dan "hard" mewakili ambang batas lunak dan keras. Setelah "used" mencapai "hard", sistem akan langsung menolak untuk membuat file baru.

Ini adalah cerita yang sama sekali berbeda dari berapa banyak ruang yang tersisa di hard disk Anda.

Sebagai penutup, mari kita hubungkan titik-titik dari penyelidikan ini.

Mari kita kembali ke teman yang membuat server macet di tengah malam di awal cerita.

Dia mengikuti empat langkah yang saya jelaskan, dimulai dengan `df -i` untuk memastikan bahwa inode tersebut memang penuh.

Kemudian, menggunakan perintah find, kami menemukan direktori cache dari situs web lama yang terbengkalai yang menghasilkan file-file kecil secara terus-menerus.

Akhirnya, pengecekan pada `repquota` mengkonfirmasi bahwa memang telah mencapai batas maksimal.

Setelah membersihkan tumpukan cache sampah itu, situs web langsung kembali aktif.

Jadi, lain kali Anda menemui situasi aneh di mana "disk jelas memiliki ruang tetapi Anda tidak dapat menulis file," jangan terburu-buru menambahkan hard drive.

Pertama, gunakan `df -i` untuk melihat inode; kebenarannya mungkin saja tersembunyi di kartu indeks yang belum pernah Anda perhatikan sebelumnya.

Saya sungguh percaya bahwa sedikit akal sehat yang tersembunyi di inti sistem ini jauh lebih berguna daripada menghafal seratus daftar optimasi.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Gulir ke Atas