931 GB ext4 partíció, "elveszett" 15 GB

Adott egy külső USB-s 1TB-os merevlemez, de ha egy nagy ext4-et teszek rá, akkor egy csomó tárterület eleve foglalt, akkor is ha a root-nak fenntartott blockokat nullára veszem.

A tényleges méret 931.51 GB (1000^4 byte és még egy kevés). Ha így hozom létre az ext4-et

# mkfs.ext4 -j -O extent /dev/sdb1
# tune2fs -r 0 /dev/sdb1

akkor is csak 917 GB szabad területem van. Hova tűnik 15 GB és hogyan tudnám visszaszerezni?

Gondolom az inode-ok foglalják el ezt a helyet, de mit lehetne tenni, a 15 GB leszorítására? Alapvetően nagy fájlokat (100MB-5GB nagyságrend) fogok tárolni rajta, bár lesznek kicsi fájlok is (10KB-).

Hozzászólások

Esetleg trükközhetsz a blokkmérettel (

-b

), a bytes-per-inode aránnyal (

-i

), vagy a journal méretével (

-J size=...

), de szerintem jobb, ha a fentit egyszerűen elfogadod. 15/931.51 ~= 1.61%; ekkora az ext4 vesztesége és kész. Ha ennél jobb kell, akkor (gondolom) az xfs jöhet számításba.

Na, akkor az "archívum" kedvéért leírom a tapasztalatokat:

Valóban az inode-ok viszik el a már említett 15GB-ot. Lehet, hogy a teljes méretnek csak a 2%-a, de engem akkor is zavart, mert nettó 15GB sok, szvsz.

A block mérettel, az egy inode-ra eső mérettel és a journal mérettel nem akartam játszani. Maradt tehát az, hogy csökkentsem az inode-ok számát. Röviden az inode-ról annyit, hogy a partíción minden egyes új fájlnak vagy könyvtárnak szüksége van egy ilyenre, ha nincs szabad inode, nem lehet létrehozni új fájlokat. És persze particionálás után már nem lehet megváltoztatni az inode-ok számát, tehát okosan kell kitalálni a számukat.

Megnéztem az aktuális rendszerwinón (ami majdnem tele van) található inode számokat így:
#tune2fs -l /dev/sda3 | grep -i inode
Nálam 4.2 millió inode van, ebből 4.0 millió szabad. Ebből én arra jutottam, hogy az új winyón ~8 millió inode nekem több mint elég lesz.

Ezt pedig a fent említett mke2fs (vagy mkfs.ext*) -i paraméterrel lehet beállítani. Ennek a paraméternek a neve bytes-per-inode, azaz a partíció méretét elosztja ezzel a számmal és annyi inode lesz. Alap esetben ez 16384, azaz 16 KB-onként hoz létre egy inode-ot. Hát én ezt beállítottam 131072-ra, azaz 8-szorosra. Így a 15 GB "elveszett" területet lefaragtam kb. 2GB-ra.

Ez így most nekem jó, mivel nem egy szerver winyóról van szó, amit übersz*pás újraparticionálni. Ha netán kimeríteném a 8 millió inode-ot (nem fogom), csak fogom az adatokat, lementem, újraparticionálom a winyót, majd vissza az adatokat.