Linux - Pomoc, brakuje mi i-węzłów!


16

Mam system plików, który ma wiele małych plików. Obecnie używa się około 80% i-węzłów (sprawdziłem za pomocą df -i), jednak tylko 60% miejsca na dysku jest używane. Jak mogę „zwiększyć” liczbę i-węzłów? Gdyby to było tylko miejsce na dysku, wiem, że mógłbym po prostu zwiększyć rozmiar dysku (ten dysk jest na LVM). Czy jeśli zwiększę rozmiar dysku, czy będę miał więcej i-węzłów?

Chcę rozwinąć system plików, na którym znajduje się ten dysk, jeśli to pomogłoby.

Odpowiedzi:


14

man mke2fs

Zobaczysz -N dla liczby i-węzłów

Możesz to określić podczas formatowania nowej partycji. Nie jest teraz tak pomocny, co?

tune2fs, który dostraja system plików, wydaje się nie mieć sposobu na dodanie więcej i-węzłów.

Ale może robi to ext3 lub 4, a ktoś inny wie ....?

Masz teraz opcję: kopia zapasowa, sformatuj partycję, przywróć.


1
tak, to dobrze, ale nie dlatego, że to reiserfs, ale ponieważ obsługuje dynamiczne alokacje i-węzłów (obsługiwane przez każdy

1
Reiser jest doskonały do ​​ton małych plików. Poszedłbym z tym.
Xorlev,

Upewnij się jednak, że masz kopie zapasowe podczas korzystania z Reiser. Ja (ja) i inni straciłem dane z powodu reiserFS we wcześniejszych latach. Odtąd już mu nie ufam.
Ma ZAKOŃCZENIE - Anony-Mousse,

Wydaje się, że ext3 nie ma na to sposobu
kagali-san

15

Aby odpowiedzieć na pierwotne pytanie, mimo że prawdopodobnie jest już za późno dla pytającego - tak, zwiększenie EXT2 / 3 na LVM2 również zwiększy limit i-węzłów.

Właśnie miałem partycję o rozmiarze 1G z limitem 65 000 węzłów. Po

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

... mój limit i-węzłów wynosi teraz 128k.


1
Wow, byłem prawie zdesperowany, ale znalazłem twoją odpowiedź i postanowiłem spróbować i zadziałało. To zdecydowanie powinna być zaakceptowana odpowiedź! Działa zarówno dla LVM, jak i dla maszyn wirtualnych :)
vadipp

12

Jeśli wiesz, że małe pliki zajmą miejsce na dysku, powinieneś użyć FS z dynamicznym przydzielaniem i-węzłów, takim jak ReiserFS lub jakikolwiek nowy nowoczesny FS (XFS, JFS) zamiast EXT2 / 3/4 (zakładam, że używasz , nie powiedziałeś tego).

Migracja systemu plików jest prawdopodobnie dobrym wyborem w twojej sytuacji.


1
Jeśli wiedziałeś, że małe pliki zjedzą twoje miejsce na dysku, powinieneś dokonać pewnych zmian . Każdy system plików ma zalety i wady.
Franklin Piat

3

Jako stopgap, zamontuj nowy system plików i tam cp / rm / ln-s niektórych hierarchii fs. Teraz masz kilka zapasowych i-węzłów! Nie można przesyłać plików między dwiema wartościami, więc uważaj, aby nie złamać rzeczy, które muszą to zrobić, ale w przypadku wielu aplikacji może to być przezroczyste.

Następnie zrób nowy fs, zgodnie z radą Paula i migruj do tego.


1
Oczywiście możesz przenosić pliki między dwoma systemami plików - mv to w rzeczywistości cukier semantyczny dla cp + rm. Nie można na stałe połączyć między dwoma systemami plików. Miałeś na myśli coś innego?
Daniel Lawson

@Daniel: Mam na myśli wywołanie systemowe rename () i myślę, że niedbałą praktyką jest używanie mv jako cukru dla cp / rm, z powodu problemu z semantyką wokół dowiązań symbolicznych. Powinienem zredagować tę odpowiedź - jest kilka miejsc, w których nie jest to pięknie jasne.
Charles Stewart,

2

Ext4 napotyka ten sam problem, jeśli utworzysz małą partycję i będziesz mieć mnóstwo małych plików, zabraknie Ci i-węzłów, a jeśli masz flex_bgfunkcje, nie możesz użyć tune2fsdo zwiększenia i-węzłów.

Osobiście wybrałbym ext4 na dowolną wersję rieserfs, po prostu wykonaj następujące czynności podczas formatowania:

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

Formatowanie w ten sposób da 33160 i-węzłów na partycji rozruchowej 512M.

Mówię to jako ktoś, kto od lat używa reiserfs, obsługa jądra nie jest tak dobra jak ext *, a system plików ulega z czasem fragmentacji i staje się wolny.


-1

Idź do resiserfs lub jakiegokolwiek innego fs bez ograniczeń i-węzłów. Szczególnie jeśli chodzi o pliki dziennika, prawdopodobnie możesz spakować kilka ton małych nieużywanych plików do jednego większego pliku tar, aby zwolnić sporą liczbę i-węzłów =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.