Kirjoittaja Aihe: filefrag ja eheyttäminen  (Luettu 4127 kertaa)

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
filefrag ja eheyttäminen
« : 26.07.06 - klo:16.44 »
hello, tuli tämmöinen pikku pulma eteeni eheyttämisen yhteydessä enkä löytänyt mistään oikein kunnollisia ohjeita joten jos joku täällä voisi hieman auttaa tyhmää:

tiedän ettei linux pirstoudu kovin helpolla eikä eheyttäminenkään ole pakollista, mutta luettuani mikrobittiä (6/2006) heräsi ajatus että voisihan sitä kokeilla. siellä oli puhetta tuosta terminaaliin naputettavasta filefrag komennosta ja sen ympärille rakennetuista eheyttämis skripteistä joita pitäisi jostakin internetin syövereistä löytyä. no en kumminkaan mistään näitä skriptejä löytänyt mutta ihan mielenkiinnosta tekisi mieli kokeilla tämmöistä ja puhdistaa vähän konetta joten jos kukaan osaa/jaksaa/haluaa neuvoa niin olisin kovin tyytyväinen.

käytössä oleva ubuntu versio on: Ubuntu 6.06 LTS - The Dapper Drake.

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #1 : 26.07.06 - klo:23.22 »
Näitähän me tehdään vaikka monta päivässä ja -h toimii aina! ;)
Elli nyt sitten internetistä löytyy ainakin yksi skripti.
Tarkistaa kulloisenkin hakemiston ja sen alihakemistojen tiedostot Ja osaa olla hiljainen (silent), normaali tai äänekäs (verbose).

Koodia: [Valitse]
#!/usr/bin/perl
# frag or not? [260706.2 : raimo (020806.1)]
# sudo cp THISFILE /usr/bin/frag
# sudo chmod 755 /usr/bin/frag
# say frag [-s(silent) -v(verbose)] and files in current directory will be checked
# -s = silent
# -v = be verbose

use strict;
my $f = 0;
my $cnt = -1;
sub run;

 exit print "frag [-s -v]\n" if grep/^-h$|help/, @ARGV;
 my $verb = "-v" if grep/^-v$|^verbose$/, @ARGV;
 my $silent = 1 && print "wait..\n" if (grep/^-s$|^silent$/, @ARGV) && $verb ne "-v" && $ENV{"PWD"} ne "/";

 run "sudo echo \"\"";
  my @files = `sudo find $ENV{"PWD"} -xdev -type f`;
 run "sudo filefrag $verb $_" foreach(@files);

sub run{
my @t = split/\s/, shift;

return 0 if !-f $t[int(@t) - 1];
  my @d = split /:\s|\sextents/, `@t`;

 foreach(@d){
  $f  = $f + $_ - 1 if $_ > 1 && $_ =~ /^\d+$/?1:0;
 }  
 
 print "$cnt/$f @d" if $silent != 1;
  $cnt++;
}

print "\n checked $cnt files. $f frags found, 0 frags is perfect\n\n";
exit 0;

filefrag siis "tarkistaa" tiedoston kerrallaan, ja tämä härpäke yhteenlaskee sen löydökset,
frag -v näyttää tarkempaa analyysiä ja frag -s ei näytä muuta kuin loppulaskelman.
frag -v > ~/frags.txt aiheuttaa sen että palaute menee tiedostoon ~/frags.txt josta sitä on helppo tarkastella.

edit: versio 2, tarkistaa myös alihakemistot.
Juurihakemistosta (/) komennettuna käy siis läpi koko systeemin, saattaa jonkin aikaa kestää se touhu. ;)
Voi keskeyttää Ctrl+C jos kyllästyttää, alussa kannattaa odotella rauhassa kunnes find löytää kaikki tiedostot, vasta sitten alkaa vipellys käymään.

