From Fedora Project Wiki
Line 45: Line 45:


== How To Test ==
== How To Test ==
<!-- This does not need to be a full-fledged document.  Describe the dimensions of tests that this feature is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.  
A comprehensive [https://github.com/jthornber/thinp-test-suite test suite] has been developed to verify the kernel code works as expected (depends on ruby, dt and dmsetup).


Remember that you are writing this how to for interested testers to use to check out your feature - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your feature.
Any additional IO workloads (or benchmarks that model real workloads) that the community has an interest in would be welcomed tests.  Data integrity is of utmost importance so all tests that increase confidence in the feature are encouraged.  


A good "how to test" should answer these four questions:
See Documention for pointers to "how to" style usage/test guidance.
 
0. What special hardware / data / etc. is needed (if any)?
1. How do I prepare my system to test this feature? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the feature is
working like it's supposed to?
3. What are the expected results of those actions?
-->


== User Experience ==
== User Experience ==

Revision as of 21:43, 18 October 2011

ThinProvisioning

Summary

Provide the thin provisioning Device Mapper (DM) target and supporting userspace utilities. This DM target allows a single pool of storage to be the backing store of multiple thinly provisioned volumes. Numerous snapshots (and snapshots of snapshots) may be taken of the thinly provisioned volumes.

Owner

  • Name: Joe Thornber and Mike Snitzer
  • Email:
    • thornber AT redhat DOT com
    • snitzer AT redhat DOT com

Current status

  • Targeted release: Fedora 17
  • Last updated: 2011-10-12
  • Percentage of completion: XX%


Detailed Description

The main highlight of this implementation, compared to the previous implementation of snapshots, is that it allows many virtual devices to be stored on the same data volume. This simplifies administration and allows the sharing of data between volumes, thus reducing disk usage.

Another significant feature is support for an arbitrary depth of recursive snapshots (snapshots of snapshots of snapshots ...). The previous implementation of snapshots did this by chaining together lookup tables, and so performance was O(depth). This new implementation uses a single data structure to avoid this degradation with depth. Fragmentation may still be an issue, however, in some scenarios.

Metadata is stored on a separate device from data, giving the administrator some freedom, for example to:

  • Improve metadata resilience by storing metadata on a mirrored volume but data on a non-mirrored one.
  • Improve performance by storing the metadata on SSD.

Benefit to Fedora

Scalable snapshots of thinly provisioned volumes may be used as the foundation of compelling virtualization and/or cloud services. Fedora would be positioned to be the first distribution to provide this unique advance in Linux block storage.

Scope

The bulk of the change is in the kernel (localized to the DM layer) but userspace tools for checking and repairing the metadata are also under development. In addition the lvm2 package will be updated to ease configuration and management of thin provisioned volumes and their associated snapshots.

How To Test

A comprehensive test suite has been developed to verify the kernel code works as expected (depends on ruby, dt and dmsetup).

Any additional IO workloads (or benchmarks that model real workloads) that the community has an interest in would be welcomed tests. Data integrity is of utmost importance so all tests that increase confidence in the feature are encouraged.

See Documention for pointers to "how to" style usage/test guidance.

User Experience

Dependencies

No other packages depend on this feature (and vice-versa). If not ready the associated lvm2 thinp code, if included in lvm2, will error out accordingly.

Contingency Plan

None necessary, no other packages or capabilities will depend on this feature.

Documentation

Release Notes

Comments and Discussion