Page 1 of 2

Salamander vždy fragmentuje soubory

Posted: 29 Dec 2008, 21:21
by zarevak
Dobrý den,
nejdřív mne toto chování udivilo, ale nakonec se ukázalo jako vždy opakovatelné: Salamander při kopírování rozdělí soubor na dva fragmenty - první fragment velký jeden cluster a druhý fragment obsahuje celý zbytek.

Explorer i Total Commander kopírují na mém systému soubory v jednom celku. Soubor se do volných bloků vejde celý.

Code: Select all

Mapa disku před kopií:
XXXXXXXX________
__XXX_______XXXX

Mapa disku po kopírování Salamanderem z jiného disku:
XXXXXXXX2222____
__XXXX1_____XXXX

Mapa disku po kopírování Explorerem z jiného disku:
XXXXXXXX________
__XXXX11111_XXXX
Legenda:
X - původní data
_ - volné místo
1 - první fragment
2 - druhý fragment
Systém: Windows XPSP3 EN Pro; Salamander 2.51; NTFS s 4KB clustery

Posted: 29 Dec 2008, 23:22
by zarevak
Tak jsem si na Salamandera posvítil Process Monitorem a objevil jsem něco divného:

Code: Select all

SetEndOfFileInformationFile(soubor.ext, 60 772)
WriteFile(soubor.ext, Offset: 0, Length: 1)  -- zápis jednoho Byte?
SetEndOfFileInformationFile(soubor.ext, 1)  -- zpět na jeden Byte??
QueryStandardInformationFile(soubor.ext) -- AllocationSize: 4 096, EndOfFile: 1, NumberOfLinks: 1, DeletePending: False, Directory: False
SetEndOfFileInformationFile(soubor.ext, 60 772) -- znova správně?
Total Commander nastaví velikost souboru jen jednou.

BTW: Toto fórum nepodporuje soubory s příponou CSV :(

Posted: 05 Jan 2009, 08:25
by Petr Solin
Koukal jsem na to a podle kodu se dela nastaveni souboru na plnou velikost, pak seek na zacatek souboru a zapis jednoho bytu, nastaveni konce souboru a test velikosti souboru. Za jistych podminek se totiz deje to, ze misto zapisu na zacatek souboru se zapisuje na konec, tedy vysledek teto operace je soubor o velikosti o jeden byte vetsi nez je zdrojovy soubor (v teto situaci nelze pouzit nastavovani velikosti souboru predem). Tento test se dela jen pro prvni soubor copy/move operace. Casem udelam testy a proverim proc to dela to, co popisujete a pokusim se to opravit. Teoreticky by to delat nemelo, protoze by se soubor mel alokovat v plne velikosti, a pak teprve zkratit.

Posted: 05 Jan 2009, 14:57
by Tomas Kopal
zarevak wrote: BTW: Toto fórum nepodporuje soubory s příponou CSV :(
Opraveno, diky za upozorneni.

Posted: 05 Jan 2009, 23:59
by zarevak
Zápis jednoho byte tedy rozumím, ale nechápu, proč je v záznamu pak hned nastavení velikosti na jeden byte:

Code: Select all

SetEndOfFileInformationFile(soubor.ext, 1)  -- zpět na jeden Byte?? 
Je možné, že to je vedlejší účinek nějaké knihovní funkce nebo toho zjištění velikosti... (Ale to zjištění velikosti je asi až to následné QueryStandardInformationFile(soubor.ext))

Posted: 09 Feb 2009, 11:20
by iX
Take mi to dela. copy/move vzdy rozdeli soubor na 2 casti - malou a velkou. vidim to pak na mape v O&O defragu.

Posted: 18 Mar 2009, 17:53
by zarevak
Petr Solin wrote:Mam tenhle problem hodne vysoko na todo, opravim to fragmentovani ... (i kdyz ho tu bohuzel nejsem schopen reprodukovat).
Původně jsem podezíral O&O Defrag, ale teď jsem reprodukoval problém na mých virtuálních Windows 2000 s Altap Salamanderem 2.52 beta 1, kde není O&O Defrag nainstalovaný:

1) Pustím Salamander
2) Stáhnu Contig.zip ze Sysinternals
3) Vstoupím Salamanderem do contig.zip archivu a dám Ctrl+C na contig.exe
4) Ve složce s archivem vytvořím testovací adresář, kam contig.exe vybalím pomocí Ctrl+V
5) Spustím contig.exe -a contig.exe (přpínač -a jen zobrazuje informace)
x) Výsledek: Average fragmentation: 2 frags/files

Vzhledem k tomu, že se jedná o 200kb velký soubor, je mizivá pradvěpodobnost, že by se nikam v celku nevešel.

EDIT: Pomocí stejného postupu reprodukováno na Visual Studio 2010 CTP Virtual PC.

Posted: 18 Mar 2009, 18:03
by Petr Solin
Ted mi to tu fragmentuje i pri beznem kopirovani, takze je to reprodukovanelne, dik. Netusim, proc mi to predtim nedelalo, asi nejaka moje chyba.

Re: Salamander vždy fragmentuje soubory

Posted: 26 Apr 2009, 19:30
by xm
Je neco noveho s resenim tohoto problemu?

Musel jsem davat do kupy par uzivateli zasr... PC. Krome jineho extremne fragmentovane disky. Nektere soubory ani nesly defragmentovat (nap. gigove outlook.pst aj.), tak jsem je presunul na jiny disk, pak puvodni disk defragmentoval a tyto velke soubory nakopiroval zpatky. Jake bylo moje prekvapeni, kdyz defrag ukazal, ze jsou znovu fragmentovane (kontinualniho mista na disku bylo dost). Tak delete a znovu nakopirovat zpet, tentokrat Win Explorerem. Vysledek = zadna fragmentace.

Uz s tim neco udelejte, neni mozne, aby souborovy manazer fragmentoval soubory, kdyz nemusi!

Re: Salamander vždy fragmentuje soubory

Posted: 26 Apr 2009, 21:21
by Jan Rysavy
xm wrote:Jake bylo moje prekvapeni, kdyz defrag ukazal, ze jsou znovu fragmentovane (kontinualniho mista na disku bylo dost).
O jaký šlo operační systém?
Salamander byl v jaké verzi?
Na kolik fragmentů byly soubory rozsekány (řádově)?
Čím sledujete fragmentaci souborů?
Šlo předpokládám o NTFS?

Re: Salamander vždy fragmentuje soubory

Posted: 26 Apr 2009, 22:35
by xm
Jan Rysavy wrote:
O jaký šlo operační systém?
Salamander byl v jaké verzi?
Na kolik fragmentů byly soubory rozsekány (řádově)?
Čím sledujete fragmentaci souborů?
Šlo předpokládám o NTFS?
- Win XP Pro SP3 CZ x86
- Sal 2.51
- ~2GB soubor na 12 fragmentu
- MS XP standardni defrag, disk byl pred kopirovanim vicekrat defragmentovany (v defrag-logu nakonec zadna fragmentace krome MFT a nejakych pidi-souboru), po nakopirovani 2GB souboru z jineho disku a pouziti "Analyzovat" v MS defragu byl tento soubor fragmentovany (log), na disku bylo v tu dobu kolem 15GB volneho (nerozkouskovaneho) mista
- NTFS

Re: Salamander vždy fragmentuje soubory

Posted: 18 Aug 2009, 15:30
by Petr Solin
Opraveno. Kopirovani uz by melo produkovat soubory s jedinym fragmentem, bude to v 2.52 beta 2. Fragmentovalo to pouze prvni soubor z kopirovane davky (pri oznaceni celeho disku by mel vzniknout jen jediny dvoufragmentovy soubor, zbytek by mel byt OK i ve stare verzi).

Re: Salamander vždy fragmentuje soubory

Posted: 19 Aug 2009, 17:25
by xm
Vyborna zprava, diky.
Kdy bude mozno vyzkouset (~ETA 2.52b2)?

Re: Salamander vždy fragmentuje soubory

Posted: 19 Aug 2009, 21:22
by Petr Solin
Do konce tydne by mela byt 2.52 beta 2 hotova.

Re: Salamander vždy fragmentuje soubory

Posted: 21 Aug 2009, 21:35
by zarevak
Juchů, díky... ;)

Teda napůl :oops: Extrahování ze Zipu (a asi i z jiných archivů) stále dva fragmenty vytváří :(