Se että miten tuloksia tulisi analysoida onkin sitten jo kokonaan toinen asia.
Ehkä parempi jos ei analysoi ollenkaan, vaan uskoo sen että Linuksin tiedostosysteemit on vain kertakaikkiaan ylivoimaisia, kun niitä verrataan erään kaupallisen väkertäjän tiedostojärjestelmiin. 8)

edit2: tarkistin oman koneen muutaman kerran, aikaa kuluu ~ puoli tuntia/kerta ja tulos aina sama:
checked 75812 files, 3252 frags found 26.07.2006 (laskuvirhe)
checked 76340 files. 2377 frags found, 02.08.2006 (laskuvirhe korjattu)

Tilasto jatkuu...

edit3:
eheyttämiseen on olemassa työkalu nimeltään defrag, mutta sitä ei saa ajaa mountatuissa asemissa!

Ja tämä manuaalin varoitusteksti aiheuttanee sen että normaalisti varovainen yksilö sitä ei edes yritä ajaa.
Remember,  if  defrag fails to complete for any reason (including power
glitches, kernel bugs etc.), you will be left with a terminally  sick,
and  possibly completely unreadable, filesystem
, so backup any valuable
data before you start.

Minä en lähtisi tuota missään normaalitilanteessa ajamaan, sanokoon mikrobitti mitä hyvänsä. ;)

edit4:  muokattu: tarkistus että ajettava on tiedosto yms.

« Viimeksi muokattu: 02.08.06 - klo:12.55 kirjoittanut raimo »
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #2 : 27.07.06 - klo:17.19 »
kiitoksia vain neuvoista, en nyt vain pysy aivan mukana että pitäisikö tuo rimpsu kopioida suoraan terminaaliin vai kirjoitella lause kerrallaan ja muokata rivit henkilökohtaisesti? entäs sitten korjaako/järjestääkö tuo skripti pirstoutuneet tiedostot vai kertooko se vain niiden määrän? pyydän nyt tietämättömyyttäni anteeksi mutta en aivan sisäistänyt pointtia vaikka ohjeissa ei mitään vikaa ollutkaan.  ???

Tuplanolla

  • Käyttäjä
  • Viestejä: 1420
  • Reg. Linux user #423604
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #3 : 27.07.06 - klo:18.01 »
Elikkäs tuo raimon skripti laitetaan näin:
Avaa joku haluamasi tekstieditori pääkäyttäjän oikeuksin ja kopioi ja liitä tuo valkoisella pohjalla oleva sinne. Tallenna tiedosto hakemistoon /usr/bin nimellä frag (koko komento geditille on sudo gedit /usr/bin/frag) Nyt kun kirjoitat päätteeseen (ei väliä missä kansiossa) frag, ohjelman (pitäisi) käynnistyä.
Lisää [ratkaistu] ketjun ensimmäisen viestin otsikkoon, kun ongelma ratkeaa!

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #4 : 27.07.06 - klo:18.04 »
Tuplanolla jo vastasikin, mutta kerkesin kirjoittaa, joten postitan myös. :)

Sepä on Perl-ohjelma joka kopioidaan esim. /usr/bin hakemistoon nimellä frag, ja ko. tiedoston
oikeudet asetetaan ajettavaksi, esim 751 tai 755, sitten se ajetaan halutussa hakemistossa (siis hakemistossa joka halutaan tarkistaa, jos se haluttu hakemisto on / kaikki tiedostot ko. levyllä tarkistetaan).

Tallenna tuo koko juttu kotihakemistoosi (~/) frag.txt tiedostoksi,  (tai tee kuten Tuplanolla neuvoi, sama se)
ja sitten komentelet terminaaliin nämä komennot:
Koodia: [Valitse]
sudo cp ~/frag.txt /usr/bin/frag
sudo chmod 755 /usr/bin/frag
Jos tallennat geditillä tms. niin muista silti muuttaa oikeudet tuolla chmod -komennolla.

