Problem sa ogromnim brojem fajlova i RW nad particijom

Imam Linux na koji se na dnevnoj bazi pise i brise po par desetima hiljada (malih) fajlova, pa gledam kako da OS-u olakšam život.
Jedna od opcija je i defragmentacija, mada u principu za ex3 i ext4 FS važi da im defragmentacija nije potrebna, ali u mom slučaju, s obzirom na količinu RW na određenim particijama, valja stvari proveriti.

1. Odrediti tip fajl sistema (ex2, ext3, etc) :
Napomena : RedHat je uvek na ext3 (ili 4)…..
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 20G 3.8G 16G 20% /
/dev/sda1 190M 13M 168M 7% /boot
none 506M 0 506M 0% /dev/shm
/dev/sda2 30G 175M 29G 1% /particija1
/dev/sda3 20G 173M 19G 1% /particija2
/dev/sda6 3.0G 69M 2.7G 3% /tmp
/dev/sda5 9.7G 500M 8.8G 6% /var
# file -s /dev/sda2
/dev/sda2: Linux rev 1.0 ext3 filesystem data (needs journal recovery) (large files)
Ili
# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda8 ext3 20806268 3888432 15869260 20% /
/dev/sda1 ext3 194469 12676 171752 7% /boot
none tmpfs 517292 0 517292 0% /dev/shm
/dev/sda3 ext3 20806268 176860 19580832 1% /particija2
/dev/sda6 ext3 3044176 70184 2820572 3% /tmp
/dev/sda5 ext3 10160440 513200 9135172 6% /var
/dev/sda2 ext3 31209468 178884 29457720 1% /particija1

2. Videti nivo fragmentacije za particiju :
Particija koju proveravamo MORA biti unmounted!!!!
# e2fsck -fptvd /dev/sda2
Peak memory: Memory used: 272k/3044k (68k/205k), time: 7.99/ 0.14/ 0.28
236 inodes used (0%)
1 non-contiguous inode (0.4%)
# of inodes with ind/dind/tind blocks: 0/0/0
106674 blocks used (1%)
0 bad blocks
1 large file

221 regular files
6 directories
0 character device files
0 block device files
0 fifos
0 links
0 symbolic links (0 fast symbolic links)
0 sockets
——–
227 files
Može se koristiti i komanda fsck -nvf /dev/sda2, koja daje manje-više isti izlaz.
Važne su stavke za non-contiguous inodes i files, i taj prateći procenat je procenat fragmentacije particije. Što je procenat manji, to bolje.
Ako je potrebno uraditi defragmentaciju :
a. ext3 nema native alate za defragmentaciju
b. ext3 ne podržava online defragmentaciju, znači data particija MORA biti unmounted
c. defragmentacija se ne može (kvalitetno) uraditi bez određene količine slobodnog mesta na datoj particiji
d. ako se fajlovi stalno smenjuju na particiji (kao kod mene) defragmentacija nema baš mnogo smisla, ali podešavanje vremena/perioda provere particije ima (vidi dalji tekst)

3. Videti generalno stanje particije :
Napomena : ova analiza se radi sa mounted fajl sistemom.
# tune2fs -l /dev/sda3
tune2fs 1.35 (28-Feb-2004)
Filesystem volume name: /particija1
Last mounted on:
…..
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
…..
Last write time: Mon Jul 14 09:03:33 2014
Mount count: 5
Maximum mount count: 29
Last checked: Thu Feb 20 10:54:26 2014
Check interval: 15552000 (6 months)

Next check after: Tue Aug 19 11:54:26 2014
…..
a. Max mount count je broj mount-ovanja posle kojeg dolazi do automatske provere FS (menja se sa #tune2fs -c 20, da se proverava na svakih 20 mount-ovanja).
b. Check interval – max vreme između dve provere FS-a (menja se sa # tune2fs -i 3m, da se stavi na 3 meseca).
U mom slučaju to su dve veličine koje bi trebalo staviti da budu manje nego što je default :
Max mount count – 10
Max vreme između provera FS-a – 1 mesec
c. Error behavour – kako se kernel ponaša ako naleti na grešku u FS-u, “Continue” je kako treba da je postavljeno.
d. Kada je u pitanju folder sa velikim brojem fajlova (kao kod mene), indeksiranje je dobra ideja (na unmounted FS-u!!) :
# tune2fs -O dir_index /dev/sda2
Posle ovoga :
# e2fsck -D -f /dev/sda2
D je optimizacija direktorijuma, f forsira proveru fajl sistema.
e. Iz stavke “Filesystem features” se vidi da je journaling omogućen. U slučaju velike količine RW po disku (moj slučaj) dodatne performanse se mogu dobiti ako se omogući opcija “journaling everything” (unmounted FS!!!) :
# tune2fs -O has_journal -o journal_data /dev/sda2

Napomena : izmene raditi SAMO dok je FS unmounted!!!!! Takođe posle izmena komandom tune2fs, potrebno je proći komandom e2fsck, da bi se izmene “primile”.

Dobar link.
I još jedan odličan link.