it-swarm-eu.dev

Jak mohu zvýšit počet inodů v souborovém systému ext4?

Minulý týden jsem měl problém (pro mě nový). Mám souborový systém ext4 (Fedora 15). Aplikace spuštěná na serveru se náhle zastavila. Na první pohled jsem problém nenašel.

df ukázal 50% volného místa. Po hledání asi hodinu jsem viděl příspěvek ve fóru, kde ten chlap použil df -i. Tato možnost hledá použití inodů. Systém byl mimo inody, jednoduchý problém, který jsem si neuvědomil. Oddíl měl pouze 3,2M inody.

Nyní jsou moje otázky následující: Mohu, aby systém měl více inodů? Je/lze nastavit při formátování disku? S 3,2M inody, kolik souborů bych mohl mít?

61
piovisqui

Zdá se, že máte mnohem více souborů, než je obvyklé.

Nevím, zda existuje řešení pro dynamickou změnu velikosti tabulky inode. Obávám se, že potřebujete zálohovat svá data, vytvořit nový souborový systém a obnovit data.

Chcete-li vytvořit nový souborový systém s tak obrovskou inode tabulkou, musíte použít volbu '-N' mke2fs (8).

Doporučuji nejprve použít volbu '-n' (která nevytvoří fs, ale zobrazí informace o použití), abyste mohli získat odhadovaný počet inodů. Pak, pokud potřebujete, použijte '-N' k vytvoření souborového systému s konkrétními čísly inodů.

35
cinsk

S 3,2 miliony inodů můžete mít celkem 3,2 milionů souborů a adresářů (ale více pevných odkazů na soubor používá pouze jeden inode).

Ano, lze jej nastavit při vytváření souborového systému v oddílu. Možnosti -T usage-type, -N number-of-inodes nebo -i bytes-per-inode mohou všichni nastavit počet inodů. Obecně používám -i, po porovnání výstupu du -s a find | wc -l pro podobnou sbírku souborů a umožňující určité uvolnění.

Ne, nelze ji na místě změnit na existujícím souborovém systému. Nicméně:

  • Pokud používáte LVM nebo souborový systém je na LUN SAN (buď přímo na LUN, nebo jako poslední oddíl na LUN), nebo máte-li na disku prázdné místo za oddílem, můžete oddíl rozdělit a pak použijte resize2fs rozbalte souborový systém. To přibližně přidá další inody v poměru k přidanému prostoru. Pokud se chcete vyhnout vyčerpání inodů před mezerou za předpokladu, že budoucí soubory mají v průměru přibližně stejnou velikost, nastavte dostatečně vysoké procento rezervovaného bloku pomocí tune2fs -m.
  • Pokud máte dostatek místa a můžete souborový systém přepnout do režimu offline, pak jej přepněte do režimu offline, vytvořte nový souborový systém s více inody a zkopírujte všechny soubory.
  • Pokud jen část souborů používá velké množství inodů a máte dostatek volného místa, vytvořte souborový systém na smyčkovém zařízení zazálohovaný souborem na souborovém systému, vytvořte souborový systém s více inody (a možná i menšími bloky) a přesuňte do ní urážlivé adresáře. To je pravděpodobně zásah do výkonu a problém s údržbou, ale je to alternativa.
  • A samozřejmě, pokud můžete odstranit mnoho nepotřebných souborů, mělo by to také pomoci.
13
david

Jako další řešení bych mohl navrhnout zvážení zabalení obrovských sbírek souborů do nekomprimovaného (!) tar archivu a poté pomocí archivemount jej připojit jako souborový systém. Archiv tar je lepší pro sdílení než obraz souborového systému a poskytuje podobný výkon při zálohování do cloudu nebo jiného úložiště.


Pokud má být kolekce určena pouze pro čtení, může být volba squashfs, ale vyžaduje určité možnosti povolené v jádře a komprese xz je k dispozici pro tar i se stejným výkonem .

12
tijagi

Mám alternativní řešení této situace. Řekněme, že máte 1000 inodů v rozdělení 10G. Ale kvůli limitu inodů nemůžete použít celý prostor partition. Ale v tomto řešení budete moci využít zbývající prostor partition bez formátování it.

$ df -i  # see list ( I need just one free inode here so move just one file into other PARTITION)
/dev/part1  1000 999 1 99.9%     /data

$ dd if=/dev/zero of=/data/new_data
$ mkfs.ext4 /data/new_data
$ mkdir /data1
$ mount /data/new_data /data1

pro trvalou montáž

$ echo "/data/new_data /data1 ext4 defaults 0 1" >> /etc/fstab
7
SANJEET

Tento problém se nedávno objevil při použití aktualizace apt nebo aptitude.

df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  5.1G  2.3G  70% /

df -i

Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1     524288 521497   2791  100% /

Vydaný příkaz:

du /|sort -k1 -n

Většina odhalených souborů byla v podsložkách pro několik verzí jádra uvnitř:

/usr/src/linux-headers

Byly odstraněny tyto podsložky a problém s inody byl vyřešen.

df -i

Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1     524288 104986 419302   21% /
6
kph0x1

zkuste du -s --inodes * 2>/dev/null |sort -g cd do posledního adresáře na výstupu a opakujte.

Úplné zveřejnění: Ne všechny příznaky podpory --inodes Všech operačních systémů pro příkaz du (můj Mac OS ne), ale mnoho operačních systémů Linux ano.

2
Otto Leichliter