libstore is used to provide a generic interface to access data (read/write) on
backing stores. This library implements many different backends which allow the
abstract store interface to be used with common types of storage -- devices,
files, memory, tasks, etc.  It also allows stores to be combined and filtered in
various ways.
It more than just a thin layer between GNU Mach
devices (hd0 for example) and the device node below /dev/...
- bunzip2 store: bunzip2 data on the fly
 - concat store: concatenate
 - copy store: copy-on-write; discard changes on termination
 - device store: Mach device access
 - file store: use a file as a kind of block device
 - gunzip store: gunzip data on the fly
 - ileave store: interleave store (striping)
 - nbd store: Linux-compatible network block device
 - query store
 - remap store
 - task store: Mach task store backend
 - typed store: chainable stores
 - url store: typed store with URL syntax
 - zero store: empty block device
 
At http://www.kataplop.net/pub/info/projets you can find some effort to make some crypto store.
At http://www.trek.eu.org/devel/hurd/crypt-trans-0.0.3.tgz, another package can be found.
Examples
$ settrans --create --active ramdisk0 /hurd/storeio -T copy zero:32M
$ mkfs.ext2 -F -b 4096 ramdisk0
[...]
$ settrans --active --orphan ramdisk0 /hurd/ext2fs ramdisk0
$ df -h ramdisk0/
Filesystem            Size  Used Avail Use% Mounted on
-                      32M  1.1M   30M   4% /media/data/home/tschwinge/ramdisk0
This uses settrans and ?storeio to create a ramdisk of 32 MiB by routing
a thusly sized zero store through the copy store, connecting
that to the ramdisk0 node, create a ext2 filesystem on it, and replace the
translator running on the ramdisk0 node with a instance of the ext2fs
translator running on the same node (?translator
stacking).
A (better) alternative would be using the tmpfs
translator, but that one is broken at the moment.
Open Issues
IRC, freenode, #hurd, 2013-07-29
<teythoon> and I read hammys paper about mobile code, is it true that the
  store code is loaded into the client? who is the server and who is the
  client in this context?
<braunr> teythoon: "store code" ?
<teythoon> libstore
<braunr> the hurd libstore ?
<teythoon> yes
<braunr> hum, what paper ?
<teythoon> braunr:
  http://users.student.lth.se/cs07fh9/2009-hammar-hurd-mobility.pdf
<braunr> how nice
<tschwinge> braunr: http://www.gnu.org/software/hurd/news/2010-01-31.html
<teythoon> it raises an important point btw, the authentication done by
  processes on the Hurd is one sided, only the client authenticates at the
  server
<braunr> yes
<tschwinge> It'S also mentioned in
  http://www.gnu.org/software/hurd/hurd/documentation.html -- but of
  course, any results he got from his work really should be integrated more
  properly into the existing body of documents.
<tschwinge> As with so many other documents/discussions/etc.  ;-|
IRC, freenode, #hurd, 2013-11-12
<phcoder> Is it possible to specify hurd root by sth else than device name?
  E.g. fs UUID?
<teythoon> phcoder: I do not believe so