[Top] [All Lists]

Re: any chance for xfs shrinking?

To: Stefan Priebe - Profihost AG <s.priebe@xxxxxxxxxxxx>
Subject: Re: any chance for xfs shrinking?
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Wed, 13 May 2015 08:15:34 +1000
Cc: "xfs@xxxxxxxxxxx" <xfs@xxxxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <5551EBB2.9010508@xxxxxxxxxxxx>
References: <5551EBB2.9010508@xxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Tue, May 12, 2015 at 02:01:54PM +0200, Stefan Priebe - Profihost AG wrote:
> Hi,
> while cloud / vms usage become more and more popular and qemu now also
> offers memory hot add and unplug, cpu hot add and unplug, we still
> suffer from a missing xfs shrink.

Over the years lots of people have come along and said "we want to
implement shrink" and we've pointed them at the pieces that need to
be put together to make it work. However, shrink is a terribly complex
operation which, as Eric has pointed out, scrambles the filesystem
up badly, and so for the most part it isn't a desired operation
to perform on a filesystem.

The reality is that nobody has needed shrink badly enough to push
such a complex set of operations through to completion, or fund a
developer to push it through to completion. Note that it's not just
code that needs to be written, the verification of shrink behaviour
and correctness is also difficult and time consuming.

> I would like to continue to use XFS as it is a rock solid base since
> around 10 years for us.
> But one missing piece in variable ressource usage for us is disk
> shrinking. Is there any chance to get an xfs online shrinking?

In a world of infinite resources at my disposal, I'd say yes. But
when I already have a backlog of development work longer than my
arm, finding 3-6 months to implement shrink is not easy to
accomplish. And, really, reverse mapping btrees and parent pointers
come first so that shrink can be implemented efficiently (shrink
needs reverse block-to-path mapping), and that's another 6 months
worth of work before shrink....


Dave Chinner

<Prev in Thread] Current Thread [Next in Thread>