Migrating a blobstorage
Update: Filed a ZODB bug.
I've been getting he following log message ever since I migrated to ZODB BLOBs:
ZODB.blob WARNING (PID) The `lawn` blob directory layout is deprecated due to scalability issues on some file systems, please consider migrating to the `bushy` layout.
It's not obvious what to do about this, even after initial googling, so I thought I'd document it. Firstly, we need to use the ZODB.scripts.migrateblobs script so create a console script for it that has all the necessary eggs available. Unfortunately, the ZODB3 egg doesn't define a console_scripts entry point for this script so I used zc.recipe.egg to work around this:
[buildout] ... parts += zeo ... migrateblobs ... [migrateblobs] recipe = zc.recipe.egg eggs = ZODB3 entry-points = migrateblobs=ZODB.scripts.migrateblobs:main
After re-running buildout and shutting down ZEO, I used the generated script to migrate the blobstorage:
$ mv var/blobstorage var/blobstorage-lawn $ bin/migrateblobs var/blobstorage-lawn/ var/blobstorage (PID) Blob directory `var/blobstorage-lawn/` has layout marker set. Selected `lawn` layout. (PID) The `lawn` blob directory layout is deprecated due to scalability issues on some file systems, please consider migrating to the `bushy` layout. (PID) Blob directory '.../var/blobstorage/' does not exist. Created new directory. (PID) Blob temporary directory 'var/blobstorage/tmp' does not exist. Created new directory. Migrating blob data from `var/blobstorage-lawn/` (lawn) to `var/blobstorage` (bushy) OID: 0x###### - 1 files ...
Now I'm able to fire up ZEO and I can access AT file and image objects fine without the log warning.