Nyt matkustat haluamaasi hakemistoon, ja komennat frag, jolloin filefrag tarkistaa tuon skriptin ohjastamana kaikki tiedostot ko. hakemistossa ja sen alihakemistoissa.

Filefrag on siis vain tarkistin, se ei osaa mitään muuta, eikä millekään muulle ole mitään tarvetta edes.
Linux kun ei ole Windows, tälläkään osa-alueella .. onneksi. ;)

Voit siis ihan rauhassa käyttää konettasi, eikä tarvitse huolehtia fragmentoitumisista.
Kuten jo kirjoitin defrag -työkalu on olemassa (sudo apt-get install defrag),
mutta sen käyttöön liittyy niin paljon kauheita riskejä, että se kannattaa suosiolla unohtaa.
Etenkin kun sen käyttöön ei ole mitään tarvetta edes, siis Linuksissa.  :)

Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #5 : 30.07.06 - klo:21.33 »
ok, kiitokset molemmille varsin kattavista neuvoista ja opastuksesta, nyt luullakseni käsitin tämän oikein mutta tuli toinen mutka matkaan. on todella ikävää joutua jatkuvasti huomaamaan oma kyvyttömyytensä kun esim. text editor valittelee siitä ettei ole oikeuksia tallentaa tiedostoja tiettyihin hakemistoihin. ilmeisesti mulla ei ole asiaankuuluvia root-oikeuksia jotka olisi kiva saada säädettyä kuntoon. jos nyt joku viellä jaksaisi avittaa siinäkin niin olisi hieno homma.

tämä topikki pitäisi varmaankin kohta siirtää aloittelijoiden alueelle kun tuntuu etten juurikaan onnistu omatoimisesti tämänkaltaisia juttuja säätämään, silti kiinnostus linuxia ja ubuntua kohtaan on pirun suuri koska windowsiin en enään palaa ja olisin valmis näkemään vaivaa että nämä hommat oppisin kunnolla.  :-\

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #6 : 30.07.06 - klo:21.42 »
on todella ikävää joutua jatkuvasti huomaamaan oma kyvyttömyytensä kun esim. text editor valittelee siitä ettei ole oikeuksia tallentaa tiedostoja tiettyihin hakemistoihin.

tavallinen käyttäjä ei saa oletuksena muokata tiedsotoja kuin omassa kotihakemistossaan, eikä sen kuuluisikaan saada.

ilmeisesti mulla ei ole asiaankuuluvia root-oikeuksia jotka olisi kiva saada säädettyä kuntoon.

jos tavallinen käyttäjä saisi kirjoitta minne tahansa olisivat säädöt hurjan pielessä, jos taas käyttäisit konetta koko ajan rootin oikeuksin, olisi tapasi hurjan pielessä.

oikedet ovat ubuntun oletusasennuksen jälkeen oletuksena kunnossa. sinun pitää vaan ottaa erikseen rootin oikeudet käyttöön yrittäessäsi tehdä jotain järjestelmän ylläpitotehtäviä. komentorvillä sitä varten on sudo ja graafisella puolella gksu. periaatteessa terminaaliemullattorista pystyy käynnistämään minkä tahansa ohjelman sudon avulla rootin oikeuksin.

tämä topikki pitäisi varmaankin kohta siirtää aloittelijoiden alueelle kun tuntuu etten juurikaan onnistu omatoimisesti tämänkaltaisia juttuja säätämään,

jos tämän kaltaisella jutulla tarkoitat levyjen defragmentoimista, niin en olisi lainkaan huolissani. sitä ei tarvitse tehdä ja ensimmäisestä viestistä päätellen olit itsekin tietoinen siitä.

silti kiinnostus linuxia ja ubuntua kohtaan on pirun suuri koska windowsiin en enään palaa ja olisin valmis näkemään vaivaa että nämä hommat oppisin kunnolla.

asenne on ainakin oikea ;) eikä maalin saavuttaminenkaan ole mahdotonta (ei oikeastaan edes vaikeaa) jos jaksaa hitusen lueskella ohjeita ja opetella tekemään asiat kunnolla.
Janne

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #7 : 01.08.06 - klo:01.02 »
en nyt tiedä mikä tässä mättää kun en saa millään hommaa pyörimään. tallensin frag -tiedoston koti hakemistoon ja kun tein ohjeiden mukaan (tietääkseni) niin kyseinen frag.txt tiedosto vain aukesi mutta mitään ei tapahtunut. en myöskään voi tallentaa/siirtää ko. tiedostoa /usr/bin -hakemistoon. joten sitä kautta en saa sitä toimimaan. kokeilin kyllä chmodia ja kaikkea mahdollista mitä keksin mutta ei onnistu sitten millään. voisin saadakin skriptin toimimaan jos saisin tallenettua frag -tiedoston tuonne /usr/bin -hakemistoon mutta kun ei.

p.s - tämä ei ole laiskuutta tai sitä etten jaksa yrittää ja haluan tehdä kaiken mahdollisimman helposti ruikuttamalla muilta apua mutta jos noita ohjeita voisi vielä hieman selventää (jos se on enään mahdollista)..  :-[

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #8 : 01.08.06 - klo:08.53 »
en nyt tiedä mikä tässä mättää kun en saa millään hommaa pyörimään. tallensin frag -tiedoston koti hakemistoon ja kun tein ohjeiden mukaan (tietääkseni) niin kyseinen frag.txt tiedosto vain aukesi mutta mitään ei tapahtunut. en myöskään voi tallentaa/siirtää ko. tiedostoa /usr/bin -hakemistoon. joten sitä kautta en saa sitä toimimaan. kokeilin kyllä chmodia ja kaikkea mahdollista mitä keksin mutta ei onnistu sitten millään. voisin saadakin skriptin toimimaan jos saisin tallenettua frag -tiedoston tuonne /usr/bin -hakemistoon mutta kun ei.

p.s - tämä ei ole laiskuutta tai sitä etten jaksa yrittää ja haluan tehdä kaiken mahdollisimman helposti ruikuttamalla muilta apua mutta jos noita ohjeita voisi vielä hieman selventää (jos se on enään mahdollista)..  :-[

Onko sinulla sudo-oikeudet? Nimittäin silloin se menee sinne hakemistoon näin (kahdella vaihtoehtoisella tavalla).

Avaa terminaali (vaikka gnome-terminal) menusta
(Pääte se kai on suomennetussa Ubuntussa, Terminal alkukielisessä)

Tarkista että frag.txt on kotihakemistossasi, komenna terminaaliin:
ls -l ~/frag.txt pitäisi näkyä tämänkaltainen rivi tuon komennon palautteena:
-rw-r--r-- 1 drone drone 884 2006-08-01 08:56 /home/drone/frag.txt

Jos frag.txt on kotihakemistossasi  (/home/sinun_tunnus) niin kopioi komennot terminaaliin tästä alta
siten että maalaat rivin kerrallaan ja painat Ctrl+C ... sitten gnome-terminal:issa painat Shift+Ctrl+V ja Enter (tai hiiren oikealla napilla selaimessa Copy -> terminaalissa Paste -> näppäimistön Enter) jolloin komentorivi suoritetaan.
Koodia: [Valitse]
sudo cp ~/frag.txt /usr/bin/frag
sudo chmod 755 /usr/bin/frag

~/ tilalla voit siis käyttää polkua /home/sinun_tunnus mutta ~/ toimii sekin
Siis rivi kerraltaan nuo komennot terminaaliin ja Enterin painallus kummankin jälkeen.
Kun sudo kysyy salasanaa, syötä oma salasanasi

kerrataan, täsmälleen näin pitää komennot komennella:
sudo cp ~/frag.txt /usr/bin/frag -> Enter
sudo chmod 755 /usr/bin/frag -> Enter
Jos tulee virheilmoitus lue se ja liitä tänne, maalaa terminaalissa teksti ja paina Shift+Ctrl+C ja täällä Ctrl+V
(tai oikeankorvan-menusta terminaalissa Copy  ja täällä Paste)

3. kerta (kertaus on opintojen äet).  ;)
sudo cp /poku/mistä/kopioidaan/tiedostonimi /polku/johon/kopioidaan/tiedostonimi
sudo chmod 755 /poku/missä/tidosto/on/tiedostonimi

cp komento kopioi halutun tiedoston johonkin muualle halutulla nimellä tai samalla nimellä ja chmod muuttaa oikeudet ajettaviksi.

2. tapa
Jos tallennat sen geditillä /usr/bin hakemistoon, pitää gedit käynnistää ennen toimenpidettä sudolla.
ts. EI menusta avaamalla vaan komentoriviltä näin: sudo gedit ja nyt kopioit rivit noin avaamaasi gedittiin. (tai avaat gedit:iin sen frag.txt tiedoston kotihakemistosta tai missä se nyt onkin)
ja sitten tallennat sen hakemistoon /usr/bin nimellä frag eli /usr/bin/frag

Sitten geditistä pois ja komentoriville
Koodia: [Valitse]
sudo chmod 755 /usr/bin/frag

Sitten tarkistat että kaikki on oikein, kometoriville ts. terminaaliin täsmälleen tämä komento:
ls -l /usr/bin/frag
Pitäisi palauttaa vain 1 rivi ja sen pitää olla tämän näköinen:
-rwxr-xr-x 1 root root 885 2006-07-27 10:15 /usr/bin/frag
päiväys ei luonnollisesti ole sama, kokokin (885) voi olla eri.

nyt se käynnistyy mistä tahansa komennolla frag (siis ellei virheitä tullut, ja ohjelma on kunnossa.) :)


Tiedoston /ohjelman) voi kyllä ajaa muistakin hakemistoista, tai itseasiassa hakemiston ulkopuolelta, kunhan tiedoston oikeudet on ajo-oikeudet. Jos ko. ajeltava ohjelma (ohjelma.pl) on kotihakemistossa komenna nämä:
Koodia: [Valitse]
cd
chmod 755 ohjelma.pl
./ohjelma.pl
Jossa cd -komento siirtää sinut kotihakemistoosi väistämättä, ja chmod muuttaa tiedoston oikeudet ajettavaksi ja
./ohjelma.pl käynnistää ohjelman. huomaa ./ merkit ennen tiedostoa jolloin se ajetaan "hakemiston ulkopuolelta", jos ne jättää pois homma ei toimi.

Mutta selkeyden ja helppouden ja yms. kannalta kaikki ajettava on hyvä olla sellaisessa hakemistossa joka on "polussa"  /usr/bin on tälläinen hakemisto. Silloin komennon eteen ei ajohetkellä tarvitse kirjoittaa polkua, vaan se toimii mistä hyvänsä hakemistosta käsin pelkällä nimellä, tässä tapauksessa frag.

« Viimeksi muokattu: 01.08.06 - klo:09.58 kirjoittanut raimo »
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #9 : 02.08.06 - klo:01.23 »
okei okei, nyt se ainakin lähti pyörimään, alku näytti melko lupaavalta mutta sitten rupesi tulemaan statfs: no such file or directoty ja syntax error viestejä. uu..

ps. myönnän kyllä etten mikään virtuoosi tämän linuxin kanssa ole mutta tiedän kumminkin copypastet sun muut. ehkä pieni kuittailu kumminkin on aiheellista kun kesti näin kauan tajuta tuo  ;)
« Viimeksi muokattu: 02.08.06 - klo:01.26 kirjoittanut drone »

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #10 : 02.08.06 - klo:11.03 »
okei okei, nyt se ainakin lähti pyörimään, alku näytti melko lupaavalta mutta sitten rupesi tulemaan statfs: no such file or directoty ja syntax error viestejä. uu..

