ssd trim működésének ellenőrzése – rc.local

Fórumok

Szervusztok!

Ezen leírás alapján az /etc/rc.local adatba bevéstem az exit 0 sor fölé ezt: fstrim / . Figyeltem a bootot, rákerestem a /var/log/boot.log fájlban a ’trim’ szóra, de nem leltem a kis ravaszt.
Ugyanígy nem leltem a fstrim -v / parancs beírása után sem.
A parancs – fstrim -v / – működik, ha terminálban adom ki.
Erős kétségek gyötörnek, hogy nem fut le a rendszer betöltésekor. Hogyan tudnám ellenőrizni? (És egybként helyes a gyökérre hivatkoznom olyan esetben, amikor a rendszer ssd-n van, de a /home külön merevlemezen?)
Ubuntu 14.04-ről van szó.
Előre is köszönöm segítségtek!

Hozzászólások

Ubuntun default hetente fut(/etc/cron.weekly/fstrim), minek kell ez? Egyébként ha tényleg kell nézd meg az előbb említett cron szkriptet és úgy add meg az elérési útvonalat és a kapcsolót is ;)

--------------------
http://grant-it.com/

Ha az a cél, hogy a logban lehessen látni az eredményét, akkor én inkább így csinálnám:

/sbin/fstrim -av | /usr/bin/logger -t fstrim --

--
http://eVIR.hu
Elektronikus Vállalatirányítási Információs Rendszer

Köszönöm szépen az ötleteket. Az mennyire elfogadható, ha az rc.local-ba azt írom, hogy fstrim -v / > /home/felhasznalonevem/Asztal/fstrim? És megjelenik az asztalomon az fstrim, és az rc.local kimenete az fstrim nevű fájlban. Tehát működik az rc.local és a beírt fstrim parancs is? Ez végül is nekem elég lenne. Nem figyelném feltétlenül mindig, csak legalább egyszer tudni szerettem volna. Bár biztosan nem elegáns. De megcsinálom a log kimenetes dolgot is.

> Az mennyire elfogadható, ha az rc.local-ba azt írom, hogy fstrim -v / > /home/felhasznalonevem/Asztal/fstrim?

Mivel a parancs root jogokkal fut le a keletkezett fstrim is ezeket a jogokat örökli. Aztán majd csodálkozol hogy egyszerű felhasználóként nem tudod törölni.

No, de most meg úgy tűnik, hogy a frissen felhúzott - xubuntu 14.04-ről 16-04-re frissített - rendszer kikapcsoláskor is eljátssza a trimelést. Az rc.local ezt is tudja? Vagy csak a xubuntu pörgeti túl a dolgot. Meg lehet mondani neki, hogy csak induláskor strapálja magát? Vagy legalábbis a trimelést? A kikapcsolás során megjelenő szöveget nem lehet gondolom sehol megnézni. Elég nehéz a pillanatra megjelenő sort elolvasni. Túl gyors az ssd-m.

Új próbálkozás:
létrehozom a /etc/cron.weekly/trim fájlt ezzel a tartalommal:

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG

De nem ír semmit a trim.log fájlba. Persze lehet, hogy ettől függetlenül lefut a trimelés.

Miután kiadom a run-parts -v /etc/cron.weekly parancsot ezt írja ki:

/etc/cron.weekly/trim: 3: /etc/cron.weekly/trim: cannot create /var/log/trim.log: Permission denied

Miért nem tudja írni a program a log fájlt vajh.

Tipp: user-ként próbálod, az meg ugye nem tud írni a /var/log alá.

Amúgy szerintem azért nem fut le, mert a PATH nincs beállítva, és ezek ugye nem bultin parancsok, hanem valahol a /bin vagy /sbin alatt laknak. Szóval vagy a PATH-t adod állítod be, vagy full path-szal írod a binárisokat.

Már hogy beírom, hogy id? És látnom kéne a kimeneten a trim vagy fstrim parancsot? Az id cron beírására azt üzeni, hogy nincsen olyen felhasználó, hogy cron. Nem ismerem az id parancs világát.
De ha a cron nem rootként futtatja, amit még nem tudok, hogyan tudom rávenni, hogy úgy tegye.

Elnézést, érzésed nem csal meg. Itt azt írják, hogy az id parancs arra szolgál, hogy megtudjam, hogy milyen csoportokban van benne egy felhasználó. Nem tudom, hogy hogyan kell scriptbe illeszteni, hogy megmondja, kinek a nevében fut a script. És a cronnak sem tudom, hogyan lehet elmagyarázni, hogy rott jogokkal futtassa a valahonnan kimásolt scriptet.
Kérlek ajánljatok olyan oldalt, ahol írnak az id ilyen jellegű használatáról. Mi is a kereső szó ebben az esetben az angol nyelvű manualban?

id<enter>
Az eredmény: kiírja, hogy a lefuttatásakor éppen milyen felhasználó nevében futott az id parancs.

Ha ezek után még kihívást jelent, hogy hogyan lehet ezt arra használni, hogy egy adott helyzetben egy adott script milyen felhasználó nevében fut, akkor nem biztos, hogy nem te készülékedben van a hiba.

sudo -s
touch /var/log/trim.log
chmod 666 /var/log/trim.log

aztán bárki tud bele írni. (Amúgy ez veszélyes, csakis tesztelési céllal adj bármire 666-ot.)

Az id-t pedig logold a script-edből.

Amúgy nálam

