Artık yetimsiz inode nedir? [kapalı]


16

Bir inodeun ne olduğunu anlıyorum ama öksüz bir inode'nun tam tanımı nedir? Bunun ne anlama geldiğini anlamıyorum.

GÜNCELLEME

Yönettiğim bir sunucunun inode'lardan kaçtığı bir zaman vardı, ancak bir df -h yaptığımda sunucunun sadece% 60 alanın tükendiğini gösterdi. Sanırım bu artık yetimsiz inode yüzünden. Tüm inode'lar nasıl kullanılabilir ancak sunucuda hala "boşluk" kalıyor? Cevaplarınızda bunu ele alabilir misiniz?


1
Güncellemeniz, bir dosya sisteminin depolama kapasitesi ile içerebileceği düğüm sayısı arasındaki farkla ilgili olarak ayrı bir sorudur; ayrı bir soru olarak sormalısınız.
Stephen Kitt

Çalıştırıldığında df -i, düğümler için ilgili bilgileri gösterecektir.
Kusalananda

Disksiz / kullanılan alan, serbest / kullanılan inode ile sadece hafif korelasyon gösterir. Çok sayıda küçük dosya içeren bir diskte yer kalmadan önce inode bitecektir.
Kusalananda

Yanıtlar:


17

Artık bir inode, dosya sistemindeki bir dizin girişine bağlı olmayan bir inode'dur, yani erişilemez.

Artık kalan düğümler çeşitli nedenlerle görünebilir:

  • silinmiş ancak açık tutulan geçici dosyalar (yaygın bir uygulama) dosya sistemindeki inode'ları işgal eder; sistem düzgün kapatılmadan yeniden başlatılırsa, bu inotlar kalır ve yetim kalır
  • dosya sistemi bozulması dizinin içerdiği dosyaların düğümlerini etkilemeden bir dizini bozabilir; bu inotlar daha sonra yetim kalır

fsckiçindeki yetimsiz düğümler için yeni dizin girdileri oluşturur lost+found.


Cevabınız için teşekkürler @ stephen-kitt. Yönetmekte olduğum bir sunucunun inode'lardan kaçtığı bir zaman vardı, ancak bunu yaptığımda df -hsunucunun sadece% 60 alanın tükendiğini gösterdi. Sanırım bu artık yetimsiz inode yüzünden. Tüm inode'lar nasıl kullanılabilir ancak sunucuda hala "boşluk" kalıyor?
ninjacoder

3

Artık bir inode "yarı silinmiş" bir dosyadır: daha fazla dizin girişi yoktur, ancak yine de bazı işlemlerde açıktır, bu nedenle veriler diskte hala mevcuttur. Bu dosyayı açan son işlem dosyayı kapattığında, dosya tamamen silinir ve artık kalan inode kaybolur.

Artık bir inode, dosyayı saklamak için hem inode hem de disk alanı kullanır, bu nedenle her ikisini de kullanılır dfve df -ikullanıldığı gibi sayılır. Bu nedenle, disk dolu olarak rapor edilir ancak dfboş alan kalırsa , bu artık yetimsiz düğümlerle ilişkilendirilemez. Artık düğümler, tarafından bildirilen dosya sistemi kullanımının dfve bildirilen toplam dosya boyutunun dufarklılık göstermesinin nedenlerinden biridir ; disk kullanımını ölçmek için neden bu kadar çok farklı yol var? bu konuyla ilgili daha fazla ayrıntı için.

Dosya sistemi oluşturulduğunda birçok dosya sistemi sabit sayıda inode ayırır, yani dosya sisteminde en fazla bu kadar dosya olabilir. Düğüm sayısı, düğümlerin kullandığı alan ile çok sayıda dosya oluşturma yeteneği arasındaki bir uzlaşmadır. Dosya sisteminde daha fazla yer yoksa, varolan dosyaları büyütemaz veya yeni dosyalar oluşturamazsınız (belki de yalnızca kısmen kullanılan blokları doldurdukları sürece, mevcut dizinlerde bazı boş dosyalar oluşturabilirsiniz. yeni bir blok tahsis edilmesini gerektirir). Artık ücretsiz inode yoksa, mevcut dosyaları büyütebilirsiniz, ancak yeni bir dosya oluşturamazsınız.

Çekirdek, veri alanı eksikliği veya inode eksikliği nedeniyle bir dosya sisteminin dolu olup olmadığını uygulamalara aynı hatayı bildirir. Böylece, işlemde yeni bir inode gerekiyorsa ve inode tablosu dolu olsa bile, bir miktar veri alanı kalsa bile bir “disk dolu” hatası alabilirsiniz. Kaç df -itane düğüm kullanıldığını ve kaç tane düğüm kaldığını bilmek için çalıştırın .


1
  • Artık bir inode bağlantısı kaldırılmış ancak başka bir işlemde hala açık olan bir inode. Örneğin bir mermide koşarken tail -f {file}diğerinde koşuyor rm {file}. Dosya sistemi bunları takip eder, böylece işlem sonlandığında temizlenebilir.

  • Temiz olmayan bir sökme işleminiz olduğunda tamamen normaldir. Bunlar yalnızca silinmiş olan dosyalardır, ancak fs salt okunur olarak yeniden takıldığında hala açıktır. Sebep değil, sadece bir semptomdur.


İnode sorunu için, tüm dizinlerde ne kadar inot kullanıldığını görmek için bu sorguyu çalıştırın

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Kontrol edilecek daha fazla yöntem için buna ve buna başvurabilirsiniz .


@ninjacoder inode sorununuz için güncellenmiş cevabımı kontrol edebilirsiniz
Rahul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.