ps. myönnän kyllä etten mikään virtuoosi tämän linuxin kanssa ole mutta tiedän kumminkin copypastet sun muut. ehkä pieni kuittailu kumminkin on aiheellista kun kesti näin kauan tajuta tuo  ;)
Tarkoitus ei ole kuittailla, ainakaan isommin...  8)
Vaikeus on siinä että ei aina tiedä kysyjän tietämystasoa.

Tuota, ainakin itselläni tuo kysyy joskus toisen kerran sudo salasanaa hetken raksutettuaan, en tiedä miksi, mutta niin vain tekee se sudo. Jos siihen sitten epähuomiossa heittää vaikka enterin.
Toisaalta jokainen rivi kyselee sudon uudelleen, jos se hukkuu .. en teidä. :)

Eihän sinulla ole esim. Windows asemaa mountattuna, tosin tuon -xdev vipusen pitäisi jättää se pois, mutta umount varulta sille jos on mountattuna.

Lisäsin nyt vielä tarkistuksen että ko. tarkistettava asia on tiedosto, vaikka findin -type f pitäisikin se jo tehdä.
Ja hiukan laskureita näkyviin reaaliaikaisesti, tarkistetut tiedostot/osumat.

Kopioi alla oleva sub run lohko olemassa olevan sub run lohkon tilalle /usr/bin/ frag tiedostoon.
HUOM! sudoa tarvit siihen että saat muokattua tiedostoa. (vaikka sudo su gedit /usr/bin/frag exit -metodilla)

Koodia: [Valitse]

sub run{
my @t = split/\s/, shift;

return 0 if !-f $t[int(@t) - 1];

  my @d = split /:\s|\sextents/, `@t`;
 
 foreach(@d){
  $f  = $f + $_ - 1 if $_ > 1 && $_ =~ /^\d+$/?1:0;
 }  
 
 print "$cnt/$f @d" if $silent != 1;
  $cnt++;
}

tai ota vaikka koko juttu uudelleen, muutan tuon tuohon alkup. saman tien.
Ja korjasin (?) samalla pienen laskuvirheen joka oli frag-laskimessa (-1).

Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #11 : 02.08.06 - klo:22.05 »
noniin nyt sain ajettua tuon skriptin onnistuneesti mutta siinä ei kestänyt kuin muutama minuutti, jotenkin oudon nopeasti ajoi sen.
pirstoutumia löyty kyllä huolestuttavan paljon (checked 4712 files. 129086 frags found, 0 frags is perfect  :o), erikoinen homma sillä koneeni on muuten aivan kunnossa, kaikki asetukset ovat kunnossa ja kaikki on muutenkin toiminut aivan moitteetomasti.

juu mulla ei oo tässä koneessa edes windowsia että sen ei pitäisi tuottaa mitään ongelmia.

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #12 : 02.08.06 - klo:22.48 »
joo, ensin pitää siirtyä juurihakemistoon komennolla cd / jotta kaikki tiedostot käydään läpi.
Outoja lukemia näyttää kylläkin, tosin yksikin sekaisin oleva tiedosto nostattaa sitä nopeasti luulen ma.
Silmä kovana vahtimaan niitä vipeltäviä numeroita. :)

Voishan tuohon tietty lisätä vielä jonkin rajan että se työntää taulukkoon niiden nimet joiden frag > raja.
Ja sitten lopuksi esittelee pahoin-frakkiutuneet -listan. Huomenna syntyy se.
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

drone

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Re: filefrag ja eheyttäminen
« Vastaus #13 : 04.08.06 - klo:00.44 »
ajoin tuon frag -ohjelman vielä toiseen kertaan ja fragien määrä oli noussut yli 190.000 yhdessä yössä, weird..