freenas/rsync: en massa writes vid uppdatering med endast ett par nya filer

Trädvy Permalänk
Medlem
Registrerad
Aug 2011

freenas/rsync: en massa writes vid uppdatering med endast ett par nya filer

Okej, jag är den första att erkänna att jag ibland kan ha lite svårt att förstå vad collectd-modulerna faktiskt visar, då det inte alltid är glasklart för mig vad de olika axlarna faktiskt representerar.

Men ta det här exemplet:
Jag gör en första rsync kl 12.40 av cirka 21 GB till nasen. Inga problem där:

rsync -rlDPv *source* jag@freenas:*destination* && echo 'Exit code: ' $?

sent 21,627,536,517 bytes received 51,815 bytes 48,986,610.04 bytes/sec total size is 21,621,998,152 speedup is 1.00 Exit code: 0

Sen, kl 13.15, lägger jag till två filer i källan och kör samma rsync igen för att testa. Nema problema:

sent 71,255,453 bytes received 24,615,551 bytes 271,205.10 bytes/sec total size is 21,670,103,869 speedup is 226.03 Exit code: 0

Det verkar ju ha gått som det ska. Tittar man på nätverksaktiviteten verkar allt som det ska, först en stor klump med överföring och sen en mindre synlig aktivitet som jag tolkar som fram och tillbaka avstämmning av hashvärden eller nåt. Inte kopiering, utan rsyncs kontroll och slutsats att det här behöver inte kopieras, för utom de två nya filerna. Visst, Y-axeln mäter hastighet, men för att kunna mäta hastighet måste ju nånting skrivas hela tiden.

Men tittar man på diskaktiviteten så verkar rsync skriva lika mycket den andra gången också. Jag fattar inte vad den skriver hela tiden.
Nån som förstår? Om den hade skrivit över alla filerna så hade väl det synts på nätverksaktiviteten?

Trädvy Permalänk
Medlem
Plats
Hedesunda
Registrerad
Dec 2005

Varför anger du "-D" dvs "--devices --specials" ? Du kopierar väl bara filer och inte blockdevices, sockets eller fifos? Vad händer om du använder "-a" dvs arkivbiten så att rsync vet ifall filen i källan/source ändrats eller ej?

Trädvy Permalänk
Medlem
Registrerad
Aug 2016

Det fins många flaggor i hur rsync skall bedöma om en fil behöver kopieras över eller inte - och också hur det skall kopieras - dvs. om man skriver över orginalet, tar bort den först eller att man gör temporärfil först innan orginalfilen tas bort och namnar om temporärfilen till tänkt namn etc.

med '-a' (som i sin tur är alias för flaggorna -rlptgoD) så bedömer den på olika tidsstämplar och är det mellan olika filsystem (som ntfs på ena sidan och ext4 på andra) så kan antal värdesiffror på tidsstämplarna göra att de bedöms olika fast de är lika och detta kan mjukas upp med större tolerans med --modify-window=NUM där NUM anger i sec i hur mycket tiden får variera för att anses som samma fil.

ibland kan '-a' var väldigt kinkig och kopierar över filer fast de är binärt lika, ibland kan '-t' eller '--size-only' styra beslutet att skippa eller kopiera filer bättre. med '-c' så görs det en checksumme-jämförelse på samtliga filer utan hänsyn till tidsstämplar och arkivflaggor - detta används när man verkligen vill vara säker på att det är lika men tar istället tid att genomföra då filerna måste läsas igenom till fullo på båda sidorna.

andra behändiga format att försöka behärska är

--compare-dest=DIR
--copy-dest=DIR
--link-dest=DIR

Och likaså '--delete' och '--remove-source-files' även om man kan bli rätt blodig av den om man gör fel...
(fins i princip inget som kan radera så mycket filer på så kort tid som ovanstående om man tex missar en '/' i en direktory-path - har man möjlighet att göra snapshot så gör man det först innan man försöker med dessa...)

har du hårda länkar i filträdet - använd '-H' - annars blir varje exemplar en egen fil och tar mer plats och tar längre tid att kopiera över.

med andra ord om man läser 'man' för rsync så har den många flaggor att välja mellan för olika beteenden och rsync är av typen ganska lätt att börja använda men att behärska denna till fullo är helt annan sak.

Trädvy Permalänk
Medlem
Registrerad
Aug 2011

@hasenfrasen Orsaken till att jag använder -D är så enkel att jag började med -a men då freenas inte gillar -a i samband med filer som kommer från NTFS, så expanderade jag -a till sina beståndsdelar och strippade successivt bort owner group och perms tills det funkade, och då hade jag de flaggor kvar som syns i första posten...så jag körde på det helt enkelt.

@xxargs tack för det utförliga svaret. Jag är dock inte säker på att jag kan hitta svaret på frågan där, men det kan förstås vara mina kunskaper som fallerar.

Det mystiska enligt mig är alltså att graferna visar på en massa skrivningar under hela den andra "rsync-processen" men samtidigt visar slutsummeringen av det andra kommandot att bara 71 MB skrevs till freenas. Hela den gröna klumpen vid 13.15 på Disk-fliken, kan ju inte referera till de pyttiga 71 MB? (Den gröna klumpen är ju likadan som vid den första rsyncen då hela 21 GB skrevs över)