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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions