GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Membebaskan Penggunaan Inode?

Solusi saya:

Coba temukan apakah ini masalah inode dengan:

df -ih

Coba temukan folder root dengan jumlah inode yang besar:

for i in /*; do echo $i; find $i |wc -l; done

Coba temukan folder tertentu:

for i in /src/*; do echo $i; find $i |wc -l; done

Jika ini adalah header linux, coba hapus yang terlama dengan:

sudo apt-get autoremove linux-headers-3.13.0-24

Secara pribadi saya memindahkannya ke folder yang terpasang (karena bagi saya perintah terakhir gagal) dan menginstal yang terbaru dengan:

sudo apt-get autoremove -f

Ini menyelesaikan masalah saya.


Situasi saya adalah saya kehabisan inode dan saya telah menghapus semua yang saya bisa.

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361     11  100% /

Saya menggunakan ubuntu 12.04LTS dan tidak dapat menghapus kernel linux lama yang memakan sekitar 400.000 inode karena apt rusak karena paket yang hilang. Dan saya tidak dapat menginstal paket baru karena saya kehabisan inode sehingga saya macet.

Saya akhirnya menghapus beberapa kernel linux lama dengan tangan untuk membebaskan sekitar 10.000 inode

$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*

Ini cukup untuk membiarkan saya menginstal paket yang hilang dan memperbaiki apt

saya
$ sudo apt-get install linux-headers-3.2.0-76-generic-pae

dan kemudian hapus sisa kernel linux lama dengan apt

$ sudo apt-get autoremove

semuanya jauh lebih baik sekarang

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361 434719   54% /

Sangat mudah bagi disk untuk menggunakan inode dalam jumlah besar meskipun disk tidak terlalu penuh.

Sebuah inode dialokasikan ke file jadi, jika Anda memiliki banyak sekali file, masing-masing berukuran 1 byte, Anda akan kehabisan inode jauh sebelum Anda kehabisan disk.

Mungkin juga menghapus file tidak akan mengurangi jumlah inode jika file tersebut memiliki banyak tautan keras. Seperti yang saya katakan, inode milik file, bukan entri direktori. Jika file memiliki dua entri direktori yang ditautkan dengannya, menghapus salah satunya tidak akan membebaskan inode.

Selain itu, Anda dapat menghapus entri direktori tetapi, jika proses yang berjalan masih membuka file, inode tidak akan dibebaskan.

Saran awal saya adalah menghapus semua file yang Anda bisa, lalu mem-boot ulang kotak untuk memastikan tidak ada proses yang dibiarkan menahan file tetap terbuka.

Jika Anda melakukannya dan masih mengalami masalah, beri tahu kami.

Omong-omong, jika Anda mencari direktori yang berisi banyak file, skrip ini dapat membantu:

#!/bin/bash

# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Jika Anda sangat tidak beruntung, Anda telah menggunakan sekitar 100% dari semua inode dan tidak dapat membuat skrip. Anda dapat memeriksanya dengan df -ih .

Maka perintah bash ini dapat membantu Anda:

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

Dan ya, ini akan memakan waktu, tetapi Anda dapat menemukan direktori dengan file terbanyak.


Linux
  1. Cara Mengganti Nama File di Linux

  2. Cara Membuat Zip Banyak File di Linux

  3. Bagaimana cara mendapatkan% penggunaan memori dengan vmstat?

  1. Bagaimana Menemukan Ruang Disk Gratis Dan Menganalisis Penggunaan Disk ??

  2. Linux – Bagaimana Linux Menetapkan Nomor Inode Pada Sistem File Tidak Berdasarkan Inode?

  3. Cara Memeriksa Penggunaan Inode di Akun cPanel Anda

  1. Cara menemukan file di Linux

  2. Cara Menghitung Penggunaan Memori di Linux menggunakan sar, ps, dan gratis

  3. Cara mendapatkan penggunaan CPU