LayerFSIntegration

NOTE: This page is part of the Ubuntu Specification process. Please check the status and details in Launchpad before editing. If the spec is Approved then you should contact the Assignee, or another knowledgeable person, before making changes.

  • Launchpad entry:

  • Packages affected:

Summary

This specification aims to implement directory-level compression settings controlled by the user.

Rationale

Data consumes space on disk, and disks are of a limited size. The ability to compress data in a flexible manner allows users to reduce the size of some data, such as their $HOME.

Use cases

There are several.

  • Alice decides to compress the contents of ~/.xchat2 to condense the space used by her IRC logs.

  • Bob decides to compress ~/secret to eliminate redundancy and make files encrypted by EncFSIntegration more resistant to cryptanalysis.

Scope

Our scope is individual folders owned by the user and selected for encryption. Whole $HOME compression is not supported.

Design

LayerFS will be used for compression.

Control should be managed by the same user-level daemon specified in EncFSIntegration.

Compressed folders should always automatic mount. Compression should always activate before encryption.

Interface to Compressed Folders should be placed in the Basic properties tab of the file browser.

Implementation

See Design; this probably needs work.

Code

  • Some work to add the interface in Nautilus and whatever KDE uses will have to be done.
  • The EncFSIntegration daemon will have to be written.

Unresolved issues

  • LayerFS is not currently as robust as I'd like for this.
    • It does not mount in place; but rather mounts one directory onto another. This is probably due to the design of FUSE; I've requested a transparent access mechanism be added to FUSE, see the fuse-devel mailing list.

    • It does not mount in place over existing files; rather it hangs on uncompressed files. It should instead somehow tag compressed files and transparently compress uncompressed files on modify.
    • I would prefer a special file interface which keeps a database at /path/to/mount/..layerfs.meta.db and exports ..layerfs.meta.db as a character special device or socket. Writes to this device would be handled associated with the process (concurrent by multiple processes would not interleave). This would allow file-granularity compression, with files not explicitly compressed/uncompressed inheriting from the directory setting.

  • LayerFS is not currently given a proper license; I have contacted the author, it seems he may be willing to LGPL it.

BoF agenda and discussion


CategorySpec

LayerFSIntegration (last edited 2008-08-06 16:31:53 by localhost)