Skip to content

Tooling for integrity-checking single blobs #269

@joonas-fi

Description

@joonas-fi

Use case: verify manually that integrity verifier job wasn't a transient I/O failure.

Current manual process

Take CRC32 (IEEE) for the blob:

$ cd /mnt/varasto/<volume>/<volume>-varasto
$ ref="04c59c83f..."
$ fsPath=$(sto debug localfsblobstore-path "$ref") && python3 -c "import zlib; print(f'{zlib.crc32(open('.$fsPath','rb').read()) & 0xffffffff:08x}')" && echo "refBase64: " $(echo -n "$ref" | xxd -r -p | base64 -w0)
5c27176e
refBase64:  BMWcg/a95lup...

Compare this to the checksum from database:

$ grep BMWcg/a95lup... varasto-test.export
{"Ref":"BMWcg/a95lup...","EncryptionKeyID":"Atg9bvskec4","Volumes":[7,19],"VolumesPendingReplication":[],"Referenced":true,"IsCompressed":false,"Size":4194304,"SizeOnDisk":4194304,"Crc32":"XCcXbg=="}
$ echo -n XCcXbg==|base64 -d | xxd -p
5c27176e

We see that crc32 matches with what's in the database.

Automation

TODO: plan

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions