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

 ( EdgarPE | 2011. március 1., kedd - 11:02 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Az a journal meg az inode-ok számára fenntartott hely kb...
--
Discover It - Have a lot of fun!

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.

A bytes-per-inode aránnyal meg a kis file-ok tárolása miatt veszik el kb ugyan ennyi, vagy még több.
Szerintem sem nagy veszteség.

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.

Hasznos, köszi.

+1

Az mke2fs-nek van egy -T opciója is ("usage type"). Ez egy "paraméter-profilt" választ az /etc/mke2fs.conf-ból. Például:

        largefile4 = {
                inode_ratio = 4194304
                blocksize = -1
        }