$ cat /etc/cron.weekly/fstrim 
$ ls -l /etc/cron.weekly/fstrim 
-rwxr-xr-x 1 root root 427 szept 25  2014 /etc/cron.weekly/fstrim
$ cat /etc/cron.weekly/fstrim 
#!/bin/sh
set -e

#... kommentet kiszedtem mert...
exec fstrim-all

Az én scriptem így néz ki épp:

#!/bin/sh
# trim all mounted file systems which support it
# /sbin/fstrim --all || true
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
/sbin/fstrim -v / >> $LOG
id >> $LOG

Ennek talán mennie kéne (az utolsó sor nincsen benne, csak most írtam bele, remélem jól, hogy az id lefusson és kiíródjon a /var/log/trim.log fájlba). De telnek a hetek, és eddig még egyszer sem futott le magától.

Kiadom a sudo /etc/cron.weekly/trim parancsot, a /var/log/trim.log fájl kimenete:

*** Tue, 28 Jun 2016 00:51:37 +0200 ***
/: 186,4 MiB (195477504 bytes) trimmed
uid=0(root) gid=0(root) csoportok=0(root)

$ ls -l /etc/cron.weekly/trim
-rwxr-xr-x 1 root root 181 jún 28 00:51 /etc/cron.weekly/trim

Az ssd kártya egy 128 GB-os Adata Ez állítólag olyan kártya, amit tud automatikusan trimelni az ubuntu, csak az alapértelmezett beállítás nem írt .log fájlt.
Jól tudom, hogy az eredeti /etc/cron.weekly fájl ez?

#!/bin/sh
# trim all mounted file systems which support it
/sbin/fstrim --all || true

Talán akkor ehhez kellene a .log-gal kapcsolatos kitételt illeszteni, tán így?

#!/bin/sh
# trim all mounted file systems which support it
LOG=/var/log/trim.log
/sbin/fstrim --all || true >> $LOG

No, erre a következő a válasz:

$ run-parts /etc/cron.weekly/
/etc/cron.weekly//trim: 5: /etc/cron.weekly//trim: cannot create /var/log/trim.log: Permission denied
/etc/cron.weekly//trim: 6: /etc/cron.weekly//trim: cannot create /var/log/trim.log: Permission denied
run-parts: /etc/cron.weekly//trim exited with return code 2

Mintha a cron.weeklynek nem lenne hozzáférése ahhoz, amihez kell.

Ha sudo-ként futtatom a $ run-parts /etc/cron.weekly/ parancsot, akkor szépen lefut hiba nélkül, beírja a /var/log/trim.log fájlba is. Megjegyzem, ma éjfél után trimeltem, és most ezt írja a logban

*** Tue, 28 Jun 2016 23:01:28 +0200 ***
/: 74,2 GiB (79690518528 bytes) trimmed

Nem sok kicsit ez a trimelt 74,3 GB? Egész nap semmit sem ment a gép.

Az érvényes script:

#!/bin/sh
# trim all mounted file systems which support it
# /sbin/fstrim --all || true
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
/sbin/fstrim -v / >> $LOG
id >> $LOG

chmod parancs kiadva.

Run-parts-os dolog felhasználóként: a log fájlban:

*** Wed, 29 Jun 2016 21:11:01 +0200 ***
+ simán az id parancs kimenete.

és ehhez kapcsolódóan üzenet a parancssorban:

start-stop-daemon: unable to set gid to 12 (Operation not permitted)
run-parts: /etc/cron.weekly//man-db exited with return code 2
fstrim: /: FITRIM ioctl failed: A művelet nem engedélyezett

Run-parts-os dolog rendszergazdiként: a log fájlban:

*** Wed, 29 Jun 2016 21:11:53 +0200 ***
/: 410,6 MiB (430575616 bytes) trimmed
uid=0(root) gid=0(root) csoportok=0(root)

+ simán az id parancs kimenete.

És az mi??? Pont az lenne a lényeg.

féloff: halálosan tele van a t...m azzal, hogy néha segíteni akarok valakinek és akkor az illető sz...t azzal, hogy nem ad választ a kérdésre, 4 kommentbe kerül mire egy egyszerű kérdésre választ kap az ember. (Ennek minősített eset pedig ha ugyanezt még magyar nyelvű hibaüzenetekkel fűszerezi.)
Én ilyen játékban nem kívánok részt venni.

Elnézést kérek, köszönöm szépen a türelmedet.

+ simán az id parancs kimenete:

uid=1000(az_en_felhasznalonevem) gid=1000(az_en_felhasznalonevem) csoportok=1000(az_en_felhasznalonevem),
4(adm),20(dialout),21(fax),24(cdrom),25(floppy),26(tape),
27(sudo),29(audio),30(dip),44(video),46(plugdev),
109(netdev),113(lpadmin),122(scanner),128(sambashare),130(libvirtd)

Ez a kimenet akkor is, ha egyszeri felhasználóként kiadom az id parancsot.

És mi van a discard fstab paraméterrel? Vagy az csak arch-on megy?

Minek ehhez rc.local? Fedorában úgy oldották meg, hogy a util-linux csomag szállítja az fstrim.timer és fstrim.service file-okat. Az fstabból ki kell szedni az összes discard opciót, engedélyezni kell az fstrim.timer-t, majd elindítani:

systemctl enable fstrim.timer
systemctl start fstrim.timer

Megnéztem a unit file-okat, hetente egyszer a boot-olást követő 1 óra múlva fog futni egy fstrim -a parancs, amely minden felcsatolt filerendszerre csinál egy trim-et, amely támogatja azt.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Hm. Milyen adatok lehetnek szükségesek a „valami” megközelítéséhez?