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?
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ů.
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ě:
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
.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 .
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
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% /
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.