A copy store is meaningful only with respect to a child store. What a copy store does is to read the child store's entire contents into memory at startup time and then use that buffer as the contents of the store thereafter. (The code for this is in libstore/copy.c.)

Because of how the interfaces are specified, reading the entire contents of a zero store in fact means just vm_allocateing fresh memory. So, a copy store based on a zero store is just what you'd get from vm_allocateing some memory and passing it into store_buffer_create.

See a ramdisk example.