Subject: Re: [vserver] hashify and memory saving
From: "Daniel Hokka Zakrisson" <daniel@hozac.com>
Date: Tue, 2 Feb 2016 07:43:51 +0100

Hi,

Tor Rune Skoglund wrote:
> Den 01. feb. 2016 21:35, skrev Daniel Hokka Zakrisson: Tor Rune Skoglund
> wrote:
>>> One further question relating to hashify:
>>>
>>> How is the hash value created ? What is it based on? - Just the file
>>> contents, or (some of - which?) file metadata also?
>> File metadata including mode, uid, gid, rdev, size, and mtime is also
>> included. The entirety of the file is used.
>>
>>> I have a strange test case here where two binary equal files in the
>>> same
>>> file system, same name, same locations but in two guest did not get
>>> hashified to the same hash value, and I an trying to understand why?
>> Could you also post the result of stat on the two files?
>
> Almost needless to say, your answer explains the cause perfectly. The
> mtimes are different, creating a different hash for the files:
>
> amd64 part4 # stat ./vservers/machine96/usr/bin/bc
>    File: «./vservers/machine96/usr/bin/bc»
>    Size: 84952           Blocks: 176        IO Block: 4096   vanlig fil
> Device: 804h/2052d      Inode: 2525495     Links: 2
> Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/ root)
> Access: 2016-01-26 18:36:24.000000000 +0100
> Modify: 2016-01-26 18:36:24.000000000 +0100
> Change: 2016-01-26 19:46:38.000000000 +0100
>   Birth: -
>
> amd64 part4 # stat ./vservers/machine95/usr/bin/bc
>    File: «./vservers/machine95/usr/bin/bc»
>    Size: 84952           Blocks: 176        IO Block: 4096   vanlig fil
> Device: 804h/2052d      Inode: 2205290     Links: 2
> Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/ root)
> Access: 2016-01-26 18:36:21.000000000 +0100
> Modify: 2016-01-26 18:36:21.000000000 +0100
> Change: 2016-01-26 19:46:10.000000000 +0100
>   Birth: -
>
> So in the case where one does not care about/use any of the times values
> for a file, one could first "time-syncronize" any files that have equal
> contents and are having similar (other) meta data before running
> hashify, I presume.

If you don't want mtime to be part of the equation, you can run hashify with
--ignore-mtime, e.g. vserver <guest> hashify --ignore-mtime

Best regards,
Daniel

> Thanks!  :-)
>
> BR,
> Tor Rune Skoglund
>
>> Best regards,
>> Daniel
>>
>>> amd64 part4 # ls -il vservers/machine95/usr/bin/bc
>>> 2205290 -rwxr-xr-x 2 root root 84952 jan.  26 18:36
>>> vservers/machine95/usr/bin/bc
>>>
>>> amd64 part4 # ls -il vservers/machine96/usr/bin/bc
>>> 2525495 -rwxr-xr-x 2 root root 84952 jan.  26 18:36
>>> vservers/machine96/usr/bin/bc
>>>
>>> amd64 part4 # find . -inum 2205290
>>> ./vservers/machine95/usr/bin/bc
>>> ./hashfilesstore/33/7b/6e544172a896550e582becb191d55df1713a-00000000
>>>
>>> amd64 part4 # find . -inum 2525495
>>> ./vservers/machine96/usr/bin/bc
>>> ./hashfilesstore/f2/ec/4d721c12734000a00253c0ce2708fda82203-00000000
>>>
>>> amd64 part4 # md5sum ./vservers/machine96/usr/bin/bc
>>> 29ad08e28e17cb179328103c9835d495  ./vservers/machine96/usr/bin/bc
>>>
>>> amd64 part4 # md5sum ./vservers/machine95/usr/bin/bc
>>> 29ad08e28e17cb179328103c9835d495  ./vservers/machine95/usr/bin/bc
>>>
>>> BR,
>>> Tor Rune Skoglund, trs@swi.no
>>>
>>>
>>>
>
>
>