Linux - Yardım et, inode'um bitiyor!


16

Çok sayıda küçük dosya içeren bir dosya sistemim var. Şu anda inode'ların yaklaşık% 80'i kullanılıyor (kontrol ettim df -i), ancak disk alanının sadece% 60'ı kullanılıyor. Düğüm sayısını nasıl 'artırabilirim'? Sadece disk alanı olsaydı, sadece diskin boyutunu artırabileceğimi biliyorum (bu disk LVM'de). Diskin boyutunu büyütürsem, bu benim daha fazla inodum olur mu?

Eğer yardımcı olursa, bu diskin üzerinde bulunduğu dosya sistemini büyütmeye hazırım.

Yanıtlar:


14

adam mke2fs

Düğüm sayısı için bir -N göreceksiniz

Böylece yeni bir bölümü biçimlendirirken bunu belirtebilirsiniz. Şu anda çok yardımcı değil, ha?

Dosya sistemini ayarlayan tune2fs'nin daha fazla düğüm eklemenin bir yolu yok gibi görünüyor.

Ama belki ext3 veya 4 bunu yapar ve başka biri bilir ....?

Şimdi bir seçeneğiniz var: yedekleme, yeniden biçimlendirme, geri yükleme.


1
Evet, bu iyi değil, 's reiserfs için değil, çünkü (her terbiyeli yeni dosya sistemi tarafından desteklenen)' s destek dinamik inode tahsisleri

1
Reiser tonlarca küçük dosya için mükemmeldir. Ben onunla giderdim.
Xorlev

Ancak Reiser kullanırken yedek aldığınızdan emin olurum. Ben (kendim) ve diğerleri önceki yıllarda reiserFS nedeniyle veri kaybettim. O zamandan beri artık güvenmiyorum.
QUIT - Anony-Mousse

ext3 bunun için bir yolu yok gibi görünüyor
kagali-san

15

Orijinal soruyu cevaplamak için, muhtemelen sorgulayıcı için geç olsa bile - evet, LVM2'de EXT2 / 3'ü arttırmak da inot sınırını artıracaktır.

Sadece 65k inode limiti olan 1G boyutunda bir bölüm vardı. Sonra

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

... inode limitim şimdi 128k.


1
Vay be, neredeyse çaresizdim, ama cevabını buldum ve denemeye karar verdim ve işe yaradı. Bu kesinlikle kabul edilen cevap olmalı! LVM ve sanal makineler için çalışıyor :)
vadipp

12

Küçük dosyaların disk alanınızı yiyeceğini biliyorsanız, ReiserFS veya EXT2 / 3/4 yerine yeni bir modern FS (XFS, JFS) gibi dinamik inode tahsisine sahip bir FS kullanmalısınız (ki kullandığınızı varsayıyorum) , bunu söylemedin).

Dosya sistemi geçişi durumunuzda muhtemelen iyi bir seçimdir.


1
Küçük dosyaların disk alanınızı yiyeceğini biliyorsanız, bazı ayarlamalar yapmış olmalısınız . Her dosya sisteminin artıları ve eksileri vardır.
Franklin Piat

3

Bir stopgap olarak, yeni bir dosya sistemi bağlayın ve fs hiyerarşinizin bazılarını oraya cp / rm / ln-s ekleyin. Şimdi birkaç yedek inodeunuz var! İki fses arasındaki dosyaları mv yapamazsınız, bu yüzden bunu yapmanız gereken şeyleri kırmaya dikkat edin, ancak birçok uygulama için bu şeffaf olabilir.

Sonra Paul'ün tavsiyesi üzerine yeni bir fs yapın ve buna geçiş yapın.


1
Tabii ki iki dosya sistemi arasında mv dosyaları yapabilirsiniz - bir mv cp + rm için etkili bir anlamsal şekerdir. İki dosya sistemi arasında bağlantı kuramazsınız. Başka bir şey mi demek istediniz?
Daniel Lawson

@Daniel: Rename () sistem çağrısını kastediyorum ve sembolik bağlantıların anlambilimiyle ilgili sorun nedeniyle mv'yi cp / rm için şeker olarak kullanmanın özensiz bir uygulama olduğunu düşünüyorum. Bu cevabı düzenlemeliyim - çok net olmadığı birkaç yer var.
Charles Stewart

2

Ext4 aynı sorunu yaşar, küçük bir bölüm oluşturursanız ve bir ton küçük dosyanız varsa inode'unuz tükenir ve flex_bgözelliklerde varsa tune2fsinode'ları artırmak için kullanamazsınız .

Şahsen ben rserfs herhangi bir sürümü üzerinde ext4 ile gitmek istiyorum, sadece biçimlendirme yaparken aşağıdakileri yapın:

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

Bu şekilde biçimlendirmeniz, 512M önyükleme bölümünde 33160 düğüm sağlar.

Bunu yıllarca reiserfs kullanan biri olarak söylüyorum, çekirdek desteği ext * kadar iyi değil ve dosya sistemi zamanla parçalanıyor ve yavaşlıyor.


-1

Resiserfs veya inode sınırlaması olmayan diğer fs için gidin. Özellikle günlük dosyaları ile ilgili olarak, büyük miktarda katkıyı serbest bırakmak için muhtemelen birkaç ton küçük kullanılmamış dosyayı daha büyük bir katran dosyasına paketleyebilirsiniz =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
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.